C语言 歌曲信息管理系统
- 格式:doc
- 大小:1.42 MB
- 文档页数:15
C语言课程设计
学号:
班级序号:
姓名:
指导教师:
成绩:
C语言程序设计报告
一、C语言课程设计的目的:
高级语言课程设计是学习完《高级语言程序设计》课程后进行的一次全面的综合性上机实验。其目的在于为同学提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼同学的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。
二、题目:歌曲信息管理系统
需求分析:制作一个歌曲信息管理系统
使之有以下功能
1 歌曲信息包括歌曲名,作者,演唱者,发行年月等。
2 可以对歌曲信息进行输入,删除,浏览。
3 可以查询歌曲名,作者,演唱者信息。
4 可以提供按作者显示功能。
5 用文件存储信息。
三总体设计
根据分析,整个系统可设计为以下4个模块:
信息输入模块,删除模块,浏览模块。查找模块。
信息删除:根据输入的歌曲名,作者,演唱者等一项可以删除对应的其他项
信息浏览:可以直接浏览歌曲,作者,演唱者,发行年月。
信息查找:可以查找歌曲,作者等。
四详细设计
1主函数
主函数的设计提供数据输入、数据处理和数据输出以及各种函数的调用。其中各功能模块用菜单方式选择;另外,部分菜单也可以写成函数。
(流程图如下图1 )
[程序]
void main()
{
void menu();
void function1();
void function2();
void function3();
void function4();
menu();
return;
}
(图 1 )
2 各功能模块设计
(1)输入模块
信息输入时直接按顺序结构(如图2)输入:void input()
{ char ch;
n=0;
if((fp=fopen("song.txt","a"))==NULL)
{
printf("can't open file song.txt");
exit(0);
}
printf("Please input a record:");
for(n=0;n<=50;)
{
printf("\nrecord %d:\n歌名:",n+1);
gets(song[n].name);
printf("\n时间:");
gets(song[n].year);
printf("\n作者:");
gets(song[n].author);
printf("\n歌手:");
gets(song[n].singer);
n++;
printf("继续输入吗?(y/n)\n");
ch=getchar();getchar();
if(ch=='n')
break;
}
fwrite(song,sizeof(song[0]),n,fp);
fclose(fp);
}
( 图2)
2删除模块:
用户输入要删除的信息,如输入歌曲名,根据歌曲名找到其他记录并删除。
[程序]
/******************删除模块*************************/
void del()
{
int m,k=0;
long a;
char namekey[8];
printf("\n请输入您要删除的歌曲名:");
scanf("%s",namekey);
if((fp=fopen("song.txt","r+"))==NULL)
{
printf("\n不能打开该文件!");
exit(0);
}
while(!feof(fp))
{
a=ftell(fp);
fscanf(fp,"%6s %5s %5s %10s\n",song[n].name,song[n].year,song[n].author,song[n].s inger);
if(strcmp(namekey,song[n].name)==0)
{
k=1;
break;
}
}
if(k==1)
{
printf("\n已查到,记录为");
printf("\n%6s %5s %5s %10s\n",song[n].name,song[n].year,song[n].author,song[n].si nger);
printf("\n确实要删除,按1;不删除,按0:");
scanf("%d",&m);
if(m==1)
{
fseek(fp,a,0);
fprintf(fp,"%s %s %s %s\n"," " ," "," "," ");
}
}
else
printf("\n对不起,查无此人。");
fclose(fp);
}
3·浏览模块:
在用户按下菜单后直接显示出所有歌曲信息。
void xianshi()
{ n=0;