C语言课设之歌曲信息管理系统.docx
《C语言课设之歌曲信息管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课设之歌曲信息管理系统.docx(13页珍藏版)》请在冰豆网上搜索。
![C语言课设之歌曲信息管理系统.docx](https://file1.bdocx.com/fileroot1/2022-11/28/b31255cb-d023-4136-a0aa-5bcf72a4e46b/b31255cb-d023-4136-a0aa-5bcf72a4e46b1.gif)
C语言课设之歌曲信息管理系统
C语言课程设计
1、题目要求
2、需求分析;
3、系统总框图;
4、总体设计;
5、列出所有定义的函数及说明;
6、上机操作
7、学习心得
前言
计算机科学技术的发展,不仅极大地促进了整个科学技术的发展,而且明显地加快了经济信息化和社会信息化的进程。
因此,计算机教育在全国备受重视,计算机知识与能力已成为21世纪人才素质的基本要素之一。
如今,高等教育的计算机教育发展十分迅速。
十多年前,只有部分理工科专业开设计算机课程。
今天,几乎所有高校的所有专业都开设了程度不同的计算机课程。
人们已经认识到,计算机知识已成为当代知识分子知识结构中不可缺少的重要组成部分。
而除了掌握计算机的基础知识和操作的基本能力外,掌握一门高级编程语言,并可以熟练运用它,已成为当代大学生综合能力必要组成。
计算机技术发展如此迅猛,计算机应用如此广泛,需要学习的东西愈来愈多,而我们的总学时是有限的。
一般来说,计算机课程学习可以分为两部分:
一部分是理论课程学习,一部分是上机应用实习。
根据我们专业的性质和要求,则应侧重于上机操作运用。
为此,学校特意在暑期最后一星期安排了32个学时的上机实习。
现将一星期的实习内容及结果分析分列如下:
歌曲信息管理系统
一.题目要求
1.歌曲信息包括歌曲名,作者,演唱者,发行年月等。
2.可以对歌曲信息进行输入,删除,浏览。
3.可以查询歌曲名,作者,演唱者信息。
4.可以提供按作者分组显示功能。
二.需求分析
根据题目要求,数据以文件的形式存储,所以应提供文件的输入,输出等操作;还需要文件具有查找,替换,修改数据的功能。
三.总体设计
根据上面的需求分析,可以将这个系统的设计分为如下五大模块:
四.详细设计
具体程序:
1.Main函数
main()
{
inta;
while
(1)
{
printf("\t\t=============<欢迎来到歌曲信息查询系统>============\n");
printf("\t\t---540732820071004192戴敏泽\n");
printf("\t\t****************************************************\n");
printf("\t\t***********************\n");
printf("\t\t********************\n");
printf("\t\t************\n");
printf("\t\t************\n");
printf("\t\t************\n");
printf("\t\t************\n");
printf("\t\t*******************==>系统菜单<==*******************\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)
{
case1:
enter();break;
case2:
delete();break;
case3:
browse();break;
case4:
search();break;
}
}
}
2.输入函数
voidenter()
{
intj;
charc[2];
FILE*fp;
if((fp=fopen("data.txt","w"))==NULL)
{
printf("Cannotopenthefile!
\n");
exit(0);
}
for(j=0;j
{
fwrite(&dan[j],sizeof(structsystem),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(structsystem),1,fp)!
=1)
printf("文件书写错误!
\n");
elseprintf("操作成功!
\n");
printf("是否继续输入?
(Yes[y]/No[n])\n");
scanf("%s",c);
if(strcmp(c,"n")==0)break;
}
fclose(fp);
}
3.删除函数
voiddelete()
{
intj,v,c;
charw[20];
FILE*fp;
printf("请输入你想要删除的歌曲名称:
");
scanf("%s",w);
fp=fopen("data.txt","rb");
for(j=0;j<100;j++)
{
if(fread(&dan[j],sizeof(structsystem),1,fp)!
=1)break;
}
v=j;
for(j=0;j{
if(strcmp(w,dan[j].name)==0)
c=j;
}
fclose(fp);
fp=fopen("data.txt","wb");
for(j=0;j{
if(j!
=c)
fwrite(&dan[j],sizeof(structsystem),1,fp);
}
fclose(fp);
printf("删除成功!
\n");
i--;
}
4.浏览函数
voidbrowse()
{
intj;
FILE*fp;
fp=fopen("data.txt","rb");
for(j=0;j<100;j++)
{
if(fread(&dan[j],sizeof(structsystem),1,fp)==1)
{
printf("曲名:
%s\n",dan[j].name);
printf("作者:
%s\n",dan[j].author);
printf("歌手:
%s\n",dan[j].singer);
printf("发行日期:
%s\n",dan[j].time);
printf("---------------------------------\n");
}
elsebreak;
}
fclose(fp);
}
5.查询函数
voidsearch()
{
intflag,j,x;
charw[20];
FILE*fp;
charv[20];
printf("
(1)按作者\n");
printf("
(2)按歌手\n");
printf("(3)按曲名\n");
printf("请选择操作方式:
\n");
scanf("%d",&x);
if(x==3)
{
flag=0;
printf("请输入歌曲名称:
");
scanf("%s",&w);
fp=fopen("data.txt","rb");
for(j=0;j<100;j++)
{
if(fread(&dan[j],sizeof(structsystem),1,fp)!
=1)break;
if(strcmp(dan[j].name,w)==0)
{
printf("曲名:
%s\n",dan[j].name);
printf("作者:
%s\n",dan[j].author);
printf("歌手:
%s\n",dan[j].singer);
printf("发行日期:
%s\n",dan[j].time);
printf("---------------------------------\n");
flag=1;
}
}
if(flag==0)
printf("未找到歌曲!
\n");
fclose(fp);
}
elseif(x==2)
{
flag=0;
printf("请输入歌手:
");
scanf("%s",&v);
fp=fopen("data.txt","rb");
for(j=0;j<100;j++)
{
if(fread(&dan[j],sizeof(structsystem),1,fp)!
=1)break;
if(strcmp(dan[j].singer,v)==0)
{
printf("曲名:
%s\n",dan[j].name);
printf("作者:
%s\n",dan[j].author);
printf("歌手:
%s\n",dan[j].singer);
printf("发行日期:
%s\n",dan[j].time);
printf("---------------------------------\n");
flag=1;
}
}
if(flag==0)
printf("未找到歌曲!
\n");
fclose(fp);
}
elseif(x==1)
{
flag=0;
printf("请输入作者:
");
scanf("%s",w);
fp=fopen("data.txt","rb");
for(j=0;j<100;j++)
{
if(fread(&dan[j],sizeof(structsystem),1,fp)!
=1)break;
if(strcmp(dan[j].author,w)==0)
{
printf("曲名:
%s\n",dan[j].name);
printf("作者:
%s\n",dan[j].author);
printf("歌手:
%s\n",dan[j].singer);
printf("发行日期:
%s\n",dan[j].time);
printf("---------------------------------\n");
flag=1;
}
}
if(flag==0)
printf("未找到歌曲!
\n");
fclose(fp);
}
elseprintf("Error!
\n");
}
main()
{
inta;
while
(1)
{
printf("\t\t=============<欢迎来到歌曲信息查询系统>============\n");
printf("\t\t---540732820071004192戴敏泽\n");
printf("\t\t****************************************************\n");
printf("\t\t***********************\n");
printf("\t\t********************\n");
printf("\t\t************\n");
printf("\t\t************\n");
printf("\t\t************\n");
printf("\t\t************\n");
printf("\t\t*******************==>系统菜单<==*******************\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)
{
case1:
enter();break;
case2:
delete();break;
case3:
browse();break;
case4:
search();break;
}
}
}
五.具体补充说明
1.首先定义一个结构体
#include
#include
#include
#include
inti=0;
structsystem
{
charauthor[20];
charsinger[20];
chartime[20];
charname[20];
}dan[100];
2.其次定义主函数,并且构造四大模块函数
3.保存模块
流程图
六.上机操作
1.主菜单函数
2.输入模块
3.删除模块
4.浏览模块.
5.查询模块