C语言程序设计报告—歌曲信息管理系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《高级语言程序设计》课程设计

说明书

设计题目:歌曲信息管理系统设计

目录

1、设计题目 (3)

2、主函数 (4)

3、输入模块 (4)

4、删除模块 (5)

5、浏览模块 (6)

6、查找模块 (6)

7、各被调函数 (7)

8、设计小结 (8)

9、源程序代码 (8)

歌曲信息管理系统设计

1、需求分析:用文件存储信息,因而要提供文件的输入输出操作;可对歌曲信息进行输入、删除、浏览,因而要提供文件的输入、删除和信息显示操作;查询歌曲信息要提供查找操作;实现按作者分组显示功能则要提供排序功能;另外要提供键盘式选择菜单以实现功能选择。

2、总体设计:整个管理系统可以被设计为数据输入模块、数据删除模块、信息浏览模块、信息查询模块和信息分组显示模块。

3、详细设计

数据结构采用结构体,建立歌曲信息结构体:

Struct SongInfo

{ Char name[20]; //歌曲名

Char author[20]; //作者

Char singer[20]; //演唱者

Char pub_date[6]; //发行年月(yyyymm)

}SI;

(1) 数据输入模块把歌曲信息写入文件。

(2) 数据删除模块采用基本的查找算法,查找歌曲信息文件,如果是要删除的歌曲,则舍弃改信息。否则重新写入文件。

(3) 信息浏览模块读歌曲信息文件,显示输出。

(4) 信息查询模块通过菜单选择查询字段:歌曲名作者演唱者。然后采用基本查找算法在歌曲信息文件中查找,如果找到,则输出;否则输出“对不起,没有您要找的歌曲信息!。”

(5) 信息分组显示模块选择按作者分组显示歌曲信息,用fread 或fscanf 把歌曲信息文件中的信息读取到临时变量中(临时变量数据结构可以采用歌曲信息结构体数组),采用排序算法(冒泡、插入、选择等)把歌曲信息按照作者排序,然后输出。

一:详细设计

1主函数

主函数的设计提供数据输入、数据处理和数据输出以及各种函数的调用。其中各功能模块用菜单方式选择;另外,部分菜单也可以写成函数。

[程序]

void main()

{

void menu();

void function1();

void function2();

void function3();

void function4();

menu();

return;

}

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删除模块:

用户输入要删除的信息,如输入歌曲名,根据歌曲名找到其他记录并删除。

[程序]

/******************删除模块*************************/

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;

if((fp=fopen("song.txt","rb"))==NULL)

{

printf("can't open the file song.txt");

exit(0);

}

printf(" 歌名\t 作者\t 歌手时间\n");

while(fread(&song[n],sizeof(song[n]),1,fp)==1)

{

printf("%6s %5s %10s %5s\n",song[n].name,song[n].author,song[n].singer,song[n]. year);

n++;

相关文档
最新文档