c语言课程设计——歌曲信息管理系统
- 格式:doc
- 大小:379.00 KB
- 文档页数:25
歌曲管理系统c语言课程设计一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握歌曲管理系统的基本原理和C语言编程;技能目标要求学生能够运用C语言编写简单的歌曲管理程序;情感态度价值观目标要求学生培养对计算机科学和编程的兴趣,提高解决问题的能力。
二、教学内容教学内容主要包括C语言基础知识、歌曲管理系统的设计与实现。
具体安排如下:1.第一部分:C语言基础知识(2课时)介绍C语言的基本语法、数据类型、运算符、控制结构等。
2.第二部分:歌曲管理系统的设计与实现(4课时)介绍歌曲管理系统的基本功能、设计思路和实现方法。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。
1.讲授法:用于讲解C语言的基本语法和概念。
2.案例分析法:通过分析实际案例,让学生掌握歌曲管理系统的设计与实现。
3.实验法:让学生动手编写代码,培养实际编程能力。
四、教学资源教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:《C程序设计语言》2.参考书:《C语言编程教程》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、网络环境五、教学评估本课程的评估方式包括平时表现、作业和考试。
平时表现占30%,主要评估学生的课堂参与度和提问回答;作业占30%,主要评估学生的编程能力和对知识的掌握;考试占40%,主要评估学生的综合运用能力。
评估方式客观、公正,全面反映学生的学习成果。
六、教学安排教学进度共安排8课时,每课时45分钟。
第1-2课时进行C语言基础知识讲解,第3-6课时进行歌曲管理系统的设计与实现教学,第7-8课时进行课程总结和复习。
教学地点选在计算机实验室,确保学生能够动手实践。
教学安排合理、紧凑,确保在有限的时间内完成教学任务,同时考虑学生的实际情况和需要。
七、差异化教学根据学生的不同学习风格、兴趣和能力水平,本课程将设计差异化的教学活动和评估方式。
对于学习风格偏向实践的学生,提供更多动手实践的机会;对于学习风格偏向理论的学生,提供更多理论学习的机会。
《高级语言程序设计》课程设计说明书设计题目:歌曲信息管理系统设计目录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语言课程设计歌曲信息管理源代码#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!");}}。
c 音乐管理系统课程设计一、课程目标知识目标:1. 学生能理解音乐管理系统的基本概念,掌握其功能模块和使用方法。
2. 学生能了解音乐管理系统的数据库结构,学会使用SQL语句进行音乐数据的增、删、改、查操作。
3. 学生掌握音乐管理系统中的音乐分类、排序和搜索功能,提高音乐信息检索的效率。
技能目标:1. 学生能够独立操作音乐管理系统,进行音乐信息的录入、编辑和管理。
2. 学生通过实践,培养解决问题的能力,学会在遇到系统故障或操作困难时,运用所学知识进行排查和解决。
3. 学生能够运用音乐管理系统,进行音乐资源的分享和交流,提高团队协作能力。
情感态度价值观目标:1. 学生通过学习音乐管理系统,培养对音乐的热爱和鉴赏能力,提高音乐素养。
2. 学生在学习过程中,树立正确的信息意识,尊重知识产权,遵循网络道德规范。
3. 学生在团队合作中,学会互相尊重、倾听他人意见,培养集体荣誉感和责任感。
课程性质:本课程为实践性较强的信息技术课程,结合音乐教育,旨在提高学生的音乐素养和信息技术能力。
学生特点:学生处于中学阶段,对新鲜事物充满好奇,具备一定的音乐基础和信息技术知识,喜欢动手操作和实践。
教学要求:教师应注重理论与实践相结合,关注学生的个体差异,引导他们主动探索、合作学习,提高音乐管理系统的操作能力和信息素养。
通过分解课程目标为具体的学习成果,为后续教学设计和评估提供依据。
二、教学内容1. 音乐管理系统概述- 了解音乐管理系统的概念、发展历程和应用场景。
- 分析音乐管理系统的基本功能模块。
2. 音乐管理系统操作- 学习系统登录、音乐信息录入、编辑和管理方法。
- 掌握音乐分类、排序和搜索功能的使用。
3. 数据库操作- 学习音乐管理系统数据库结构,理解表与表之间的关系。
- 掌握SQL语句的基本语法,进行音乐数据的增、删、改、查操作。
4. 实践操作与案例分析- 结合实际案例,运用音乐管理系统进行音乐信息管理。
- 分析系统故障和操作困难,学会排查问题并解决。
歌曲信息管理系统[要求]制作一个歌曲信息管理系统功能:1)歌曲信息包括歌曲名,作者,演唱者,发行年月等。
2)可以对歌曲信息进行输入,删除,浏览。
3)可以查询根据歌曲名,作者,演唱者歌曲信息。
4)可以提供按作者分组显示功能。
5)用文件存储信息。
我得设计思路根据题目要求,由于歌曲信息数据以文本文件得方式存放,所以应提供文件得输入、输出等操作;在程序中需要浏览歌曲得信息,应提供显示、查询等操作,按照一般得思路,我采用得就是按照歌曲名进行查找得方式。
并且要提供可以按作者进行分组得方法。
整体设计思路就是首先以一个主函数为主,将各个功能诸如浏览,删除等分别设计成函数,通过主函数得调用从而实现其功能。
由于程序中经常要用到一些函数,诸如加载函数,显示函数等,如果重复输入,会严重增加工作量,所以可以将这些函数作为公共函数编写出来,以被随时调用。
分析一下整个系统,根据上面得需求分析,可以将系统设计分为以下六大模块。
四.详细设计#include<stdio、h>#include<stdlib、h>#include<string、h>#include<malloc、h>#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);首先就是设计主函数,设计主函数一般应该做到简洁,主函数主要就是提供函数调用等方面得功能,各功能函数以菜单得形式在主函数中列出来,通过主函数得调用从而实现各功能函数得功能。
歌曲管理系统c语言课程设计一、课程目标知识目标:1. 理解C语言在开发歌曲管理系统中的应用,掌握基本的程序结构和编程语法。
2. 学习并运用数组、结构体、文件操作等C语言知识模块,实现对歌曲信息的管理。
3. 掌握模块化编程思想,将歌曲管理系统拆分为多个功能模块,并实现各模块间的协同工作。
技能目标:1. 能够运用C语言编写程序,创建并管理一个歌曲管理系统。
2. 学会使用C语言进行数据存储和读取,实现对歌曲信息的增加、删除、修改和查询功能。
3. 通过课程设计,提高编程实践能力,培养解决实际问题的编程思维。
情感态度价值观目标:1. 培养学生对C语言的兴趣和热情,激发学习积极性,树立编程自信心。
2. 培养学生的团队协作精神,学会与他人共同解决问题,提高沟通与协作能力。
3. 通过课程设计,使学生认识到编程在现实生活中的应用价值,激发他们将所学知识应用于解决实际问题的意识。
本课程针对高年级学生,课程性质为理论与实践相结合。
在分析课程性质、学生特点和教学要求的基础上,将课程目标分解为具体的学习成果,以便后续的教学设计和评估。
通过本课程的学习,使学生能够掌握C语言编程技能,提高解决实际问题的能力,并培养良好的团队协作和沟通能力。
二、教学内容1. C语言基础知识复习:数据类型、运算符、控制结构、函数等。
2. 数组与字符串操作:一维数组、二维数组、字符串处理,为歌曲信息存储打下基础。
3. 结构体与文件操作:结构体定义、结构体数组、结构体与文件读写,用于歌曲信息的管理。
4. 模块化编程:函数的定义与调用、模块划分、模块间数据传递,实现系统功能分解。
5. 歌曲管理系统功能实现:歌曲的增加、删除、修改、查询等操作。
6. 项目实践:以小组为单位,设计并实现一个完整的歌曲管理系统。
教学内容依据课程目标,结合教材相关章节进行选择和组织。
教学大纲安排如下:第一周:C语言基础知识复习;第二周:数组与字符串操作;第三周:结构体与文件操作;第四周:模块化编程;第五周:歌曲管理系统功能设计与实现;第六周:项目实践与展示。
学院:计算机学院专业:网络工程班级:***********姓名:**********学号:***********课题:歌曲信息管理系统指导老师:***********#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.存入歌曲。
告设计报课程歌曲信息管理系统题计目:课程设********学号:***姓名:专外包务业:电子商与软件*******:级班***指导教师: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.能对歌曲进行删除、导入和导出。
课程设计报告
课程设计题目:歌曲信息管理系统
学号:********
姓名:***
专业:电子商务与软件外包
班级:*******
指导教师:***
2014年01月06日
课程设计评分表
学生姓名:林禹森班级:学号:课程设计题目:歌曲信息管理系统
目录
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)
6.总结 (25)
歌曲信息管理系统课程设计
1.需求分析:
根据歌曲信息管理系统的需要,建立一个“歌曲信息管理系统”,以方便对成绩的各项管理操作。
要求完成:
i.能对歌曲进行录入和修改;
ii.能按唱片公司和歌手统计歌曲信息;
iii.能对歌曲进行删除、导入和导出。
2.总体设计:
根据以上分析,本系统主要包括:从键盘输入歌曲信息、从指定的文件中读入歌曲信息、按歌手查询(统计)歌曲信息、按公司查询(统计)歌曲信息、删除歌曲信息、将歌曲信息保存到指定文件中等六大功能。
系统定义11个函数以实现各个功能:
(1)主函数song_main():定义歌曲结构体数组,输出操作对话菜单,调用录入、导入、查询(统计)、删除、输出等函数对歌曲表进行处理。
(2)主菜单函数menu_song():显示各功能选项,提示用户进行操作。
(3)浏览函数output_song():浏览输入的歌曲信息
(4)初始化函数initialize():主要功能为清空歌曲记录信息
(5)录入函数input_song():从键盘输入歌曲信息。
(6)导入函数load_song():从文件输入歌曲信息。
(7)修改函数revise_song():修改歌曲信息。
(8)删除函数delete_song():删除歌曲信息。
(9)查询函数search_singer():按歌手查询(统计)歌曲信息。
(10)查询函数search_corporation():按公司查询(统计)歌曲信息。
(11)保存函数save_song():保存歌曲信息到文件中。
程序功能结构图如下:
功能模块图
3.详细设计:
本系统总共分为11个函数,其中一个为主函数,10个为功能函数,每个功能函数都由主函数调用,分别如下:
(1)主函数main():
在主函数中定义歌曲结构体数组,根据用户输入信息调用相应的功能模
块实现相应的功能。
主函数的流程图如下:
Y
主函数流程图 (2)初始化函数
该函数的主要功能为清空歌曲记录信息。
初始化函数流程图
(3)歌曲录入函数
本函数的的功能由input_song()实现。
每首歌记录的信息是存储在songarray 指针数组中,由于需要录入多首歌曲的信息,因此需要用循环来处理。
程序中设定最大存储数为10首歌曲,如需改动,只需在”song.h”中改变’N’的值便可。
另也可以在范围内输入任意首歌曲后选择输入“@”返回主菜单。
是
歌曲录入函数流程图
(4)文件输入函数。
该函数的主要功能为:负责将保存在songarray_system.txt 文件中的数据读入内存,主要fopen()、fclose 和fread 函数来完成文件操作。
文件输入函数流程图
否
(5)信息修改函数。
该函数的主要功能为:系统提示用户输入歌曲名,当用户输入歌曲后,系统以歌曲名作为关键字进行查找,如果查找成功,则会显示该歌曲记录,系统提示确认修改。
如果查找失败,系统提示重新输入。
信息修改函数流程图
(6)歌曲删除函数。
该函数的主要功能为:系统提示用户输入歌曲名,当用户输入歌曲后,系统以歌曲名作为关键字进行查找,如果查找成功,则会显示该歌曲记录,系统提示确认删除。
如果查找失败,系统提示重新输入。
歌曲删除函数流程图
(7按歌手查询函数。
该函数的主要功能:系统根据用户输入的歌手名来查找歌曲信息记录,若输入的歌手存在,则系统输出用户要查询的歌曲信息,并统计该歌手共有xx首歌曲。
若不存在则提示信息不存在并退回主菜单。
按歌手查询函数流程图
(8)按公司查询函数。
该函数的主要功能:系统根据用户输入的公司名来查找歌曲信息记录,若输入的公司存在,则系统输出用户要查询的歌曲信息,并统计该公司共有xx首歌手。
若不存在则提示信息不存在并退回主菜单。
按公司查询函数流程图
(9)歌曲导出或保存函数。
该函数的主要功能由output_song()函数和save_song()函数实现。
output_song()函数用于显示歌曲信息,save_song()函数的主要将内存中的歌曲信息保存到系统当前路径的songarray_system.txt文件中
(10)浏览函数。
本函数的主要功能是用法来查看输入的信息和从文件导入的信息。
浏览函数流程图
4.函数功能测试。
初始化函数initialize():
主菜单函数menu_song():
浏览函数output_song():
录入函数input_song():
查询函数search_singer():(按歌手查询)
查询函数search_corporation():(按公司查询)
导入函数load_song():
保存函数save_song():
5.软件使用说明书。
本软件采用命令行对话的方式进行操作,运行后按照菜单提示操作即可。
需要注意的是,输入0可以输出链表,密码dcedit
6.总结
通过本次课程练习,我们学会了科学分析问题解决问题的方法,从分析问题入手,然后进行模块设计,详细设计,在进行代码编写和测试。
在调试程序的过程中,学会了分模块运行,避免了以前那种将所有程序都摆在main函数中的弊病,使得调试过程更加顺利。
另外通过本次练习,在前面学习过程中碰到的诸如结构体使用,指针使用,函数之间的参数传递也都迎刃而解了。