歌曲信息管理系统——C语言
- 格式:doc
- 大小:130.00 KB
- 文档页数:28
C语言课程设计歌曲信息管理源代码#include "stdio.h"#include "string.h"#include "conio.h"#include "stdlib.h"struct music_list{char name[10];char singer[25];char ci[25];char qu[25];char zhuanji[25];char fxtime[25];char fxgongsi[25];int flag;};int count=0;const int MAX_COUNT = 100;void new_music(struct music_list musics[]);void delete_music_byname(struct music_list musics[],char* name); void search_music(struct music_list musics[],char*name);void show_all(struct music_list musics[]);int main(){ int choice;char name[10];struct music_list musics[MAX_COUNT];int i;for(i=0;i<MAX_COUNT;i++){musics[i].flag = 0;}T:do{printf("*******************************************************\n");printf("\nselect:1:new music 2:search 3:delete 4:show all 0:Exit\n");printf("*******************************************************\n");printf("please:");scanf("%d",&choice);switch(choice){case 1:new_music(musics);break;case 2:printf("Name:");scanf("%s",name);search_music(musics,name);break;case 3:printf("Name:");scanf("%s",name);delete_music_byname(musics,name);break;case 4:show_all(musics);break;case 0:break;default:choice = 0;}}while(choice !=0);printf("Thanks,Bye!\n");getch();return 0;}void new_music(struct music_list musics[]) {if(count==MAX_COUNT){printf("address list is full!\n");return;}int i,j;for(i=0;i<MAX_COUNT;i++){if(musics[i].flag == 0){j = i;break;}}printf("name:");scanf("%s",musics[j].name);printf("geshou:");scanf("%s",musics[j].singer);printf("zuoci:");scanf("%s",musics[j].ci);printf("zuoqu:");scanf("%s",musics[j].qu);printf("zhuanji:");scanf("%s",musics[j].zhuanji);printf("chubanshijian:");scanf("%s",musics[j].fxtime);printf("chubangongsi:");scanf("%s",musics[j].fxgongsi);musics[j].flag = 1;count++;}void search_music(struct music_list musics[],char*name){int i,j,flag=0;if(count==0){printf("Music list is empty!\n");return;}for(i=0;i<MAX_COUNT;i++){if(strcmp(name,musics[i].name)==0 && musics[i].flag == 1){if(flag == 0) {printf("====================================================== =\n");printf("name\t",musics[i].name);printf("singer\t",musics[i].singer);printf("ci\t",musics[i].ci);printf("qu\t",musics[i].qu);printf("zhuanji\t",musics[i].zhuanji);printf("fxtime\t",musics[i].fxtime);printf("fxgongsi\t",musics[i].fxgongsi);printf("\n==================================================== ===\n");flag=1;}printf("%s\t",musics[i].name);printf("%s\t",musics[i].singer);printf("%s\t",musics[i].ci);printf("%s\t",musics[i].qu);printf("%s\t",musics[i].zhuanji);printf("%s\t",musics[i].fxtime);printf("%s\t\n",musics[i].fxgongsi);}}if(flag!=1){printf("No such a music!");}}void show_all(struct music_list musics[]){if(count==0){printf("Music list is empty!\n");return;}int i,flag=0;;for(i=0;i<MAX_COUNT;i++){if(musics[i].flag == 1){if(flag == 0) {printf("====================================================== =\n");printf("name\t",musics[i].name);printf("singer\t",musics[i].singer);printf("ci\t",musics[i].ci);printf("qu\t",musics[i].qu);printf("zhuanji\t",musics[i].zhuanji);printf("fxtime\t",musics[i].fxtime);printf("\n==================================================== ===\n");flag=1;}printf("%s\t",musics[i].name);printf("%s\t",musics[i].singer);printf("%s\t",musics[i].ci);printf("%s\t",musics[i].qu);printf("%s\t",musics[i].zhuanji);printf("%s\t",musics[i].fxtime);printf("%s\t\n",musics[i].fxgongsi);}}}void delete_music_byname(struct music_list musics[],char* name){int i,j,flag=0;if(count==0){printf("Music list is empty!\n");return;}for(i=0;i<MAX_COUNT;i++){if(strcmp(name,musics[i].name)==0 && musics[i].flag == 1){musics[i].flag = 0;count --;if(flag == 0) {printf("The music \" %s \" was deleted.\n",musics[i].name);printf("====================================================== =\n");printf("name\t",musics[i].name);printf("singer\t",musics[i].singer);printf("ci\t",musics[i].ci);printf("qu\t",musics[i].qu);printf("zhuanji\t",musics[i].zhuanji);printf("fxtime\t",musics[i].fxtime);printf("\n==================================================== ===\n");flag=1;}printf("%s\t",musics[i].name);printf("%s\t",musics[i].singer);printf("%s\t",musics[i].ci);printf("%s\t",musics[i].qu);printf("%s\t",musics[i].zhuanji);printf("%s\t",musics[i].fxtime);printf("%s\t\n",musics[i].fxgongsi);}}if(flag!=1){printf("No such a music!");}}。
学院:计算机学院专业:网络工程班级:***********姓名:**********学号:***********课题:歌曲信息管理系统指导老师:***********#include<stdio.h>#include<string.h>#include <stdlib.h>#define N 10struct song{char name_1[20]; /*the song name*/char name_2[20]; /*the writer name*/char name_3[20]; /*the singer name*/char album[20]; /*the ablum*/char date[20]; /*the date*/}Song[N]; /*每个数组元素对应一首歌曲信息*/void back() /*选择继续浏览还是返回主菜单*/{int w,n;void menu();void browse();n=0;do{printf("What do you want to do ?\\t n\n1.browse all now\t 2.back: [ ]\b\b"); scanf("%d",&w);if(w<1||w>2){n=1;printf("Input Error Please choice again\n\n\n\n");}else n=0;}while(n==1);switch(w){case 1:browse();break;case 2:menu();break;}}void input(int i){scanf("%s",Song[i].name_1);scanf("%s",Song[i].name_2);scanf("%s",Song[i].name_3);scanf("%s",Song[i].album);scanf("%s",Song[i].date);}/******************输入模块*****************/void enter(){FILE *fp;int i,n;n=N;printf("How many songs(0-%d)?",N-1);for(i=0;i<n;i++)printf("\nNow please enter %dth song information:\n",i+1);scanf("%s %s %s %s %s",Song[i].name_1,Song[i].name_2,Song[i].name_3,Song[i].album,Song[i ].date);}if((fp=fopen("d:/music.txt","a"))==NULL){printf("\n Cannot open file\n");}for(i=0;i<n;i++){fprintf(fp,"%s %s %s %s %s\n",Song[i].name_1,Song[i].name_2,Song[i].name_3,Song[i].album,S ong[i].date);}fclose(fp);back();}int load(){FILE *fp;int i;if((fp=fopen("d:/music.txt","r"))==NULL)printf("\nCannot open file\n");for(i=0;!feof(fp);i++)fscanf(fp,"%s %s %s %s %s",Song[i].name_1,Song[i].name_2,Song[i].name_3,Song[i].album,So ng[i].date);return(i-1); /* 返回记录个数*/}void print(int i){printf("%dth song:",i+1);printf("%s %s %s %s %s\n",Song[i].name_1,Song[i].name_2,Song[i].name_3,Song[i].album,Son g[i].date);}/******************浏览模块*****************/void browse(){int i,n;n=load();for(i=0;i<n;i++) /*利用循环逐个输出歌曲信息*/{print(i);puts("\n");}back();}/******************查找模块*****************/开始void search(){char s[20];int i,n,w,a;void print();void getch();w=0;n=load();do{printf("Please input the song's name you want:"); scanf("%s",s);for(i=0;i<n;i++)if(strcmp(s,Song[i].name_1)==0){print(i);w=1;}if(w==0){printf("\nThis song is not existed\n");}printf("do you want to continue?\n");printf("1.yes\n2.no\n");scanf("%d",&a);getch();}while(a==1);back();}/******************删除模块******************/void del(){FILE *fp;int i,j,n,flag,a;char name[20];n=load();printf("\n original songs:\n");for(i=0;i<n;i++)printf(" %dth:%s ",i+1,Song[i].name_1);n=i;do{printf("\n input song name deleted:\n"); scanf("%s",name);for(flag=1,i=0;flag&&i<n;i++){if(strcmp(Song[i].name_1,name)==0) {for(j=i;j<n-1;j++){strcpy(Song[j].name_1,Song[j+1].name_1); strcpy(Song[j].name_2,Song[j+1].name_2); strcpy(Song[j].name_3,Song[j+1].name_3); strcpy(Song[j].album,Song[j+1].album); strcpy(Song[j].date,Song[j+1].date);}flag=0;}}if(!flag)n=n-1;elseprintf("\n not found\n");printf("Now the songs are:\n\n");if((fp=fopen("d:/music.txt","w"))==NULL) {printf("\n Cannot open file\n");}for(i=0;i<n;i++)fwrite(&Song[i],sizeof(struct song),1,fp); fclose(fp);fp=fopen("d:/music.txt","r");for(i=0;i<n;i++)print(i);fclose(fp);puts("\n");printf("do you want to continue?\n"); printf("1.yes\n2.no\n");scanf("%d",&a);getch();}while(a==1);back();}/*******************按作者显示模块*******************/开始利用strcmp函数将作者名按从大到小的顺序排序用循环输出排序后的所有歌曲信息调用back()函数结束void list(){struct song s[1];int i,j,n;n=load();for(i=0;i<n-1;i++)for(j=i+1;j<n;j++){if((strcmp(Song[i].name_2,Song[j].name_2))>0){s[0]=Song[i];Song[i]=Song[j];Song[j]=s[0];}}for(i=0;i<n;i++){printf("%dth song:",i+1);printf("%s %s %s %s %s\n",Song[i].name_1,Song[i].name_2,Song[i].name_3,Song[i].album,Son g[i].date);}back();}/****************************主界面***************************/void menu(){int n,w;do{ puts("\n");puts("\t\t*********************MENU*********************\n\n");puts("\t\t\t\t 1.Enter new song");puts("\t\t\t\t 2.Browse all");puts("\t\t\t\t 3.Search");puts("\t\t\t\t 4.Delete");puts("\t\t\t\t 5.List by singer");puts("\t\t\t\t 6.Exit");puts("\n\n\t\t******************************************\n");printf("Choice your number(1-6): [ ]\b\b");scanf("%d",&n);if(n<1||n>6) /*对所选数字进行判断*/{w=1;printf("Input Error Please choice agin");}else w=0;}while(w==1);switch(n){case 1:enter();break;case 2:browse();break;case 3:search();break;/*search the information by song's name*/ case 4:del();break;case 5:list();break;/*find by writer*/case 6:exit(0);}}/*******主函数********/main(){ menu();}。
C语言课程设计实习报告姓名:汪通辉学号:20161003364 专业:电子信息工程班学号:071162院(系):机械与电子信息学院指导教师:董理君2016 年 1 2月2016.12 中国地质大学C语言课程设计 1第一章§1.1题目描述1.题目与要求1)制作一个歌曲信息管理系统2) 歌曲信息包括歌曲名,作者,演唱者,发行年月等。
3) 可以对歌曲信息进行输入,删除,浏览。
4) 可以查询根据歌曲名,作者,演唱者歌曲信息。
5) 可以提供按作者分组显示功能。
6) 用文件存储信息。
[需求分析]1)根据题目要求,数据以文件的形式存储,所以应提供文件的输入,输出等操作;还需要文件具有查找,修改数据,删除等功能。
§1.2算法设计1.流程图根据上面的需求分析,可以将这个系统的设计分为如下五大模块:*(其中“分组显示”功能未在程序中实现)2汪通辉 2016.12§1.3程序设计及代码分析1.定义声明程序:struct song { char name[20]; char author[20]; char singer[20]; char data[20];}so[N]; //定义结构体void menu(); void input(int i); void save(int n); void enter(); void browse(); void delet(); void search();void back(); //声明调用函数2.main 函数程序: int main() {system("color 74"); //改变界面颜色 menu(); exit(0); return 0; }2016.12 中国地质大学C语言课程设计 3 3.menu函数程序:void menu(){int n;system("cls");printf("\n\n\n\n\n\n\n\t\t\t\t ***************歌曲管理系统***************\n\n\n");printf("\t\t\t\t\t\t 1.存入歌曲。
歌曲信息管理系统-通用完整版中国地质大学本科生课程论文封面C语言课程设计课程名称计算机高级语言课程设计(C)教师姓名刘刚本科生姓名本科生学号***********本科生专业机械设计制造及其自所在院系机械电子信息学院类别: C. 本科生日期: 2013.07.11注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。
目录1.题目要求 (1)2.需求分析 (1)3.总体设计 (1)4.详细设计 (2)5.上机操作 (32)6.总结 (43)7.致谢 (44)参考文献 (44)1.题目要求制作一个歌曲信息管理系统,要求提供以下功能。
1)歌曲信息包括歌曲名,作者,演唱者,发行年月等。
2)可以对歌曲信息进行输入,删除,浏览。
3)可以查询根据歌曲名,作者,演唱者歌曲信息。
4)可以提供按作者分组显示功能。
5)用文件存储信息。
2.需求分析根据题目要求,由于歌曲信息数据以文本文件的方式存放,所以应提供文件的输入、输出等操作;在程序中需要浏览歌曲的信息,应提供显示、查询等操作(其中查询方式可以按歌曲名、作者、演唱者或日期进行查询)。
并且要提供可以按作者进行分组的方法;另外还应提供键盘式选择菜单以实现功能选择。
3.总体设计歌曲信息管理系统输入第1页第2页4.详细设计 【主函数】:主函数一般设计比较简洁,只提供输入,处理和输出部分的函数调用。
,本系统主函数只起到一个将系统载入到主菜单的作用。
至于系统内其他功能的实现,则是通过主函数下的主菜单来实现的例如int main() /*主函数*/{menu();return 0;}下面是菜单栏实现系统功能的流程图继续时【菜单界面】:本系统中,主菜单是实现系统功能的主要媒介,同样也是整个系统的核心所在,进入系统是首先进入菜单界面,然后根据菜单上的提示进行功能的选取从而进行正常使用。
【程序】: /**************************主界面删除退浏览查找分组添加 运行系统,进由菜单提示输入1-7功能完成指定功能,决***********************/void menu(){i nt k,w1;d o{system("cls");puts("\t\t*******************主菜单********************\n");puts("\t\t******************************** *************\n");puts("\t\t 欢迎来到歌曲信息管理系统\n");puts("\t\t******************************** *************\n");puts("\t\t\t\t 1.歌曲录入");puts("\t\t\t\t 2.歌曲删除");puts("\t\t\t\t 3.歌曲浏览");第3页puts("\t\t\t\t 4.歌曲查找");puts("\t\t\t\t 5.作者分组显示");puts("\t\t\t\t 6.添加新歌");puts("\t\t\t\t 7.退出");puts("\n\t\t****************************** ****************\n");puts("\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);s witch(k)第4页{case 1:enter();break; //输入模块c ase 2:delet();break; //删除模块c ase 3:browse();break; //浏览模块c ase 4:search();break; //查找模块c ase 5:devide();break; //分组模块c ase 6:add();break; //添加模块c ase 7:exit(0);}}【输入模块】:数据信息存放在文件中,一条记录对应一个歌曲,即符合习惯也方便管理。
告设计报课程歌曲信息管理系统题计目:课程设********学号:***姓名:专外包务业:电子商与软件*******:级班***指导教师:062014 月01 年日课程设计评分表学号:林禹森班级:学生姓名:课程设计题目:歌曲信息管理系统目录1.需求分析: (4)2.总体设计: (4)3.详细设计: (5)(1)主函数main(): (5)(2)初始化函数 (6)(3)歌曲录入函数 (8)(4)文件输入函数。
(9)(5)信息修改函数。
(10)(6)歌曲删除函数。
(12)(7 按歌手查询函数。
(13)(8)按公司查询函数。
(14)(9)歌曲导出或保存函数。
(15)(10)浏览函数。
(16)4.函数功能测试。
(18)初始化函数initialize(): (18)主菜单函数menu_song(): (19)浏览函数output_song(): (19)录入函数input_song(): (20)修改函数revise_song(): (21)删除函数delete_song(): (22)查询函数search_singer():(按歌手查询) (22)查询函数search_corporation():(按公司查询) (23)导入函数load_song(): (24)保存函数save_song(): (24)5.软件使用说明书。
(25)..............................................................................................................................................25总结6.计程设理系统课歌曲信息管:分求析1.需”,以方便对根据歌曲信息管理系统的需要,建立一个“歌曲信息管理系统成绩的各项管理操作。
要求完成:能对歌曲进行录入和修改;i.能按唱片公司和歌手统计歌曲信息;ii.能对歌曲进行删除、导入和导出。
C语言课程设计目录1、题目要求2、需求分析;3、系统总框图;4、总体设计;5、列出所有定义的函数及说明;6、上机操作7、学习心得前言计算机科学技术的发展,不仅极大地促进了整个科学技术的发展,而且明显地加快了经济信息化和社会信息化的进程。
因此,计算机教育在全国备受重视,计算机知识与能力已成为21世纪人才素质的基本要素之一。
如今,高等教育的计算机教育发展十分迅速。
十多年前,只有部分理工科专业开设计算机课程。
今天,几乎所有高校的所有专业都开设了程度不同的计算机课程。
人们已经认识到,计算机知识已成为当代知识分子知识结构中不可缺少的重要组成部分。
而除了掌握计算机的基础知识和操作的基本能力外,掌握一门高级编程语言,并可以熟练运用它,已成为当代大学生综合能力必要组成。
计算机技术发展如此迅猛,计算机应用如此广泛,需要学习的东西愈来愈多,而我们的总学时是有限的。
一般来说,计算机课程学习1页可以分为两部分:一部分是理论课程学习,一部分是上机应用实习。
根据我们专业的性质和要求,则应侧重于上机操作运用。
为此,学校特意在暑期最后一星期安排了32个学时的上机实习。
现将一星期的实习内容及结果分析分列如下:歌曲信息管理系统一.题目要求1.歌曲信息包括歌曲名,作者,演唱者,发行年月等。
2.可以对歌曲信息进行输入,删除,浏览。
3.可以查询歌曲名,作者,演唱者信息。
4.可以提供按作者分组显示功能。
二.需求分析根据题目要求,数据以文件的形式存储,所以应提供文件的输入,输出等操作;还需要文件具有查找,替换,修改数据的功能。
三.总体设计根据上面的需求分析,可以将这个系统的设计分为如下五大模块:四.详细设计歌曲信息管理系统输入删除退出浏览查询打开上次保存文件进入主菜单函数2页3页具体程序:1.Main 函数main(){int a;while(1){printf("\t\t=============< 欢迎来到歌曲信息查询系统>============\n");printf("\t\t ---5407328 192 戴敏泽\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"); 显示一系列功能选项输入n ,判断n 是否是0-6 根据n 的值调用各功能模块函数是否。
《高级语言程序设计》课程设计说明书设计题目:歌曲信息管理系统设计目录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主函数主函数的设计提供数据输入、数据处理和数据输出以及各种函数的调用。
其中各功能模块用菜单方式选择;另外,部分菜单也可以写成函数。
C语言程序设计报告—歌曲信息管理系统
随着科技的不断发展,在歌曲的学习和传播方面,人们都容易接触到更多的歌曲,但是在学习和了解这些歌曲信息时也会出现一定的困难,所以也就产生了一种能够帮助人们处理歌曲信息的系统—歌曲信息管理系统。
歌曲信息管理系统采用C语言的编程语言来完成,主要功能有:歌曲信息的保护、歌曲信息的查询、歌曲信息的增添、歌曲信息的修改和歌曲信息的删除等。
歌曲信息管理系统采用C语言编程语言,系统主要包括程序和数据库。
程序主要用于编写系统的代码,控制系统各功能模块的实现,数据库则负责存储歌曲信息。
程序的实现主要采用了输入输出结构、选择结构、循环结构等常用的程序设计技术和语句,将用户的输入和数据库的操作结合在一起,实现歌曲信息的增添、查询、修改和删除,从而实现有效的管理歌曲信息。
本歌曲信息管理系统实现简单而功能强大。
它可以有效地实现歌曲信息的统计,从而对歌曲的影响力、流行度等信息有效地管理。
另外,它的安全性得到了很好的保护。
利用数据库的安全性特点,将歌曲信息锁定,保证歌曲信息不被非法修改或删除。
总的来说,歌曲信息管理系统是一种使用C语言编写的有效的管理歌曲信息的系统,经过努力实现了对歌曲信息的完整管理,安全性也得到了很好的保护,可以更好地为大家提供歌曲信息服务。
歌曲信息管理系统[要求]制作一个歌曲信息管理系统功能:1)歌曲信息包括歌曲名,作者,演唱者,发行年月等。
2)可以对歌曲信息进行输入,删除,浏览。
3)可以查询根据歌曲名,作者,演唱者歌曲信息。
4)可以提供按作者分组显示功能。
5)用文件存储信息。
我的设计思路根据题目要求,由于歌曲信息数据以文本文件的方式存放,所以应提供文件的输入、输出等操作;在程序中需要浏览歌曲的信息,应提供显示、查询等操作,按照一般的思路,我采用的是按照歌曲名进行查找的方式。
并且要提供可以按作者进行分组的方法。
整体设计思路是首先以一个主函数为主,将各个功能诸如浏览,删除等分别设计成函数,通过主函数的调用从而实现其功能。
由于程序中经常要用到一些函数,诸如加载函数,显示函数等,如果重复输入,会严重增加工作量,所以可以将这些函数作为公共函数编写出来,以被随时调用。
分析一下整个系统,根据上面的需求分析,可以将系统设计分为以下六大模块。
四.详细设计#include<>#include<>#include<>#include<>#define N 100上面这些是整个程序要用到的文件包含命令和宏定义struct song{char name[20];char creater[20];char singer[20];char date[6];}so[N];将下面所要编写的函数分别声明出来void shu_ru() ;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);首先是设计主函数,设计主函数一般应该做到简洁,主函数主要是提供函数调用等方面的功能,各功能函数以菜单的形式在主函数中列出来,通过主函数的调用从而实现各功能函数的功能。
其用流程图可表示为:N菜单界面void menu(){int k,w1;do{printf("\t\t******************目录**********************\n\n");printf(" 1.输入\n");printf(" 2.删除\n");printf(" 3.浏览\n");printf(" 4.查找\n");printf(“5.分组\ n”)printf("6.退出\n");对选择的数字作判断printf("\n\n\t请选择(1-6):");scanf("%d",&k);if(k<1||k>6){w1=1;getchar();}else w1=0;根据选择调用功能函数}while(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 song{char name[20]; /*歌曲名*/char creater[20]; /*作者*/char singer[20]; /*演唱者*/char date[6]; /*发行年月*/}so[N];该结构体中包含了歌曲所需的各项信息,so[N]中的N为歌曲数目,程序中采用宏定义方式,可以随时对N进行修该。
输入模块的设计思想是根据所要输入的歌曲数目,循环调用输入函数,然后调用保存函数。
void shu_ru(){int i,n;printf("要输入几首歌:",N-1);scanf("%d",&n);printf("\n 开始输入\n\n");for(i=0;i<n;i++){printf("\n 输入第 %d首歌.\n",i+1);input(i);}if(i!=0) save(n);printf_back();}设计删除函数模块其思想是在显示所有歌曲信息后,这时用到加载函数等,用户输入要删除的歌曲的歌名,根据歌名查找记录并予以删除。
其中,删除的数据是从文件中删除,删除数据后面的记录即歌曲信息往前移。
其流程图可表示为:void shan_chu() { struct song s;int i,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();for(i=0;i<n;i++){if((i!=0)&&i%10==0){printf("\n\n,按任意键键继续");getchar();printf("\n\n");}printf_one(i);}do{printf("\n\n请输入你要删除的歌的歌名!Name:");scanf("%s",&;for(i=0;i<n;i++){if(strcmp,so[i].name)==0){k=i;s=so[i];break;}}if(k==-1){printf("\n\nNO exit! Are you again\n\n\t1).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成功.\n\n Are you again\n\n\t1).again 2).no and back! ");scanf("%d",&w0);w2=1;}else{w0=0;if(w2==1)so[k]=s;}}while(w0==1);menu();}设计浏览函数模块所谓浏览,其思想就是显示所有的歌曲信息,因为有时歌曲信息较多,这时可以通过设计一个循环,将歌曲信息以十个一屏的形式显示出来,这其中仍需调用加载函数及一些显示函数,最后按任意键返回主菜单。
void liu_lan() {int i,n;n=load();printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)){printf("\n\n按任意键继续\n");getchar();printf("\n\n");}printf_one(i);}printf("\tThere are %d record.\n",n);printf("\nPass any key to back\n");getchar();menu();}设计查找函数模块该模块设计主要是通过歌曲名来进行查找,如果文件中存在所要查找的歌曲,则显示出该歌曲的所有信息,包括歌曲名,作者,演唱者及日期。
查找结束后提示用户是继续查找还是返回主菜单。
其流程图可表示为:void cha_zhao(){int c,m=0;printf("\n\n 通过何种方式查找=>\n\n 1).name 2).back\n");printf("Which you need:");do{scanf("%d",&c);if(c>2||c<1){printf("\nChoice error!Please 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 name[20];printf("\n\n name :");scanf("%s",&name);n=load();for(i=0;i<n;i++)if(strcmp(so[i].name,name)==0){k=i;printf_one(k);}if(k==-1){printf("\nNot Found\n");printf("\n\nAre you again\n\t1).again 2).no and back [ ]\b\b");scanf("%d",&n);if(n==1)fname();else menu();}}设计按作者分组功能该模块的功能是将所有歌曲信息按照作者名一样的进行分组,然后从新显示所有分组后的歌曲信息。
其操作过程是加载歌曲作者名称,将所有歌曲作者进行比较,一致的放在一起,然后显示分组后的所有歌曲信息。
void fz(int i,int n){int j;struct song s;for (j=i+1;j<n;j++){if(strcmp(so[i].creater,so[j].creater)==0){if(j==i+1){i++;fz (i,n);}else{s=so[i+1];so[i+1]=so[j];so[j]=s;}}else{if(j==n-1){i++;fz(i,n);}}}save(n);}void fen_zu() ame,so[i].creater,so[i].singer,so[i].date);}输入一个完整记录函数该函数的作用是分别提示用户来输入一首歌的各个信息,包括歌曲名,作者,演唱者,日期。