运动会分数统计.docx
- 文档编号:8128394
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:20
- 大小:87.50KB
运动会分数统计.docx
《运动会分数统计.docx》由会员分享,可在线阅读,更多相关《运动会分数统计.docx(20页珍藏版)》请在冰豆网上搜索。
运动会分数统计
运动会分数统计
【问题描述】
参加运动会有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|sa 4里至“田虫耳省陡趾r哮 ---- £rxH¥罢奎曰尊命單ZSJO ^rr 口 0ITSLH亠 ¥ 5朴腐雷鉛 ±里 &S曾fn^BdlDITbracd 丄 '^MMHKKHMJCKKW W-»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;i remember[i]=i; for(i=0;i { for(j=i+1;j k=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;i remember[i]=i; for(i=0;i { for(j=i+1;j k=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;i remember[i]=i; for(i=0;i { for(j=i+1;j k=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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运动会 分数 统计