歌曲信息管理系统.docx
- 文档编号:3555705
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:18
- 大小:121.10KB
歌曲信息管理系统.docx
《歌曲信息管理系统.docx》由会员分享,可在线阅读,更多相关《歌曲信息管理系统.docx(18页珍藏版)》请在冰豆网上搜索。
歌曲信息管理系统
题目要求
该系统应该具有下列功能:
(1)歌曲信息包括歌曲名,作者,演唱者,发行年月等。
(2)可以对歌曲信息进行输入,删除,浏览。
(3)可以查询歌曲名,作者,演唱者信息。
(4)可以提供按作者分组显示功能。
(5)用文件存储信息。
输入要求:
应用程序运行后,在屏幕上显示一个菜单。
用户根据需求,选定相应的操作项目。
进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。
输出要求:
要求用应用程序应用后,要在屏幕上显示一个菜单。
用户输入数据后,要给出清晰明确的提示信息,包括输入的数据内容、格式及结束方式等。
提示:
设计时可采用结构体和一维数组类型,用来保存学生证的内容。
总体设计
本题可采用结构体类型来保存学生证的内容,学生信息应该使用数组来进行过程中使用指针链表使其更方便。
根据要求,此程序需要设计以下几个模块:
添加新歌曲模块,删除指定歌曲板块,修改指定歌曲显示,查询指定歌曲模块。
因此,可知其主要模式为:
歌曲管理流程图
具体设计,
1、主函数
歌曲的信息有歌曲名,作者,演唱者,发行年月。
因此用一个数组来保存学生证信息:
structsong
{
charname[25];
charwriter[25];
charsinger[25];
charyear[25];
}s[N],s1,s2,s3;
menu()//输入菜单
intn;
printf("\t****************************MENU****************************\n\n");
printf("\t\t\t1.Enterrecord\n");/*输入记录*/
printf("\t\t\t2.Listthefile\n");/*显示记录*/
printf("\t\t\t3.Searchrecord\n");/*查找记录*/
printf("\t\t\t4.Deletearecord\n");/*删除记录*/
printf("\t\t\t5.Addarecord\n");/*插入记录*/
printf("\t\t\t6.savethefile\n");/*保存文件*/
printf("\t\t\t7.Readthefile\n");/*读文件*/
printf("\t\t\t8.Displayrecordonorder\n");/*按序号显示记录*/
printf("\t\t\t9.Sortrecordbywriter\n");/*按作者排序*/
printf("\t\t\t0.Exit\n");/*退出*/
printf("\n\n\t*********************************************************\n");
do
{
printf("\nChoiceyournumber(0-9):
");
scanf("%d",&n);
}
while(n<0||n>9);
switch(n)
{
case1:
length=enter();menu();break;
case2:
list(length);break;
case3:
search(length);break;
case4:
length=delete(length);menu();break;
case5:
length=add(length);menu();break;
case6:
save(length);break;
case7:
read();break;
case8:
display(length);break;
case9:
sort(length);break;
case0:
exit(0);
}
}
/***********主函数**********/
main()
{
menu();
}
2、各功能模块设计
(1)输入模块
输入到song[]中,各个元素依次输入
【程序】
intenter()/*输入记录*/
{
inti;
for(i=0;i { printf("\npleaseinputrecordordirectpressQtoexit"); printf("\nEntername: "); scanf("%s",&s[i].name); if(s[i].name[0]=='Q'&&s[i].name[1]=='\0') break; printf("Enterwriter: "); scanf("%s",&s[i].writer); printf("Entersinger: "); scanf("%s",&s[i].singer); printf("Enteryear: "); scanf("%s",&s[i].year); printf("\nnamewritersingeryear\n"); printf("----------------------------------------------------\n"); printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year); printf("----------------------------------------------------\n"); } returni; } (2)显示记录模块 【程序】 voidlist(intn)/*显示记录*/ { inti; printf("\n\n\t************************LIST********************************\n\n"); printf("\nnamewritersingeryear\n"); printf("\t----------------------------------------------------\n"); for(i=0;i printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year); printf("\n\n\t***************************END******************************\n"); menu(); } (3)查找模块 【程序】 voidsearch(intn)/*查找记录*/ { intm,i; printf("\nSearchby: \n"); printf("\n1.name"); printf("\n2.writer"); printf("\n3.singer"); printf("\n0.back"); do { printf("choiceyournumber(0-3): "); scanf("%d",&m); } while(m<0||m>3); switch(m) { case1: printf("pleaseenternametosearch.\n");break; case2: printf("pleaseenterwritertosearch.\n");break; case3: printf("pleaseentersingertosearch.\n");break; case0: menu(); } i=find(n,m); if(i>n-1) printf("notfound\n"); else { printf("\nnamewritersingeryear\n"); printf("----------------------------------------------------\n"); printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year); printf("----------------------------------------------------\n"); } menu(); } intfind(intn,intb) { inti; switch(b) { case1: scanf("%s",s3.name); for(i=0;i if(strcmp(s3.name,s[i].name)==0) returni;break; case2: scanf("%s",s3.writer); for(i=0;i if(strcmp(s3.writer,s[i].writer)==0) returni;break; case3: scanf("%s",s3.singer); for(i=0;i if(strcmp(s3.singer,s[i].singer)==0) returni;break; } returni; } (4)删除模块 【程序】 intdelete(intn)/*删除记录*/ { chardelete[25]; inti,j,p,ch; printf("\nDeleteby: \n"); printf("\n1.name"); printf("\n2.writer"); printf("\n3.singer"); printf("\n0.back"); do { printf("choiceyournumber(0-3): "); scanf("%d",&p); } while(p<0||p>3); switch(p) { case1: printf("pleaseenternametodelete.\n");break; case2: printf("pleaseenterwritertodelete.\n");break; case3: printf("pleaseentersingertodelete.\n");break; case0: return0; } i=find(n,p); if(i>n-1) printf("notfoundtodelete\n"); else { printf("\nnamewritersingeryear\n"); printf("----------------------------------------------------\n"); printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year); printf("----------------------------------------------------\n"); printf("Areyousuretodeleteit? (1/0)"); scanf("%d",&ch); if(ch==1) { for(j=i+1;j { strcpy(s[j-1].name,s[j].name); strcpy(s[j-1].writer,s[j].writer); strcpy(s[j-1].singer,s[j].singer); strcpy(s[j-1].year,s[j].year); } n--; } }returnn; (5)插入模块 intadd(intn)/*插入记录*/ { charlocate[25]; inti,j; printf("\npleaseinputrecordordirectpressQtoexit\n"); printf("\nEntername: "); scanf("%s",&s1.name); if(s1.name[0]=='Q'&&s1.name[0]=='\0') returnn; printf("Enterwriter: "); scanf("%s",&s1.writer); printf("Entersinger: "); scanf("%s",&s1.singer); printf("Enteryear: "); scanf("%s",&s1.year); printf("\nnamewritersingeryear\n"); printf("----------------------------------------------------\n"); printf("%s,%s,%s,%s\n",s1.name,s1.writer,s1.singer,s1.year); printf("----------------------------------------------------\n"); printf("pleaseinputlocatename\n"); i=find(n,1); for(j=n-1;j>=i;j--) { strcpy(s[j+1].name,s[j].name); strcpy(s[j+1].writer,s[j].writer); strcpy(s[j+1].singer,s[j].singer); strcpy(s[j+1].year,s[j].year); } strcpy(s[i].name,s1.name); strcpy(s[i].writer,s1.writer); strcpy(s[i].singer,s1.singer); strcpy(s[i].year,s1.year); n++; returnn; } (6)保存到文件 intsave(intn)/*保存文件*/ { inti; FILE*fp; if((fp=fopen("record.txt","w"))==NULL) { printf("cannotopenfile\n"); returnNULL; } printf("\nSavingfile\n"); for(i=0;i fprintf(fp,"%s%s%s%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year); fclose(fp); printf("**********savesuccess**********\n"); menu(); return1; } (7)读取文件 intread()/*读文件*/ { inti; FILE*fp; if((fp=fopen("record.txt","r"))==NULL) { printf("cannotopenfile\n"); returnNULL; } printf("\nnamewritersingeryear\n"); printf("----------------------------------------------------\n"); for(i=0;! feof(fp);i++) { fscanf(fp,"%s%s%s%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year); printf("%s%s%s%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year); } printf("----------------------------------------------------\n"); fclose(fp); printf("youhavesuccessedreadingrecordfromfile! \n"); menu(); return1; } (8)全部显示 intdisplay(intn)/*按序号显示记录*/ { inta; FILE*fp; if((fp=fopen("record.txt","r"))==NULL) { printf("cannotopenfile\n"); returnNULL; } printf("Enterordernumber\n"); scanf("%d",&a); if(a>=0&&a { fseek(fp,(a-2)*sizeof(s),1); printf("\nnamewritersingeryear\n"); printf("----------------------------------------------------\n"); printf("%s,%s,%s,%s\n",s[a-1].name,s[a-1].writer,s[a-1].singer,s[a-1].year); printf("----------------------------------------------------\n"); } else printf("no%dnumberrecord! \n",a); fclose(fp); menu(); } voidsort(intn)/*按作者排序*/ { inti,j; for(i=0;i for(j=i+1;j if((strcmp(s[i].writer,s[j].writer))>0) { s1=s[i]; s[i]=s[j]; s[j]=s1; } printf("\nnamewritersingeryear\n"); printf("----------------------------------------------------\n"); for(i=0;i printf("%s%s%s%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year); printf("----------------------------------------------------\n"); printf("sortsuccess! \n"); menu(); } voidmenu() { intn; printf("\t****************************MENU****************************\n\n"); printf("\t\t\t1.Enterrecord\n");/*输入记录*/ printf("\t\t\t2.Listthefile\n");/*显示记录*/ printf("\t\t\t3.Searchrecord\n");/*查找记录*/ printf("\t\t\t4.Deletearecord\n");/*删除记录*/ printf("\t\t\t5.Addarecord\n");/*插入记录*/ printf("\t\t\t6.savethefile\n");/*保存文件*/ printf("\t\t\t7.Readthefile\n");/*读文件*/ printf("\t\t\t8.Displayrecordonorder\n");/*按序号显示记录*/ printf("\t\t\t9.Sortrecordbywriter\n");/*按作者排序*/ printf("\t\t\t0.Exit\n");/*退出*/ printf("\n\n\t************************************************************\n"); do { printf("\nChoiceyournumber(0-9): "); scanf("%d",&n); } while(n<0||n>9); switch(n) { case1: length=enter(s);break; case2: list(length);break; case3: search(length);break; case4: length=delete(length);menu();break; case5: length=add(length);menu();break; case6: save(length);break; case7: read();break; case8: display(length);break; case9: sort(length);break; case0: exit(0); } } 运行结果 输入 查找 删除 添加 保存到文件 读取文件 按作者排序 总结 通过这次C程序设计,我掌握了模块化设计方法,能够深入的理解结构化程序设计思想,熟练运用结构化程序设计方法,提高了运用C语言进行程序设计的能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 歌曲 信息管理 系统