歌曲信息管理系统通用完整版Word文档格式.docx
《歌曲信息管理系统通用完整版Word文档格式.docx》由会员分享,可在线阅读,更多相关《歌曲信息管理系统通用完整版Word文档格式.docx(43页珍藏版)》请在冰豆网上搜索。
4.详细设计 1
5.上机操作 1
6.总结 2
7.致谢 2
参考文献 2
1.题目要求
制作一个歌曲信息管理系统,要求提供以下功能。
1)歌曲信息包括歌曲名,作者,演唱者,发行年月等。
2)可以对歌曲信息进行输入,删除,浏览。
3)可以查询根据歌曲名,作者,演唱者歌曲信息。
4)可以提供按作者分组显示功能。
5)用文件存储信息。
2.需求分析
根据题目要求,由于歌曲信息数据以文本文件的方式存放,所以应提供文件的输入、输出等操作;
在程序中需要浏览歌曲的信息,应提供显示、查询等操作(其中查询方式可以按歌曲名、作者、演唱者或日期进行查询)。
并且要提供可以按作者进行分组的方法;
另外还应提供键盘式选择菜单以实现功能选择。
3.总体设计
根据整个系统的需求分析可知要实现本系统的功能,需要有以下七个模块。
歌曲信息管理系统
第3页
输入模块
删除模块
浏览模块 查找模块 分组模块 添加模块 退出
4.详细设计
【主函数】:
主函数一般设计比较简洁,只提供输入,处理和输出部分的函数调用。
,本系统主函数只起到一个将系统载入到主菜单的作用。
至于系统内其他功能的实现,则是通过主函数下的主菜单来实现的
例如
intmain() /*主函数*/
{
menu();
return0;
}
下面是菜单栏实现系统功能的流程图
运行系统,进入系统菜单栏
由菜单提示输入1-7功能选项,调用相应的函数
完成指定功能,决定继续或退出
继续时
【菜单界面】:
本系统中,主菜单是实现系统功能的主要媒介,同样也是整个系统的核心所在,进入系统是首先进入菜单界面,然后根据菜单上的提示进行功能的选取从而进行正常使用。
【程序】:
/**************************主界面***********************/voidmenu()
intk,w1;
do
system("
cls"
);
puts("
\t\t*******************主菜单********************\n"
puts("
\t\t*********************************************\n"
\t\t 欢迎来到歌曲信息管理系统 \n"
\t\t\t\t1.歌曲录入"
\t\t\t\t2.歌曲删除"
\t\t\t\t3.歌曲浏览"
\t\t\t\t4.歌曲查找"
\t\t\t\t5.作者分组显示"
\t\t\t\t6.添加新歌"
\t\t\t\t7.退出"
\n\t\t**********************************************\n"
\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)
{case1:
enter();
break;
//输入模块case2:
delet();
//删除模块case3:
browse();
//浏览模块case4:
search();
//查找模块case5:
devide();
//分组模块case6:
add();
//添加模块case7:
exit(0);
【输入模块】:
数据信息存放在文件中,一条记录对应一个歌曲,即符合
习惯也方便管理。
现在要考虑的问题是一条歌曲的记录从文件读进来后以什么形
式存放?
这里选择应用下面的结构体
structsong
char name[20];
//歌曲名*/char author[20];
//作者*/char singer[20];
//演唱者*/
char up_date[10];
//日期*/
}so[N];
需要注意的是:
so[N]中的N为歌曲数目,程序中采用宏定义方式,可以随时对N进行修改。
本程序宏定义#defineN 100
特别注意!
song.txt文件中若已经有文件,再次输入时,文件内容将被清空,若仍要使用,请选择歌曲添加!
【流程图】
输入用户要输入歌曲的个数
i从0到n-1调用函数input(i)
存入歌曲数不为0时
保存调用函数save(n)
/****************************输入模块***************************/
voidenter()
inti,n;
system("
您想要输入多少首歌?
(0-%d)?
:
"
N-1);
scanf("
n);
//要输入的歌曲数目
\n现在起请您开始输入!
\n\n"
for(i=0;
i<
n;
i++)
\n请输入第%d首歌的记录.\n"
i+1);
input(i);
//调用输入函数
if(i!
=0)save(n);
//调用保存函数printf_back();
//返回
【删除模块】:
其功能是在显示所有歌曲信息后,用户输入要删除歌曲的名字,根据歌名查找记录并删除。
删除的一般做法是将数据从文件中删除,删除位置后面的记录往前挪。
从而达到删除效果。
显示所有歌曲记录,看用户需要删除哪
输入要删除的歌曲名
是否找到此歌曲
Y N
显示找到的记录,调用删除函数
显示没有找到
Y
询问是第否4页继续
删除
N
返回主菜单
/****************************删除模块*******************************/voiddelet()
structsongs;
inti,n,k,w0=1,w1,w2=0;
n=load();
//调用加载函数system("
do
k=-1;
printf_face();
//调用显示数据结构项目函数
for(i=0;
printf_one(i);
//调用显示一个记录函数
\n\n请输入您所要删除歌曲的名字。
歌名:
%s"
s.name);
if(strcmp(s.name,so[i].name)==0)
k=i;
s=so[i];
break;
for(;
so[i]=so[i+1];
save(n-1);
if(k==-1)
\n\n不存在!
您想要继续么?
\n\n\t
第6页
1).继续 2).不,返回。
[]\b\b"
if(n==1)delet();
elsemenu();
while(k==-1);
printf_face(i);
//调用显示数据结构项目函数printf_one(k);
w1=delete_data(i,n);
//调用显示删除数据函数if(w1==1)
else
printf("
\n恭喜,歌曲已成功删除\n\n您想要继续么?
\n\n\t
w0);
w2=1;
w0=0;
if(w2==1)
so[k]=s;
while(w0==1);
menu();
【浏览模块】:
浏览模块功能是显示全部歌曲信息
【流程图】:
显示歌曲记录信息(10个一屏)
按任意键显示下一屏
按任意键返回主菜单
【程序】
/******************************浏览模块***************************/
voidbrowse()
n=load();
//调用加载函数
//调用显示数据结构项目函数system("
if((i!
=0)&
&
(i%10==0))
\n\n请按任意键继续\n"
getchar();
\t这里有%d个记录.\n"
n);
\n按任意键继续\n"
pause"
【查询模块】:
该模块的功能是根据输入的歌曲名、作者、演唱者、日期或四者全部查找相应的歌曲记录,找到后问是否继续查找还是返回主菜单。
输入歌曲名/作者/演唱者/日期/全部
Y 是否找到该歌曲记录 N
显示找到的记录
提示没有找到
询问是否继续查找
第7页
/******************************查找模块***************************/
voidsearch()
intc,m=0;
\n\n\n\t***********************查找模块*************************\n"
printf("
\t* *\n"
\t* 1.歌名 2.作者 3.演唱者 *\n"
\t* *\n"
\t****************