运动会分数统计Word下载.docx
《运动会分数统计Word下载.docx》由会员分享,可在线阅读,更多相关《运动会分数统计Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
![运动会分数统计Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/22/4495ece5-f6eb-4ab7-9991-9d98d8eab6f3/4495ece5-f6eb-4ab7-9991-9d98d8eab6f31.gif)
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;
课程设计评语
成绩:
指导教师:
_______________
年月日
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.基本要求
(2)能统计各学校总分
(3)可以按学校编号、学校总分、男女团体总分排序输出;
3.数据结构
structpro//表示项目的结构体
{
intnum;
//项目编号
charname[20];
//项目名称
intsnum[6];
//前5名学校的编号
intweight;
}p[21];
structschool//表示学校的结构体
{
//学校名称
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<
stdio.h>
#include<
string.h>
stdlib.h>
intnum;
charname[20];
intsnum[6];
intweight;
//学校编号
intscore;
intmale;
intfemale;
intm,w,n;
//n是学校总数,m是男子项目总数,w女子项目总数。
voidinput()//输入信息
inti,j,y=1;
charc='
y'
;
printf("
********输入信息********\n"
);
请输入学校的数目:
\n"
while(y==1)
{scanf("
%d"
&
n);
getchar();
if(n<
0||n>
20)printf("
请重新输入。
elsey=0;
}
for(i=0;
i<
n;
i++)
{
printf("
请输入第%d个学校名称:
i+1);
scanf("
%s"
sch[i].name);
getchar();
请输入第%d个学校的编号:
sch[i].num);
}
system("
cls"
//清屏
\n请输入男子项目总数:
"
m);
\n请输入女子项目总数:
w);
for(j=0;
j<
m;
j++)
请输入男子项目名称:
p[j].name);
请输入项目编号:
scanf("
p[j].num);
此项目取前三名还是前五名?
若取前三名请输入3,取前五名请输入5。
p[j].weight);
if(p[j].weight==3)
{
printf("
请输入前三名的学校编号。
请输入第一名学校编号:
scanf("
p[j].snum[1]);
请输入第二名学校编号:
p[j].snum[2]);
请输入第三名学校编号:
p[j].snum[3]);
}
else
请输入第四名学校编号:
p[j].snum[4]);
请输入第五名学校编号:
p[j].snum[5]);
system("
for(j=m;
(m+w);
请输入女子项目名称:
voidsuanfen()//统计分数
inti,k;
{sch[i].female=0;
sch[i].male=0;
for(k=0;
k<
k++)//k是项目
if(p[k].weight==3)
for(i=0;
{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)
{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;
{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].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;
}//加女子总分。
sch[i].score=sch[i].female+sch[i].male;
voidxianshi()//显示结果
inti;
______________________________________________\n"
|学校名称|学校编号|男子总分|女子总分|团体总分|\n"
|%-6s|%6d|%6d|%6d|%6d|\n"
sch[i].name,sch[i].num,sch[i].male,sch[i].female,sch[i].score);
voidschchazhao()//按学校编号查找
inti,j;
请输入要查找的学校编号:
j);
\n______________________________________________\n"
if(j==sch[i].num)
voidprochazhao()//按项目编号查找
请输入要查找的项目编号\n"
if(p[i].num==j)
{if(p[i].weight==3)
{printf("
\n________________________________________________\n"
|项目名称|项目编号|第一名|第二名|第三名|\n"
_________________________________________________\n"
p[i].name,p[i].num,p[i].snum[1],p[i].snum[2],p[i].snum[3]);
if(p[i].weight==5)
\n_______________________________________________________________\n"
|项目名称|项目编号|第一名|第二名|第三名|第四名|第五名|\n"
_______________________________________________________________\n"
|%-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]);
voidnum()//按学校编号排序
inti,j,k,x;
chary[20];
n-1;
k=i;
for(j=i+1;
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()//按学校编号排序
if(sch[i].score>
sch[j].score)
strcpy(sch[i].name,sch