基于某C++地歌曲信息管理系统
歌曲管理系统c语言课程设计

歌曲管理系统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课时进行课程总结和复习。
教学地点选在计算机实验室,确保学生能够动手实践。
教学安排合理、紧凑,确保在有限的时间内完成教学任务,同时考虑学生的实际情况和需要。
七、差异化教学根据学生的不同学习风格、兴趣和能力水平,本课程将设计差异化的教学活动和评估方式。
对于学习风格偏向实践的学生,提供更多动手实践的机会;对于学习风格偏向理论的学生,提供更多理论学习的机会。
歌曲信息管理系统——C语言

歌曲信息管理系统[要求]制作一个歌曲信息管理系统功能: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);首先就是设计主函数,设计主函数一般应该做到简洁,主函数主要就是提供函数调用等方面得功能,各功能函数以菜单得形式在主函数中列出来,通过主函数得调用从而实现各功能函数得功能。
歌曲管理信息系统实习报告

实习报告:歌曲管理信息系统一、实习背景与目的随着数字音乐时代的到来,人们对于音乐的需求和欣赏方式发生了巨大变化。
为了满足用户个性化、多样化的音乐需求,提高音乐作品的传播效率,降低音乐管理成本,歌曲管理信息系统应运而生。
本次实习旨在通过理论联系实际,巩固所学的计算机科学、信息管理等相关知识,提高处理实际问题的能力,了解设计专题的主要内容,为毕业设计的顺利进行做好充分的准备,并为自己能顺利与社会环境接轨做好过渡。
二、实习内容与过程1. 了解歌曲管理信息系统的基本概念、功能和应用场景。
通过阅读相关文献和实际操作,掌握了歌曲管理信息系统的基本原理和操作方法。
2. 学习歌曲管理信息系统的相关技术。
本次实习主要涉及数据库设计、前端界面设计、后端程序设计等技术。
通过自学和请教同事,掌握了相关技术的应用。
3. 参与歌曲管理信息系统的开发。
在团队中担任前端界面设计师,负责设计系统的用户界面。
在实际开发过程中,学会了与后端程序员、数据库设计师等团队成员密切配合,共同推进项目进度。
4. 测试与优化歌曲管理信息系统。
通过实际操作,发现系统存在的问题和不足,与团队成员一起分析原因,并提出优化方案。
5. 撰写实习报告,总结实习经验和收获。
在报告中对歌曲管理信息系统的原理、技术、开发过程和心得体会进行了详细阐述。
三、实习成果与收获1. 成功参与了一款歌曲管理信息系统的开发,提高了自己的实际动手能力。
在实际开发过程中,学会了与团队成员协同工作,提高了自己的团队协作能力。
2. 掌握了歌曲管理信息系统相关技术,如数据库设计、前端界面设计、后端程序设计等,为以后的工作和进一步学习打下了坚实基础。
3. 通过实习,发现自己所学知识的不足,激发了自己继续学习的动力。
在实习过程中,学会了如何将理论知识与实际应用相结合,提高了自己的综合素质。
4. 撰写了实习报告,对自己在实习过程中的所学、所做、所思进行了总结,为以后的学习和工作积累了宝贵经验。
歌曲信息管理系统

题目要求该系统应该具有下列功能:(1)歌曲信息包括歌曲名,作者,演唱者,发行年月等。
(2)可以对歌曲信息进行输入,删除,浏览。
(3)可以查询歌曲名,作者,演唱者信息。
(4)可以提供按作者分组显示功能。
(5)用文件存储信息。
输入要求:应用程序运行后,在屏幕上显示一个菜单。
用户根据需求,选定相应的操作项目。
进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。
输出要求:要求用应用程序应用后,要在屏幕上显示一个菜单。
用户输入数据后,要给出清晰明确的提示信息,包括输入的数据内容、格式及结束方式等。
提示:设计时可采用结构体和一维数组类型,用来保存学生证的内容。
总体设计本题可采用结构体类型来保存学生证的内容,学生信息应该使用数组来进行过程中使用指针链表使其更方便。
根据要求,此程序需要设计以下几个模块:添加新歌曲模块,删除指定歌曲板块,修改指定歌曲显示,查询指定歌曲模块。
因此,可知其主要模式为:歌曲管理流程图否是具体设计,1、主函数歌曲的信息有歌曲名,作者,演唱者,发行年月。
因此用一个数组来保存学生证信息:struct song{char name[25];char writer[25];char singer[25];char year[25];}s[N],s1,s2,s3;menu( ) // 输入菜单int n;printf("\t****************************MENU************************* ***\n\n");printf("\t\t\t 1.Enter record\n"); /*输入记录*/printf("\t\t\t 2.List the file\n"); /*显示记录*/printf("\t\t\t 3.Search record\n"); /*查找记录*/printf("\t\t\t 4.Delete a record\n"); /*删除记录*/printf("\t\t\t 5.Add a record\n"); /*插入记录*/printf("\t\t\t 6.save the file\n"); /*保存文件*/printf("\t\t\t 7.Read the file\n"); /*读文件*/printf("\t\t\t 8.Display record on order\n"); /*按序号显示记录*/printf("\t\t\t 9.Sort record by writer\n"); /*按作者排序*/printf("\t\t\t 0.Exit\n"); /*退出*/printf("\n\n\t***************************************************** ****\n");do{printf("\n Choice your number(0-9):");scanf("%d",&n);}while(n<0||n>9);switch(n){case 1:length=enter();menu();break;case 2:list(length);break;case 3:search(length);break;case 4:length=delete(length);menu();break; case 5:length=add(length);menu();break; case 6:save(length);break;case 7:read();break;case 8:display(length);break;case 9:sort(length);break;case 0:exit(0);}}/***********主函数**********/main(){menu();}2、各功能模块设计(1)输入模块输入到song[]中,各个元素依次输入【程序】int enter() /*输入记录*/{int i;for(i=0;i<N;i++){printf("\n please input record or direct press Q to exit"); printf("\n Enter name:");scanf("%s",&s[i].name);if(s[i].name[0]=='Q'&&s[i].name[1]=='\0')break;printf(" Enter writer:");scanf("%s",&s[i].writer);printf(" Enter singer:");scanf("%s",&s[i].singer);printf(" Enter year:");scanf("%s",&s[i].year);printf("\nname writer singer year \n");printf("----------------------------------------------------\n");printf("%s, %s, %s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year);printf("----------------------------------------------------\n");}return i;}(2)显示记录模块【程序】void list(int n) /*显示记录*/{int i;printf("\n\n\t************************LIST************************* *******\n\n");printf("\n name writer singer year \n");printf("\t----------------------------------------------------\n");for(i=0;i<n;i++)printf(" %s, %s, %s, %s\n",s[i].nam e,s[i].writer,s[i].singer,s[i].year);printf("\n\n\t***************************END*********************** *******\n");menu();}(3)查找模块【程序】void search(int n) /*查找记录*/{int m,i;printf("\n Search by:\n");printf("\n ");printf("\n 2.writer");printf("\n 3.singer");printf("\n 0.back");do{printf("choice your number(0-3):");scanf("%d",&m);}while(m<0||m>3);switch(m){case 1:printf("please enter name to search.\n");break; case 2:printf("please enter writer to search.\n");break; case 3:printf("please enter singer to search.\n");break;case 0:menu();}i=find(n,m);if(i>n-1)printf("not found\n");else{printf("\n name writer singer year \n");printf("----------------------------------------------------\n");printf(" %s, %s, %s, %s\n",s[i].name,s[i].wr iter,s[i].singer,s[i].year);printf("----------------------------------------------------\n");}menu();}int find(int n,int b){int i;switch(b){case 1:scanf("%s",);for(i=0;i<n;i++)if(strcmp(,s[i].name)==0) return i;break;case 2:scanf("%s",s3.writer);for(i=0;i<n;i++)if(strcmp(s3.writer,s[i].writer)==0) return i;break;case 3:scanf("%s",s3.singer);for(i=0;i<n;i++)if(strcmp(s3.singer,s[i].singer)==0) return i;break;}return i;}(4)删除模块【程序】int delete(int n) /*删除记录*/ {char delete[25];int i,j,p,ch;printf("\n Delete by:\n");printf("\n ");printf("\n 2.writer");printf("\n 3.singer");printf("\n 0.back");do{printf("choice your number(0-3):");scanf("%d",&p);}while(p<0||p>3);switch(p){case 1:printf("please enter name to delete.\n");break;case 2:printf("please enter writer to delete.\n");break;case 3:printf("please enter singer to delete.\n");break;case 0:return 0;}i=find(n,p);if(i>n-1)printf("not found to delete \n");else{printf("\n name writer singer year \n"); printf("----------------------------------------------------\n"); printf("%s,%s,%s,%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year); printf("----------------------------------------------------\n");printf("Are you sure to delete it?(1/0)");scanf("%d",&ch);if(ch==1){for(j=i+1;j<n;j++){strcpy(s[j-1].name,s[j].name);strcpy(s[j-1].writer,s[j].writer);strcpy(s[j-1].singer,s[j].singer);strcpy(s[j-1].year,s[j].year);}n--;}}return n;(5)插入模块int add(int n) /*插入记录*/ {char locate[25];int i,j;printf("\n please input record or direct press Q to exit\n"); printf("\n Enter name:");scanf("%s",&);if([0]=='Q'&&[0]=='\0')return n;printf(" Enter writer:");scanf("%s",&s1.writer);printf(" Enter singer:");scanf("%s",&s1.singer);printf(" Enter year:");scanf("%s",&s1.year);printf("\nname writer singer year \n");printf("----------------------------------------------------\n"); printf("%s, %s, %s, %s\n",,s1.writer,s1.singer,s1.year); printf("----------------------------------------------------\n");printf("please input locate name\n"); i=find(n,1);for(j=n-1;j>=i;j--){strcpy(s[j+1].name,s[j].name);strcpy(s[j+1].writer,s[j].writer); strcpy(s[j+1].singer,s[j].singer); strcpy(s[j+1].year,s[j].year);}strcpy(s[i].name,);strcpy(s[i].writer,s1.writer);strcpy(s[i].singer,s1.singer);strcpy(s[i].year,s1.year);n++;return n;}(6)保存到文件int save(int n) /*保存文件*/ {int i;FILE*fp;if((fp=fopen("record.txt","w"))==NULL){printf("can not open file\n");return NULL;}printf("\nSaving file\n");for(i=0;i<n;i++)fprintf(fp,"%s %s %s%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year);fclose(fp);printf("**********save success**********\n");menu();return 1;}(7)读取文件int read() /*读文件*/{int i;FILE*fp;if((fp=fopen("record.txt","r"))==NULL){printf("can not open file\n");return NULL;}printf("\n name writer singer year \n"); printf("----------------------------------------------------\n"); for(i=0;!feof(fp);i++){fscanf(fp,"%s %s %s%s\n",s[i].name,s[i].writer,s[i].singer,s[i].year);printf(" %s %s %s %s\n",s[i].name,s[i] .writer,s[i].singer,s[i].year);}printf("----------------------------------------------------\n");fclose(fp);printf("you have successed reading record from file!\n");menu();return 1;}(8)全部显示int display(int n) /*按序号显示记录*/{int a;FILE*fp;if((fp=fopen("record.txt","r"))==NULL){printf("can not open file\n");return NULL;}printf("Enter order number \n");scanf("%d",&a);if(a>=0&&a<n){fseek(fp,(a-2)*sizeof(s),1);printf("\n name writer singer year \n");printf("----------------------------------------------------\n");printf(" %s, %s, %s, %s\n",s[a-1].name,s[a-1].writer,s[a-1].singer,s[a-1].year);printf("----------------------------------------------------\n");}elseprintf("no %d number record!\n",a);fclose(fp);menu();}void sort(int n) /*按作者排序*/ {int i,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if((strcmp(s[i].writer,s[j].writer))>0){s1=s[i];s[i]=s[j];s[j]=s1;}printf("\n name writer singer year \n"); printf("----------------------------------------------------\n"); for(i=0;i<n;i++)printf(" %s %s %s %s\n",s[i].name,s[i] .writer,s[i].singer,s[i].year);printf("----------------------------------------------------\n");printf("sort success!\n");menu();}void menu(){int n;printf("\t****************************MENU************************* ***\n\n");printf("\t\t\t 1.Enter record\n"); /*输入记录*/printf("\t\t\t 2.List the file\n"); /*显示记录*/printf("\t\t\t 3.Search record\n"); /*查找记录*/printf("\t\t\t 4.Delete a record\n"); /*删除记录*/printf("\t\t\t 5.Add a record\n"); /*插入记录*/printf("\t\t\t 6.save the file\n"); /*保存文件*/printf("\t\t\t 7.Read the file\n"); /*读文件*/printf("\t\t\t 8.Display record on order\n"); /*按序号显示记录*/printf("\t\t\t 9.Sort record by writer\n"); /*按作者排序*/printf("\t\t\t 0.Exit\n"); /*退出*/printf("\n\n\t***************************************************** *******\n");do{printf("\n Choice your number(0-9):");scanf("%d",&n);}while(n<0||n>9);switch(n){case 1:length=enter(s);break;case 2:list(length);break;case 3:search(length);break;case 4:length=delete(length);menu();break; case 5:length=add(length);menu();break; case 6:save(length);break;case 7:read();break;case 8:display(length);break;case 9:sort(length);break;case 0:exit(0);}}运行结果输入查找删除添加保存到文件读取文件按作者排序总结通过这次C程序设计,我掌握了模块化设计方法,能够深入的理解结构化程序设计思想,熟练运用结构化程序设计方法,提高了运用C语言进行程序设计的能力。
C语言课设之歌曲信息管理系统

C语言课程设计目录1、题目要求2、需求分析;3、系统总框图;4、总体设计;5、列出所有定义的函数及说明;6、上机操作7、学习心得前言计算机科学技术的发展,不仅极大地促进了整个科学技术的发展,而且明显地加快了经济信息化和社会信息化的进程。
因此,计算机教育在全国备受重视,计算机知识与能力已成为21世纪人才素质的基本要素之一。
如今,高等教育的计算机教育发展十分迅速。
十多年前,只有部分理工科专业开设计算机课程。
今天,几乎所有高校的所有专业都开设了程度不同的计算机课程.人们已经认识到,计算机知识已成为当代知识分子知识结构中不可缺少的重要组成部分。
而除了掌握计算机的基础知识和操作的基本能力外,掌握一门高级编程语言,并可以熟练运用它,已成为当代大学生综合能力必要组成。
计算机技术发展如此迅猛,计算机应用如此广泛,需要学习的东西愈来愈多,而我们的总学时是有限的。
一般来说,计算机课程学习可以分为两部分:一部分是理论课程学习,一部分是上机应用实习.根据我们专业的性质和要求,则应侧重于上机操作运用。
为此,学校特意在暑期最后一星期安排了32个学时的上机实习。
现将一星期的实习内容及结果分析分列如下:歌曲信息管理系统一.题目要求1.歌曲信息包括歌曲名,作者,演唱者,发行年月等。
2.可以对歌曲信息进行输入,删除,浏览。
3.可以查询歌曲名,作者,演唱者信息。
4.可以提供按作者分组显示功能.二.需求分析根据题目要求,数据以文件的形式存储,所以应提供文件的输入,输出等操作;还需要文件具有查找,替换,修改数据的功能。
三.总体设计根据上面的需求分析,可以将这个系统的设计分为如下五大模块:四.详细设计具体程序:1。
Main函数main(){int a;while(1){printf(”\t\t=============< 欢迎来到歌曲信息查询系统〉============\n");printf("\t\t ———5407328 20071004192 戴敏泽\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)。
歌曲管理系统c语言课程设计

歌曲管理系统c语言课程设计一、课程目标知识目标:1. 理解C语言在开发歌曲管理系统中的应用,掌握基本的程序结构和编程语法。
2. 学习并运用数组、结构体、文件操作等C语言知识模块,实现对歌曲信息的管理。
3. 掌握模块化编程思想,将歌曲管理系统拆分为多个功能模块,并实现各模块间的协同工作。
技能目标:1. 能够运用C语言编写程序,创建并管理一个歌曲管理系统。
2. 学会使用C语言进行数据存储和读取,实现对歌曲信息的增加、删除、修改和查询功能。
3. 通过课程设计,提高编程实践能力,培养解决实际问题的编程思维。
情感态度价值观目标:1. 培养学生对C语言的兴趣和热情,激发学习积极性,树立编程自信心。
2. 培养学生的团队协作精神,学会与他人共同解决问题,提高沟通与协作能力。
3. 通过课程设计,使学生认识到编程在现实生活中的应用价值,激发他们将所学知识应用于解决实际问题的意识。
本课程针对高年级学生,课程性质为理论与实践相结合。
在分析课程性质、学生特点和教学要求的基础上,将课程目标分解为具体的学习成果,以便后续的教学设计和评估。
通过本课程的学习,使学生能够掌握C语言编程技能,提高解决实际问题的能力,并培养良好的团队协作和沟通能力。
二、教学内容1. C语言基础知识复习:数据类型、运算符、控制结构、函数等。
2. 数组与字符串操作:一维数组、二维数组、字符串处理,为歌曲信息存储打下基础。
3. 结构体与文件操作:结构体定义、结构体数组、结构体与文件读写,用于歌曲信息的管理。
4. 模块化编程:函数的定义与调用、模块划分、模块间数据传递,实现系统功能分解。
5. 歌曲管理系统功能实现:歌曲的增加、删除、修改、查询等操作。
6. 项目实践:以小组为单位,设计并实现一个完整的歌曲管理系统。
教学内容依据课程目标,结合教材相关章节进行选择和组织。
教学大纲安排如下:第一周:C语言基础知识复习;第二周:数组与字符串操作;第三周:结构体与文件操作;第四周:模块化编程;第五周:歌曲管理系统功能设计与实现;第六周:项目实践与展示。
C语言程序设计报告—歌曲信息管理系统

C语言课程设计学号: *********** 班级序号: 5507133 *名:***指导教师:***成绩:实习日期: 2008-12至2009-1C语言程序设计报告一、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删除模块:用户输入要删除的信息,如输入歌曲名,根据歌曲名找到其他记录并删除。
c语言课程设计歌曲信息管理系统

告设计报课程歌曲信息管理系统题计目:课程设********学号:***姓名:专外包务业:电子商与软件*******:级班***指导教师: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语言歌曲信息管理系统

学院:计算机学院专业:网络工程班级:***********姓名:**********学号:***********课题:歌曲信息管理系统指导老师:***********#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语言课设.歌曲信息管理系统

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语⾔实现歌曲信息管理系统的具体代码,供⼤家参考,具体内容如下系统功能:该系统以菜单⽅式⼯作,歌曲信息包括:歌名、演唱者、作词、作曲、所属专辑、出版时间、出版公司。
试设计⼀歌厅歌曲管理系统,使之能提供以下功能:歌曲信息录⼊、修改、插⼊、删除功能;歌曲排序浏览功能;按歌名查询、按演唱者查询等功能。
完整的实现代码如下:#include "stdio.h"#include "stdlib.h"#include "string.h"//歌曲信息包括:歌名、演唱者、作词、作曲、所属专辑、出版时间、出版公司typedef struct music{char name[20]; //歌名char singer[20]; //演唱者char authors[20]; //作词char compose[30]; //作曲char album[20]; //所属专辑char time[15]; //出版时间char company[30]; //出版公司struct music *next;}music;music *head=NULL;int length; //链表的长度void create(){music *p1,*p2;length=0;p1=(music *)malloc(sizeof(music));strcpy(p1->name,"-1");if(head==NULL)head=p1;printf("请输⼊⾳乐的歌名、演唱者、作词、作曲、所属专辑、出版时间、出版公司:/n");while(1) //歌名为0的时候退出{p2=(music *)malloc(sizeof(music));//输⼊歌曲信息scanf("%s %s %s %s %s %s %s",p2->name,p2->singer,p2->authors,p2->compose,p2->album,p2->time,p2->company);if(strcmp(p2->name,"0")==0){printf("链表创建完成!/n");break;}length++; //链表的长度p1->next=p2;p2->next=NULL;p1=p1->next;}return ;}void ModifymusicInfo(){music *p=head->next;char name[20];printf("请输⼊要修改的歌曲的歌名:");getchar();scanf("%s",name);while(p!=NULL){if(strcmp(p->name,name)==0){printf("修改前,歌名为%s的歌曲的信息如下:/n",name);printf("⾳乐的歌名、演唱者、作词、作曲、所属专辑、出版时间、出版公司:/n");printf("%s %s %s %s %s %s %s/n",p->name,p->singer,p->authors,p->compose,p->album,p->time,p->company);printf("请输⼊歌曲的新的所属专辑:");getchar();scanf("%s",p->album);printf("请输⼊歌曲的新出版公司:");getchar();printf("⾳乐的歌名、演唱者、作词、作曲、所属专辑、出版时间、出版公司:/n");printf("%s %s %s %s %s %s %s/n",p->name,p->singer,p->authors,p->compose,p->album,p->time,p->company); return ;}p=p->next;}if(p==NULL){printf("该歌曲不存在!/n");return ;}}void display(){music *p=head->next;printf("链表中所有的歌曲信息如下:/n");printf("⾳乐的歌名、演唱者、作词、作曲、所属专辑、出版时间、出版公司:/n");while(p!=NULL){printf("%s %s %s %s %s %s %s/n",p->name,p->singer,p->authors,p->compose,p->album,p->time,p->company); p=p->next;}return ;}void search(){int num,x,flag;char name[20];music *p=head->next;printf("请选择查询的⽅式:/n");printf("1、按歌名查询/t 2、按演唱者查询/n");scanf("%d",&x);if(x==1){printf("需要查找的歌曲歌名为:");getchar();scanf("%s",name);while(p!=NULL){if(strcmp(p->name,name)==0){printf("歌名为%s的歌曲的信息如下:/n",name);printf("⾳乐的歌名、演唱者、作词、作曲、所属专辑、出版时间、出版公司:/n");printf("%s %s %s %s %s %s %s/n",p->name,p->singer,p->authors,p->compose,p->album,p->time,p->company); return ;}p=p->next;}if(p==NULL)printf("没有这⾸歌曲的记录!/n");}else if(x==2){flag=0;printf("需要查找的演唱者为:");getchar();scanf("%s",name);p=head->next;while(p!=NULL){if(strcmp(p->singer,name)==0){if(flag==0){printf("演唱者为%s的歌曲的信息如下:/n",name);printf("⾳乐的歌名、演唱者、作词、作曲、所属专辑、出版时间、出版公司:/n");flag=1;}printf("%s %s %s %s %s %s %s/n",p->name,p->singer,p->authors,p->compose,p->album,p->time,p->company); }p=p->next;}if(p==NULL && flag==0)printf("没有该演唱者的歌曲记录!/n");return;}}return ;}void insert(){int num,i;music *p,*q;p=head;printf("请输⼊你要插⼊位置: ");scanf("%d",&num);if(num>length){printf("找不到要插⼊的位置/n");return ;}else{printf("请输⼊你要插⼊的⾳乐的歌名、演唱者、作词、作曲、所属专辑、出版时间、出版公司:/n");q=(music *)malloc(sizeof(music));//输⼊歌曲信息scanf("%s %s %s %s %s %s %s",q->name,q->singer,q->authors,q->compose,q->album,q->time,q->company); while(p!=NULL){if(strcmp(p->name,q->name)==0){printf("该歌曲已经存在,⽆法插⼊!/n");return ;}p=p->next;}p=head;for(i=0;i<num;i++)p=p->next;q->next=p->next;p->next=q;length++;printf("插⼊成功!/n");return ;}}void Delete(){char name[20];music *p,*q;q=head,p=head->next;printf("请输⼊要删除的歌曲的歌名:/n");getchar();scanf("%s",name);while(p!=NULL){if(strcmp(p->name,name)==0){q->next=p->next;free(p);length--;printf("删除成功!/n");return ;}p=p->next;q=q->next;}if(p==NULL){printf("找不到要删除的歌曲!/n");return ;}}void menu()printf("________________________________________________________________/n"); printf("| 歌厅歌曲管理系统 |/n");printf("| 0、退出系统 |/n");printf("| 1、录⼊歌曲信息 |/n");printf("| 2、显⽰歌曲信息 |/n");printf("| 3、查找链表中的某⼀⾸歌曲 |/n");printf("| 4、删除链表中指定歌曲 |/n");printf("| 5、指定的位置上插⼊⼀个新结点 |/n");printf("| 6、修改歌曲信息 |/n");printf("________________________________________________________________/n"); return ;}int main(void){int a;menu();while(1){printf("请选择相应的功能:");scanf("%d",&a);switch(a){case 0:return 0;case 1:create();menu();break;case 2:if(head){display();menu();}else{printf("链表为空,请先建⽴链表!/n");menu();}break;case 3:if(head){search();menu();}else{printf("链表为空,请先建⽴链表!/n");menu();}break;case 4:if(head){Delete();menu();}else{printf("链表为空,请先建⽴链表!/n");menu();}break;case 5:if(head){insert();menu();}else{printf("链表为空,请先建⽴链表!/n");menu();}case 6:if(head){ModifymusicInfo();menu();}else{printf("链表为空,请先建⽴链表!/n");menu();}break;default:break;}}system("pause");return 0;}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
C语言程序设计报告—歌曲信息管理系统

C语言程序设计报告—歌曲信息管理系统
随着科技的不断发展,在歌曲的学习和传播方面,人们都容易接触到更多的歌曲,但是在学习和了解这些歌曲信息时也会出现一定的困难,所以也就产生了一种能够帮助人们处理歌曲信息的系统—歌曲信息管理系统。
歌曲信息管理系统采用C语言的编程语言来完成,主要功能有:歌曲信息的保护、歌曲信息的查询、歌曲信息的增添、歌曲信息的修改和歌曲信息的删除等。
歌曲信息管理系统采用C语言编程语言,系统主要包括程序和数据库。
程序主要用于编写系统的代码,控制系统各功能模块的实现,数据库则负责存储歌曲信息。
程序的实现主要采用了输入输出结构、选择结构、循环结构等常用的程序设计技术和语句,将用户的输入和数据库的操作结合在一起,实现歌曲信息的增添、查询、修改和删除,从而实现有效的管理歌曲信息。
本歌曲信息管理系统实现简单而功能强大。
它可以有效地实现歌曲信息的统计,从而对歌曲的影响力、流行度等信息有效地管理。
另外,它的安全性得到了很好的保护。
利用数据库的安全性特点,将歌曲信息锁定,保证歌曲信息不被非法修改或删除。
总的来说,歌曲信息管理系统是一种使用C语言编写的有效的管理歌曲信息的系统,经过努力实现了对歌曲信息的完整管理,安全性也得到了很好的保护,可以更好地为大家提供歌曲信息服务。
C语言程序设计课程设计--歌手成绩管理系统

《C语言程序设计课程设计》课程设计报告题目:歌手成绩管理系统学院:计算机科学与技术歌手成绩管理系统一、系统菜单及任务(1)系统菜单的主要功能(1)输入歌手信息(2)输出歌手信息(3)歌手成绩排序(4)记录歌手信息(5)保存歌手信息(6)添加歌手信息(7)删除歌手信息(8)退出系统(2)实现的任务:完成对歌手比赛信息的各种管理。
歌手比赛系统对一次歌手比赛的成绩进行管理,功能要求:1、输入每个选手的数据包括姓名、歌曲名、各评委的打分成绩,大众评委打分成绩,根据输入计算出总成绩。
2、显示主菜单如下:1)输入信息2)显示信息3)结果排序4)保存信息5)显示结果6)退出系统。
二、设计内容:确定能表述歌手信息的数据结构,至少要有姓名、歌曲名、各评委打分、大众评委打分等信息,它是本程序的核心数据结构,定义为如下的结构体类型:struct Sing{float P1;float P2;float A[M];};struct Singer{int num;float sum;char singerName[10];char singName1[20];char singName2[20];struct Sing singScore1;struct Sing singScore2;};三、程序应具有以下基本功能:❖信息输入:输入每个选手的数据包括姓名、各首歌曲的歌曲名、各评委的打分成绩,大众评委打分成绩❖计算成绩:根据输入计算出各歌手的每首歌得分以及总得分。
❖成绩排序:按歌手的最后得分❖保存结果:将结果保存在文本文件中。
❖要求界面良好四、主要流程图程序各模块(输入,显示等)结构图:五、系统测试程序进行实例如下1、显示主菜单界面:主要功能输入歌手信息输出歌手信息歌手成绩排序记录歌手信息保存歌手信息添加歌手信息删除歌手信息退出系统2、选择1:运行界面如下六、源程序及系统文件使用说明#include<stdio.h>#include<stdlib.h>/*动态存储分配函数*/#include<string.h>/*字符函数和字符串函数*/ #include<math.h>/*数学函数*/#define M 5int N;struct Sing/*歌曲信息结构体*/{float P1;float P2;float A[M];};struct Singer/*歌手信息结构体*/{int num;float sum;char singerName[10];char singName1[20];char singName2[20];struct Sing singScore1;struct Sing singScore2;};struct Singer Sin[200];void print(){printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n");printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");printf(" 欢迎进入歌手成绩管理系统\n");printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n");printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");}void menu();void input()/*输入歌手信息*/{int i;for(i=0;i<3;i++){printf("请输入歌手编号:");scanf("%d",&Sin[i].num );printf("请输入歌手姓名:");scanf("%s",Sin[i].singerName );printf("请输入歌曲1名称:");scanf("%s",Sin[i].singName1 );printf("请输入歌曲1大众评委打分:");scanf("%f",&Sin[i].singScore1.P1);printf("请输入歌曲1专业评委1打分:");scanf("%f",&Sin[i].singScore1.A[0]);printf("请输入歌曲1专业评委2打分:");scanf("%f",&Sin[i].singScore1.A[1]);printf("请输入歌曲1专业评委3打分:"); scanf("%f",&Sin[i].singScore1.A[2]);printf("请输入歌曲1专业评委4打分:"); scanf("%f",&Sin[i].singScore1.A[3]);printf("请输入歌曲1专业评委5打分:"); scanf("%f",&Sin[i].singScore1.A[4]);printf("歌曲1专业评委打分为:");Sin[i].singScore1.P2=(Sin[i].singScore1.A[0]+Sin[i].singScore1.A[1]+Sin[i].singScore1.A[2]+Sin[i].singScore1.A[3]+Sin[i].singScore1.A[4])/5;printf("%f\n",Sin[i].singScore1.P2);printf("请输入歌曲2名称:");scanf("%s",Sin[i].singName2 );printf("请输入歌曲2大众评委打分:");scanf("%f",&Sin[i].singScore2.P1);printf("请输入歌曲2专业评委1打分:"); scanf("%f",&Sin[i].singScore2.A[0]);printf("请输入歌曲2专业评委2打分:"); scanf("%f",&Sin[i].singScore2.A[1]);printf("请输入歌曲2专业评委3打分:"); scanf("%f",&Sin[i].singScore2.A[2]);printf("请输入歌曲2专业评委4打分:"); scanf("%f",&Sin[i].singScore2.A[3]);printf("请输入歌曲2专业评委5打分:"); scanf("%f",&Sin[i].singScore2.A[4]);printf("歌曲2专业评委打分为:");Sin[i].singScore2.P2=(Sin[i].singScore2.A[0]+Sin[i].singScore2.A[1]+Sin[i].singScore2.A[2]+Sin[i].singScore2.A[3]+Sin[i].singScore2.A[4])/5;printf("%f\n",Sin[i].singScore2.P2);printf("该歌手的总成绩为:");Sin[i].sum = Sin[i].singScore1.P1+Sin[i].singScore1.P2+Sin[i].singScore2.P1+Sin[i].singScore2.P2 ;printf("%lf\n",Sin[i].sum);}menu();}void output()/*输出歌手信息*/{int i;printf("输出歌手信息是:\n");for(i=0;i<3;i++){printf("编号歌手歌曲1 大众评委专业评委歌曲2 大众评委专业评委总分:\n");printf("%d\t%4s\t%4s\t%4.2f\t%6.2f\t%6s\t%8.2f\t%4.2f\t%6.2f\t\n",Sin[i].num ,Sin[i].singerName,Sin[i].singName1,Sin[i].singScore1.P1,Sin[i].singScore1.P2,Sin[i].singName2,Sin[i].singScore2.P1,Sin[i].singScore2.P2,Sin[i].sum);}menu();}void sort()/*对歌手成绩进行排序*/{float t,d,e,g,h;int i,j,m;char b[10],c[20],f[20];for(j=0;j<3;j++)for(i=0;i<2-j;i++)if(Sin[i].sum>Sin[i+1].sum ){t=Sin[i].sum ;Sin[i].sum =Sin[i+1].sum;Sin[i+1].sum =t;/*分数排序*/m=Sin[i].num ;Sin[i].num =Sin[i+1].num ;Sin[i+1].num =m;/*编号排序*/strcpy(b,Sin[i].singerName);strcpy(Sin[i].singerName,Sin[i+1].singerName);strcpy(Sin[i+1].singerName,b);/*名字复制替换进行名字排序*/strcpy(c,Sin[i].singName1);strcpy(Sin[i].singName1,Sin[i+1].singName1);strcpy(Sin[i].singName1,c);/*歌曲1名称排序*/d=Sin[i].singScore1.P1;Sin[i].singScore1.P1=Sin[i+1].singScore1.P1;Sin[i+1].singScore1.P1=d;/*歌曲1大众评委打分的排序*/e=Sin[i].singScore1.P2;Sin[i].singScore1.P2=Sin[i+1].singScore1.P2;Sin[i+1].singScore1.P2=e;/*歌曲1专业评委打分的排序strcpy(f,Sin[i].singName2);strcpy(Sin[i].singName2,Sin[i+1].singName2);strcpy(Sin[i+1].singName2,f);/*歌曲2名称的排序*/g=Sin[i].singScore2.P1;Sin[i].singScore2.P1=Sin[i+1].singScore2.P1;Sin[i+1].singScore2.P1=g;/*歌曲2大众评委打分的排序*/h=Sin[i].singScore2.P2;Sin[i].singScore2.P2=Sin[i+1].singScore2.P2;Sin[i+1].singScore2.P2=h;/*歌曲2专业评委打分的排序*/}printf("排序后的结果为:\n");printf("编号姓名总成绩:\n");for(i=0;i<3;i++)printf("%d\t%s\t%lf\t\n",Sin[i].num,Sin[i].singerName,Sin[i].sum);menu();}void save()/*将歌手信息保存到文本文件中*/{FILE *fp;int i;if((fp=fopen("f:\\lin","wb"))==NULL){printf("cannot open file\n");return;}for(i=0;i<200;i++)if(fwrite(&Sin[i],sizeof(struct Singer),1,fp)==1){printf("文件写入错误\n");break;}fclose(fp);}void WritetoText(int n)/*将所有记录写入文件*/{int i=0;FILE *fp;/*定义文件指针*/char filename[200];printf("将所有记录写入文件:\n");/*输入文件名*/printf("输入文件名:\n");scanf("%s",filename);if((fp=fopen(filename,"a"))==NULL)/*打开文件*/{printf("不能打开文件:\n");system("pause");return;/*终止程序*/}fprintf(fp,"%d\n",n);/*循环写入数据*/fprintf(fp,"编号歌手歌曲1 大众评委专业评委歌曲2 大众评委专业评委总分:\n");while(i<n){fprintf(fp,"%d\t%2s\t%2s\t%lf\t%lf\t%6s\t%lf\t%lf\t%lf\t\n", Sin[i].num, Sin[i].singerName,Sin[i].singName1,Sin[i].singScore1.P1,Sin[i].singScore1.P2,Sin[i].singName2,Sin[i].singScore2.P1,Sin[i].singScore2.P2,Sin[i].sum);i++;}fclose(fp);/*关闭文件*/printf("Successed!\n");//返回成功信息menu();}void Tianjia_a_record()/*添加函数*/{int i,j;int a;printf("请输入一个歌手的编号:");scanf("%d",&a);for(i=0;i<N;i++)if(a==Sin[i].num)/*两个整数进行比较*/{printf("不能进行添加操作");j++;break;}if(j==0)/*新添加的歌手编号与原歌手中没有相同的*/ {Sin[i].num=a;printf("歌手名:");scanf("%s",Sin[i].singerName);printf("歌曲1的名称:");scanf("%s",Sin[i].singName1);printf("歌曲1的大众评委打分:");scanf("%f",&Sin[i].singScore1.P1);printf("歌曲1的专业评委1打分:");scanf("%f",&Sin[i].singScore1.A[0]);printf("歌曲1的专业评委2打分:");scanf("%f",&Sin[i].singScore1.A[1]);printf("歌曲1的专业评委3打分:");scanf("%f",&Sin[i].singScore1.A[2]);printf("歌曲1的专业评委4打分:");scanf("%f",&Sin[i].singScore1.A[3]);printf("歌曲1的专业评委5打分:");scanf("%f",&Sin[i].singScore1.A[4]);printf("歌曲1的专业评委打分:"); scanf("%f",&Sin[i].singScore1.P2);printf("歌曲2的名称:");scanf("%s",Sin[i].singName2);printf("歌曲2的大众评委打分:"); scanf("%f",&Sin[i].singScore2.P1); printf("歌曲2的专业评委1打分:"); scanf("%f",&Sin[i].singScore2.A[0]); printf("歌曲2的专业评委2打分:"); scanf("%f",&Sin[i].singScore2.A[1]);printf("歌曲2的专业评委3打分:"); scanf("%f",&Sin[i].singScore2.A[2]); printf("歌曲2的专业评委4打分:"); scanf("%f",&Sin[i].singScore2.A[3]);printf("歌曲2的专业评委5打分:"); scanf("%f",&Sin[i].singScore2.A[4]); printf("歌曲2的专业评委打分:"); scanf("%f",&Sin[i].singScore2.P2);printf("该歌手的总成绩:");scanf("&f",&Sin[i].sum);save();N++;system("pause");}}void name_Delete() /*按照姓名删除歌手信息*/{int i,j=0;char a[20];printf("\n输入一个歌手的姓名");scanf("%s",a);for(i=0;i<N;i++)if(strcmp(Sin[i].singerName,a)==0){Sin[i].num=Sin[i+1].num;/*编号*/strcpy(Sin[i].singerName,Sin[i+1].singerName);/*歌手名*/strcpy(Sin[i].singName1,Sin[i+1].singName1);/*歌曲1名称*/strcpy(Sin[i].singName2,Sin[i+1].singName2);/*歌曲2名称*/Sin[i].singScore1=Sin[i+1].singScore1;/*歌曲1得分*/Sin[i].singScore2=Sin[i+1].singScore2;/*歌曲2得分*/Sin[i].sum=Sin[i+1].sum;/*总得分*/printf("该歌手信息删除成功");N--;//j++;}if(j==0)printf("系统中无该歌手信息");}void dakai()/*定义打开函数*/{FILE *fp;system("cls");if((fp=fopen("filename","rb"))==NULL){printf("文件不存在\n");return;}}void menu()/*定义菜单函数*/{printf(" 歌手成绩管理系统\n");printf("**********************Menu**********************\n");printf(" * 1.输入信息 2.显示信息*\n");printf(" * 3.结果排序 4.信息保存到文件中*\n");printf(" * 5.信息记录到文件中 6.添加信息*\n");printf(" * 7.删除信息8.退出程序*\n");printf("************************************************\n");printf("请选择所要进行的选项:");}void Quit()/*退出函数*/{printf("结束程序"); exit(0);}void menu_select() /*菜单选择*/{int a;int n=3;printf("输入:");scanf("%d",&a);switch(a){case 1:printf("\n");input();break;case 2:printf("\n");output();break;case 3:printf("\n");sort();break;case 4:printf("\n");save();break;case 5:printf("\n");WritetoText(n);break;case 6:printf("\n");Tianjia_a_record();break;case 7:printf("\n");name_Delete();break;case 8:printf("\n"); Quit(); break;}}void main(){struct Singer Sin[200];print();menu();menu_select();}。
歌曲信息管理系统设计

硬件平台:
CPU:In ter Core?2T5500@1.66GHz;
内存:2G。
软件平台:
操作系统:Windows XP;
数据库:MySQL 5.0;
开发工具包:JDK Version1.5;
开发工具:MyEclipse5.5.1;
浏览器:IE7.0;
分辨率:最佳效果1024*768像素。
科学技术日新月异的进步, 让人类生活发生了巨大的变化,计算机技术的飞速发展,使
各行各业在计算机技术应用方面得到了广泛的普及和使用。信息化时代的到来成为不可抗拒
的潮流,人类文明正在进入一个崭新的时代。因此,KTV歌曲资源管理系统也以方便、快
捷、费用低的优点正慢慢改变着对歌曲信息的管理,将传统的手工管理方式彻底的解脱出来,
第
2.1系统功能设计
a.功能划分,该软件具有如下主要功能:
查询功能;
插入功能;
修改功能;
删除功能;
b.功能描述
查询功能:按照歌曲相应属性查询;
插入功能:增加一个歌曲记录;
修改功能:修改某一已存在的记录内容;
删除功能:删除一个记录;
2.2数据需求
歌曲:歌曲编号,歌曲名称,歌曲类型,歌手名称,歌手性别,歌手年龄,歌手图片等。 用户:用户名,密码;
1.5SQL介绍
SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。SQL为许多任务提供了命令,其中包括:
(1)查询数据
(2)在表中插入、修和删除记录
(3)建立修改和删除数据对象
(4)控制对数据和数据对象的存取
(5)保证数据库一致性和完整性
c语言课程设计歌曲信息管理系统

c语言课程设计歌曲信息管理系统一、教学目标本课程的目标是使学生掌握C语言编程的基本技能,能够运用C语言设计简单的歌曲信息管理系统。
通过本课程的学习,学生将能够:1.理解C语言的基本语法和数据结构;2.掌握C语言的编程思想和方法;3.设计并实现一个简单的歌曲信息管理系统。
二、教学内容教学内容将围绕C语言的基本语法、数据结构、编程思想和方法展开。
具体包括以下内容:1.C语言的基本语法:变量、数据类型、运算符、表达式等;2.控制结构:条件语句、循环语句等;3.函数:函数的定义、调用、参数传递等;4.数组和字符串:数组的声明、使用、字符串的操作等;5.指针:指针的概念、使用和运算;6.结构体和文件:结构体的定义和使用,文件的读写操作;7.编程思想:模块化编程、面向对象编程等;8.歌曲信息管理系统的设计和实现:数据的、功能的实现等。
三、教学方法为了激发学生的学习兴趣和主动性,将采用多种教学方法进行教学。
具体包括以下方法:1.讲授法:讲解C语言的基本语法、数据结构和编程思想;2.案例分析法:通过分析实际案例,使学生理解并掌握C语言的编程方法;3.实验法:让学生通过动手实践,巩固所学知识,培养编程能力;4.讨论法:学生进行分组讨论,促进学生之间的交流和合作。
四、教学资源为了支持教学内容和教学方法的实施,将准备以下教学资源:1.教材:《C语言程序设计》;2.参考书:《C Primer Plus》、《C和指针》;3.多媒体资料:教学PPT、视频教程等;4.实验设备:计算机、网络环境等。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分。
其中,平时表现占30%,作业占40%,考试占30%。
平时表现主要评估学生在课堂上的参与程度、提问回答情况和小组讨论表现等。
作业主要包括编程练习和理论题目,旨在检验学生对C语言编程思想和方法的掌握程度。
考试分为期中考试和期末考试,主要测试学生对C语言基本语法、数据结构和编程思想的掌握情况。
C语言课程设计歌曲信息管理系统

网络优化:优化网络传输协议, 提高数据传输速度和稳定性
数据结构优化:选择合适的数 据结构,提高数据存储和检索 效率
优化算法:选择合适的算法, 提高系统运行效率
并发处理优化:采用多线程、 多进程等技术,提高系统并发
处理能力
优化用户体验:优化界面设计, 提高用户操作便捷性和舒适度
增加用户自定义歌曲分类功能 增加歌曲搜索功能,支持关键词搜索 增加歌曲推荐功能,根据用户喜好推荐歌曲 增加歌曲评论功能,用户可以对歌曲进行评论和评分
数据统计:实现歌曲信息的统计功能,包括歌曲数量、歌手数量、专辑数量等
功能:将歌曲信息以文本或表格形式输出 输出格式:支持多种格式,如HTML、XML、JSON等 输出内容:包括歌曲名称、歌手、专辑、歌词等信息 输出方式:支持命令行输出、文件输出、网页输出等
性能测试:测试系统的响应 速度和稳定性
功能测试:确保每个功能模 块都能正常工作
输入内容:歌曲名称、歌手、专辑、 歌词、发布时间等
添加标题
添加标题
添加标题添加标题源自输入方式:键盘输入、文件导入、 数据库查询等
输入验证:检查输入内容是否符合 要求,如歌曲名称不能为空等
数据库设计:建立歌曲信息数据库,包括歌曲名称、歌手、专辑、歌词等信息
数据查询:实现歌曲信息的查询功能,包括模糊查询、精确查询等 数据更新:实现歌曲信息的更新功能,包括添加、修改、删除等
功能
系统性能:响 应速度快,稳 定性高,用户
体验良好
系统安全:保 证用户数据的 安全性和隐私
性
歌曲信息管理:添加、修改、删除、查询歌曲信息 用户管理:添加、修改、删除、查询用户信息 权限管理:设置用户权限,如管理员、普通用户等 报表管理:生成歌曲信息报表,如歌曲列表、用户列表等 系统设置:设置系统参数,如歌曲信息格式、用户权限等 帮助文档:提供系统使用帮助文档,如操作指南、常见问题解答等
歌曲信息管理系统

scanf("%d",&m);
if(m==1)
{
if((fp=fopen("歌曲4.txt","r+"))==NULL)
{
printf("不能打开文件\n");
exit(0);
}
for(j=0;j<n;j++)
fscanf(fp,"\n%s %s %s %s \n",s[j].name,s[j].writer,s[j].singer,s[j].year);
}
printf("信息已删除");
}
else break;
if((fp=fopen("歌曲4.txt","w+"))==NULL)
{
printf("不能打开文件\n");
exit(0);
}
for(l=0;l<n-1;l++)
fprintf(fp,"\n%s %s %s %s \n",s[l].name,s[l].writer,s[l].singer,s[l].year);
printf("\n请选择数字(1-6):");
scanf("%d",&n);
if(n<1||n>6)/**对选择的数字做判断**/
{m=1;printf("您输入的数据不符合要求,请重新输入!!!\n\n");getchar();}
else m==0;}
基于某C++的歌曲信息管理系统

安阳师范学院课程实践报告基于C+啲歌曲信息管理系统课程:面向对象程序设计学院名称:物理与电气工程学院专业名称:电气工程及其自动化班11自动化1班级学生姓名:弓长***学号:*********一、实践目的1进一步巩固所学程序设计语言(主要是C、C++的基本概念和理论;2熟练掌握结构化程序设计和面向对象程序设计的方法和理念;2培养实际分析问题、实践动手编程的能力;3、培养团队协作精神。
二、实践内容本系统是一个歌曲信息管理系统,采用VC++6.0 编译器作为开发环境,这个环境是我们在学习C++的平台。
输入数据类型主要是char、int、float等数据类型,输入内容包括:歌曲编号、歌曲名称、歌唱者、歌曲风格等数据。
用户在歌曲信息数据时要保证输入数据格式的正确性,系统不会自动检测输入的数据是否正确。
输出形式与输入形式类似,根据需要可以选择显示输入的各项内容,还可以选择显示计算好平均分后并排序后的记录,显示内容包括:歌曲编号、歌曲名称、歌唱者、歌曲风格等数据。
用户运行程序后进入系统主界面,在主界面用户可以输入所有歌曲的数据并保存到文件中,也可以读取文件中已有的学生数据。
用户在保存数据的时候,如果保存位置没有文件则自动新建一个文件进行保存。
本系统同时只能对一个数据文件进行相关操作,不能同时打开多个数据文件,其类似于单用户操作系统。
当用户读取学生数据后可对其进行显示,插入,删除,修改等相关操作。
用户在操作过程中可随时对当前文件进行保存到文件操作,以防止修改的数据丢失。
三、算法描述1) 主函数ma in ():调用增加、删除、修改、查找、显示等函数对歌曲信息进行处理;2) 增加函数add():输入歌曲信息;3) 修改函数change():修改指定歌曲信息;4) 查找函数search。
查找指定歌曲信息;5) 删除函数Del():删除指定歌曲信息;6) 显示函数show():显示所有歌曲信息;实用文档四、程序结构五、程序代码#in clude<iostream>#in clude<fstream>#in clude<stri ng>static in t len gth;using n amespace std;//属性类class Music{public:frie nd class MusicSystem;private:int num;string name,singer,style;};//功能类class MusicSystem{public:MusicSystem();~MusicSystem(){};void add();void cha nge();void search();void del();void show();private:Music music;};MusicSystem::MusicSystem(){};//输入信息void MusicSystem::add(){ofstream outfile("music1.txt",ios::out);if(!outfile){cerr<<"open file error!";exit(1);}while(1){cout«"--请输入歌曲信息:--"<<endl;cout«"- 请输入歌曲编号:"<<e ndl;cin>> music, num;if(music. num==0)break;cout«"- 请输入歌曲名称:"<<e ndl;cin>> music. name;cout«"- 请输入歌曲演唱者:"<<e ndl;cin>> music.s in ger;coutvv"- 请输入歌曲风格:cin>> music.style;cout«e ndl;outfilevv""vvmusic .n ame<<""vvmusic.stylevve ndl;len gth++;}outfile.close();}//修改信息void MusicSystem::cha nge(){Music music[100];int newnum;stri ng newn ame, newsi nger, newstyle;ifstream in file("music1.txt",ios::i n);if(!i nfile){cerr<<"open file error!";exit(1);}for(int i=0;i<length;i++){{in file>>music[i]. num;in file>>music[i]. name; "<<e ndl;"vvmusic. num<<""vvmusic.si nger<<"in file>>music[i].si nger; in file>>music[i].style;}in file.close();ofstream outfile("music1.txt",ios::out); if(!outfile){cerr<<"open file error!";exit(1);}while(1){coutvv"--请输入要修改的歌曲编号: cin»newnum;cout«e ndl;if(newnum==0)break;coutvv"-请输入修改后的歌曲名称:cin»newn ame;coutvve ndl;coutvv"-请输入修改后的歌曲演唱者cin»n ews in ger;coutvve ndl;coutvv"-请输入修改后的歌曲风格:cin»n ewstyle;coutvve ndl;for(int i=0;ivlength;i++){if(music[i]. num==newnum){music[i]. name=newn ame;music[i].s inger=n ews in ger;music[i].style=n ewstyle;}outfilevv""vvmusic[i]. namevv" "vvmusic[i].stylevve ndl;}outfile.close(); coutvv"修改完毕!"vvendl;}}//查找信息void MusicSystem::search(){"vve ndl;"vve ndl;"vvendl;"vve ndl;"vvmusic[i]. numvv" vvmusic[i].s in gervv"Music music[100];int ch;ifstream in file("music1.txt",ios::i n);if(!i nfile){cerr<<"open file error!";exit(1);}for(int i=0;i<length;i++){in file»music[i]. num> >music[i]. name>>music[i].si nger>>music[i].style;}in file.close();while(1){cout«"--请输入查找方式:--"<<endl; cout<<"1.按歌曲编号查找:"<<endl; cout<<"2.按歌曲名称查找:"<<endl; cout<<"3.按歌曲演唱者查找:"<<endl; cout<<"4.返回主菜单:"<<endl;cout<<"0.退出查找:"<<endl; cin> >ch;if(ch==4)break;switch(ch){case 1:while(1){coutvv"请输入要查找歌曲编号:"<<e ndl; cin>>music[100]. num;if(music[100]. num==0)break; for(inti=0;i<length;i++){if(music[i]. num==music[100]. num){cout«"查找结果为:"<<endl;coutvv"歌曲编号歌曲名称歌曲演唱者歌曲风格"<<endl;cout«" "<<music[i]. num <<""<<music[i].si nger<<" "<<music[i]. name<<""<<music[i].style<<e ndl;} } cout«"}break;查找完毕!"<<endl;case 2:while(1){coutvv"请输入要查找歌曲姓名:"<<endl;cin>> music[100]. name; if(music[100].name=="0")break;for(int i=0;i<length;i++) {if(music[i]. name==music[100]. name){coutvv"查找结果为:"<<endl;coutvv"歌曲编号歌曲名称歌曲演唱者歌曲风格"<<endl;coutvv" "vvmusic[i]. num vv""vvmusic[i].s in gervv" "<<music[i]. namevv""v<music[i].style<ve ndl;}}cout«"查找完毕!"<<endl;}break;case 3:while(1){coutvv"请输入你要查找的歌曲演唱者:"vve ndl;cin>> music[100].s in ger; for(inti=0;ivlength;i++) {if(music[i].si nger==music[100].si nger){cout«"查找结果为:"<<endl;coutvv"歌曲编号歌曲名称歌曲演唱者歌曲风格"<<endl;cout«" "<<music[i]. num <<" "<<music[i]. name<<" "<<music[i].s in ger<<" "<<music[i].style<<e ndl;}} cout«"查找完毕!"<<endl;}break;default:cout«"输入错误!"<<endl;break;}}}//删除信息void MusicSystem::del(){int delnum;Music music[100];ifstream in file("music1.txt",ios::i n);if(!i nfile){cerr<<"open file error!";exit(1);}coutvv"歌曲编号歌曲名称歌曲演唱者歌曲风格"<<endl;for(int i=0;i<length;i++){in file»music[i]. num> >music[i]. name>>music[i].si nger>>music[i].style;coutvv" "<<music[i]. num<<" "<<music[i]. namevv" "<<music[i].s in ger<<" "v<music[i].style<ve ndl;}in file.close();ofstream outfile("music1.txt",ios::out);if(!outfile){cerr<<"open file error!";exit(1);}while(1){coutvv"请输入你要删除的歌曲编号:"<<endl; cin> >de Inum;if(de Inum==0)break;for(int i=0;i<length;i++){if(music[i]. nu m!=del num)outfilevv" "<<music[i]. num <<" "<<music[i]. name<<" "<<music[i].s in ger<<" "<<music[i].style<<e ndl;}coutvv"删除完毕!"<<endl;len gth--;}outfile.close();}//显示信息void MusicSystem::show(){ifstream in file("music1.txt",ios::i n);if(!i nfile){ cerr<<"open file error!";exit(1);}coutvv"歌曲编号歌曲名称歌曲演唱者歌曲风格"<<endl;for(int i=0;i<length;i++){in file>>music .num> >music. name>>music.si nger>>music.styl e;coutvv" "vvmusic. num<<" "vvmusic .n ame<<" "vvmusic.si ngervv" "vvmusic.stylevve ndl;}}//主函数void main(){MusicSystem a; int ch;while(1){cout«" --------------管理系统--------- "<<e ndl;cout«" 1.-"<<e ndl;cout«" 2.-"<<e ndl;cout«" 3.信息-"<<e ndl;cout«" 4.-"<<e ndl;cout«" 5.信息-"<<e ndl;cout«" --择:--"<<e ndl;cin> >ch; cout«e ndl; if(ch==O)break;switch(ch){case 1:a.add();break;case 2:a.del();break;case 3:a.cha nge();break;case 4:a.search();break;case 5:a.show();break; default:break;}}欢迎使用歌曲信息增加歌曲删除歌曲修改歌曲查找歌曲显示歌曲请选六、运行结果输入查找删除添加31XH-0皿日鼻耳谥M ftq ^.41 OS - |fijopvto uo p%ioae«< j^ietdsfG" 0OTIJ &IJ 1 p咁耳出■迟0TT J0IC1 enies - g pjnoaeji v ppy*sp>j:o3B>i: i? 93^1 ^(I"pvTODe^r i{3«<¥es ■霊0TT J&M11 3 名"FT ■还pjlOOiBJi r I■Aiaqil: .XMi 庙£[F*1口ANY 寸』£1 g -■n-apj n> UD (l^11HE虫Ao-[if SXQ - g a T¥J 耳曙鼻P wa a_£a T< J:=»曙鼻=»™=- 9g = C 占一❺ > *i Hquunti 讽rm托曲oy oq^J按作者排序七、总结通过这次C程序设计,我掌握了模块化设计方法,能够深入的理解结构化程序设计思想,熟练运用结构化程序设计方法,提高了运用C语言进行程序设计的能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
师学院课程实践报告基于C++的歌曲信息管理系统课程:面向对象程序设计学院名称:物理与电气工程学院专业名称:电气工程及其自动化班级:11自动化1班学生: ***学号:*********一、实践目的1、进一步巩固所学程序设计语言(主要是C、C++)的基本概念和理论;2、熟练掌握结构化程序设计和面向对象程序设计的方法和理念;2、培养实际分析问题、实践动手编程的能力;3、培养团队协作精神。
二、实践容本系统是一个歌曲信息管理系统,采用VC++6.0 编译器作为开发环境,这个环境是我们在学习C++的平台。
输入数据类型主要是char、int、float等数据类型,输入容包括:歌曲编号、歌曲名称、歌唱者、歌曲风格等数据。
用户在歌曲信息数据时要保证输入数据格式的正确性,系统不会自动检测输入的数据是否正确。
输出形式与输入形式类似,根据需要可以选择显示输入的各项容,还可以选择显示计算好平均分后并排序后的记录,显示容包括:歌曲编号、歌曲名称、歌唱者、歌曲风格等数据。
用户运行程序后进入系统主界面,在主界面用户可以输入所有歌曲的数据并保存到文件中,也可以读取文件中已有的学生数据。
用户在保存数据的时候,如果保存位置没有文件则自动新建一个文件进行保存。
本系统同时只能对一个数据文件进行相关操作,不能同时打开多个数据文件,其类似于单用户操作系统。
当用户读取学生数据后可对其进行显示,插入,删除,修改等相关操作。
用户在操作过程中可随时对当前文件进行保存到文件操作,以防止修改的数据丢失。
三、算法描述1)主函数main():调用增加、删除、修改、查找、显示等函数对歌曲信息进行处理;2)增加函数add():输入歌曲信息;3)修改函数change():修改指定歌曲信息;4)查找函数search():查找指定歌曲信息;5)删除函数Del():删除指定歌曲信息;6)显示函数show():显示所有歌曲信息;四、程序结构五、程序代码#include<iostream>#include<fstream>#include<string>static int length;using namespace std;//属性类class Music{public:friend class MusicSystem;private:int num;string name,singer,style;};//功能类class MusicSystem{public:MusicSystem();~MusicSystem(){};void add();void change();void search();void del();void show();private:Music music;};MusicSystem::MusicSystem(){};//输入信息void MusicSystem::add(){ofstream outfile("music1.txt",ios::out);if(!outfile){cerr<<"open file error!";exit(1);}while(1){cout<<"--请输入歌曲信息:--"<<endl;cout<<" -请输入歌曲编号:"<<endl;cin>>music.num;if(music.num==0)break;cout<<" -请输入歌曲名称:"<<endl;cin>>;cout<<" -请输入歌曲演唱者:"<<endl;cin>>music.singer;cout<<" -请输入歌曲风格:"<<endl;cin>>music.style;cout<<endl;outfile<<" "<<music.num<<" "<<<<" "<<music.singer<<" "<<music.style<<endl;length++;}outfile.close();}//修改信息void MusicSystem::change(){Music music[100];int newnum;string newname,newsinger,newstyle;ifstream infile("music1.txt",ios::in);if(!infile){cerr<<"open file error!";exit(1);}for(int i=0;i<length;i++){{infile>>music[i].num;infile>>music[i].name;infile>>music[i].singer;infile>>music[i].style;}}infile.close();ofstream outfile("music1.txt",ios::out);if(!outfile){cerr<<"open file error!";exit(1);}while(1){cout<<"--请输入要修改的歌曲编号:"<<endl;cin>>newnum;cout<<endl;if(newnum==0)break;cout<<"-请输入修改后的歌曲名称:"<<endl;cin>>newname;cout<<endl;cout<<"-请输入修改后的歌曲演唱者:"<<endl;cin>>newsinger;cout<<endl;cout<<"-请输入修改后的歌曲风格:"<<endl;cin>>newstyle;cout<<endl;for(int i=0;i<length;i++){if(music[i].num==newnum){music[i].name=newname;music[i].singer=newsinger;music[i].style=newstyle;}outfile<<" "<<music[i].num<<" "<<music[i].name<<" "<<music[i].singer<<" "<<music[i].style<<endl;}outfile.close();cout<<"修改完毕!"<<endl;}}//查找信息void MusicSystem::search(){Music music[100];int ch;ifstream infile("music1.txt",ios::in);if(!infile){cerr<<"open file error!";exit(1);}for(int i=0;i<length;i++){infile>>music[i].num>>music[i].name>>music[i].singer>>m usic[i].style;}infile.close();while(1){cout<<"--请输入查找方式:--"<<endl;cout<<"1.按歌曲编号查找:"<<endl;cout<<"2.按歌曲名称查找:"<<endl;cout<<"3.按歌曲演唱者查找:"<<endl;cout<<"4.返回主菜单:"<<endl;cout<<"0.退出查找:"<<endl;cin>>ch;if(ch==4)break;switch(ch){case 1:while(1){cout<<"请输入要查找歌曲编号:"<<endl;cin>>music[100].num;if(music[100].num==0)break;for(int i=0;i<length;i++){if(music[i].num==music[100].num){cout<<"查找结果为:"<<endl;cout<<"歌曲编号歌曲名称歌曲演唱者歌曲风格"<<endl;cout<<" "<<music[i].num<<" "<<music[i].name<<" "<<music[i].singer<<" "<<music[i].style<<endl;}}cout<<"查找完毕!"<<endl;}break;case 2:while(1){cout<<"请输入要查找歌曲:"<<endl;cin>>music[100].name;if(music[100].name=="0")break;for(int i=0;i<length;i++){if(music[i].name==music[100].name){cout<<"查找结果为:"<<endl;cout<<"歌曲编号歌曲名称歌曲演唱者歌曲风格"<<endl;cout<<" "<<music[i].num<<" "<<music[i].name<<" "<<music[i].singer<<" "<<music[i].style<<endl;}}cout<<"查找完毕!"<<endl;}break;case 3:while(1){cout<<"请输入你要查找的歌曲演唱者:"<<endl;cin>>music[100].singer;for(int i=0;i<length;i++){if(music[i].singer==music[100].singer){cout<<"查找结果为:"<<endl;cout<<"歌曲编号歌曲名称歌曲演唱者歌曲风格"<<endl;cout<<" "<<music[i].num<<" "<<music[i].name<<" "<<music[i].singer<<" "<<music[i].style<<endl;}}cout<<"查找完毕!"<<endl;}break;default:cout<<"输入错误!"<<endl;break;}}}//删除信息void MusicSystem::del(){int delnum;Music music[100];ifstream infile("music1.txt",ios::in);if(!infile){cerr<<"open file error!";exit(1);}cout<<"歌曲编号歌曲名称歌曲演唱者歌曲风格"<<endl;for(int i=0;i<length;i++){infile>>music[i].num>>music[i].name>>music[i].singer>>music[i].style;cout<<" "<<music[i].num<<" "<<music[i].name<<" "<<music[i].singer<<" "<<music[i].style<<endl;}infile.close();ofstream outfile("music1.txt",ios::out);if(!outfile){cerr<<"open file error!";exit(1);}while(1){cout<<"请输入你要删除的歌曲编号:"<<endl;cin>>delnum;if(delnum==0)break;for(int i=0;i<length;i++){if(music[i].num!=delnum)outfile<<" "<<music[i].num<<" "<<music[i].name<<" "<<music[i].singer<<" "<<music[i].style<<endl;}cout<<"删除完毕!"<<endl;length--;}outfile.close();}//显示信息void MusicSystem::show(){ifstream infile("music1.txt",ios::in);if(!infile){cerr<<"open file error!";exit(1);}cout<<"歌曲编号歌曲名称歌曲演唱者歌曲风格"<<endl;for(int i=0;i<length;i++){infile>>music.num>>>>music.singer>>music.style;cout<<" "<<music.num<<" "<<<<" "<<music.singer<<" "<<music.style<<endl;}}//主函数void main(){MusicSystem a;int ch;while(1){cout<<" ----------------欢迎使用歌曲信息管理系统----------------"<<endl;cout<<" 1.增加歌曲-"<<endl;cout<<" 2.删除歌曲-"<<endl;cout<<" 3.修改歌曲信息-"<<endl;cout<<" 4.查找歌曲-"<<endl;cout<<" 5.显示歌曲信息-"<<endl;cout<<" --请选择:--"<<endl;cin>>ch;cout<<endl;if(ch==0)break;switch(ch){case 1:a.add();break;case 2:a.del();break;case 3:a.change();break;case 4:a.search();break;case 5:a.show();break;default:break;}}六、运行结果输入查找删除添加保存到文件读取文件按作者排序七、总结通过这次C程序设计,我掌握了模块化设计方法,能够深入的理解结构化程序设计思想,熟练运用结构化程序设计方法,提高了运用C语言进行程序设计的能力。