歌曲信息管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目要求
该系统应该具有下列功能:
(1)歌曲信息包括歌曲名,作者,演唱者,发行年月等。
(2)可以对歌曲信息进行输入,删除,浏览。
(3)可以查询歌曲名,作者,演唱者信息。
(4)可以提供按作者分组显示功能。
(5)用文件存储信息。
输入要求:
应用程序运行后,在屏幕上显示一个菜单。用户根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。
输出要求:
要求用应用程序应用后,要在屏幕上显示一个菜单。用户输入数据后,要给出清晰明确的提示信息,包括输入的数据内容、格式及结束方式等。
提示:
设计时可采用结构体和一维数组类型,用来保存学生证的内容。
总体设计
本题可采用结构体类型来保存学生证的内容,学生信息应该使用数组来进行过程中使用指针链表使其更方便。
根据要求,此程序需要设计以下几个模块:添加新歌曲模块,删除指定歌曲板块,修改指定歌曲显示,查询指定歌曲模块。
因此,可知其主要模式为:
歌曲管理流程图
具体设计,
1、主函数
歌曲的信息有歌曲名,作者,演唱者,发行年月。因此用一个数组来保存学生证信息:
struct song
{
char name[25];
char writer[25];
char singer[25];
char year[25];
}s[N],s1,s2,s3;
menu( ) // 输入菜单
int n;
printf("\t****************************MENU****************************\n\n"); printf("\t\t\t 1.Enter record\n"); /*输入记录*/
printf("\t\t\t 2.List the file\n"); /*显示记录*/
printf("\t\t\t 3.Search record\n"); /*查找记录*/
printf("\t\t\t 4.Delete a record\n"); /*删除记录*/
printf("\t\t\t 5.Add a record\n"); /*插入记录*/
printf("\t\t\t 6.save the file\n"); /*保存文件*/
printf("\t\t\t 7.Read the file\n"); /*读文件*/
printf("\t\t\t 8.Display record on order\n"); /*按序号显示记录*/
printf("\t\t\t 9.Sort record by writer\n"); /*按作者排序*/
printf("\t\t\t 0.Exit\n"); /*退出*/
printf("\n\n\t*********************************************************\n"); do
{
printf("\n Choice your number(0-9):");
scanf("%d",&n);
}
while(n<0||n>9);
switch(n)
{
case 1:length=enter();menu();break;
case 2:list(length);break;
case 3:search(length);break;
case 4:length=delete(length);menu();break;
case 5:length=add(length);menu();break;
case 6:save(length);break;
case 7:read();break;
case 8:display(length);break;
case 9:sort(length);break;
case 0:exit(0);
}
}
/***********主函数**********/
main()
{
menu();
}
2、各功能模块设计
(1)输入模块
输入到song[]中,各个元素依次输入
【程序】
int enter() /*输入记录*/
{
int i;
for(i=0;i { printf("\n please input record or direct press Q to exit"); printf("\n Enter name:"); scanf("%s",&s[i].name); if(s[i].name[0]=='Q'&&s[i].name[1]=='\0') break; printf(" Enter writer:"); scanf("%s",&s[i].writer); printf(" Enter singer:"); scanf("%s",&s[i].singer); printf(" Enter year:"); scanf("%s",&s[i].year); printf("\nname writer singer year \n"); printf("----------------------------------------------------\n"); printf("%s, %s, %s, %s\n",s[i].name,s[i].writer,s[i].singer,s[i].year); printf("----------------------------------------------------\n"); } return i; } (2)显示记录模块 【程序】 void list(int n) /*显示记录*/ { int i; printf("\n\n\t************************LIST********************************\n\n" ); printf(" \n name writer singer year \n"); printf("\t----------------------------------------------------\n"); for(i=0;i printf(" %s, %s, %s, %s\n",s[i].name,s[i].writer,s[i].sing er,s[i].year); printf("\n\n\t***************************END******************************\n"); menu(); } (3)查找模块 【程序】 void search(int n) /*查找记录*/ { int m,i; printf("\n Search by:\n"); printf("\n "); printf("\n 2.writer"); printf("\n 3.singer"); printf("\n 0.back"); do { printf("choice your number(0-3):"); scanf("%d",&m); } while(m<0||m>3); switch(m)