版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、歌曲信息管理系统要求制作一个歌曲信息管理系统功能:1)歌曲信息包括歌曲名,作者,演唱者,发行年月等。2)可以对歌曲信息进行输入,删除,浏览。3)可以查询根据歌曲名,作者,演唱者歌曲信息。4)可以提供按作者分组显示功能。5)用文件存储信息。我的设计思路根据题目要求,由于歌曲信息数据以文本文件的方式存放, 所以应提供文件的输入、输出等操作;在程序中需要浏览歌曲的 信息,应提供显示、查询等操作,按照一般的思路,我采用的是 按照歌曲名进行查找的方式。并且要提供可以按作者进行分组的 方法。整体设计思路是首先以一个主函数为主,将各个功能诸如 浏览,删除等分别设计成函数,通过主函数的调用从而实现其功 能。由
2、于程序中经常要用到一些函数,诸如加载函数,显示函数 等,如果重复输入,会严重增加工作量,所以可以将这些函数作 为公共函数编写出来,以被随时调用。分析一下整个系统,根据上面的需求分析,可以将系统设计 分为以下六大模块。歌曲信息管理退 出浏 览查 找分 组输 入删 除四.详细设计#include#include#include#include#define N 100上面这些是整个程序要用到的文件包含命令和宏定义 struct songchar name20;char creater20;char singer20;char date6;soN;将下面所要编写的函数分别声明出来void shu_r
3、u();void shan_chu();void liu_lan();void cha_zhao();void fz(int i,int n);void fen_zu ();void fname();void printf_one(int i);void input(int i);void save(int n);void printf_back();int load();void printf_face();int shan_chue_data(int j,int n);首先是设计主函数,设计主函数一般应该做到简洁,主函数主要 是提供函数调用等方面的功能,各功能函数以菜单的形式在主函数中 列
4、出来,通过主函数的调用从而实现各功能函数的功能。其用流程图 可表示为:显示一系列功能选项vN输入,判断n是否是1-6 YY根据n的值调用各功能模块函数菜单界面void menu()int k,w1;doprintf(tt*目录*nn);printf( 1.输入n);printf( 2.删除n);printf( 3.浏览n);printf( 4.查找n);printf( 5.分组 n” )printf(6.退出n);对选择的数字作判断printf(nnt 请选择(1-6):);scanf(%d,&k);if(k6)(w1=1;getchar();else w1=0;根据选择调用功能函数while
5、(w1=1);switch(k)(case 1:shu_ru();break;case 2:shan_chu();break;case 3:liu_lan();break;case 4:cha_zhao();break;case 5:fen_zu();break;case 6 exit(0);主函数void main()menu();设计输入功能函数模块数据信息存放在文件中,为方便管理,一条记录对应一个歌曲, 自然的我们可以想到用结构体数组的形式存放多首歌曲信息。struct songchar name20; /*歌曲名*/char creater20; /*作者*/char singer20
6、; /*演唱者*/char date6; /*发行年月*/soN;该结构体中包含了歌曲所需的各项信息,soN中的N为歌曲数 目程序中采用宏定义方式,可以随时对N进行修该。输入模块的设计思想是根据所要输入的歌曲数目,循环调用输入 函数,然后调用保存函数。void shu_ru()int i,n;printf(要输入几首歌:,N-1);scanf(%d,&n);printf(n 开始输入nn);for(i=0;in;i+)printf(n 输入第 %d 首 歌.n”,i+1);input(i);if(i!=0) save(n);printf_back();设计删除函数模块其思想是在显示所有歌曲信息
7、后,这时用到加载函数等,用户输 入要删除的歌曲的歌名,根据歌名查找记录并予以删除。其中,删除 的数据是从文件中删除,删除数据后面的记录即歌曲信息往前移。其 流程图可表示为:void shan_chu()struct song s; int i,n,k,w0=1,w1,w2=0; n=load(); dok=-1;printf_face();for(i=0;in;i+)if(i!=0)&i%10=0)printf(nn,按任意键键继续);getchar();printf(nn);printf_one(i);doprintf (-nn请输入你要删除的歌的歌名!Name:);scanf(s,&;fo
8、r(i=0;in;i+)if(strcmp,)=0)k=i;s=soi;break;if(k=-1)printf(nnNO exit! Are you againnnt1).again 2).no and back!);scanf(%d,&n);if(n=1)shan_chu();else menu();while(k=-1);printf_face();printf_one(k);w1=shan_chue_data(i,n);if(w1=1)printf(n 成功.nn Are you againnnt1).again 2).no and back!);scanf(d,&w0
9、);w2=1;elsew0=0;if(w2=1)sok=s;while(w0=1);menu();设计浏览函数模块所谓浏览,其思想就是显示所有的歌曲信息,因为有时歌曲信息 较多,这时可以通过设计一个循环,将歌曲信息以十个一屏的形式显 示出来,这其中仍需调用加载函数及一些显示函数,最后按任意键返 回主菜单。void liu_lan()int i,n;n=load();printf_face();for(i=0;inn 1).name2).backn);printf(Which you need:);doscanf(%d,&c);if(c2|c1)printf(nChoice error!Plea
10、se again!);m=1;while(m!=0);switch(c)case 1:fname();break;printf_back();下面是根据歌曲名茶找函数,其思想是首先输入歌曲名,然后调 用加载函数,通过strcmp函数找出该歌曲信息,如果存在则显示出 歌曲信息,如果不存在则显示Not Found,并提示用户是继续查找还 是返回主菜单。void fname()/*根据歌曲名查找*/int i,n;int k=-1;char name20;printf(nn name :);scanf(s,&name);n=load();for(i=0;in;i+)if(strcmp(soi.nam
11、e,name)=0)k=i;printf_one(k);if(k=-1)printf(nNot Foundn);printf(nnAre you againnt1).again2).no and back bb);scanf(%d,&n);if(n=1)fname();else menu();设计按作者分组功能该模块的功能是将所有歌曲信息按照作者名一样的进行分组,然后从新显示所有分组后的歌曲信息。其操作过程是加载歌曲作者 名称,将所有歌曲作者进行比较,一致的放在一起,然后显示分组后的所有歌曲信息。void fz(int i,int n)int j;struct song s;for (j=i+
12、1;jn;j+)if(strcmp(soi.creater,soj.creater)=0)if(j=i+1)i+;fz (i,n);elses=soi+1;soi+1=soj;soj=s;elseif(j=n-1)i+;fz(i,n);save(n);voidfen_zu()ame,soi.creater,soi.singer,soi.date);输入一个完整记录函数该函数的作用是分别提示用户来输入一首歌的各个信息,包括歌 曲名,作者,演唱者,日期。用到的是scanf printf函数。void input(int i)printf(nname:);scanf(s,);prin
13、tf(ncreater:);scanf(s,soi.creater);printf(nsinger:);scanf(s,soi.singer);printf(ndate:);scanf(s,soi.date);保存函数该函数是首先打开文件,如果没有就新建一个,以只写的方式, 通过循环向文件中写入歌曲信息。void save(int n)FILE *fp;int i;if(fp二fopen(,w)=NULL)printf(nCannot open filen);exit(1);for(i=0;in;i+) fprintf(fp,s %s %s %sn,,soi.creater,s
14、oi.s inger,soi.date);fclose(fp);返回上一级函数该函数就是向用户提示一个成功并调用menu()函数返回主菜单。void printf_back()void menu();printf(nnt 成功nn);menu();加载函数该函数的作用是首先打开文件,然后从文件中用fscanf函数调出歌曲信息,完成后用fclose关闭文件。int load()FILE *fp;int i;if(fp二fopen(,r)=NULL)printf(nCannot open filen);return 0;for(i=0;!feof(fp);i+)fscanf(fp,s%s%s%s,
15、,soi.creater,soi.singer,soi.date);fclose(fp);return(i);显示数据结构项目函数该函数的作用就是通过一个printf函数显示出歌曲信息的表 头。void printf_face()printf(nname creater singer daten);显示删除数据函数int shan_chue_data(int j,int n)FILE *fp;int i;if(fp二fopen(,w)=NULL)printf(nCannot open filen);exit(1);for(i=0;in;i+)if(i!=j)fprintf(fp
16、,s %s %s %sn,,soi.creater,soi.singer,soi.date);fclose(fp);return 1;程序运行下面是各个模块的界面图主菜单函数g cADocuments and 5ettingsuserffiDebugq.eKe心心心心心心心心心心心An出 12 3 4 5 6输入模块在主界面出现后输入1按回车看到下图:-Ini x目;X。X。X。X。HXXXXXXXXXXXXXAl .s富 12 3 4 5 6输入要输入的歌曲记录数然后逐条增加,如下图:输入2后返回主菜单再输入3进入浏览模块Pass请选cveatep singer datec2Thereany key to backMX1CX1CX1CX1CX1CJJCJJCJJCJ 目 JCJ -name 2) - hacliWhich you need?:1name :ae d:,- C:Docu merits and Settingsuser15 Pebugq.eKe11入出杳 2 -1 2 3 4 5 6请选择通过何神方式查找=入出 -*噫 12 3 4 5 6请选择jjKG2There are 3 record.Pass any key to hackXN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2031年中国日光灯具行业投资前景及策略咨询研究报告
- 环保监测燃油运输协议
- 国际学校水电维修服务协议
- 地下管线施工中的超挖管理与措施
- 未来学生健康管理以视力保护为重点的研究报告
- 大型水利工程拦水坝施工技术分析
- 公共设施电气施工质量保障与安全措施
- 拦砂坝工程施工方案的优化技术措施
- 全媒体广告投放策略制定及执行协议
- 新材料应用研究开发合同
- 2024解析:第三章物态变化-讲核心(原卷版)
- DB32T 1590-2010 钢管塑料大棚(单体)通 用技术要求
- 安全行车知识培训
- 2024年安徽省高校分类对口招生考试数学试卷真题
- 第12讲 语态一般现在时、一般过去时、一般将来时(原卷版)
- 2024年采购员年终总结
- 2024年新疆区公务员录用考试《行测》试题及答案解析
- 肺动脉高压的护理查房课件
- 2025届北京巿通州区英语高三上期末综合测试试题含解析
- 公婆赠予儿媳妇的房产协议书(2篇)
- 煤炭行业智能化煤炭筛分与洗选方案
评论
0/150
提交评论