c语言课程设计---音频信息管理.doc_第1页
c语言课程设计---音频信息管理.doc_第2页
c语言课程设计---音频信息管理.doc_第3页
c语言课程设计---音频信息管理.doc_第4页
c语言课程设计---音频信息管理.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一 引言在现在的日常生活中,人们对娱乐的要求越来越高。因为随着科技的突飞猛进,娱乐形式、娱乐设备也越来越多。而听音乐则是其中一种十分重要而实现起来又十分简单的娱乐形式,所以说,音乐无处不在。因此,我们对音乐的管理就十分有必要了。现在的生活节奏越来越快,人们想要更加方便而快捷的管理自己的音乐,节省自己的时间。而目前我们学习过如何使c语言来进行编程,所以就有了这个简单的设计。随着各种便携式音乐播放器以及电子计算机的普及,人们所拥有的音乐越来越多,风格,演唱者,各不相同,而人们在不同的心情,不同的天气时对音乐的爱好是不同的。人们需要更加快捷而方便的管理自己的音乐,让自己的音乐列表井然有序。可以根据不同的场合,不同的心情快速的找到自己所需要的音乐。让音乐匹配自己的心情,通过音乐来表达自己的感受是很多人习惯。音乐是一种娱乐,同时也是一种特别的表达方式。歌手通过歌曲来表达自己的某种情感,产生与听众的共鸣。当听众想要表达相同的情感时,直接就可以引用自己听过的歌。我们让这种娱乐,或者更着重于对自己情感的表达实现起来更加容易。 运用音乐管理程序可以更加方便而快捷的管理自己喜欢的音乐,省去了繁琐的过程,让听音乐更加方便快捷,节省自己的宝贵时间。音乐管理是每个音乐播放器必须实现的功能之一。随着各个电子厂商退出自己的便携是播放器,只有高效便捷的的音乐管理方式才能在竞争中脱颖而出。好的音乐管理程序是对消费者的负责,更是对自己责任的负责。以前的操作系统等系统软件主要是由汇编语言编写的(包括unix操作系统在内)。由于汇编语言指令时机器所不能直接识别、理解和执行的,最好改用高级语言,但一般高级语言难以实现汇编语言的某些功能(汇编语言可以直接对硬件进行操作,例如,对内存地址的操作、位操作等)。人们设想能否找到一种既具有一般高级语言特性,又具有低级语言特性的语言,集它们的优点于一身。于是,c语言就在这种情况下应运而生了。本次课设我选择歌曲管理程序的设计,考察我对结构体,数组的操作,以及c语言算法的掌握。从而让我们把书上学习到的东西与实际情况联系起来,让我们对用c语言进行编程有进一步的了解和深刻的认识。课设要求要求使用c语言进行编程,并且尽可能学习其他语言来穿插在程序中,使程序进一步简单而实用、方便。要求在程序中使用结构体、数组等操作,并且能完整显示出其各种功能。所以完成此道题目要求较强的设计能力,尤其是要有一种大局观的意识,这是对整体观念的一种锻炼。如何调程序也非常重要,通过这个程序可以学习到以前调试短程序没有的的经验。其主要实现录入、修改、查找、删除、显示等功能。二 程序总体设计2.1程序功能(1)增加歌曲信息 (2)查看歌曲信息 (3)查找 (4)删除 (5)修改 (6)作者 (7)保存 (8)退出 2.2程序功能图歌曲管理程序设计保存退出作者修改歌曲信息删除歌曲信息查找歌曲查看歌曲信息增加歌曲信息 图1 程序功能图2.3主函数流程图开始表达式1 0 表达式2 0 表达式3 非0 非0 0 添加曲目列表查看曲目列表查找非0表达式4 0表达式5 0表达式60非0 0表达式7非0非0表达式8非0非0退出保存作者修改删除结束图2 主函数流程图主函数源代码:void main()int choose=0;file *fp=null;char yesorno;if(fp=fopen(c:/list.dat,rb)=null)printf(n=文件不存在,是否要创建一个?(y/n)n);scanf(%c,&yesorno);if(yesorno=y|yesorno=y) fp=fopen(c:/list.dat,wb);fclose(fp);elseexit(0);elsenumber=dq(st); /要是文件已经有数据 将数据初始化到数组中system(cls);while(1) display();printf( =请选择:);scanf(%d,&choose);system(cls);switch(choose)case 0: exit(0);/退出 break; case 1: add();back();/增加曲目列表break; case 2: lookover();back();/查看曲目列表break; case 3: find();back();/ 查找 break;case 4: del(); back();/删除 break;case 5: change();back();/修改break; case 6:author();back();/作者break;case 7:keepa();back();/保存 break;default:if (choose7)printf (按回车继续);break;fflush(stdin); getchar();system(cls);/*-保存*/void keepa()printf(t=程序在运行时已自动保存.n);/*-返回*/void back()printf(t=按enter键返回主菜单n);三 程序详细设计3.1 增加歌曲信息函数的实现增加记录前如图3所示。图3 增加记录前效果图输入一条记录信息:选择1,回车。输入记录如图4所示。图4 输入记录效果图增加后如图5所示。图5 增加记录后效果图增加函数代码流程图,如图6所示。开始求解表达式1表达式2循环体语句求解表达式3增加歌曲信息0非0结束图6 增加函数流程图增加源代码:增加函数源代码:void add()int numbertemp=0;int i=0;struct list temp; /临时保存信息printf(请输入要增加歌曲信息的个数:);scanf(%d,&numbertemp);for(i=0;inumbertemp;i+)printf(输入第%d个歌曲信息n,i+1);printf(歌名:);scanf(%s,);printf(歌手:);scanf(%s,temp.singer);printf(风格:);scanf(%s,&temp.style);stnumber+=temp; /将刚添加的写入到数组keep(&temp); /将刚添加的写入到文件printf(添加成功n);/*-保存*/void keep(struct list *st)file *fp=null;fp=fopen(c:/list.dat,ab+);fwrite(st,sizeof(struct list),1,fp);fclose(fp);3.2 查看歌曲信息函数的实现查看记录前如图7所示。图7 查找记录前效果图输入一条记录信息:如图8所示:图8 输入记录效果图查看记录后如图9所示。图9 查找记录后效果图查看函数代码流程图,如图10所示。开始0查看的歌曲信息求解表达式1 表达式2非0循环体语句求解表达式3结束图10 查看函数流程图查看源代码:void lookover()int i=0;printf(以下是歌曲列表n);printf(t歌名t歌手t风格n);for(i=0;inumber;i+)printf(t%st%st%sn,,sti.singer,sti.style);3.3 查找函数的实现查找记录前如图11所示。图11 查找记录前效果图输入一条记录信息:选择3,回车如图12所示。图12 输入记录效果图查找记录后如图13所示。图13 查找记录后效果图查找函数代码流程图,如图14所示。输入表达式3表达式2表达式1输入有误歌名查找歌手查找结束相关信息相关信息图1图14 查找函数流程图查找源代码:void find()int n=0;printf(1 按歌名查找n);printf(2 按歌手查找n); scanf(%d,&n);switch(n)case 1: findbyname();break;case 2: findbysinger();break;default: printf(输入有误,结束!n);break; void findbyname()/按歌名查找 char name60;int i=0;printf(请输入要查找歌曲名称:);scanf(%s,name);system(cls);printf(t歌名t歌手t风格n);for (i=0;inumber;i+)if (strcmp(name,)=0)printf(t%st%st%sn,,sti.singer,sti.style); void findbysinger()/按歌手查找 char singer60;int i=0;printf(请输入要查找的歌手:);scanf(%s,singer);system(cls);printf(t歌名t歌手t风格n);for (i=0;inumber;i+)if (strcmp(singer,sti.singer)=0)printf(t%st%st%sn,,sti.singer,sti.style);3.4 删除函数的实现删除记录前如图15所示。图15 删除记录前效果图输入一条记录信息:选择4,回车后, 如图16所示:图16 输入记录效果图选择1,如图17图17 选择删除方法后效果图未删除前的列表,如图18图18 未删除前的列表 删除后的列表,如图19图19 删除后的列表选择其他删除方法效果类似。删除函数代码流程图,如图20所示。输入表达式1表达式3表达式2按歌手删除按风格删除按歌名删除相关信息相关信息相关信息图20 删除函数流程图删除源代码:void del()/删除 int n=0;printf(1 按歌名删除n);printf(2 按歌手删除n);printf(3 按风格删除n);scanf(%d,&n);switch(n)case 1: songdele();break;case 2: singerdele();break;case 3: styledele();void songdele()/按歌名删除 file *fp=null;char name60;int i=0;int j=0;printf(请输入要删除歌曲名称:);scanf(%s,name);for(i=0;inumber;i+)if (strcmp(name,)=0) /如果查找到就删除for (j=i;jnumber-1;j+)stj=stj+1;number-;/将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了fp=fopen(c:/list.dat,wb);for (i=0;inumber;i+)fwrite(&sti,sizeof(struct list),1,fp);fclose(fp);printf(删除成功;n);void singerdele()/按歌手删除 file *fp=null;char singer60;int i=0;int j=0;printf(请输入要删除歌手姓名:);scanf(%s,singer);for(i=0;inumber;i+)if (strcmp(singer,sti.singer)=0) /如果查找到就删除for (j=i;jnumber-1;j+)stj=stj+1;number-;/将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了fp=fopen(c:/list.dat,wb);for (i=0;inumber;i+)fwrite(&sti,sizeof(struct list),1,fp);fclose(fp);printf(删除成功;n);void styledele()/按风格删除 file *fp=null;char style60;int i=0;int j=0;printf(请输入要删除的歌曲风格:);scanf(%s,style);for(i=0;inumber;i+)if (strcmp(style,sti.style)=0) /如果查找到就删除for (j=i;jnumber-1;j+)stj=stj+1;number-;/将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了fp=fopen(c:/list.dat,wb);for (i=0;inumber;i+)fwrite(&sti,sizeof(struct list),1,fp);fclose(fp);printf(删除成功;n);3.5修改函数的实现修改记录前如图21所示。图21 修改记录前效果图输入一条记录信息:如图22所示:图22 输入记录效果图修改记录后如图23所示。图23 修改记录后效果图修改函数代码流程图,如图24所示。输入表达式1按歌名修改相关信息图24 修改函数流程图修改源代码:void change()int way=0;file *fp=null;char name60;int i=0;int changeindex=0;int index=0;printf(请输入要修改的歌曲名称:);scanf(%s,name);for (i=0;inumber;i+)if (strcmp(name,)changeindex=i; /保存要修改的歌曲的下标printf(t%st%st%snn,stchangei,stchangeindex.singer,stchangeindex.style);printf(请重新输入此歌曲信息);printf(歌名:);scanf(%s,stchangei);printf(歌手:);scanf(%s,stchangeindex.singer);printf(风格:);scanf(%s,stchangeindex.style);/信息修改后重新更新文件里面的数据 以保持数据一致性fp=fopen(c:/list.dat,wb);for (i=0;i按enter键返回主菜单n);四 总结通过c语言程序课程设计,是我对c语言有了更深一步的认识。编程是一件十分锻炼人的工作。编程要首先对所做的事有一个整体上的把握,编出的程序要有效率,有更简单的代码实现同样的功能。编程是一件锻炼人耐心的事情。编程遇到问题时要谦虚的向别人请教。编程对于自己是毫无拘束的,但对于别人是要清晰明了的。这也是一种交流。 课程设计是把我们所学的理论知识进行系统的总结并运用于实际的良好机会,有利于我们运用理论知识解决实际问题的能力,进而加强了我们对知识认识的实践能力,巩固我们的理论知识,加深我们对知识的认识。这次课设我遇到了好多困难和麻烦,得到了老师的帮助和指导,才能使这次课设顺利进行下去。 通过本次论文设计,我初步学会了论文设计的基本方法,学会了怎样去借鉴别人的方法和经验,知道如何去查找资料和整合处理这些资料的能力,这为以后的大学毕业设计论文打下了一个初步的基础。五 参考文献1 凯利(美),波尔a(美);c语言教程机械工业出版社,20072 刘振安 刘燕君c 程序设计教程机械工业出版社,20083 徐宝文, 李志c 程序设计语言北京:机械工业出版社,2000附录附程序源代码#include #include #include struct listchar name60;char singer60;char style60;/*-*/int dq(struct list st);void display();/显示void keep(struct list st);void add(); /*增加*/void lookover(); /*查看*/void find();/*查找*/void findbyname(); /*歌名查找*/void findbysinger(); /*歌手查找*/void del(); /*删除*/void songdele();/*按歌名删除*/void singerdele();/*按歌手删除*/void styledele();/*按歌曲风格删除*/void change(); /*修改*/void keepa();void back();void author();struct list st300; /这个数组用来保存所有的歌曲信息 和文件里面的一致int number=0; /记录总的歌曲数目 也就是数组/文件里面的歌曲数目/*-主函数*/void main()int choose=0;file *fp=null;char yesorno;if(fp=fopen(c:/list.dat,rb)=null)printf(n=提示:文件不存在,是否要创建一个?(y/n)n);scanf(%c,&yesorno);if(yesorno=y|yesorno=y) /这里仅为了建立文件fp=fopen(c:/list.dat,wb);fclose(fp);elseexit(0);elsenumber=dq(st); /要是文件已经有数据 将数据初始化到数组中system(cls);while(1) display();printf( =请选择:);scanf(%d,&choose);system(cls);switch(choose)case 0: exit(0);/退出 break; case 1: add();back();/增加歌曲信息break; case 2: lookover();back();/查看歌曲信息break; case 3: find();back();/ 查找 break;case 4: del(); back();/删除 break;case 5: change();back();/修改break; case 6:author();back();/作者break;case 7:keepa();back();/保存 break;default:if (choose7)printf (错误的选择也可能有美丽的邂逅,但这次不是,回车吧);break;fflush(stdin);/不懂getchar();/不懂system(cls);/*-保存*/void keepa()printf(t=程序在运行时已自动保存.n);/*-返回*/void back()printf(t=按enter键返回主菜单n);/*-修改*/void change()int way=0;file *fp=null;char name60;int i=0;int changeindex=0;int index=0;printf(请输入要修改的歌曲名称:);scanf(%s,name);for (i=0;inumber;i+)if (strcmp(name,)=0)changeindex=i; /保存要修改的歌曲的下标break;printf(t%16st%16s%16snn,stchangei,stchangeindex.singer,stchangeindex.style);printf(请重新输入此歌曲信息);printf(歌名:);scanf(%s,stchangei);printf(歌手:);scanf(%s,stchangeindex.singer);printf(风格:);scanf(%s,stchangeindex.style);/信息修改后重新更新文件里面的数据 以保持数据一致性fp=fopen(c:/list.dat,wb);for (i=0;inumber;i+)fwrite(&sti,sizeof(struct list),1,fp);fclose(fp);/*-删除*/void del()/删除 int n=0;printf(1 按歌名删除n);printf(2 按歌手删除n);printf(3 按风格删除n);scanf(%d,&n);switch(n)case 1: songdele();break;case 2: singerdele();break;case 3: styledele();void songdele()/按歌名删除 file *fp=null;char name60;int i=0;int j=0;printf(请输入要删除歌曲名称:);scanf(%s,name);for(i=0;inumber;i+)if (strcmp(name,)=0) /如果查找到就删除for (j=i;jnumber-1;j+)stj=stj+1;number-;/将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了fp=fopen(c:/list.dat,wb);for (i=0;inumber;i+)fwrite(&sti,sizeof(struct list),1,fp);fclose(fp);printf(删除成功;n);void singerdele()/按歌手删除 file *fp=null;char singer60;int i=0;int j=0;printf(请输入要删除歌手姓名:);scanf(%s,singer);for(i=0;inumber;i+)if (strcmp(singer,sti.singer)=0) /如果查找到就删除for (j=i;jnumber-1;j+)stj=stj+1;number-;/将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了fp=fopen(c:/list.dat,wb);for (i=0;inumber;i+)fwrite(&sti,sizeof(struct list),1,fp);fclose(fp);printf(删除成功;n);void styledele()/按风格删除 file *fp=null;char style60;int i=0;int j=0;printf(请输入要删除的歌曲风格:);scanf(%s,style);for(i=0;inumber;i+)if (strcmp(style,sti.style)=0) /如果查找到就删除for (j=i;jnumber-1;j+)stj=stj+1;number-;/将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了fp=fopen(c:/list.dat,wb);for (i=0;inumber;i+)fwrite(&sti,sizeof(struct list),1,fp);fclose(fp);printf(删除成功;n);/*-查找*/void find()int n=0;printf(1 按歌名查找n);printf(2 按歌手查找n); scanf(%d,&n);switch(n)case 1: findbyname();break;case 2: findbysinger();break;default: printf(输入有误,结束!n);break; void findbyname()/按歌名查找 char name60;int i=0;printf(请输入要查找歌曲名称:);scanf(%s,name);system(cls);printf(tt歌曲名称tt 歌手t 风格n);for (i=0;inumber;i+)if (strcmp(name,)=0)printf(t%16st%16s%16sn,,sti.singer,sti.style); void findbysinger()/按歌手查找 char singer60;int i=0;printf(请输入要查找的歌手:);scanf(%s,singer);system(cls);printf(tt歌曲名称tt 歌手t 风格n);for (i=0;inumber;i+)if (strcmp(singer,sti.singer)=0)printf(t%16st%16s%16sn,,sti.singer,sti.style);/*-作者*/void author()printf(t+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论