当前位置:文档之家› 歌曲信息管理系统

歌曲信息管理系统

中国地质大学本科生课程论文课程设计评语对课程论文的评语:平时成绩:课程论文成绩:总成绩:评阅人签名:注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。

目录课程设计评语 (2)目录 (3)1.课程论文题目 (4)2.程序设计思路 (4)3.功能模块图 (4)4.数据结构设计 (4)5.算法设计 (5)6.程序代码 (5)7.程序运行结果 (8)8.编程中遇到的困难及解决方法 (9)9.总结心得及良好建议 (12)10.致谢 (13)1.课程论文题目制作一个歌曲信息管理系统功能:①歌曲信息包括歌曲名,作者,演唱者,发行年月等;②可以对歌曲信息进行输入,删除,浏览;③可以查询根据歌曲名,作者,演唱者歌曲信息;④可以提供按作者分组显示功能;⑤用文件存储信息.2.程序设计思路歌曲信息用文件存储,提供歌曲信息的输入输出操作;歌曲信息的删除,提供了方便的修改操作;浏览信息因提供显示操作;另外还提供键盘选择不同功能的操作.3.功能模块图4.数据结构设计 1、数据分析:(1)每首歌曲的数据如下:作者名字 字符串歌曲名 字符串 歌曲信息管理系统 信息输入 信息删除 信息浏览 信息搜索 信息分类歌手名字符串发行年月整型采用结构体存放每首歌曲的数据struct system{char author[20];char singer[20];char time[20];char name[20];} dan[100];(2)歌曲数目:自己确定,<=100首即可,所有歌曲的信息采用结构体数组来存放。

2、数据文件的设计:数据文件名:data.txt,歌曲的信息需要写入到此文件中,并且能从文件中执行读操作。

数据文件结构:一个记录对应—首歌曲,每个记录中依次存放作者名字、歌曲名、歌手名、发行年月。

5.算法设计6.程序代码a.主函数主函数是整个系统里面最简明易懂的一部分,只提供对各个模块函数的调用,其中各个功能模块用菜单方式进行选择.具体函数如下:main(){int a;while(1){printf("\t\t欢迎来到歌曲信息管理系统!------制作人:戴隆耀\n");printf("\t\t******************^o^ 主菜单^o^*******************\n\n");printf("\t\t\t(1).输入\n");printf("\t\t\t(2).删除\n");printf("\t\t\t(3).浏览\n");printf("\t\t\t(4).搜索\n");printf("\t\t\t(0).退出\n");printf("\t\t*************************************************\n");printf("\n\t\t\t请选择相应的数字(0-4):");scanf("%d",&a);if(a==0) break;switch(a){case 1:enter();break;case 2:delete();break;case 3:browse();break;case 4:search();break;}}}这个主函数主要就是一个菜单选择,运用了一个switch选择函数,通过选择”1—4”对各个功能进行选择,以满足使用者的需求.b.输入函数模块void enter(){int j;char c[2];FILE *fp;if((fp=fopen("data.txt","w"))==NULL){printf("Can not open the file!\n");exit(0);}for(j=0;j<i;j++){fwrite(&dan[j],sizeof(struct system),1,fp);}while(1){printf("请输入作者的名字:\n");scanf("%s",dan[i].author);printf("请输入歌曲的歌曲名:\n");scanf("%s",dan[i].name);printf("请输入歌手的名字:\n");scanf("%s",dan[i].singer);printf("请输入歌曲的发行年月:\n");scanf("%s",dan[i].time);if(fwrite(&dan[i++],sizeof(struct system),1,fp)!=1)printf("File write error\n");else printf("Successful!\n");printf("还有其它的吗?( Yes[y]/No[n]) \n");scanf("%s",c);if(strcmp(c,"n")==0)break;}fclose(fp);}此输入函数中运用一个While循环语句对信息进行输入。

c.删除函数模块void delete(){int j,v,c;char w[20];FILE *fp;printf("请输入你想要删除的歌曲名:");scanf("%s",w);fp=fopen("data.txt","rb");for(j=0;j<100;j++){if(fread(&dan[j],sizeof(struct system),1,fp)!=1) break;}v=j;for(j=0;j<v;j++){if(strcmp(w,dan[j].name)==0)c=j;}fclose(fp);fp=fopen("data.txt","wb");for(j=0;j<v;j++){if(j!=c)fwrite(&dan[j],sizeof(struct system),1,fp);}fclose(fp);printf("删除成功!\n");i--;}此删除函数运用两个For循环,第一个For循环是用来查找所要删除的歌曲名,若你输入的歌曲名存在于系统之中,函数中是用字符串的比较来表示的,字符串相等则跳出此For循环,就证明了你要删除的歌曲存在.然后进行第二个For循环,将所要删除的歌曲信息用它的后一个歌曲信息取代,以后的歌曲信息都往前移一位,达到删除的效果。

d.浏览函数模块void browse(){int j;FILE *fp;fp=fopen("data.txt","rb");for(j=0;j<100;j++){if(fread(&dan[j],sizeof(struct system),1,fp)==1){printf("歌曲名:%s\n",dan[j].name);printf("作者:%s\n",dan[j].author);printf("歌手:%s\n",dan[j].singer);printf("发行年月:%s\n",dan[j].time);printf("---------------------------------\n");}else break;}fclose(fp);}此浏览函数直接运用for循环,一个一个的输出所有的歌曲信息.7.程序运行结果8.编程中遇到的困难及解决方法刚看到此题目时,一点头绪和思路都没有,不知道如何下手,后来跟同学商量讨论以,又经过老师叫我们先看书上的第三、四、五章的内容,然后对系统有了个大致的框架,框架就组成了我的主函数.然后把整个系统分解了看待,用庖丁解牛的想法,把信息管理系统看成无数了小块:信息输入模块,信息浏览模块,信息搜索模块,信息删除模块等,所有的问题就这样迎刃而解了。

9.总结心得及良好建议这次上机实习让我学到了很多有用的东西,巩固了之前的学习,让我学到了在教室和做题中学不到的一些知识,通过这个程序的学习,使我进一步理解和运用结构化程序设计的思想和方法。

初步掌握开发一个小型实用系统的基本方法,基本学会调试一个比较长程序的基本方法,进一步掌握和提高利用C语言进行程序设计的能力。

并且,C语言是需要有一定基础、而且动手能力强的学科。

上机实验是学习程序设计语言必不可少的实践环节,特别是C语言灵活、简洁,更需要通过编程的实践来真正掌握它。

对于程序设计语言的学习目的,可以概括为学习语法规定、巩固贯穿系统知识、掌握程序设计方法、提高程序设计能力,这些都必须通过充分的实际上机操作才能完成。

但是,在此次实习中,我也发现了对一些计算机C语言知识掌握的不足。

对里面的好多东西还是很陌生,并不是很熟练,有着许多欠缺,更多的在运用起来的时候还是感到很不好动手。

还不能熟练的掌握即运用知识,甚至对一些基本知识混淆,以至于在编程时浪费了很多时间,操作中还出现了一些问题,这些都是我需要改进的地方。

而正是这次实习给了我这次机会,让我更清楚地认识了自己的不足,及时地改正并完善自己,使知识熟练的掌握。

而且,C语言是计算机的基础,它功能丰富,表达能力强,应用面广泛,因此掌握好C 语言十分重要。

不仅如此,对于我的专业来说也十分重要,因为我所学的专业有许多课程需要运用计算机,通过学习C语言使得我对计算机有了一定了解,熟练了一些操作,这些对我学习专业也有一定帮助。

因此,我认为这次实习对于我是非常有意义的,对我个人的影响比较大,对我的动手能力有了很大的提高,复习了以前所学的知识,掌握了一些陌生知识,并且还对我有关专业的学习提供了帮助,这次C语言课程设计实习让我受益匪浅。

10.致谢感谢这一个礼拜以来老师您的教导,对我的每个问题都很耐心的指导,使我能顺利的完成此次的实习任务,也让我学到了很多东西,老师您教导我在做任何一件事情的时候读要耐心仔细,也让我受益匪浅,对我以后的学习和工作有很大的帮助,在这里我想对老师说:非常感谢老师,您辛苦了!。

相关主题