《C语言程序设计报告—歌曲信息管理系统》由会员分享,可在线阅读,更多相关《C语言程序设计报告—歌曲信息管理系统(16页珍藏版)》请在金锄头文库上搜索。
1、70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 1 高级语言程序设计课程设计 说明书 设计题目:歌曲信息管理系统设计 目录 1、 设计题目 3 2、 主函数 4 3、 输入模块 4 4、 删除模块 5 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 2 5、 浏览模块 6 6、 查找模块 6 7、 各被调函数 7 8、 设计小结 8 9、 源程序代码 8 歌曲信息管理系统设计 1、需求分析:用文件存储信息,因而要提供文件的输入输出操作;可对歌曲信息进行输入、删除、浏 览,因而要提供文件的输入、删除和信息
2、显示操作;查询歌曲信息要提供查找操作;实现按 作者分组显示功能则要提供排序功能;另外要提供键盘式选择菜单以实现功能选择。 2、总体设计:整个管理系统可以被设计为数据输入模块、数据删除模块、信息浏览模块、信息查询模块和信息分组显示模块。 3、详细设计 数据结构采用结构体,建立歌曲信息结构体: Struct SongInfo Char name20; /歌曲名 Char author20; /作者 Char singer20; /演唱者 Char pub_date6; /发行年月(yyyymm) 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 3 SI
3、; (1) 数据输入模块 把歌曲信息写入文件。 (2) 数据删除模块 采用基本的查找算法, 查找歌曲信息文件, 如果是要删除的歌曲, 则舍弃改信息。 否则 重新写入文件。 (3) 信息浏览模块 读歌曲信息文件,显示输出。 (4) 信息查询模块 通过菜单选择查询字段:歌曲名 作者 演唱者。 然后采用基本查找算法在歌曲信息 文件中查找,如果找到,则输出;否则输出“对不起,没有您要找的歌曲信息! 。 ” (5) 信息分组显示模块 选择按作者分组显示歌曲信息, 用 fread 或 fscanf 把歌曲信息文件中的信息读取到临时 变量中(临时变量数据结构可以采用歌曲信息结构体数组) ,采用排序算法(冒泡
4、、插入、 选择等)把歌曲信息按照作者排序,然后输出。 一: 详细设计 1 主函数 主函数的设计提供数据输入、数据处理和数据输出以及各种函数的调用。其中各功能模块用菜单方式选择;另外,部分菜单也可以写成函数。 程序 void main() void menu(); void function1(); void function2(); void function3(); void function4(); menu(); return; 2 各功能模块设计 (1)输入模块 信息输入时直接按顺序结构(如图 2)输入: void input() char ch; n=0; if(fp=fopen(s
5、ong.txt,a)=NULL) printf(cant open file song.txt); exit(0); 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 4 printf(Please input a record:); for(n=0;n=50;) printf(nrecord %d:n 歌名:,n+1); gets(songn.name); printf(n 时间:); gets(songn.year); printf(n 作者:); gets(songn.author); printf(n 歌手:); gets(songn.sin
6、ger); n+; printf(继续输入吗? (y/n)n); ch=getchar();getchar(); if(ch=n) break; fwrite(song,sizeof(song0),n,fp); fclose(fp); 2 删除模块: 用户输入要删除的信息,如输入歌曲名 ,根据歌曲名找到其他记录并删除。 程序 /*删除模块*/ void del() int m,k=0; long a; char namekey8; printf(n 请输入您要删除的歌曲名:); scanf(%s,namekey); if(fp=fopen(song.txt,r+)=NULL) printf(n
7、 不能打开该文件!); exit(0); while(!feof(fp) a=ftell(fp); fscanf(fp,%6s %5s %5s %10sn,songn.name,songn.year,songn.author,songn.singer); if(strcmp(namekey,songn.name)=0) k=1; break; 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 5 if(k=1) printf(n 已查到,记录为); printf(n%6s %5s %5s %10sn,songn.name,songn.year,son
8、gn.author,songn.singer); printf(n 确实要删除,按 1;不删除,按 0:); scanf(%d,&m); if(m=1) fseek(fp,a,0); fprintf(fp,%s %s %s %sn, , , , ); else printf(n 对不起,查无此人。); fclose(fp); 3浏览模块: 在用户按下菜单后直接显示出所有歌曲信息。 void xianshi() n=0; if(fp=fopen(song.txt,rb)=NULL) printf(cant open the file song.txt); exit(0); printf( 歌名t
9、 作者t 歌手 时间 n); while(fread(&songn,sizeof(songn),1,fp)=1) printf(%6s %5s %10s %5sn,songn.name,songn.author,songn.singer,songn.year); n+; fclose(fp); 4查找模块: 用户输入要查找的歌曲名或歌曲的任意信息,按菜单键。void searchname() int a=0; char ch; n=0; if(fp=fopen(song.txt,rb)=NULL) printf(can not open the file.n ); exit(0); while
10、(fread(&songn,sizeof(songn),1,fp)=1) 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 6 n+; a=n; printf(用什么方式查询?n); printf(1.歌名 2.时间 3.歌手n); ch=getchar();getchar(); switch(ch) case 1: printf( 输入你要查的歌名:n); gets(numstr); for(n=0;na;) if(!strcmp(numstr,songn.name) break; n+; break; case 2: printf(输入你要查的歌
11、曲时间n); gets(numstr); for(n=0;na;) if(atol(numstr)=songn.year) break; n+; break; case 3: printf(输入你要查的歌手n); gets(numstr); for(n=0;na;) if(!strcmp(numstr,songn.singer) break; n+; break; printf( 歌名 作者 歌手 时间 n); printf(%6s %5s %5s %10sn,songn.name,songn.year,songn.author,songn.singer); fclose(fp); 6 各种被
12、调函数 (1)insert 函数:数据的插入,用于个人的信息的补录,包括姓名、工作单位、电话号码和email 地址。 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 7 (2)del 函数:用于通讯录中个人信息的删除。 (3)change 函数:用于通讯录中个人信息的修改,输入人名,对人名所对应的机构体内容进行修改(包括姓名、工作单位、电话号码和 email 信息) 。 (4)searchname 函数:用于输入姓名查找个人信息。如果通讯录中没有此人信息,显示“查无此人! ” 。 (5)searchnum 函数:用于输入电话号码查询个人信息。如果通
13、讯录中没此人信息,显示“查无此人! ” 。 (6)show 函数:用于个人全部信息的显示。 (7)income 函数:用于所有原始个人信息的录入(包括姓名、电话号码、工作单位和 email地址) 。 设计小结:本程序大体参考与网上信息,说实话,这程序我无法完成,但又必须做,即使不会或者做不完美,但是也要尽力去做,做这个程序是要我们能够使用所学的内容,这次设计,让我重新掌握了 C 语言,而且还得到了用 C 语言解决实际问题的宝贵经验,也从中学到了很多东西。让我懂得了做什么事都要有耐心,要有对什么事都认真仔细的品质,让我学会了很多以前不懂的东西,使我更加意识到实践的重要性! 三 :原程序 #inc
14、lude #include #include #include int i=0; struct system char author20; char singer20; char time20; char name20; dan100; 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 8 void enter() int j; char c2; FILE *fp; if(fp=fopen(data.txt,w)=NULL) printf(Can not open the file!n); exit(0); for(j=0;ji;j+) fwrite
15、(&danj,sizeof(struct system),1,fp); while(1) printf(Please input the author:n); scanf(%s,dani.author); printf(Please input the songs name:n); scanf(%s,dani.name); printf(Please input the singer:n); scanf(%s,dani.singer); 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 9 printf(Please input the outday
16、:n); scanf(%s,dani.time); if(fwrite(&dani+,sizeof(struct system),1,fp)!=1) printf(File write errorn); else printf(Successful!n); printf(Is there any more?( Yesy/Non) n); scanf(%s,c); if(strcmp(c,n)=0)break; fclose(fp); void delete() int j,v,c; char w20; FILE *fp; printf(Please input the songname whi
17、ch you want to delete:); scanf(%s,w); fp=fopen(data.txt,rb); 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 10 for(j=0;j100;j+) if(fread(&danj,sizeof(struct system),1,fp)!=1) break; v=j; for(j=0;jv;j+) if(strcmp(w,danj.name)=0) c=j; fclose(fp); fp=fopen(data.txt,wb); for(j=0;jv;j+) if(j!=c) fwrite(&
18、danj,sizeof(struct system),1,fp); fclose(fp); printf(Delete OK!n); i-; 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 11 void browse() int j; FILE *fp; fp=fopen(data.txt,rb); for(j=0;j100;j+) if(fread(&danj,sizeof(struct system),1,fp)=1) printf(Name:%sn,danj.name); printf(Author:%sn,danj.author); pr
19、intf(Singer:%sn,danj.singer); printf(Outday:%sn,danj.time); printf(-n); else break; fclose(fp); void search() int flag,j,x; 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 12 char w20; FILE *fp; char v20; printf(1)By authorn); printf(2)By singern); printf(3)By namen); printf(Please choose which you w
20、ant to search:n); scanf(%d,&x); if(x=3) flag=0; printf(Please input the songs name:); scanf(%s,&w); fp=fopen(data.txt,rb); for(j=0;j100;j+) if(fread(&danj,sizeof(struct system),1,fp)!=1) break; if(strcmp(danj.name,w)=0) printf(Name:%sn,danj.name); printf(Author:%sn,danj.author); printf(Singer:%sn,da
21、nj.singer); printf(Outday:%sn,danj.time); 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 13 printf(-n); flag=1; if(flag=0) printf(Cannot find the song!n); fclose(fp); else if(x=2) flag=0; printf(Please input the singer:); scanf(%s,&v); fp=fopen(data.txt,rb); for(j=0;j100;j+) if(fread(&danj,sizeof(st
22、ruct system),1,fp)!=1) break; if(strcmp(danj.singer,v)=0) printf(Name:%sn,danj.name); printf(Author:%sn,danj.author); printf(Singer:%sn,danj.singer); 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 14 printf(Outday:%sn,danj.time); printf(-n); flag=1; if(flag=0) printf(Cannot find the song!n); fclose(
23、fp); else if(x=1) flag=0; printf(Please input the author:); scanf(%s,w); fp=fopen(data.txt,rb); for(j=0;j100;j+) if(fread(&danj,sizeof(struct system),1,fp)!=1) break; if(strcmp(danj.author,w)=0) printf(Name:%sn,danj.name); printf(Author:%sn,danj.author); 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方
24、案 15 printf(Singer:%sn,danj.singer); printf(Outday:%sn,danj.time); printf(-n); flag=1; if(flag=0) printf(Cannot find the song!n); fclose(fp); else printf(Error!n); main() int a; while(1) printf(ttWelcome to the songsystem!-by flean); printf(tt*o MENU o*nn); printf(ttt(1).Entern); printf(ttt(2).Delet
25、en); printf(ttt(3).Browsen); 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 16 printf(ttt(4).Searchn); printf(ttt(0).exitn); printf(tt*n); printf(ntttPlease choose the number(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; 鞠躬尽瘁,死而后已。诸葛亮