运动会分数统计.docx
- 文档编号:7343976
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:21
- 大小:96.61KB
运动会分数统计.docx
《运动会分数统计.docx》由会员分享,可在线阅读,更多相关《运动会分数统计.docx(21页珍藏版)》请在冰豆网上搜索。
运动会分数统计
洛阳理工学院
课程设计报告
课程名称________数据结构课程设计___________
设计题目_________运动会分数统计____________
专业________计算机科学与技术___________
课程设计任务书
设计题目:
运动会分数统计____________________________
_________________________________________________________
设计内容与要求:
(1)可以输入各个项目的前三名或前五名的成绩;
(2)能统计各学校总分(3)可以按学校编号、学校总分、男女团体总分排序输出;(4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
规定:
输入数据形式和范围:
20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)
输出形式:
有中文提示,各学校分数为整形
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:
学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;
测试数据:
要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;
课程设计评语
成绩:
指导教师:
_______________
年月日
1.问题描述
参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:
7、5、3、2、1,前三名的积分分别为:
5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)
2.基本要求
(1)可以输入各个项目的前三名或前五名的成绩;
(2)能统计各学校总分
(3)可以按学校编号、学校总分、男女团体总分排序输出;
(4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
规定:
输入数据形式和范围:
20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)
输出形式:
有中文提示,各学校分数为整形
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:
学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;
测试数据:
要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;
3.数据结构
structpro//表示项目的结构体
{
intnum;//项目编号
charname[20];//项目名称
intsnum[6];//前5名学校的编号
intweight;
}p[21];
structschool//表示学校的结构体
{
intnum;
charname[20];//学校名称
intscore;//学校总分
intmale;//男子总分
intfemale;//女子总分
}sch[21];
4.总体设计
5.详细设计
(1)主函数:
主函数调用菜单函数。
若菜单函数返回值为1,调用信息输入函数;若菜单函数返回值为2,调用显示全部学校信息函数;若菜单函数返回值为3,调用按条件查找函数;若菜单函数返回值为4,调用成绩信息排序函数;若菜单函数返回值为0,结束程序。
(2)输入函数:
输入函数分为两个阶段,一是输入学校信息,输入项目信息。
输入学校信息分别要输入学校总数、学校编号和学校名称。
输入项目信息分别要输入男生项目数、女生项目数,按次序输入男生女生的项目名称、项目编号、取前几名还有前几名的学校编号。
(3)算分函数:
先利用循环把所有学校的男生团体分和女生团体分都赋值为0,接着再利用双重循环把男生女生团体分累加起来,最后再利用循环把根据总分等于男子团体分加女子团体分把各学校的总分算出来。
(4)菜单函数:
利用printf函数输出菜单界面。
再返回输入的值。
(5)显示全部学校信息函数:
利用循环按照学校编号,学校名称,学校总分,男子团体分,女子团体分来依次输出。
(6)条件查找函数:
若输入值为1,调用按学校编号查找函数;若输入值为2,调用按项目编号查找函数。
(7)按学校编号查找函数:
输入要查找的学校编号,利用循环找出与输入的学校编号相同的学校,再依次输出此学校的学校编号、学校名称、学校总分、男子团体分、女子团体分。
(8)按项目编号查找函数:
输入要查找的项目编号,利用循环找出与输入的项目编号相同的项目。
若此项目取前三,依次输出此项目的项目编号、项目名称、和前三名的学校编号;若此项目取前五名,依次输出此项目的项目编号、项目名称、和前五名的学校编号。
(9)排序函数:
若输入值为1,调用按学校编号排序函数;若输入值为2,调用按学校总分排序函数;若输入值为3,调用按男生团体分排序函数;若输入值为4,按女生团体分排序函数。
(10)按学校编号排序函数:
利用选择排序,两次循环比较学校编号大小来对各个学校来排序。
最后调用显示全部学校信息函数。
(11)按学校总分排序函数:
利用选择排序,两次循环比较学校总分大小来对各个学校来排序。
最后调用显示全部学校信息函数。
(12)按男生团体分排序函数:
利用选择排序,两次循环比较男生团体分大小来对各个学校来排序。
最后调用显示全部学校信息函数。
(13)按女生团体分排序函数:
利用选择排序,两次循环比较女生团体分大小来对各个学校来排序。
最后调用显示全部学校信息函数。
6.测试与调试
(1)菜单
(2)信息显示
(3)按学校编号查找
●按项目编号查找
●按学校编号排序
●按学校总分排序
●按男团体总分排序
●按女团体总分排序
7.心得体会
通过这次课程设计使我更加加深了对数据结构这门课程的理解,提高了自己组织数据及编写程序的能力,使我们能够根据问题要求和数据对象的特性,学会数据组织的方法,把现实世界中的实际问题在计算机内部表示出来并用软件解决问题,培养良好的程序设计技能,掌握设计程序的思路,学会用计算机语言编写程序,以实现所需处理的任务,锻炼自己的动脑能力,学会用自己的思路解决现实中的实际问题,虽然完成了课程设计,但是只是对这一类型的问题理解比较好,对其他的还是非常陌生。
在调试过程中我也遇到了很多问题,每一种问题的解决都是自己的进步,当然还要感谢同学们的帮助,没有他们的帮助,我不会这么快得完成课程设计题目,也让我感受到了团队的重要性。
附录:
源程序
#include
#include
#include
structpro//表示项目的结构体
{
intnum;//项目编号
charname[20];//项目名称
intsnum[6];//前5名学校的编号
intweight;
}p[21];
structschool//表示学校的结构体
{
intnum;//学校编号
charname[20];//学校名称
intscore;//学校总分
intmale;//男子总分
intfemale;//女子总分
}sch[21];
intm,w,n;//n是学校总数,m是男子项目总数,w女子项目总数。
voidinput()//输入信息
{
inti,j,y=1;
charc='y';
printf("********输入信息********\n");
printf("请输入学校的数目:
\n");
while(y==1)
{scanf("%d",&n);
getchar();
if(n<0||n>20)printf("请重新输入。
\n");
elsey=0;
}
for(i=0;i { printf("请输入第%d个学校名称: \n",i+1); scanf("%s",sch[i].name); getchar(); printf("请输入第%d个学校的编号: \n",i+1); scanf("%d",&sch[i].num); } system("cls");//清屏 printf("********输入信息********\n"); printf("\n请输入男子项目总数: "); scanf("%d",&m); printf("\n请输入女子项目总数: "); scanf("%d",&w); system("cls"); printf("********输入信息********\n"); for(j=0;j { printf("请输入男子项目名称: "); scanf("%s",p[j].name); getchar(); printf("请输入项目编号: "); scanf("%d",&p[j].num); printf("此项目取前三名还是前五名? 若取前三名请输入3,取前五名请输入5。 \n"); scanf("%d",&p[j].weight); if(p[j].weight==3) { printf("请输入前三名的学校编号。 \n"); printf("请输入第一名学校编号: \n"); scanf("%d",&p[j].snum[1]); printf("请输入第二名学校编号: \n"); scanf("%d",&p[j].snum[2]); printf("请输入第三名学校编号: \n"); scanf("%d",&p[j].snum[3]); } else { printf("请输入前三名的学校编号。 \n"); printf("请输入第一名学校编号: \n"); scanf("%d",&p[j].snum[1]); printf("请输入第二名学校编号: \n"); scanf("%d",&p[j].snum[2]); printf("请输入第三名学校编号: \n"); scanf("%d",&p[j].snum[3]); printf("请输入第四名学校编号: \n"); scanf("%d",&p[j].snum[4]); printf("请输入第五名学校编号: \n"); scanf("%d",&p[j].snum[5]); } system("cls"); printf("********输入信息********\n"); } for(j=m;j<(m+w);j++) { printf("请输入女子项目名称: "); scanf("%s",p[j].name); printf("请输入项目编号: "); scanf("%d",&p[j].num); printf("此项目取前三名还是前五名? 若取前三名请输入3,取前五名请输入5。 \n"); scanf("%d",&p[j].weight); getchar(); if(p[j].weight==3) { printf("请输入前三名的学校编号。 \n"); printf("请输入第一名学校编号: \n"); scanf("%d",&p[j].snum[1]); printf("请输入第二名学校编号: \n"); scanf("%d",&p[j].snum[2]); printf("请输入第三名学校编号: \n"); scanf("%d",&p[j].snum[3]); } else { printf("请输入前三名的学校编号。 \n"); printf("请输入第一名学校编号: \n"); scanf("%d",&p[j].snum[1]); printf("请输入第二名学校编号: \n"); scanf("%d",&p[j].snum[2]); printf("请输入第三名学校编号: \n"); scanf("%d",&p[j].snum[3]); printf("请输入第四名学校编号: \n"); scanf("%d",&p[j].snum[4]); printf("请输入第五名学校编号: \n"); scanf("%d",&p[j].snum[5]); } system("cls"); printf("********输入信息********\n"); } } voidsuanfen()//统计分数 { inti,k; for(i=0;i {sch[i].female=0; sch[i].male=0; } for(k=0;k { if(p[k].weight==3) for(i=0;i {if(p[k].snum[1]==sch[i].num)sch[i].male=sch[i].male+5; if(p[k].snum[2]==sch[i].num)sch[i].male=sch[i].male+3; if(p[k].snum[3]==sch[i].num)sch[i].male=sch[i].male+2; } if(p[k].weight==5) for(i=0;i {if(p[k].snum[1]==sch[i].num)sch[i].male=sch[i].male+7; if(p[k].snum[2]==sch[i].num)sch[i].male=sch[i].male+5; if(p[k].snum[3]==sch[i].num)sch[i].male=sch[i].male+3; if(p[k].snum[4]==sch[i].num)sch[i].male=sch[i].male+2; if(p[k].snum[5]==sch[i].num)sch[i].male=sch[i].male+1; } }//加男子总分。 for(k=m;k<(m+w);k++)//k是项目 { if(p[k].weight==3) for(i=0;i {if(p[k].snum[1]==sch[i].num)sch[i].female=sch[i].female+5; if(p[k].snum[2]==sch[i].num)sch[i].female=sch[i].female+3; if(p[k].snum[3]==sch[i].num)sch[i].female=sch[i].female+2; } if(p[k].weight==5) for(i=0;i {if(p[k].snum[1]==sch[i].num)sch[i].female=sch[i].female+7; if(p[k].snum[2]==sch[i].num)sch[i].female=sch[i].female+5; if(p[k].snum[3]==sch[i].num)sch[i].female=sch[i].female+3; if(p[k].snum[4]==sch[i].num)sch[i].female=sch[i].female+2; if(p[k].snum[5]==sch[i].num)sch[i].female=sch[i].female+1; } }//加女子总分。 for(i=0;i sch[i].score=sch[i].female+sch[i].male; } voidxianshi()//显示结果 { inti; printf("______________________________________________\n"); printf("|学校名称|学校编号|男子总分|女子总分|团体总分|\n"); printf("______________________________________________\n"); for(i=0;i { printf("|%-6s|%6d|%6d|%6d|%6d|\n",sch[i].name,sch[i].num,sch[i].male,sch[i].female,sch[i].score); printf("______________________________________________\n"); } } voidschchazhao()//按学校编号查找 { inti,j; printf("请输入要查找的学校编号: \n"); scanf("%d",&j); printf("\n______________________________________________\n"); printf("|学校名称|学校编号|男子总分|女子总分|团体总分|\n"); printf("______________________________________________\n"); for(i=0;i if(j==sch[i].num) { printf("|%-6s|%6d|%6d|%6d|%6d|\n",sch[i].name,sch[i].num,sch[i].male,sch[i].female,sch[i].score); printf("______________________________________________\n"); } } voidprochazhao()//按项目编号查找 { inti,j; printf("请输入要查找的项目编号\n"); scanf("%d",&j); for(i=0;i<(m+w);i++) if(p[i].num==j) {if(p[i].weight==3) {printf("\n________________________________________________\n"); printf("|项目名称|项目编号|第一名|第二名|第三名|\n"); printf("_________________________________________________\n"); printf("|%-6s|%6d|%6d|%6d|%6d|\n",p[i].name,p[i].num,p[i].snum[1],p[i].snum[2],p[i].snum[3]); printf("_________________________________________________\n"); } if(p[i].weight==5) {printf("\n_______________________________________________________________\n"); printf("|项目名称|项目编号|第一名|第二名|第三名|第四名|第五名|\n"); printf("_______________________________________________________________\n"); printf("|%-6s|%6d|%6d|%6d|%6d|%6d|%6d|\n",p[i].name,p[i].num,p[i].snum[1],p[i].snum[2],p[i].snum[3],p[i].snum[4],p[i].snum[5]); printf("_______________________________________________________________\n"); } } } voidnum()//按学校编号排序 { inti,j,k,x; chary[20]; for(i=0;i { k=i; for(j=i+1;j if(sch[i].num>sch[j].num) { x=sch[i].female; sch[i].female=sch[j].female; sch[j].female=x; x=sch[i].male; sch[i].male=sch[j].male; sch[j].male=x; x=sch[i].score; sch[i].score=sch[j].score; sch[j].score=x; x=sch[i].num; sch[i].num=sch[j].num; sch[j].num=x; strcpy(y,sch[i].name); strcpy(sch[i].name,sch[j].name); strcpy(sch[j].name,y); } } xianshi(); } voidscore()//按学校编号排序 { inti,j,k,x; chary[20]; for(i=0;i { k=i; for(j=i+1;j if(sch[i].score>sch[j].score) { x=sch[i].female; sch[i].female=sch[j].female; sch[j].female=x; x=sch[i].male; sch[i].male=sch[j].male; sch[j].male=x; x=sch[i].score; sch[i].score=sch[j].score; sch[j].score=x; x=sch[i].num; sch[i].num=sch[j].num; sch[j].num=x; strcpy(y,sch[i].name); strcpy(sch[i].name,sch
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运动会 分数 统计