C课程设计任务书 评分管理程序.docx
《C课程设计任务书 评分管理程序.docx》由会员分享,可在线阅读,更多相关《C课程设计任务书 评分管理程序.docx(28页珍藏版)》请在冰豆网上搜索。
C课程设计任务书评分管理程序
课程设计任务书
题目名称
Platform-Diving评分管理程序
学生学院
专业班级
姓名
学号
一、课程设计的内容
开发一个程序用于管理Platform-Diving比赛时5米、7.5米和10米跳台等赛事裁判员对赛事的评分.
运动会中有3个赛事和很多运动员,每个运动员可以参加几个赛事,每场比赛有多个运动员参加。
每场比赛有若干个裁判评价运动员的比赛表现,对每个运动员的比赛表演做出评分。
假设只有这3项比赛(5米跳台PD5、7.5米跳台PD7、10米跳台PD10),每场比赛有5个裁判评分.
二、课程设计的要求与数据
1.开始运行程序时能够从event.xml文件中读出比赛名称和比赛日期。
能够提供一个程序界面修改比赛日期。
比赛的数据项包括:
eventName、eventDate。
说明:
假定斜体标注部分的数据才会变化,其余字符是不会改变的。
PD5,2009-11-20
PD7,2009-11-21
PD10,2009-11-22
2.能够提供一个程序界面对运动员的基本资料做输入、删除、修改、查询操作;运动员的数据项包括:
姓名name、编号cID、性别sex、出生日期birthdate、所属队team,参加比赛perform.运动员的资料保存在文件名为competitor.xml的文件中。
在输入运动员的基本资料时要输入该运动员参加的比赛(3种比赛中的1种比赛,提供选择输入,也就是通过输入代号如输入1表示5米跳台,但是屏幕上要有提示代号代表的含义)。
编号cID必须保证唯一,而且是输入时由程序来自动编号也就是说不需要从界面输入。
文件格式如下:
ZhangSan,1,m,1990-9-18,ShangHai,PD5
lisi,2,f,1991-9-18,GuangDong,PD5
Alice,3,f,1992-9-18,GuangDong,PD7
Tom,4,m,1992-9-28,ShangHai,PD7
3、能够提供程序界面让运动会工作人员输入某场比赛的所有运动员(逐个运动员输入)的每个裁判的评分,并能计算出最后的总分(计算规则:
去掉一个最高分和一个最低分后分数之和再求平均);能查询并在屏幕上打印出某场比赛所有运动员的最后得分,显示出冠军、亚军、季军的运动员姓名、得分、所属队名称。
能在屏幕上显示每个队的金牌gold、银牌silver、铜牌copper数目。
评分的资料保存在文件名为score.txt的文件中.包括的数据项有:
eventName,cID,score1,score2,score3,score4,score5,netScore.说明:
每个裁判的评分在0~10之间,可以有1位小数。
要求:
上面的文件(event.xml,competitor.xml,score.txt)操作用文本文件方式。
三、课程设计应完成的工作
1、设计整个程序的总体结构
2、使用C语言的Project完成程序编写与调试
3、程序功能的测试
4、撰写设计说明书
5、提交材料包括:
.c文件、.h文件,.prj文件、数据文件(.xml,.txt),设计文档.doc文件及doc文件双面打印稿
四、课程设计进程安排
序号
设计各阶段内容
地点
起止日期
1
主函数、运动员的信息管理
1-5至1-12
2
运动员成绩管理
1-12至1-16
五、应收集的资料及主要参考文献
[1]谭浩强.C语言程序设计[M].北京:
清华大学出版社,2005年
目录
Platform-Diving评分管理程序1
1、设计任务与要求1
1.1任务概述1
1.2需求与功能描述1
1.3设计要求2
2、总体结构设计2
3、详细设计2
31.主要的数据结构2
3.2主要的算法或程序流程图2
3.3函数说明2
4、程序测试说明3
5、程序的使用说明3
6、参考文献3
附录:
源程序3
Platform-Diving评分管理程序
1、设计任务与要求
1.1任务概述
开发一个程序用于管理Platform-Diving比赛时5米、7.5米和10米跳台等赛事裁判员对赛事的评分.
运动会中有3个赛事和很多运动员,每个运动员可以参加几个赛事,每场比赛有多个运动员参加。
每场比赛有若干个裁判评价运动员的比赛表现,对每个运动员的比赛表演做出评分。
假设只有这3项比赛(5米跳台PD5、7.5米跳台PD7、10米跳台PD10),每场比赛有5个裁判评分.
1.2需求与功能描述
1.开始运行程序时能够从event.xml文件中读出比赛名称和比赛日期。
能够提供一个程序界面修改比赛日期。
比赛的数据项包括:
eventName、eventDate。
说明:
假定斜体标注部分的数据才会变化,其余字符是不会改变的。
PD5,2009-11-20
PD7,2009-11-21
PD10,2009-11-22
2.能够提供一个程序界面对运动员的基本资料做输入、删除、修改、查询操作;运动员的数据项包括:
姓名name、编号cID、性别sex、出生日期birthdate、所属队team,参加比赛perform.运动员的资料保存在文件名为competitor.xml的文件中。
在输入运动员的基本资料时要输入该运动员参加的比赛(3种比赛中的1种比赛,提供选择输入,也就是通过输入代号如输入1表示5米跳台,但是屏幕上要有提示代号代表的含义)。
编号cID必须保证唯一,而且是输入时由程序来自动编号也就是说不需要从界面输入。
文件格式如下:
ZhangSan,1,m,1990-9-18,ShangHai,PD5
lisi,2,f,1991-9-18,GuangDong,PD5
Alice,3,f,1992-9-18,GuangDong,PD7
Tom,4,m,1992-9-28,ShangHai,PD7
3、能够提供程序界面让运动会工作人员输入某场比赛的所有运动员(逐个运动员输入)的每个裁判的评分,并能计算出最后的总分(计算规则:
去掉一个最高分和一个最低分后分数之和再求平均);能查询并在屏幕上打印出某场比赛所有运动员的最后得分,显示出冠军、亚军、季军的运动员姓名、得分、所属队名称。
能在屏幕上显示每个队的金牌gold、银牌silver、铜牌copper数目。
评分的资料保存在文件名为score.txt的文件中.包括的数据项有:
eventName,cID,score1,score2,score3,score4,score5,netScore.说明:
每个裁判的评分在0~10之间,可以有1位小数。
要求:
上面的文件(event.xml,competitor.xml,score.txt)操作用文本文件方式。
1.3设计要求
程序开始运行时提供一个主菜单,有上面3个功能的菜单项供选择。
上面的3个文件都用C语言的文本文件来实现。
要用C语言的工程文件多源程序文件编程。
测试用的输入数据可以只用英文和数值,可以不用中文。
以上为基本要求,在完成基本要求的基础上可以自己根据实际适当增加功能。
2、总体结构设计
1.比赛日期的修改
2.运动员信息管理
3.运动员分数管理
3、详细设计
31.主要的数据结构
structevent//定义比赛信息结构体
{chareventName[5];//结构体成员,比赛名称
charDate[20];//结构体成员,比赛日期
}even[3];//定义结构体数组
structathlete//定义运动员信息结构体
{
charcID[10];//结构体成员,运动员编号
charname[20];//结构体成员,运动员姓名
charsex[5];//结构体成员,运动员性别
charbirthdate[15];//结构体成员,运动员出生日期
charteam[20];//结构体成员,运动员所属队伍
charperform[5];//结构体成员,参加比赛
structathlete*next;//下一个结点
};
structscore//定义分数结构体
{charevenName[5];//结构体成员,比赛名
charcID[10];//结构体成员,运动员编号
charname[20];//结构体成员,运动员名字
charteam[20];//结构体成员,所属队伍
floatscore[5];//结构体成员,分数
floatnetScore;//结构体成员,平均分
structscore*next;//
下一个结点
};
3.2主要的算法或程序流程图
开始
选择要执行的操作
选择要操作的代号
输入正确的数据(返回)
选择要执行的操作
选择要操作的代号
输入数据(返回)
选择要执行的操作
选择要操作的代号
输入数据(返回)
结束
3.3函数说明
voidSwrite();输出评分资料
voidSput();输入评分
voidIrevise();修改运动员信息
voidIdel();删除运动员信息
voidIscan();查看运动员信息
voidIread();读取运动员信息
voidIwrite();输出运动员信息
voidIput();输入运动员信息
voidExit();退出
voidsubmT();修改时间
voidsubmR();分数操作菜单
voidsubmIn();信息操作菜单
voidMmenu();主菜单
voidmain();主函数
4、程序测试说明
把文件event.xml放在程序所在文件夹
5、程序的使用说明
选择菜单操作时一定要输入菜单提示的数字代号
选择是否得操作时y/n是小写字母
很多操作都有提示
6、参考文献
[1]谭浩强.C语言程序设计[M].北京:
清华大学出版社,2005年
附录:
源程序
#include/*声明*/
#include
#include
voidSwrite();
voidSput();
voidIrevise();
voidIdel();
voidIscan();
voidIread();
voidIwrite();
voidIread();
voidIput();
voidExit();
voidsubmT();
voidsubmR();
voidsubmIn();
voidMmenu();
structevent
{chareventName[5];
charDate[20];
}even[3];
structathlete
{
charcID[10];
charname[20];
charsex[5];
charbirthdate[15];
charteam[20];
charperform[5];
structathlete*next;
};
structscore
{charevenName[5];
charcID[10];
charname[20];
charteam[20];
floatscore[5];
floatnetScore;
structscore*next;
};
intn=0,m=0;/*全局变量*/
structathlete*head=NULL;
structscore*head1=NULL,*head2=NULL,*head3=NULL;
voidSscan()/*分数查看函数*/
{system("cls");
printf("Platform-DivingScoringprocedures\n\n");
printf("*********************************************\n");
printf("Theresultoftheperform\n");
printf("====================================\n");
printf("Scorescan\n\n\n");
intpf=0,i=0;
floata=0,b=0,c=0;
structscore*head0=NULL,*p,*p1,*p2,*p3;
printf("Choosetheperform(1.PD5;2.PD7;3.PD10):
");
while(pf==0||pf>3)
{scanf("%d",&pf);
switch(pf)
{case1:
head0=head1;break;
case2:
head0=head2;break;
case3:
head0=head3;break;
default:
printf("Yourchooseisnotrequired,Enteragain:
");
}
}
if(head0!
=NULL)
{printf("\nnamenetscoreteam\n");
p=head0;
do
{
printf("%-12s%-15.1f%-10s\n",p->name,p->netScore,p->team);
if(p->netScore>a){p3=p2;p2=p1;p1=p;}
else
{if(p->netScore>b){p3=p2;p2=p;}
else
if(p->netScore>c)p3=p;
}
p=p->next;i++;
}while(p!
=NULL);
printf("\n\nTopthree\n");/*前三名*/
printf("\nrankingnamenetscoreteam\n");
if(i==1)printf("champion%-10s%-12.1f%-10s\n",p1->name,p1->netScore,p1->team);
if(i==2)
{printf("champion%-10s%-12.1f%-10s\n",p1->name,p1->netScore,p1->team);
printf("secondplace%-10s%-12.1f%-10s\n",p2->name,p2->netScore,p2->team);
}
if(i>=3)
{printf("champion%-10s%-12.1f%-10s\n",p1->name,p1->netScore,p1->team);
printf("secondplace%-10s%-12.1f%-10s\n",p2->name,p2->netScore,p2->team);
printf("thirdplace%-10s%-12.1f%-10s\n",p3->name,p3->netScore,p3->team);
}
}
else
printf("\nlistnull!
\n");
printf("\nInputanykeytoleave");
getche();return;
}
voidSwrite()/*分数写入score.txt文件函数*/
{structscore*p;
FILE*fp;
if((fp=fopen("score.txt","w"))==NULL)
{printf("Fileopenerror\n");getche();return;}
p=head1;
for(;p!
=NULL;)
{fprintf(fp,"%s,%s,%2.1f,%2.1f,%2.1f,%2.1f,%2.1f,%2.1f\n",p->evenName,p->cID,p->score[0],p->score[1],p->score[2],p->score[3],p->score[4],p->netScore);
p=p->next;}
p=head2;
for(;p!
=NULL;)
{fprintf(fp,"%s,%s,%2.1f,%2.1f,%2.1f,%2.1f,%2.1f,%2.1f\n",p->evenName,p->cID,p->score[0],p->score[1],p->score[2],p->score[3],p->score[4],p->netScore);
p=p->next;}
p=head3;
for(;p!
=NULL;)
{fprintf(fp,"%s,%s,%2.1f,%2.1f,%2.1f,%2.1f,%2.1f,%2.1f\n",p->evenName,p->cID,p->score[0],p->score[1],p->score[2],p->score[3],p->score[4],p->netScore);
p=p->next;
}
}
voidSput()/*分数输入函数*/
{FILE*fp;
inti=0,j,k=0,pf=0,max,min;
chareventN[5];
structathlete*p1,*p2;
structscore*head0=NULL,*po1,*po2;
po1=po2=(structscore*)malloc(sizeof(structscore));
system("cls");
printf("Platform-DivingScoringprocedures\n\n");
printf("*********************************************\n");
printf("Theresultoftheperform\n");
printf("====================================\n");
printf("Inputthescore\n\n\n");
if(head==NULL)gotoend;
printf("Choosetheperform(1.PD5;2.PD7;3.PD10):
");
while(pf==0||pf>3)
{scanf("%d",&pf);
switch(pf)
{case1:
strcpy(eventN,"PD5");break;
case2:
strcpy(eventN,"PD7");break;
case3:
strcpy(eventN,"PD10");break;
default:
printf("Yourchooseisnotrequired,Enteragain:
");
}
}
p1=head;
do
{if(strcmp(eventN,p1->perform)==0)
{k=1;po1->netScore=0;max=0;min=10;
strcpy(po1->cID,p1->cID);
strcpy(po1->name,p1->name);
strcpy(po1->evenName,p1->perform);
strcpy(po1->team,p1->team);
printf("Theathleteis%s\n",po1->name);
for(i=0;i<5;i++)
{printf("Enterthescoreofjudge%d(0~10):
",i+1);
scanf("%f",&po1->score[i]);
while(po1->score[i]>10)
{printf("Thescoreisnotrequired,Enteragain:
");
scanf("%f",&po1->score[i]);}
if(po1->score[i]>max)max=po1->score[i];
if(po1->score[i]score[i];
po1->netScore=po1->netScore+po1->score[i];
}
po1->netScore=(po1->netScore-max-min)/3.0;
if(head0==NULL)head0=po1;
elsepo2->next=po1;
po2=po1;
po1=(structscore*)malloc(sizeof(structscore));
}
p1=p1->next;
}while(p1->next!
=NULL);
po2->next=NULL;
switch(pf)
{case1:
head1=head0;break;
case2:
head2=head0;break;
case3:
head3=head0;break;
}
end:
if(k==0)printf("\nlistnull!
\n");
else
{printf("InputthescoreAccomplish\n");}
printf("Inputanykeytoleave");getche();return;
}
voidIrevise()/*信息修改函数*/
{system("cls");
printf("Platform-DivingScoringprocedures\n\n");
printf("*********************************************\n");
printf("Informationoftheathletes\n");
printf("====================================\n");
printf("Informationrevise\n\n\n");
charName[15],correct[15];
intpj=0,pf=0;
structathlete*p;