1、淮南师范学院 课程设计汇报歌手比赛系统 姓 名:胡欢欢学 号:专 业:计算机科学和技术班 级: 10级(1)班 指导老师:彭飞职 称:XXX 3月7日目录1.引言12.系统设计12.1设计分析12.1.1 项目描述12.2 程序结构22.2.1程序划分22.2.2 程序结构步骤图33.系统实现33.1 各模块功效及程序说明33.2系统关键功效模块运行效果图34.设计体会65.参考文件76.源程序代码71.摘要C语言是一门计算机高级语言,它在Microsoft开发软件Visual C+ 6.0中实施,C语言含有很多优点:1.C语言含有丰富数据类型,众多运算符,表现结构化程序设计优良控制结构,含有
2、抽象功效及表现信息隐蔽思想函数。2.C语言应用几乎遍布了程序各个领域,如科学家,系统程序设计,字处理软件和电子表格软件开发,信息管理,计算机辅助设计,等方面。3.C语言简练,为完成某一功效所写源程序代码往往比其它语言写得短,便利程序输入工作量降低。4.若程序员在书写过程时严格遵照ANSI C标准,则其源代码可不作修改,即可用于多种型号计算机和多种操作系统,所以,C语言含有良好可移植性。 此次实践我们选择了使用C语言编写基于链表程序,不仅使大家对程序设计、编程方法有了深入提升,而且掌握了使用C语言动态内存分配及数据结构等方面知识。2.系统设计2.1设计分析2.1.1 项目描述1项目名称:歌手打分
3、系统2.功效描述:(1)生成字符界面功效菜单*1.输入选手数据*2.评委打分*3.成绩排序*4.数据查询*5.追加学生数据*6.写入数据文件*7.退出系统* (2)经过输入菜单项序号开启对应模块功效 能够依据输入选手人数创建链表; 录入9名评委给选手打分,并存放到文件singerOriginal.dat中; 根据去掉一个最高分和去掉一个最低分标准求每名选手平均分; 按平均分由高到低次序对选手进行排序; 把排名后数据存放到文件singerFianl.dat中; 把原始数据和最终结果输出到屏幕; 在第步中保留singerOriginal.dat文件之前,可依据情况修改数据,比如:插入或删除歌手。2
4、.2 程序结构2.2.1程序划分将歌手打分系统程序进行系统模块划分,共分为九部分,分别是:1.定义结构体2.创建链表函数3.输入数据函数4.计算函数5.排序函数6.输出数据函数7.输出最终数据8.删除函数9.插入函数10.主函数2.2.2 程序结构步骤图main输出数据存放数据排序求平均分得分维护得分录入输入成绩创建链表3.系统实现3.1 各模块功效及程序说明创建链表:使用尾插法插入数据;输入选手信息:包含选手信息输入,选手成绩输入,去掉一个最高分和最低分,并将其它评委评分求出平均值。输出选手排名:包含选手成绩排名。删除和插入选手信息:将退赛选手和新参与比赛选手进行删除和插入。主函数:将全部函
5、数实现。3.2系统关键功效模块运行效果图程序运行效果图: 4.设计体会在此次C语言实践中,让我受益匪浅,经过此次实践,让更深入了解了C语言这门计算机语言,也明白了软件开发相关步骤和基础步骤,可能我程序还存在些许问题,可能还不完美,不过我相信在以后学习中我们会继改善。也期望老师能够给我们提出您宝贵意见。5.参考文件编程入门网:C程序设计(第四版)谭浩强著6.源程序代码#include#include#include#include#define N 3#define M 10int add = N-1;int sumN=0,MaxN,MinN;float averN=0;struct playe
6、rint num;char name8;int scoreM;void Inistplayer(struct player a,int n)int i;for(i=0;in;i+)scanf(%d %s,&ai.num,&ai.name);void Inputscore(int score,int n)int i;for(i=0;in;i+)scorei=1+(int)10*rand()/(RAND_MAX+1);void sort(struct player a,float b,int n)int i,k,j,t;float temp;char str8;for(i=0;in;i+)k=i;
7、for(j=i+1;jbj) k=j;if(k!=i)temp=bi;bi=bk;bk=temp;strcpy(str,ai.name);strcpy(ai.name,ak.name);strcpy(ak.name,str);t=ai.num;ai.num=ak.num;ak.num=t;void main()int flag=1,n,i,m,j;FILE *fp;fp = fopen(data.txt,w+);struct player a20;printf(*1.输入选手数据*n);printf(*2.评委打分*n);printf(*3.成绩排序*n);printf(*4.数据查询*n);
8、printf(*5.追加学生数据*n);printf(*6.写入数据文件*n);printf(*7.退出系统*n);while(flag)printf(你想进行操作:);scanf(%d,&n);switch(n)case 1:Inistplayer(a,N);break;case 2:srand(unsigned)time(NULL); for(i=0;iN;i+) printf(%d位选手成绩:,i+1); Inputscore(ai.score,M); for(j=0;jM;j+) printf(%d ,ai.scorej); printf(n); break;case 3:for(i=
9、0;iN;i+) Maxi=ai.score0; Mini=ai.score0; for(j=0;jM;j+) sumi+=ai.scorej; if(Maxiai.scorej) Mini=ai.scorej; averi=(float)(sumi-Maxi-Mini)/(M-2); sort(a,aver,N); for(i=0;iN;i+) printf(%s %5.2fn,ai.name,averi); break;case 4:printf(你想查询选手数据:); scanf(%d,&m); for(i=0;iN;i+) if(ai.num=m) printf(%d号选手%s总分:%
10、d,最高分%d,最低分%d,平均分%5.2f,ai.num,ai.name,sumi,Maxi,Mini,averi); printf(n); break;case 5:printf(请输入要追加选手数据:n); add += 1; scanf(%d %s,&aadd.num,&aadd.name); break;case 6:printf(将数据写入文件中:n); for (i = 0 ; i add+1 ; i+) fprintf(fp,%d ,ai.num); fprintf(fp,%s ,ai.name); fprintf(fp,%dn,ai.score); break;case 7:
11、exit(0); break;default:flag=0;程序2:#include#include#include#include/#define N 3#define M 10int add = N-1;int x=3;int sumN=0,MaxN,MinN;float averN=0;struct playerint num;char name8;int scoreM;void Inistplayer(struct player a,int n)int i;for(i=0;in;i+)scanf(%d %s,&ai.num,&ai.name);void Inputscore(int s
12、core,int n)int i;for(i=0;in;i+)scorei=1+(int)10*rand()/(RAND_MAX+1);void sort(struct player a,float b,int n)int i,k,j,t;float temp;char str8;for(i=0;in;i+)k=i;for(j=i+1;jbj) k=j;if(k!=i)temp=bi;bi=bk;bk=temp;strcpy(str,ai.name);strcpy(ai.name,ak.name);strcpy(ak.name,str);t=ai.num;ai.num=ak.num;ak.nu
13、m=t;void main()int flag=1,n,i,m,j;FILE *fp;fp = fopen(data.txt,w+);struct player a20;printf(*1.输入选手数据*n);printf(*2.评委打分*n);printf(*3.成绩排序*n);printf(*4.数据查询*n);printf(*5.追加学生数据*n);printf(*6.写入数据文件*n);printf(*7.退出系统*n);while(flag)printf(你想进行操作:);scanf(%d,&n);switch(n)case 1:Inistplayer(a,N);break;case
14、 2:srand(unsigned)time(NULL); for(i=0;ix;i+) printf(%d位选手成绩:,i+1); Inputscore(ai.score,M); for(j=0;jM;j+) printf(%d ,ai.scorej); printf(n); break;case 3:for(i=0;ix;i+) Maxi=ai.score0; Mini=ai.score0; for(j=0;jM;j+) sumi+=ai.scorej; if(Maxiai.scorej) Mini=ai.scorej; averi=(float)(sumi-Maxi-Mini)/(M-2
15、); sort(a,aver,x); for(i=0;ix;i+) printf(%s %5.2fn,ai.name,averi); break;case 4:printf(你想查询选手数据:); scanf(%d,&m); for(i=0;ix;i+) if(ai.num=m) printf(%d号选手%s总分:%d,最高分%d,最低分%d,平均分%5.2f,ai.num,ai.name,sumi,Maxi,Mini,averi); printf(n); x=x+1; break;case 5:printf(请输入要追加选手数据:n); add += 1; scanf(%d %s,&aadd
16、.num,&aadd.name); break;case 6:printf(将数据写入文件中:n); for (i = 0 ; i add+1 ; i+) fprintf(fp,%d ,ai.num); fprintf(fp,%s ,ai.name); fprintf(fp,%dn,ai.score); break;case 7:exit(0); break;default:flag=0;课程设计汇报评分表(即封底)淮南师范学院年课程设计汇报评分表学生姓名:XXX 学号:XXXXX 班级:XXXX课程设计题目:歌手比赛系统项目内容满分实 评选题能结合所学课程知识、有一定能力训练。符合选题要求(
17、3人一题)5工作量适中,难易度合理10能力水平能熟练应用所学知识,有一定查阅文件及利用文件资料能力10理论依据充足,数据正确,公式推导正确10能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等10能表现发明性思维,或有独特见解15成果质量模型正确、合理,各项技术指标符合要求。15摘要叙述简练完整,假设合理、问题分析正确、数学用语正确、结论严谨合理;问题处理科学、条理分明、语言流畅、结构严谨、版面清楚15课程设计汇报关键部分齐全、合理,符号统一、编号齐全。格式、绘图、表格、插图等规范正确,符合课程设计汇报要求10正文字数不少于字,不超出15000字5总 分100指导老师评语: 指导老师署名: 年 月 日