运动会分数统计.docx
《运动会分数统计.docx》由会员分享,可在线阅读,更多相关《运动会分数统计.docx(20页珍藏版)》请在冰豆网上搜索。
![运动会分数统计.docx](https://file1.bdocx.com/fileroot1/2023-1/28/5f13273a-de31-4db9-b70d-6ae380bbc6a9/5f13273a-de31-4db9-b70d-6ae380bbc6a91.gif)
运动会分数统计
运动会分数统计
【问题描述】
参加运动会有n个学校,学校编号为1n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1m,女子m+1m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:
7、5、3、2、1,前三名的积分分别为:
5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)
【任务要求】功能要求:
1).可以输入各个项目的前三名或前五名的成绩;
2).能统计各学校总分,
3).可以按学校编号、学校总分、男女团体总分排序输出;
4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
规定:
输入数据形式和范围:
20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)
输出形式:
有中文提示,各学校分数为整形
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:
学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)
请在最后的上交资料中指明你用到的存储结构;
测试数据:
要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;【测试数据】自行设定,注意边界等特殊情况。
*/
一、需求分析3
二、概要设计1
三、详细设计3
四、程序调试与实现
7
五、用户使用说明
错.误!
未定义书签
六、附录
错..误!
未定义书签
、需求分析
问题分析
该系统所应包含的信息为:
学校编号、学校名称、运动项目编号运动项目名称、学校总分、男团总分和女团总分等。
系统功能分析
1•根据基本数据输入相关的信息
2.根据要求输出所需信息
3.查找所需信息
4.结束运行
、概要设计
根据运动会分数统计系统问题的分析和设计要求,可以将该系统分为四大模块:
输入信息模块、输入信息模块、查询信息模块和退出系统模块
(1)输入信息模块实现信息的输入和存档
(2)输出信息是根据要求实现相关信息的排序输出
(3)查询信息根据要求查询信息
(4)退出系统结束系统
三、详细设计
(二)输出信息模块设计{design");}
yes
*
项目名称
名次
No'
结束
(三)输出信息模块设计{design2();}
Yes
(四)查询模块{design3();}
结束
四、程序调试与实现
学校编号
学校名称
项目编号1
名次
项目编号2
名次
项目编号3
名次
项目名称
(3名)跳
远
(5名)
100m
(3名)跳
高
1
北理工
1
2/3
0
2
吉大
2
1/5
1
3
北师大
3
4
3
1、全部合法数据
■C:
\LJ%prs\asus\De«iktop^DebLig\Cpp1ere1
戏迎卓
MMMMMNMMMKWMHKW
・|-谥垣早袖出一拧霍古-Rnr^BIBSff-1234
XKM耳it*KMK耳H-x
XXM
X
X
K
K
2无壬也Jl:
l取P取
A
—14
吉
顷冃镰号曲农□电称廿阳理置几T名汰之申萱召秒詔申译甲涉;J
删拼音辎入法罕:
轲和*趾"Bi几^<5/3>3几-FiGm
>
9\Use臥节u引DesktopVDebug\Cpp1.exe*
—冃阿属
球•弔
跖遍号称苔个注
B0
-"「节E_
2
-K31吉寧21S5B2-Kwn**»-€Jr^ulpits八A'镐初逻克几名a输青
5
号称务个丛衣U卿七几几若石□nn.刖得u倚弹而"血
*C:
\U號巧治sus\Dfsktop\Debiig\Cpp"iexe*
■Mr
KXSrfXK!
比伙JtK箕fcl箕MEMJtKatfKiW
■*-•**■
jlI)y
EWWWW齐■^glQj注半:
*]
X
1
■B/3我理T1豈詔lEWj刖得春
取趣
詬輕<5名13
号称
爼克几名
□m前4异一二丄gA耳
械Z3决;3叮;1订<5名:
3e称W称名八表第miiil器寻事顼舉输
KM
^9口
ZZIQl
蛊谊NMNM-M-MN
网El齊台
b9
■■■I*
"■』、1亠:
叫、芦|1為匡寺寿囂2^41
»白*白-Ldd,bnq^a\dop|sa4里至“田虫耳省陡趾r哮
----
£rxH¥罢奎曰尊命單ZSJO
^rr
口
0ITSLH亠
¥
5朴腐雷鉛
±里
&S曾fn^BdlDITbracd
丄
'^MMHKKHMJCKKWW-»I■•SB*•*■!
■国耳芦屛鼻矗住促悯蠹
T:
m•w*M~a<«■mit4<•mnatatmvm・
•悬-民址・員Ji•■:
憾■•Ju■豐**M!
■Jt豐哇伍斗厲
址工电■豎・童耐翼•置童WMM•良廿・・
■*■■•if■■■*・-■*
MMKMM-KMM-M44MM昇聲显飄K
一axaj_dd^\6nqaa\dcv|5^a\5n^e\sjesn\:
3*
—欢哩便用肯管H*H*1尹ri申比阪1a■!
""■""■""冃Z.阳|*・版ZJw■:
wmtri・'■!
_
H-diM!
!
■■■«.Ila■■h»«»■<»斗.
2WO5K一
.;.仁1=;仁八一
一
exe
tubumHdHUUUHd0门和沟w-tlR®_8a^
v■■aeb-v■■■■44vrr-rvvvW|l
■・—ii|iififKlffg亠
工欣辭卜P帀fJxXM■t3zv1L33ILI2w-=1Ik-JJ1LOd护卫鬣第5-&or:
1£豊ay
请选掙更匹理步興的ifi可
MXMXKM-MX
====嚴诅倍宙
瑶U曲瞬;3•狀打
施埠夢再砚捋瞬荒编哥:
J
卜wnn・uat■ifaaat■tr].
卿WfMCTe+rWPMHTHXlWHWeWWg£J^jET巨
IfWHI
*
K
IH
“
M・X
K
X
M
S
LLH
135凤51
亠於
LL2
主世r
盒偏W-J5^
£岀询岀
•吟辎'暫_也
-.hiHa-3A^ud咬s.rj^-s.
4S-V-
舌诜偉亘询方式江
IPRIMI
C:
\Use苫\孑slis\Desktop\D1exe"
该顶目取前昭•学瞬号为2的成绩女[fpSK=i荻5
请选择“』拔注.跳岀、
■ffr
取卷岔数统计益统=—KKK=
^™L|Jm_rmn_«!
.■-»■uw-r■■_■mtsr-urt-irJ”■*~~r~七”■li_rmj=■_»■■_■■■亠m_i
■-"~~"F55®'理■理■■理■■■■■
F^~lIJ~~FI*«^a«uI_M■_»■^-aMJi~~r~、”■*r~bj一■_»■1—am_i*
4d退出壬统料・iMM悔PfKitK科1<科・>1恒・1<・・
駅迎使fflga
*****2.&B
""—r*«a_»rX■_»■■«•■WJ^-aanj-!
-■_r~_rRJ
KHRMRJa
校学的
54
■■
2,4-
I»-2
取:
1
r甘-吕「〕「口吕一「氐.丄前咬WW詁S齧项曾
hurri.e^t-记鼻乐
jiff's*»!
■«■■»>i^r
«i-i!
>-!
i-S£4:
舅团总用女田总分
.:
!
■不事耳¥*宀*¥耳*¥斬||*申界牢4
tty|<钿宕干r.■-.■]■
■rt■■电■才<:
■■吁卞■号宅■■京力T■■4■电■■■4:
唱■■*■十■■J■唱■中亡■■■:
Fh■垃实■■■■亡枣■庁圭■Ft
3
»*屯-**■・**:
>1<««»>>«■>»>yn
钳&号
址■«*•«*卄■审*»*卄》申*4,
12
13
11
2、整体非法数据
*CrMJser&\asus\Desktop\Debug\Cpp1.exe'
3、局部非法数据
9C;\Users\a5us\DwktopXDctHiig\Cpp1.exe
?
=用输巨?
-
«A«
五、用户使用说明
1.首先,请根据要求输入所需数据。
2.系统自动设置学校个数:
3个;男子项目:
2个;女子项目:
1个。
如果需要更改其个数,只需将#definen3(学校数目)、#definem2(男子项目数目)、#definew1(女子项目数目)中的个数进行更改,即可解决问题。
3•输入的数据存入名叫num.txt的文档中,如有需要可以查询。
六、附录
源代码
#include
#include
#include
#include
#definen3//学校数目
#definem2//男子项目数目
#definew1//女子项目数目
#definenull0
voiddesign1();
voiddesign2();
voiddesign3();
intchoice,sign;typedefstruct{
intitemnum;//项目编号
charname;//项目名称
inttop;//取名次的数目
intrange[5];//名次
intmark[5];//分数
}itemnode;//定义项目结点的类型
typedefstruct
{
intschoolnum;//学校编号
charschoolname[20];〃学校名字
intscore;//学校总分intmscore;//男团体总分intwscore;//女团体总分itemnodec[m+w];//项目数组
}headnode;//定义头结点类型
headnodeh[n];〃定义一个头结点数组
voidmain()//主函数
{
printf("============欢迎使用运动会分数统计系统===========\n");
printf("*****************
1.
输入信息
*********************\n")
printf("*****************
2.
输出信息
*********************\n")
printf("*****************
3.
查询信息
*********************\n")
printf("*****************
4.
退出系统
*********************\n")
printf("=================================================\n");printf("\n");
printf("请选择要实现步骤的编号:
");scanf("%d",&choice);
printf("\n");
switch(choice)
{
case1:
//输入信息
design1();break;
case2:
//输出信息
design2();break;
case3:
//查询信息
design3();break;
case4:
//退出系统
printf("使用结束\n");break;
default:
//输入有误
\n");
printf("输入有误,请选择一个正确的编号main();
break;
}
}
voiddesign1()//输入信息
{
FILE*fp1;
inti,j,k,s;
for(i=0;i{
h[i].score=0;
h[i].mscore=0;
h[i].wscore=0;
}//初始化头结点
for(i=0;i{
printf("请输入学校编号:
");
scanf("%d",&h[i].schoolnum);
printf("学校名称:
");
scanf("%s",&h[i].schoolname);for(j=0;j{printf("项目编号:
");
scanf("%d",&h[i].c[j].itemnum);printf("项目名称:
");
scanf("%s",&h[i].c[j].name);
printf("取前几名(5/3)");
scanf("%d",&h[i].c[j].top);
printf("取得几个名次:
");
scanf("%d",&k);//输入项目信息
for(s=0;s<5;s++)
h[i].c[j].range[s]=0,h[i].c[j].mark[s]=0;//初始化排名和分数for(s=0;s{
if(h[i].c[j].top==3)//取前3名记分
{
printf("取得名次:
");
scanf("%d",&h[i].c[j].range[s]);//输入所获名次信息printf("取得名次:
");
scanf("%d",&h[i].c[j].range[s]);
switch(h[i].c[j].range[s])
{
case0:
h[i].c[j].mark[s]=0;
break;
case1:
h[i].c[j].mark[s]=5;
break;
case2:
h[i].c[j].mark[s]=3;
break;
case3:
h[i].c[j].mark[s]=2;
break;
}
}
elseif(h[i].c[j].top==5)//取前5名记分
{
printf("取得名次:
");
scanf("%d",&h[i].c[j].range[s]);//输入所获名次信息switch(h[i].c[j].range[s])
{
case0:
h[i].c[j].mark[s]=0;
break;
case1:
h[i].c[j].mark[s]=7;
break;
case2:
h[i].c[j].mark[s]=5;break;
case3:
h[i].c[j].mark[s]=3;break;
case4:
h[i].c[j].mark[s]=2;break;
case5:
h[i].c[j].mark[s]=1;break;
}
}
else
{
printf("输入有误,请重新输入!
\n");design1();
}h[i].score=h[i].score+h[i].c[j].mark[s];//记录总分if(j<=m-1)//记录男团总分
h[i].mscore=h[i].mscore+h[i].c[j].mark[s];
else//记录女团总分
h[i].wscore=h[i].wscore+h[i].c[j].mark[s];
}printf("\n");
}
运动会分数统计系
}fp1=fopen("num.txt","a");
fprintf(fp1,"************************
**********************\n");
\n");
fprintf(fp1,"学校编号学校名字学校总分男团总分女团总分
for(i=0;i{
fprintf(fp1,"%2d",h[i].schoolnum);//学校编号
fprintf(fp1,"%10s",h[i].schoolname);//学校名称
fprintf(fp1,"%2d",h[i].score);//学校总分
fprintf(fp1,"%2d",h[i].mscore);//男团总分
fprintf(fp1,"%2d\n",h[i].wscore);//女团总分
fclose(fp1);
main();
}
voiddesign2()//输出函数
{
inti,j,k;
intremember[n];intsign;
do
printf(
1.
printf(
*2.
printf(
H******************
*3.
printf(
H******************
*4.
按学校编号输出.\n");按学校总分输出.\n");按男团总分输出.\n");按女团总分输出.\n");
printf("\n");
printf("请选择编号:
");scanf("%d",&choice);switch(choice)
case1:
//按学校编号输出for(i=0;i%d\n",h[i].schoolnum);
printf("
printf("
printf("
printf("}break;
学校名称:
%s\n",h[i].schoolname);
学校总分:
%d\n",h[i].score);
男团总分:
%d\n",h[i].mscore);
女团总分:
%d\n\n\n",h[i].wscore);
case2:
//按学校总分输出
for(i=0;iremember[i]=i;
for(i=0;i{
for(j=i+1;jk=remember[i];
remember[i]=remember[j];remember[j]=k;
for(i=0;i{
printf("学校编号:
%d\n",h[remember[i]].schoolnum);
printf("学校名称:
%s\n",h[remember[i]].schoolname);
printf("学校总分:
%d\n",h[remember[i]].score);
printf("男团总分:
%d\n",h[remember[i]].mscore);
printf("女团总分:
%d\n",h[remember[i]].wscore);
}
break;
case3:
//按男团总分输出
for(i=0;iremember[i]=i;
for(i=0;i{
for(j=i+1;jk=remember[i];
remember[i]=remember[j];
remember[j]=k;
}
}
for(i=0;i{
printf("学校编号:
%d\n",h[remember[i]].schoolnum);
printf("男团总分:
%d\n",h[remember[i]].mscore);
printf("学校名称:
%s\n",h[remember[i]].schoolname);
printf("学校总分:
%d\n",h[remember[i]].score);
printf("女团总分:
%d\n",h[remember[i]].wscore);
}
break;
case4:
//按女团总分输出
for(i=0;iremember[i]=i;
for(i=0;i{
for(j=i+1;jk=remember[i];
remember[i]=remember[j];remember[j]=k;
for(i=0;i{
printf("学校编号:
%d\n",h[remember[i]].schoolnum);
printf("学校名称:
%s\n",h[remember[i]].schoolname);
printf("女团总分:
%d\n\n\n",h[remember[i]].wscore);
printf("学校总分:
%d\n",h[remember[i]].score);
printf("男团总分:
%d\n",h[remember[i]].mscore);
}
break;
}
printf("请选择(1.继续;2.跳出)\n");
scanf("%d",&sign);
}while(sign==1);
main();
}
voiddesign3()//查询函数
{
inti,j,k,s;
printf("*******************1.按学校编号查询.\n");
printf("*******************2:
按项目编号查询.\n");
printf("\n");
printf("请选择查询方式:
");
scanf("%d",&choice);
printf("\n");
switch(choice)
{
case1:
{
do
{
printf("请输入查询的学校编号:
");
scanf("%d",&i);
printf("\n");
if(i>n)
printf("错误:
这个学校没有参加此次运动会!
\n");else
{
printf("项目编号:
");
scanf("%d",&j);
printf("\n");
printf("\n");
if(j>m+w||j==0)
则输出警告
else{
printf("该项目取前%d名,学校编号为%d的成绩如下:
\n",h[0].c[j-1].top,i);
for(k=0;k<5;k++)if(h[i-1].c[j-1].r