歌曲信息管理系统 通用完整版
- 格式:doc
- 大小:907.50 KB
- 文档页数:41
华南师范大学增城学院课程设计报告册2012——2013 学年度一学期计算机院/系信管专业 10年级一班级课程名称:歌曲管理系统*名:***学号: ************摘要:随着社会的发展,人类的进步,21世纪人们的生活水平有所提高,为了满足人们对生活的需要,丰富的业余生活,就需要有一些娱乐的设施来弥补这些空缺,所以开发了自动点歌系统。
论文详细论述了系统总体设计思想、数据库设计及功能模块设计等,给出了自动点歌系统一般流程。
该系统主要包括:按歌曲类型点歌、按歌曲作者点歌、按歌星点歌、按拼音点歌、按歌曲编号点歌、按歌曲语种点歌极大点歌模块;还可实现对各种歌曲的查询点歌、播放控制歌曲。
第 1 章概述1.1题目背景迅速发展的计算机科学技术应用越来越广泛,已经渗透到了人类社会生产和生活的各个领域。
数据库技术是计算机科学技术的一个重要分支,是现代化管理的重要手段,是研究数据共享的一门科学。
近年来,人们利用数据库技术对海量的数据进行处理,然后结合其他技术开发除了各种软件,为人类生活提供了便利。
娱乐是人的一生中不可或缺的部分。
随着现如今经济文化水平的显著提高,人们对生活质量及工作环境的要求也越来越高。
同事,随着生活节奏的加快,每个人都处于忙碌繁乱的社会的那个当中,不论是在家庭,工作场所,或是学校中,无时无刻充满着生活和学习上的压力。
工作之余,找到一种能够换季压力,释放疲劳的娱乐方式,已成为大家共同的愿望。
因此娱乐业在服务行业中占有越来越重要的地位。
然而,受到工作条件和时间的限制,越来越多的人们选择了去KTV唱唱歌,跳跳舞或者在自己家中自娱自乐KTV点歌系统也因此有了广阔的发展前景。
随着KTV行业的迅猛发展,点歌系统在KTV里的重要性越来越大,特别是在面向普通消费者的量版式KTV,投资方在选系统的时候无不练就一双金睛火眼,千挑万选,而且更是在配套设备上重金投入,确保为消费者营造出一个更好的消费环境。
KTV点歌系统被广泛应用于KTV、酒店、酒吧等娱乐场所中。
中国地质大学本科生课程论文课程设计评语对课程论文的评语:平时成绩:课程论文成绩:总成绩:评阅人签名:注: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循环语句对信息进行输入。
数学与计算机学院课程设计说明书课程名称:软件工程课程设计课程代码:8404131题目:KTV点歌系统—歌曲管理查询年级/专业/班:09软件4班学生姓名:学号:开始时间:2011年05月25日完成时间:2011年06月5日课程设计成绩:指导教师签名:年月日软件工程课程设计任务书学院名称:数学与计算机学院课程代码:___8404131____专业:软件工程年级:2009级一、设计题目KTV点歌管理系统二、主要内容本课程设计完成一KTV自动点歌管理系统,本系统包括歌曲管理和点歌查询界面等功能。
三、具体要求及应提交材料具体要求:本课程设计要求学生运用软件工程的思想,严格按照软件生命周期各阶段的目的和任务,完成对系统的分析、设计、编码、及测试。
1.完成系统的需求分析2.完成系统的设计:针对分析阶段提出的软件要求,给出实现的方案和具体细节的说明。
(1)导出系统的数据流程图和功能模块图。
(2)设计数据库。
使用MicrosoftAccess创建数据库。
确定数据库中数据表的组成。
确定数据表中字段的构成、主键字段和有关字段的约束条件等。
依靠数据表中主键字段建立数据表之间的关系,并由此建立数据表之间的参照完整性约束。
(3)根据功能确定软件模块组成及调用关系。
(4)确定每个模块的数据结构及算法。
3.编码建造模块,在可视化编程环境下,按照软件设计要求制作界面和完成对模块的编码,由此使软件设计具体化为软件作品。
4.测试编写合适的测试用例完成系统的测试工作并分析结果。
5.编写课程设计报告应提交材料:1.上交源程序:学生按照课程设计的具体要求所开发的所有源程序(应该放到一个文件夹中);2.课程设计报告的打印稿和电子稿;四、主要技术路线提示1.认真阅读相关知识,完成系统的功能分析和系统设计2.选用ACCESS作为DBMS五、进度安排六、参考资料[1]张海藩.软件工程导论.北京:清华大学出版社,2004[2]陈明.实用软件工程基础.北京:清华大学出版社,2003[3]殷人昆.实用软件工程.北京:清华大学出版社,2003指导教师签名日期年月日系主任审核日期年月日目录五、进度安排................................... 错误!未指定书签。
题目:歌曲信息管理系统要求:制作一个歌曲信息管理系统功能:用户验证:根据用户输入的用户名和密码判断是否合法用户(合法用户可以不只一个),并进行相应处理。
提供系统操作菜单歌曲信息包括歌曲名、词作者、曲作者、演唱者、发行年月日等可以对歌曲信息进行输入、修改、删除、浏览等操作可以查询歌曲名、词作者、曲作者、演唱者等信息可以提供按作者、演唱者分类的统计信息用结构体表示歌曲信息,用文件存储信息提示:1、建立如下结构体struct song{char Gname[40];char Cname[8];char Qname[8];char Yname[8];int year;int month;int day;}2、存储和显示信息表格形式3、歌曲名词作者曲作者演唱者年月日4、系统功能结构图5、功能要求描述:(1)主函数:定义所需变量,显示主菜单,接受用户选择,根据用户选择执行相应的自定义函数。
(2)密码确认由于输入、修改、删除操作需要具有一定权限的人员进行操作,所以在这些功能模块中应该有密码确认功能,例如,一段检测用户密码的程序段:#include <stdio.h>#include <string.h>void main(){ char password[20];printf(“请输入密码:”);gets(password);while(strcmp(password,”administrators”)!=0){printf(“\n无效密码”);printf(“\n请重新输入密码:”);gets(password);}printf(“OK!”);}(3)输入新信息功能定义结构体变量,建立一个文件,从键盘输入一条信息,到变量中,再将其写入文件中,例如,例12.3从键盘输入4个学生的有关数据,然后把它们转存到磁盘文件上去。
(4)修改信息首先输入要修改的歌曲的名、或其它关键信息,从文件逐条读出信息进行比对,查找是否有该信息,没有就直接输出信息;有则进行修改,修改后的信息继续存入文件。
嵌入式硬盘点歌机后台管理软件使用手册目录一、歌库管理软件说明 (3)1.后台管理软件功能介绍 (3)1.1文件目录说明 (3)1.2主要文件说明 (3)1.3功能介绍 (3)2.怎样设定多语言操作界面。
(3)3.歌星管理 (4)3.1怎样添加歌星 (4)3.2怎样修改歌星资料 (5)3.3怎样删除歌星 (7)3.4怎样批量导入歌星图片 (8)4.歌曲管理 (9)4.1怎样搜索歌库资料 (9)4.2怎样添加新歌 (11)4.3怎样修改歌曲资料 (12)4.4怎样删除歌曲 (13)4.5怎样输出歌单及歌曲资料 (14)4.6如何批量加歌 (15)5.怎样修改点歌机默认语言的定义 (19)5.1怎样设定不同语言的文字对照 (19)6.点歌机皮肤界面管理 (21)6.1多界面预览 (21)6.2怎样删除皮肤界面 (22)6.3怎样增加皮肤界面 (23)7.现场效果声设置 (32)7.1效果声的文件格式要求 (32)7.2怎样选定效果声对应的声音文件 (32)8.表情动画管理 (34)8.1表情文件格式说明 (34)8.2怎样选定表情对应的图片文件 (34)8.3表情预览及保存 (35)9.影视欣赏节目管理 (35)9.1节目格式说明及搜索节目 (35)9.2影片节目怎样分类 (36)9.3添加影片节目 (37)9.4修改影片节目数据 (38)9.5删除影片节目数据 (39)10.设置开机播放列表 (41)11.设置屏保图片及播放控制 (42)12.生成点歌机数据库 (42)12.1选定机顶盒的系统语言 (42)12.2自动生成点歌机数据库 (43)12.3自动检查数据库的完整性 (44)13.环境模拟声的设置 (44)13.1模拟声的文件格式说明 (44)13.2模拟声的文件名定义 (44)13.3模拟声文件的存放位置。
(44)14.走马灯字幕管理 (44)15.U盘加歌 (45)一、歌库管理软件说明1. 后台管理软件功能介绍1.1文件目录说明1 DataBase文件夹:歌星的数据库2 Lang文件夹:管理软件的语言文件3 Singer文件夹:歌星数据对应的歌星图片4 System文件夹:系统文件夹,内部包含歌曲数据库字库文件皮肤文件点歌机语言包5 KTV运行的管理软件1.2主要文件说明OSD:点歌机语言包Option:歌曲类别SKIN1-8:皮肤文件1.3功能介绍2. 怎样设定多语言操作界面。
歌曲信息管理系统-通用完整版中国地质大学本科生课程论文封面C语言课程设计课程名称计算机高级语言课程设计(C)教师姓名刘刚本科生姓名本科生学号***********本科生专业机械设计制造及其自所在院系机械电子信息学院类别: C. 本科生日期: 2013.07.11注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。
目录1.题目要求 (1)2.需求分析 (1)3.总体设计 (1)4.详细设计 (2)5.上机操作 (32)6.总结 (43)7.致谢 (44)参考文献 (44)1.题目要求制作一个歌曲信息管理系统,要求提供以下功能。
1)歌曲信息包括歌曲名,作者,演唱者,发行年月等。
2)可以对歌曲信息进行输入,删除,浏览。
3)可以查询根据歌曲名,作者,演唱者歌曲信息。
4)可以提供按作者分组显示功能。
5)用文件存储信息。
2.需求分析根据题目要求,由于歌曲信息数据以文本文件的方式存放,所以应提供文件的输入、输出等操作;在程序中需要浏览歌曲的信息,应提供显示、查询等操作(其中查询方式可以按歌曲名、作者、演唱者或日期进行查询)。
并且要提供可以按作者进行分组的方法;另外还应提供键盘式选择菜单以实现功能选择。
3.总体设计歌曲信息管理系统输入第1页第2页4.详细设计 【主函数】:主函数一般设计比较简洁,只提供输入,处理和输出部分的函数调用。
,本系统主函数只起到一个将系统载入到主菜单的作用。
至于系统内其他功能的实现,则是通过主函数下的主菜单来实现的例如int main() /*主函数*/{menu();return 0;}下面是菜单栏实现系统功能的流程图继续时【菜单界面】:本系统中,主菜单是实现系统功能的主要媒介,同样也是整个系统的核心所在,进入系统是首先进入菜单界面,然后根据菜单上的提示进行功能的选取从而进行正常使用。
【程序】: /**************************主界面删除退浏览查找分组添加 运行系统,进由菜单提示输入1-7功能完成指定功能,决***********************/void menu(){i nt k,w1;d o{system("cls");puts("\t\t*******************主菜单********************\n");puts("\t\t******************************** *************\n");puts("\t\t 欢迎来到歌曲信息管理系统\n");puts("\t\t******************************** *************\n");puts("\t\t\t\t 1.歌曲录入");puts("\t\t\t\t 2.歌曲删除");puts("\t\t\t\t 3.歌曲浏览");第3页puts("\t\t\t\t 4.歌曲查找");puts("\t\t\t\t 5.作者分组显示");puts("\t\t\t\t 6.添加新歌");puts("\t\t\t\t 7.退出");puts("\n\t\t****************************** ****************\n");puts("\t\t开发人:赵彦斌\n");printf("请选择您所需要的功能(1-7):[ ]\b\b");scanf("%d",&k);if(k<1||k>7) //对选择的数字作判断*/{w1=1;getchar();}else w1=0;}while(w1==1);s witch(k)第4页{case 1:enter();break; //输入模块c ase 2:delet();break; //删除模块c ase 3:browse();break; //浏览模块c ase 4:search();break; //查找模块c ase 5:devide();break; //分组模块c ase 6:add();break; //添加模块c ase 7:exit(0);}}【输入模块】:数据信息存放在文件中,一条记录对应一个歌曲,即符合习惯也方便管理。
数学与计算机学院课程设计说明书课程名称: 软件工程课程设计课程代码: 8404131 题目:KTV点歌管理系统—实现歌曲播放年级/专业/班: 09级软件工程4班学生姓名: 学号:开始时间: 2011 年 05 月 27 日完成时间: 2011 年 06 月 8 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书(计算书、图纸、分析报告)撰写质量(45)总分(100)指导教师签名:年月日软件工程课程设计任务书学院名称:数学与计算机学院课程代码:8404131专业:软件工程年级:2009级一、设计题目KTV点歌管理系统二、主要内容本课程设计完成一KTV自动点歌管理系统,本系统包括歌曲管理和点歌查询界面等功能。
三、具体要求及应提交材料具体要求:本课程设计要求学生运用软件工程的思想,严格按照软件生命周期各阶段的目的和任务,完成对系统的分析、设计、编码、及测试。
1.完成系统的需求分析2.完成系统的设计:针对分析阶段提出的软件要求,给出实现的方案和具体细节的说明。
(1)导出系统的数据流程图和功能模块图。
(2)设计数据库。
使用Microsoft Access创建数据库。
确定数据库中数据表的组成。
确定数据表中字段的构成、主键字段和有关字段的约束条件等。
依靠数据表中主键字段建立数据表之间的关系,并由此建立数据表之间的参照完整性约束。
(3)根据功能确定软件模块组成及调用关系。
(4)确定每个模块的数据结构及算法。
3.编码建造模块,在可视化编程环境下,按照软件设计要求制作界面和完成对模块的编码,由此使软件设计具体化为软件作品。
4. 测试编写合适的测试用例完成系统的测试工作并分析结果。
5.编写课程设计报告应提交材料:1.上交源程序:学生按照课程设计的具体要求所开发的所有源程序(应该放到一个文件夹中);2.课程设计报告的打印稿和电子稿;四、主要技术路线提示1.认真阅读相关知识,完成系统的功能分析和系统设计2.选用ACCESS作为DBMS五、进度安排序号设计内容天数1 分析设计内容,给出解决方案 32 创建数据库及建表 33 可视化界面设计 34 对所建数据库进行设计,整理设计思路,编码、测试,写出课程设计报告35 指导老师检查设计结果并做成绩评定 2总计14六、参考资料[1] 张海藩. 软件工程导论. 北京:清华大学出版社,2004[2] 陈明. 实用软件工程基础. 北京:清华大学出版社,2003[3] 殷人昆. 实用软件工程. 北京:清华大学出版社,2003指导教师签名日期年月日系主任审核日期年月日目录1 前言 (4)2 需求分析 (5)2.1 功能分析 (5)2.2 方案分析 (5)3 概要设计 (6)3.1 数据结构 (6)3.2 逻辑结构与物理结构 (6)3.3 功能模块划分 (6)3.4抽象数据类定义 (9)4 详细设计 (9)4.1 数据类型定义 (9)4.2 主要模块内部设计 (10)4.2.1选择歌曲功能模块 (10)4.2.2 查看播放列表功能模块 (13)4.2.3 歌曲播放功能模块 (14)5 实现与调试分析 (16)5.1 实现环境 (16)5.2 语言选择 (16)5.3 调试分析 (16)6 测试分析 (16)6.1 测试用例 (116)6.2 测试结果 (18)6.3 性能分析 (19)7用户手册 (20)总结 (20)参考文献 (20)1 前言迅速发展的计算机科学技术应用越来越广泛,已经渗透到了人类社会生产和生活的各个领域。
告设计报课程歌曲信息管理系统题计目:课程设********学号:***姓名:专外包务业:电子商与软件*******:级班***指导教师:062014 月01 年日课程设计评分表学号:林禹森班级:学生姓名:课程设计题目:歌曲信息管理系统目录1.需求分析: (4)2.总体设计: (4)3.详细设计: (5)(1)主函数main(): (5)(2)初始化函数 (6)(3)歌曲录入函数 (8)(4)文件输入函数。
(9)(5)信息修改函数。
(10)(6)歌曲删除函数。
(12)(7 按歌手查询函数。
(13)(8)按公司查询函数。
(14)(9)歌曲导出或保存函数。
(15)(10)浏览函数。
(16)4.函数功能测试。
(18)初始化函数initialize(): (18)主菜单函数menu_song(): (19)浏览函数output_song(): (19)录入函数input_song(): (20)修改函数revise_song(): (21)删除函数delete_song(): (22)查询函数search_singer():(按歌手查询) (22)查询函数search_corporation():(按公司查询) (23)导入函数load_song(): (24)保存函数save_song(): (24)5.软件使用说明书。
(25)..............................................................................................................................................25总结6.计程设理系统课歌曲信息管:分求析1.需”,以方便对根据歌曲信息管理系统的需要,建立一个“歌曲信息管理系统成绩的各项管理操作。
要求完成:能对歌曲进行录入和修改;i.能按唱片公司和歌手统计歌曲信息;ii.能对歌曲进行删除、导入和导出。
中国地质大学本科生课程论文封面C语言课程设计课程名称计算机高级语言课程设计(C)教师姓名刘刚本科生姓名本科生学号***********本科生专业机械设计制造及其自所在院系机械电子信息学院类别: C. 本科生日期: 2013.07.11课程设计评语注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。
目录1.题目要求 (1)2.需求分析 (1)3.总体设计 (1)4.详细设计 (1)5.上机操作 (16)6.总结 (25)7.致谢 (26)参考文献 (26)1.题目要求制作一个歌曲信息管理系统,要求提供以下功能。
1)歌曲信息包括歌曲名,作者,演唱者,发行年月等。
2)可以对歌曲信息进行输入,删除,浏览。
3)可以查询根据歌曲名,作者,演唱者歌曲信息。
4)可以提供按作者分组显示功能。
5)用文件存储信息。
2.需求分析根据题目要求,由于歌曲信息数据以文本文件的方式存放,所以应提供文件的输入、输出等操作;在程序中需要浏览歌曲的信息,应提供显示、查询等操作(其中查询方式可以按歌曲名、作者、演唱者或日期进行查询)。
并且要提供可以按作者进行分组的方法;另外还应提供键盘式选择菜单以实现功能选择。
3.总体设计【主函数】:主函数一般设计比较简洁,只提供输入,处理和输出部分的函数调用。
,本系统主函数只起到一个将系统载入到主菜单的作用。
至于系统内其他功能的实现,则是通过主函数下的主菜单来实现的例如int main() /*主函数*/{menu();return 0;}【菜单界面】:本系统中,主菜单是实现系统功能的主要媒介,同样也是整个系统的核心所在,进入系统是首先进入菜单界面,然后根据菜单上的提示进行功能的选取从而进行正常使用。
【程序】:/**************************主界面***********************/void menu(){int k,w1;do{system("cls");puts("\t\t*******************主菜单********************\n");puts("\t\t*********************************************\n");puts("\t\t 欢迎来到歌曲信息管理系统\n");puts("\t\t*********************************************\n");puts("\t\t\t\t 1.歌曲录入");puts("\t\t\t\t 2.歌曲删除");puts("\t\t\t\t 3.歌曲浏览");puts("\t\t\t\t 4.歌曲查找");puts("\t\t\t\t 5.作者分组显示");puts("\t\t\t\t 6.添加新歌");puts("\t\t\t\t 7.退出");puts("\n\t\t**********************************************\n");puts("\t\t 开发人:赵彦斌\n");printf("请选择您所需要的功能(1-7):[ ]\b\b");scanf("%d",&k);if(k<1||k>7) //对选择的数字作判断*/{w1=1;getchar();}else w1=0;}while(w1==1);switch(k){case 1:enter();break; //输入模块case 2:delet();break; //删除模块case 3:browse();break; //浏览模块case 4:search();break; //查找模块case 5:devide();break; //分组模块case 6:add();break; //添加模块case 7:exit(0);}}【输入模块】:数据信息存放在文件中,一条记录对应一个歌曲,即符合习惯也方便管理。
现在要考虑的问题是一条歌曲的记录从文件读进来后以什么形式存放?这里选择应用下面的结构体struct song{char name[20]; //歌曲名*/char author[20]; //作者*/char singer[20]; //演唱者*/char up_date[10]; //日期*/}so[N];需要注意的是:so[N]中的N为歌曲数目,程序中采用宏定义方式,可以随时对N进行修改。
本程序宏定义#define N 100特别注意!song.txt文件中若已经有文件,再次输入时,文件内容将被清空,若仍要使用,请选择歌曲添加!【流程图】0时/****************************输入模块***************************/void enter(){int i,n;system("cls");printf("您想要输入多少首歌?(0-%d)?:",N-1);scanf("%d",&n); //要输入的歌曲数目printf("\n 现在起请您开始输入!\n\n");for(i=0;i<n;i++){printf("\n 请输入第%d 首歌的记录.\n",i+1);input(i); //调用输入函数}if(i!=0) save(n); //调用保存函数printf_back(); //返回}【删除模块】:其功能是在显示所有歌曲信息后,用户输入要删除歌曲的名字,根据歌名查找记录并删除。
删除的一般做法是将数据从文件中删除,删除位置后面的记录往前挪。
从而达到删除效果。
【流程图】/****************************删除模块*******************************/ void delet(){struct song s;int i,n,k,w0=1,w1,w2=0;n=load(); //调用加载函数system("cls");do{k=-1;printf_face(); //调用显示数据结构项目函数for(i=0;i<n;i++){printf_one(i); //调用显示一个记录函数}do{printf("\n\n请输入您所要删除歌曲的名字。
歌名:");scanf("%s",&);for(i=0;i<n;i++){if(strcmp(,so[i].name)==0){k=i;s=so[i];break;}}for(;i<n;i++)so[i]=so[i+1];save(n-1);if(k==-1){printf("\n\n不存在! 您想要继续么?\n\n\t1).继续2).不,返回。
[ ]\b\b");scanf("%d",&n);if(n==1)delet();else menu();}}while(k==-1);printf_face(i); //调用显示数据结构项目函数printf_one(k); //调用显示一个记录函数w1=delete_data(i,n); //调用显示删除数据函数if(w1==1){printf("\n恭喜,歌曲已成功删除\n\n您想要继续么?\n\n\t1).继续2).不,返回。
[ ]\b\b");scanf("%d",&w0);w2=1;}else{w0=0;if(w2==1)so[k]=s;}}while(w0==1);menu();}【浏览模块】:浏览模块功能是显示全部歌曲信息【流程图】:【程序】/******************************浏览模块***************************/void browse(){int i,n;n=load(); //调用加载函数printf_face(); //调用显示数据结构项目函数system("cls");for(i=0;i<n;i++){if((i!=0)&&(i%10==0)){printf("\n\n请按任意键继续\n");getchar();puts("\n\n");}printf_one(i); //调用显示一个记录函数}printf("\t这里有%d 个记录.\n",n);printf("\n按任意键继续\n");getchar();system("pause");menu();}【查询模块】:该模块的功能是根据输入的歌曲名、作者、演唱者、日期或四者全部查找相应的歌曲记录,找到后问是否继续查找还是返回主菜单。
/******************************查找模块***************************/void search(){int c,m=0;system("cls");printf("\n\n\n\t***********************查找模块*************************\n");printf("\t* *\n");printf("\t* 1.歌名 2.作者 3.演唱者*\n");printf("\t* *\n");printf("\t* *\n");printf("\t* *\n");printf("\t********************************************************\n");printf("您想要通过哪种方式查找?:[ ]\b\b");do{scanf("%d",&c);if(c>5||c<1){printf("\n选择错误!请重新选择!");m=1;}}while(m!=0);switch(c){case 1:fname();break; //根据歌曲名查找case 2:fauthor();break; //根据作者名查找case 3:fsinger();break; //根据演唱者查找case 4:fup_date();break; //根据日期查找case 5:fall();break; //根据歌曲详细信息查找}printf("\n\n 查找完成!");printf_back();}1.根据歌曲名查找fname()void fname() //根据歌曲名查找{int i,n;int k=-1;char name[20];printf("\n\n 歌名:");scanf("%s",&name);for(i=0;i<n;i++)if(strcmp(so[i].name,name)==0){k=i;printf_one(k);}if(k==-1){printf("\n抱歉,没有找到所找歌曲\n");printf("\n\n您想要继续么?\n\t1).继续2).不,返回[ ]\b\b");scanf("%d",&n);if(n==1)fname();else menu();}}2.按作者名查找fcreater()void fauthor() //根据作者名查找{int i,n;int k=-1;char author[20];n=load();printf("\n\n 作者:");scanf("%s",&author);for(i=0;i<n;i++)if(strcmp(so[i].author,author)==0){ k=i;printf_one(k);}if(k==-1){printf("\n抱歉,没有找到所找歌曲\n");printf("\n\n您想要继续么?\n\t1).继续2).不,返回[ ]\b\b");scanf("%d",&n);if(n==1)fauthor();else menu();}}3.根据演唱者查找fsinger()void fsinger() //根据演唱者查找{int i,n;int k=-1;char singer[20];n=load();printf("\n\n 演唱者:");scanf("%s",&singer);for(i=0;i<n;i++)if(strcmp(so[i].singer,singer)==0){ k=i;printf_one(k);}if(k==-1){printf("\n抱歉,没有找到所找歌曲\n");printf("\n\n您想要继续么?\n\t1).继续2).不,返回[ ]\b\b");scanf("%d",&n);if(n==1)fsinger();else menu();}}4.根据日期查找fdate()void fup_date() //根据日期查找{int i,n;int k=-1;char up_date[8];n=load();printf("\n\n 发行年月:");scanf("%d",&up_date);for(i=0;i<n;i++)if(strcmp(so[i].up_date,up_date)==0){ k=i;printf_one(k);}if(k==-1){printf("\n抱歉,没有找到所找歌曲\n");printf("\n\n您想要继续么?\n\t1).继续2).不,返回[ ]\b\b");scanf("%d",&n);if(n==1)fup_date();else menu();}}5.根据歌曲详细信息查找fall()void fall() //根据歌曲详细信息查找{int i,n;int k=-1;struct song s;n=load();printf("\n歌名: ");scanf("%s",&);printf("\n作者: ");scanf("%s",&s.author);printf("\n演唱者: ");scanf("%s",&s.singer);printf("\n发行年月: ");scanf("%s",&s.up_date);for(i=0;i<n;i++)if((strcmp(so[i].name,)==0)&&(strcmp(so[i].author,s.author)==0)&&(strcmp(so[i].sing er,s.singer)==0)&&(strcmp(so[i].up_date,s.up_date)==0)){ k=i;printf_one(k);}if(k==-1){printf("\n抱歉,没有找到所找歌曲\n");printf("\n\n您想要继续么?\n\t1).继续2).不,返回[ ]\b\b");scanf("%d",&n);if(n==1)fall();else menu();}}【作者分组显示模块】:本模块的作用是将歌曲按作者分类,然后显示出来。