![[实习总结]c语言链表歌手比赛系统实习报告.doc_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-7/14/8c4433bc-8c4b-4e75-a407-b9b67b6b424d/8c4433bc-8c4b-4e75-a407-b9b67b6b424d1.gif)
![[实习总结]c语言链表歌手比赛系统实习报告.doc_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-7/14/8c4433bc-8c4b-4e75-a407-b9b67b6b424d/8c4433bc-8c4b-4e75-a407-b9b67b6b424d2.gif)
![[实习总结]c语言链表歌手比赛系统实习报告.doc_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-7/14/8c4433bc-8c4b-4e75-a407-b9b67b6b424d/8c4433bc-8c4b-4e75-a407-b9b67b6b424d3.gif)
![[实习总结]c语言链表歌手比赛系统实习报告.doc_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-7/14/8c4433bc-8c4b-4e75-a407-b9b67b6b424d/8c4433bc-8c4b-4e75-a407-b9b67b6b424d4.gif)
![[实习总结]c语言链表歌手比赛系统实习报告.doc_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-7/14/8c4433bc-8c4b-4e75-a407-b9b67b6b424d/8c4433bc-8c4b-4e75-a407-b9b67b6b424d5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构与C语言综合训练实习报告信息工程学院数据结构与C语言综合训练报告 (20122013学年第二学期)报告题目:歌手比赛系统课程设计报告姓 名:学 号:专业班级:指导教师:完成日期: 一、综合训练目的和要求本综合训练是计算机科学与技术、信息管理与信息系统、软件工程、电子商务专业重要的实践性环节之一,是在学生学习完程序设计语言(C)、数据结构课程后进行的一次全面的综合练习。本课综合训练的目的和任务:1. 巩固和加深学生对C语言、数据结构课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言、
2、数据结构解决实际问题的能力二、综合训练任务内容(题目内容及具体要求)通过此系统可以实现如下功能:1)录入歌手的基本信息,包括姓名,编号,唱法(美声,民族,通俗)2)成绩计算:用随机数产生5个评委三个方面的打分(各100分)。包括专业性综合素质台风形象。分别占60% 20% 20%,根据输入的5个评委打出的三方面的个人成绩,按比例计算出5个评委在三方面的个人综合成绩,之后在计算5个评委的成绩总和以及平均成绩3)成绩排序:对选手按总分进行排序,包括升序和降序。4)数据查询,按编号查询歌手的成绩:输入编号,如果存在,输出选手的数据,不存在,输出 “信息不存在”。按姓名查询歌手成绩。输入选手姓名,存在
3、,则输出选手数据,不存在,则输出 “信息不存在5)追加学生数据:追加选手数据(包括歌手姓名,编号,成绩)。6)写入数据文件:将输入的信息进行保存,保存到自己所写的文件中。7)退出系统歌手管理系统三、总体设计退出系统读取数据文件写入数据文件追加选手数据评委打分数据查询成绩排序创建歌手信息图2-1 系统模块图 main追加数据查询读取文件写入文件排序信息录入退出系统编号查询升序个人录入姓名查询降序得分录入分数查询图2-2 函数模块图四、详细设计说明(分模块逐一说明函数功能、入口及出口参数,函数调用关系描述等)模块1:/*定义结构体*/。typedef struct sintypedef struc
4、t sin char ID10; char Name10; char style10; float grade1;说明:定义一个歌手的结构体。包括歌手的编号,姓名,唱法。和五个评委的分数,平均分和总分。 float grade2; float grade3; float grade4; float grade5; float Average; float Sum; struct sin *next; SINGER模块2:/*初始化函数*/SINGER *initialize()。SINGER *initialize() return NULL;说明:置空。模块3:/*菜单选择函数*/ int
5、menu_select()int menu_select()获取当前机器的系统时间 int n; time_t t = time(0); char tmp64; strftime( tmp, sizeof(tmp), %Y/%m/%d %A ,localtime(&t) ); printf(*n); printf(tttt欢迎使用歌手比赛管理系统!n); printf( 制作人:周鑫恺 当前日期是:); puts( tmp );菜单选择 printf(*n); printf(tttt1.录入选手信息及评分n); printf(tttt2.成绩排序n); printf(tttt3.数据查询n )
6、; printf(tttt4.追加歌手数据n); printf(tttt5.写入数据文件n); printf(tttt6.读取歌手数据文件n); printf(tttt7.退出系统n); printf(tttt输入你的选择(17):); scanf(%d,&n); return(n);模块4: /*输入信息函数*/SINGER *Singer_information() 建立链表。头指针置空。以head来传递变量。SINGER *Singer_information() SINGER*head=NULL,*p,*q; for(;) p=(SINGER *)malloc(LEN); q=head
7、;A: printf(输入编号(输入# :结束录入):n); scanf(%s,p-ID); if(p-ID0=#) printf(tt不要忘记保存数据!保存数据请返回主菜单按5!); break;死循环来输入学生信息,这里有输入歌手编号重复错误的操作,用goto语句返回 while(q!=NULL) if(strcmp(p-ID,q-ID)=0) printf(该学生已存在,请重新输入。n); goto A; q=q-next; printf(输入名字:n); scanf(%s,p-Name); printf(输入唱法:n); scanf(%s,p-style); int X,Y,i; X=
8、59; Y=99; srand(unsigned)time(NULL); float professional5; float comprehensive5; float stage5; float score1; float score2; float score3; float score4; float score5; for(i=0; igrade1=score1; printf(tt专业成绩(60%) 综合素质(20%) 台风形象(20%) 总评n); printf(第一位评委的分数:%-15.1f%-15.1f%-11.1f%.1fn,professional0,comprehen
9、sive0,stage0,p-grade1); p-grade2=score2; printf(第二位评委的分数:%-15.1f%-15.1f%-11.1f%.1fn,professional1,comprehensive1,stage1,p-grade2); p-grade3=score3; printf(第三位评委的分数:%-15.1f%-15.1f%-11.1f%.1fn,professional2,comprehensive2,stage2,p-grade3); p-grade4=score4; printf(第四位评委的分数:%-15.1f%-15.1f%-11.1f%.1fn,pr
10、ofessional3,comprehensive3,stage3,p-grade4); p-grade5=score5; printf(第五位评委的分数:%-15.1f%-15.1f%-11.1f%.1fn,professional4,comprehensive4,stage4,p-grade5); p-Sum=p-grade1+p-grade2+p-grade3+p-grade4+p-grade5; p-Average=p-Sum/5;头插法 printf(评委总分:%.1fn,p-Sum); printf(评委平均分:%.1fn,p-Average); p-next=head; head
11、=p; return(head);模块5: /*显示全部信息函数*/void Singer_List(SINGER *head)void Singer_List(SINGER *head) SINGER *p; int num=0; p=head; printf(-n); printf(%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8sn,编号,姓名,唱法,评委1,评委2,评委3,评委4,评委5,平均分,总分数); while(p!=NULL) printf(%-8s%-8s%-8s%-8.1f%-8.1f%-8.1f%-8.1f%-8.1f%-8.1f%-8.1
12、fn,p-ID,p-Name,p-style,p-grade1,p-grade2,p-grade3,p-grade4,p-grade5,p-Average,p-Sum); p=p-next; num+; printf(n共有%d位歌手的信息n,num); printf(-n);模块6:排序函数: /*排序的选择函数*/void Sequence(SINGER *head)1:/*平均成绩升序排序函数*/SINGER*ascending_order_by_sum(SINGER *head) 2:/*按平均成绩降序排序函数*/ SINGER *descending_order_by_sum(SIN
13、GER *head)/*按平均成绩升序排序函数*/SINGER*ascending_order_by_sum(SINGER *head) int i=0,num=0; SINGER *p=NULL,*p1=NULL,*p2=NULL,*temp=NULL,*q=NULL,*new_head=NULL; temp=(SINGER *)malloc(LEN); p=p1=p2=head; while(p!=NULL) p=p-next; num+; for(; inext!=NULL) p1=p1-next; if(temp-SumSum) temp=p1; while(p!=temp) p2=p
14、; p=p-next; if(p=head) head=head-next; else p2-next=p-next; p-next=NULL; q=(SINGER*)malloc(LEN); q=temp; q-next=new_head; new_head=q;/把最大的节点赋值给新的链表中 /free(temp); return new_head;/*按平均成绩降序排序函数*/SINGER *descending_order_by_sum(SINGER *head) int i=0,num=0; SINGER *p=NULL,*p1=NULL,*p2=NULL,*temp=NULL,*q
15、=NULL,*new_head=NULL; temp=(SINGER *)malloc(LEN); p=p1=p2=head; while(p!=NULL) p=p-next; num+; for(; inext!=NULL) p1=p1-next; if(temp-Sump1-Sum) temp=p1; while(p!=temp) p2=p; p=p-next; if(p=head) head=head-next; else p2-next=p-next; p-next=NULL; q=(SINGER *)malloc(LEN); q=temp; q-next=new_head; new_
16、head=q; return new_head;/*排序选择函数*/void Sequence(SINGER *head) char flag=0; while(1) printf(nttt 歌手信息排列 n); printf(ttt| 1. 按总成绩升序排列 |n); printf(ttt| 2. 按总成绩降序排列 |n); printf(ttt 输入你的选择:); flag = getche(); switch(flag) case 1: printf(n); head=ascending_order_by_sum(head); Singer_List(head); break; case
17、 2: printf(n); head=descending_order_by_sum(head); Singer_List(head); break; getchar(); printf(是否继续?(y/n); if (getchar()=n|getchar()=N) break; 模块7: 查找函数:/*查找的选择函数*/void Looking(SINGER *head) 1:/*按编号查找函数*/void ID_Search(SINGER *head) 2:/*按姓名查找函数*/void name_Search(SINGER *head) 3:/*按分数段查找函数*/void Scor
18、e_Search(SINGER *head)/*按编号查找函数*/void ID_Search(SINGER *head) SINGER *p; char s6; printf(请输入编号号来查找:); scanf(%s,s); p=head; while(strcmp(p-ID,s) & p != NULL) p=p-next; if(p!=NULL) printf( 编号为%s的歌手信息nn,s); printf(-n); printf( %-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8sn,编号,姓名,唱法,评委1,评委2,评委3,评委4,评委5,平均分,总
19、分数); printf(%-8s%-8s%-8s%-8.1f%-8.1f%-8.1f%-8.1f%-8.1f%-8.1f%-8.1fn,p-ID,p-Name,p-style,p-grade1,p-grade2,p-grade3,p-grade4,p-grade5,p-Average,p-Sum); else printf(n没有编号为%s的歌手n,s);/*按姓名查找函数*/void name_Search(SINGER *head) SINGER *p; char s6; printf(请输入名字来查找:); scanf(%s,s); p=head; while(strcmp(p-Name
20、,s) & p != NULL) p=p-next; if(p!=NULL) printf( 名字为%s的歌手信息nn,s); printf(-n); printf( %-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8sn,编号,姓名,唱法,评委1,评委2,评委3,评委4,评委5,平均分,总分数); printf(%-8s%-8s%-8s%-8.1f%-8.1f%-8.1f%-8.1f%-8.1f%-8.1f%-8.1fn,p-ID,p-Name,p-style,p-grade1,p-grade2,p-grade3,p-grade4,p-grade5,p-Avera
21、ge,p-Sum); else printf(n没有名字为%s的歌手n,s);/*按分数段查找函数*/void Score_Search(SINGER *head) SINGER*p; float a,b; printf(请依次输入平均成绩段a到b来查找(ba):); scanf(%f %f,&a,&b); p=head; printf( 分数段于%-10.2f%-10.2f的歌手信息nn,a,b); printf(-n); printf( %-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8sn,编号,姓名,唱法,评委1,评委2,评委3,评委4,评委5,平均分,总分
22、数); while(p!=NULL) if(p-Average)a&(p-Average)ID,p-Name,p-style,p-grade1,p-grade2,p-grade3,p-grade4,p-grade5,p-Average,p-Sum); p=p-next; /*查找选择函数*/void Looking(SINGER *head) char flag=0; while(1) printf(nttt 查询歌手信息 n); printf(ttt| 1. 按编号查询歌手信息 |n); printf(ttt| 2. 按姓名查询歌手信息 |n); printf(ttt| 3. 查找分数段选手
23、信息 |n); printf(ttt 输入你的选择:); flag = getche(); switch(flag) case 1: printf(n); ID_Search(head); break; case 2: printf(n); name_Search(head); break; case 3: printf(n); Score_Search(head); break; getchar(); printf(是否继续?(y/n)n); if (getchar()=n|getchar()=N) break;模块8: /*追加歌手数据函数*/SINGER *Insert(SINGER *
24、head,SINGER*mynew/*追加歌手数据函数*/SINGER *Insert(SINGER *head,SINGER*mynew) SINGER *p0,*p1,*p2; p1=head; p0=mynew; int X,Y,i; X=59; Y=99; srand(unsigned)time(NULL); float professional5; float comprehensive5; float stage5; float score1; float score2; float score3; float score4; float score5; for(i=0; iID)
25、; printf(输入名字:n); scanf(%s,mynew-Name); printf(输入唱法:n); scanf(%s,mynew-style); printf(tt专业成绩(60%) 综合素质(20%) 台风形象(20%) 总评n); mynew-grade1=score1; printf(第一位评委的分数:%-15.1f%-15.1f%-11.1f%.1fn,professional0,comprehensive0,stage0,mynew-grade1); mynew-grade2=score2; printf(第二位评委的分数:%-15.1f%-15.1f%-11.1f%.1
26、fn,professional1,comprehensive1,stage1,mynew-grade2); mynew-grade3=score3; printf(第三位评委的分数:%-15.1f%-15.1f%-11.1f%.1fn,professional2,comprehensive2,stage2,mynew-grade3); mynew-grade4=score4; printf(第四位评委的分数:%-15.1f%-15.1f%-11.1f%.1fn,professional3,comprehensive3,stage3,mynew-grade4); mynew-grade5=sco
27、re5; printf(第五位评委的分数:%-15.1f%-15.1f%-11.1f%.1fn,professional4,comprehensive4,stage4,mynew-grade5); mynew-Sum=mynew-grade1+mynew-grade2+mynew-grade3+mynew-grade4+mynew-grade5; mynew-Average=mynew-Sum/5; if(head=NULL) head=p0; p0-next=NULL; else while(strcmp(p0-ID,p1-ID)next!=NULL) p2=p1; p1=p1-next;
28、if(strcmp(p0-ID,p1-ID)=0) if(head=p1)head=p0; else p2-next=p0; p0-next=p1; else p1-next=p0; p0-next=NULL; printf(ntttt全部%s个歌手已被更新n,mynew-ID); printf(tttt不要忘了保存.n); return(head);模块9: /*保存数据到文件函数*/void Save_File(SINGER *head)void Save_File(SINGER *head) FILE *fp; SINGER *p; char outfile10; printf(tttt
29、输入要创建的文件名:);允许用户输入文件名错误 scanf(%s,outfile); if(fp=fopen(outfile,w)=NULL) printf(tttt打不开文件n); return; p=head; while(p!=NULL) fwrite(p,LEN,1,fp); p=p-next; fclose(fp); printf(tttt保存成功n);模块10: /* 从文件读数据函数*/SINGER *Read_File()SINGER *Read_File() SINGER*p1,*p2,*head=NULL; FILE *fp; char infile10; printf(t
30、ttt导入文件,请输入文件名:); scanf(%s,infile); if(fp=fopen(infile,r)=NULL)允许用户输入文件名错误 printf(tttt打不开文件n); return(head); p1=(SINGER *)malloc(LEN); head=p1; while(!feof(fp) if(fread(p1,LEN,1,fp)!=1) break; p1-next=(SINGER *)malloc(LEN); if(!p1-next) printf(ttttOut of memory!n); return (head); p2=p1; p1=p1-next;
31、p2-next=NULL; fclose(fp); printf(nttt你成功的从文件中读取了数据!,可以进行功能操作n); return (head);模块11: /*主函数界面*int main() SINGER *head,mynew; head=initialize(); char yes_no=0; do switch(menu_select() case 1: head=Singer_information(); break; case 2: Sequence(head);菜单选择 break; case 3: Looking(head); break; case 4: head
32、=Insert(head,&mynew); break; case 5: Save_File(head); break; case 6: head=Read_File(); break; case 7: printf(tt 感谢您使用歌手比赛系统!祝您生活愉快!再见!n); printf(tt 按任意键退出程序); exit(0); default : printf(tttt没有该选项!n); printf(nttt 返回主菜单?(返回按y/不返回按n)?); do选择是否回到主页面继续进行功能选择 yes_no=getch(); system(cls); while(yes_no!=y&ye
33、s_no!=Y&yes_no!=n&yes_no!=N); while(yes_no=Y|yes_no=y);/五、软件使用说明(简单介绍软件的使用方法,可截图说明)主界面:输入序号。进行功能选择以上录入选手信息界面输入编号,名字。唱法。随机产生选手的三方面成绩并根据比例计算出评委的成绩。进行赋值。输#结束死循环。并选择是否回到主菜单以上是排序界面进行选择哪种方式排序以上是查询界面输入姓名,编号和分数段查询选手信息以上是追加选手数据界面输入追加选手的编号,姓名,唱法。并随机产生成绩。以上是写入文件界面将输入的数据写入文件中,以便于多次使用以上是读取数据的界面读取写入的数据,可以进行功能选择六、
34、调试与测试(调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施)测试中遇到的问题1:数值无法写入文件。解决方法是吧fclose();函数放在循环外面测试中遇到的问题2:无法赋值。问题在数组下标越界。解决方法:改变中的值从0开始调试方法:当程序无法进行下去时,可以利用printf函数来打印数据。这样来查找到底是那部出的问题。七、工作日志(按天说明每日工作及进展等)7月12日选题,并进行框架设计:设计了整体的构想和重新学习了几个基本的函数,比如说随机函数,排序函数,查找函数,switch语句等等。7月13日14日 功能1)2)的代码实现和调试:建立了链表来存储数据,并且对原有
35、的要求进行了创新。并且对排序函数进行升级。包括升序函数和降序函数。并书写了主函数。做了一个较简单的界面,和菜单选择的while循环7月15日16日 功能3)4)的代码实现和调试:对查找函数进行升级。包括按编号查找,按姓名查找,和按分数段查找,编写了追加数据函数7月18日19日。功能5)6)7)8)的代码实现和调试:对文件操作进行了进一步的复习。编写了写入文件的函数和读取文件的函数7月20日21日 程序优化和撰写实习报告:做了更好的软件界面。并增加了允许用户操作失误的功能、八、综合训练心得与体会课程设计刚开始的时候,我真的感觉到无从下手。因为已经过去一个学期了,期间又没有怎么看书,大一上学期的时
36、候学的c语言,不过基本上已经忘光了,而且那时候学的不深,如果单单写一个比较的小的程序还可以,大程序基本写不了。当选择了之后,刚开始是一筹莫展,不过短时间内就已经觉醒,重新对题目分析了一遍,了解了一下要用到哪方面的知识,然后着手去看书,重新熟悉一下以前的知识。看过书之后,信心增加了不少,对接下来的程序编译有很大帮助。通过这两周的课程设计,我独立完成了一个较大的C语言程序的设计,并认真完成了课程设计报告。回忆这两周的时间,我收获很大。首先,我熟练地运用了所学的知识编写程序,并成功的完成,感觉成就感很强,这大大激发了我编程的兴趣;其次,在设计的过程中遇到了一些困难,我会认真的去思考,或者充分利用网络
37、资源来寻求帮助,提高获取信息的能力。课程设计期间,我有向老师和同学寻求帮助,在交流中共同进步。最后,我了解了软件开发的大体过程及各个步骤,这对将来的学习和工作是很有帮助的。对于信管专业的大学生来说,积累实战经验是一项极其重要的内容,很可能成为将来就业的敲门砖。而程序设计综合课程设计就是积累实战经验的一个过程,虽然程序的规模并不大,但能够让我们尽早地认识软件开发的重要性和必要性,为将来的就业打下坚实的基础。经过两个星期的上机实践学习,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己编程粗心大意,经常出错,通过学习也有所改进;再有对C语言的一些标准函数不太了解,还有对函数调用的正确使用不够熟悉,以及对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。这次的课程设让我认识到很多C的内在要素:程序设计语言是程序设计的工具。这
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 1广告与媒介关系
- 家具设计第一章
- 苏州工业园区职业技术学院《电视摄像与剪辑艺术》2023-2024学年第二学期期末试卷
- 南方医科大学《西方伦理学》2023-2024学年第二学期期末试卷
- 新疆农业大学《学习筑梦民族复兴梦》2023-2024学年第一学期期末试卷
- 山东旅游职业学院《中国现当代文学作品选》2023-2024学年第二学期期末试卷
- 急性心梗心源性休克的护理
- 广州铁路职业技术学院《工程风险管理》2023-2024学年第二学期期末试卷
- 上海师范大学天华学院《统计质量控制与分析》2023-2024学年第一学期期末试卷
- 宁德市重点中学2025届初三调研英语试题试卷详细解析含答案
- 2023-2024全国初中物理竞赛试题-杠杆(解析版)
- 湖北省荆门市荆楚初中联盟2023-2024学年八年级下学期期中联考数学试题(无答案)
- 乡镇安全生产网格员培训
- 小班数学《三只熊》课件
- 山东锈石测报告亚兴石材文档
- 小学数学五年级下册通分练习100题附答案
- pe封口膜制作工艺
- 会计师聘书模板
- 粤教版科学四年级上册全册试卷(含答案)
- 呼吸系统疾病的护理研究进展与实际应用
- 盐酸丙卡特罗吸入溶液-药品临床应用解读
评论
0/150
提交评论