C语言程序课程设计歌手比赛系统.docx
《C语言程序课程设计歌手比赛系统.docx》由会员分享,可在线阅读,更多相关《C语言程序课程设计歌手比赛系统.docx(14页珍藏版)》请在冰豆网上搜索。
C语言程序课程设计歌手比赛系统
淮南师范学院
课程设计报告
歌手比赛系统
姓名:
胡欢欢
学号:
专业:
计算机科学与技术
班级:
10级
(1)班
指导教师:
彭飞
职称:
XXX
2013年3月7日
1.摘要
C语言是一门计算机高级语言,它在Microsoft开发的软件VisualC++中执行,C语言具有很多优点:
语言具有丰富的数据类型,众多的运算符,体现结构化程序设计的优良控制结构,具有抽象功能及体现信息隐蔽思想的函数。
语言的应用几乎遍及了程序的各个领域,如科学家,系统程序设计,字处理软件和电子表格软件的开发,信息管理,计算机辅助设计,等方面。
语言简洁,为完成某一功能所写的源程序代码往往比其他语言写得短,便利程序输入工作量减少。
4.若程序员在书写过程时严格遵循ANSIC标准,则其源代码可不作修改,即可用于各种型号的计算机和各种操作系统,因此,C语言具有良好的可移植性。
本次实践我们选择了使用C语言编写基于链表的程序,不仅使大家对程序设计、编程方法有了进一步提高,而且掌握了使用C语言动态内存分配及数据结构等方面的知识。
2.系统设计
设计分析
项目描述
1.项目名称:
歌手打分系统
2.功能描述:
(1)生成字符界面的功能菜单
**********1.输入选手数据**********
**********2.评委打分**************
**********3.成绩排序**************
**********4.数据查询**************
**********5.追加学生数据**********
**********6.写入数据文件**********
**********7.退出系统**************
(2)通过输入菜单项的序号启动相应模块的功能
1能够根据输入的选手人数创建链表;
2录入9名评委给选手的打分,并存储到文件中;
3按照去掉一个最高分和去掉一个最低分的原则求每名选手的平均分;
2按平均分由高到低的顺序对选手进行排序;
3把排名后的数据存储到文件中;
4把原始数据和最终的结果输出到屏幕;
4在第②步中保存文件之前,可根据情况修改数据,例如:
插入或删除歌手。
程序结构
将歌手打分系统程序进行系统模块划分,共分为九部分,分别是:
1.定义结构体
2.创建链表函数
3.输入数据函数
4.计算函数
5.排序函数
6.输出数据函数
7.输出最终数据
8.删除函数
9.插入函数
10.主函数
程序结构流程图
3.系统实现
各模块的功能及程序说明
创建链表:
使用尾插法插入数据;
输入选手信息:
包括选手信息的输入,选手成绩的输入,去掉一个最高分和最低分,并将其余评委的评分求出平均值。
输出选手排名:
包括选手成绩排名。
删除和插入选手信息:
将退赛选手和新参加的比赛的选手进行删除和插入。
主函数:
将所有函数实现。
系统主要功能模块的运行效果图
程序的运行效果图:
4.设计体会
在本次的C语言实践中,让我受益匪浅,通过本次的实践,让更深入的了解了C语言这门计算机语言,也明白了软件开发的相关流程和基本步骤,也许我的程序还存在些许问题,也许还不完美,但是我相信在以后的学习中我们会继改进的。
也希望老师可以给我们提出您的宝贵意见。
5.参考文献
编程入门网:
C程序设计(第四版)谭浩强着
6.源程序代码
#include<>
#include<>
#include<>
#include<>
#defineN3
#defineM10
intadd=N-1;
intsum[N]={0},Max[N],Min[N];
floataver[N]={0};
structplayer
{intnum;
charname[8];
intscore[M];
};
voidInistplayer(structplayera[],intn)
{inti;
for(i=0;iscanf("%d%s",&a[i].num,&a[i].name);
}
voidInputscore(intscore[],intn)
{inti;
for(i=0;iscore[i]=1+(int)10*rand()/(RAND_MAX+1);
}
voidsort(structplayera[],floatb[],intn)
{inti,k,j,t;
floattemp;
charstr[8];
for(i=0;i{k=i;
for(j=i+1;jif(b[k]>b[j])k=j;
if(k!
=i)
{temp=b[i];
b[i]=b[k];
b[k]=temp;
strcpy(str,a[i].name);
strcpy(a[i].name,a[k].name);
strcpy(a[k].name,str);
t=a[i].num;
a[i].num=a[k].num;
a[k].num=t;
}
}
}
voidmain()
{intflag=1,n,i,m,j;
FILE*fp;
fp=fopen("","w+");
structplayera[20];
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)
{
case1:
Inistplayer(a,N);break;
case2:
srand((unsigned)time(NULL));
for(i=0;i{
printf("%d位选手的成绩:
",i+1);
Inputscore(a[i].score,M);
for(j=0;jprintf("%d",a[i].score[j]);
printf("\n");
}
break;
case3:
for(i=0;i{Max[i]=a[i].score[0];
Min[i]=a[i].score[0];
for(j=0;j{
sum[i]+=a[i].score[j];
if(Max[i]if(Min[i]>a[i].score[j])Min[i]=a[i].score[j];
}
aver[i]=(float)(sum[i]-Max[i]-Min[i])/(M-2);
}
sort(a,aver,N);
for(i=0;iprintf("%s%\n",a[i].name,aver[i]);
break;
case4:
printf("你想查询选手的数据:
");
scanf("%d",&m);
for(i=0;iif(a[i].num==m)
{
printf("%d号选手%s总分:
%d,最高分%d,最低分%d,平均分%",a[i].num,a[i].name,sum[i],Max[i],Min[i],aver[i]);
printf("\n");
}
break;
case5:
printf("请输入要追加的选手数据:
\n");
add+=1;
scanf("%d%s",&a[add].num,&a[add].name);
break;
case6:
printf("将数据写入文件中:
\n");
for(i=0;i{
fprintf(fp,"%d",a[i].num);
fprintf(fp,"%s",a[i].name);
fprintf(fp,"%d\n",a[i].score);
}
break;
case7:
exit(0);
break;
default:
flag=0;
}
}
}
程序2:
#include<>
#include<>
#include<>
#include<>
um,&a[i].name);
}
voidInputscore(intscore[],intn)
{inti;
for(i=0;iscore[i]=1+(int)10*rand()/(RAND_MAX+1);
}
voidsort(structplayera[],floatb[],intn)
{inti,k,j,t;
floattemp;
charstr[8];
for(i=0;i{k=i;
for(j=i+1;jif(b[k]>b[j])k=j;
if(k!
=i)
{temp=b[i];
b[i]=b[k];
b[k]=temp;
strcpy(str,a[i].name);
strcpy(a[i].name,a[k].name);
strcpy(a[k].name,str);
t=a[i].num;
a[i].num=a[k].num;
a[k].num=t;
}
}
}
voidmain()
{intflag=1,n,i,m,j;
FILE*fp;
fp=fopen("","w+");
structplayera[20];
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)
{
case1:
Inistplayer(a,N);break;
case2:
srand((unsigned)time(NULL));
for(i=0;i{
printf("%d位选手的成绩:
",i+1);
Inputscore(a[i].score,M);
for(j=0;jprintf("%d",a[i].score[j]);
printf("\n");
}
break;
case3:
for(i=0;i{Max[i]=a[i].score[0];
Min[i]=a[i].score[0];
for(j=0;j{
sum[i]+=a[i].score[j];
if(Max[i]if(Min[i]>a[i].score[j])Min[i]=a[i].score[j];
}
aver[i]=(float)(sum[i]-Max[i]-Min[i])/(M-2);
}
sort(a,aver,x);
for(i=0;iprintf("%s%\n",a[i].name,aver[i]);
break;
case4:
printf("你想查询选手的数据:
");
scanf("%d",&m);
for(i=0;iif(a[i].num==m)
{
printf("%d号选手%s总分:
%d,最高分%d,最低分%d,平均分%",a[i].num,a[i].name,sum[i],Max[i],Min[i],aver[i]);
printf("\n");
}
x=x+1;
break;
case5:
printf("请输入要追加的选手数据:
\n");
add+=1;
scanf("%d%s",&a[add].num,&a[add].name);
break;
case6:
printf("将数据写入文件中:
\n");
for(i=0;i{
fprintf(fp,"%d",a[i].num);
fprintf(fp,"%s",a[i].name);
fprintf(fp,"%d\n",a[i].score);
}
break;
case7:
exit(0);
break;
default:
flag=0;
}
}
}
课程设计报告评分表(即封底)
淮南师范学院
学年课程设计报告评分表
学生姓名:
XXX学号:
XXXXX班级:
XXXX
课程设计题目:
歌手比赛系统
项目内容
满分
实评
选
题
能结合所学课程知识、有一定的能力训练。
符合选题要求
(3人一题)
5
工作量适中,难易度合理
10
能
力
水
平
能熟练应用所学知识,有一定查阅文献及运用文献资料能力
10
理论依据充分,数据准确,公式推导正确
10
能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等
10
能体现创造性思维,或有独特见解
15
成
果
质
量
模型正确、合理,各项技术指标符合要求。
15
摘要叙述简练完整,假设合理、问题分析正确、数学用语准确、结论严谨合理;问题处理科学、条理分明、语言流畅、结构严谨、版面清晰
15
课程设计报告主要部分齐全、合理,符号统一、编号齐全。
格式、绘图、表格、插图等规范准确,符合课程设计报告要求
10
正文字数不少于2000字,不超过15000字
5
总分
100
指导教师评语:
指导教师签名:
年月日