运动会分数统计系统.doc

上传人:精*** 文档编号:1151235 上传时间:2024-11-16 格式:DOC 页数:19 大小:390.08KB
下载 相关 举报
运动会分数统计系统.doc_第1页
第1页 / 共19页
运动会分数统计系统.doc_第2页
第2页 / 共19页
运动会分数统计系统.doc_第3页
第3页 / 共19页
运动会分数统计系统.doc_第4页
第4页 / 共19页
运动会分数统计系统.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、课程设计题选一:运动会分数统计系统一. 需求分析1问题描述 运动会分数统计 参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些项目取前五名或前三名由学生自己设定。(m=20,n=20)2. 基本要求: 1) 可以输入各个项目的前三名或前五名的成绩; 2) 能统计各学校总分; 3) 可以按学校编号、学校总分、男女团体总分排序输出; 4) 可以按学校编号查询学校某个项目的情况;5) 可以按项目编号查询取得前三或前五名的学校。3

2、.测试数据1)首先进入成绩录入界面,先输入学校编号1,再输入学校1各个项目成绩0或1(0表示没获得该项目的该名次,1表示获得了该项目的该名次);然后再输入第二个学校编号2,再输入成绩;当输入其他的学校编号和成绩会提示错误输入,重新输入。 2)然后进入总目录,输入 :1 统计各学校总分并输出; 3)输入:2 按学校编号排序输出; 4)输入:3 按学校总分排序输出; 5)输入:4 按男团体总分排序输出; 6)输入: 5 按女团体总分排序输出; 7) 输入:6 按学校编号查询学校某个项目情况; 8)输入:7 按项目编号查询取得名次的学校; 9)输入:0 退出系统; 10)输入其他数据会提示错误输入,

3、重新输入。二概要设计 1 结构体运动项目 项目编号 ;名次;学校 学校编号;项目;团体总分;男团体总分;女团体总分;2 主程序(main) 包括登陆欢迎程序,分数录入程序,查询程序,退出程序3 程序模块机之间的调用 流程 启动程序 录入分数 显示主目录统计各学校总分按学校编号排序按学校总分排序按女团体总分排序按学校编号查询学校某个项目情况查询学校某个项目情况按男团体总分排序按项目编号查询取得名次的学校退出系统用户选择某命令,产生相应的操作显示结果,用户选择返回主目录或退出退出程序图三详细设计 1、宏定义:#define N 2#define bm 4#define gm 3 2、数据类型定义

4、(1)运动项目的定义: struct matchint matchnum;int rank3;matbm+gm;(2) 学校的定义: struct schoolint schoolnum;struct match matbm+gm;int total;int boytotal;int girltotal;schN;3、 函数之间的调用关系mainxunhuantotaljisuaninputhuanyingnifunct4funct6funct5funct3funct2funct1funct0mulufunct7system4、 算法设计 主要算法的设计思想:本程序主要是使用顺序表来实现操作。

5、一个运动会包括运动项目和参加运动会的学校。因此构造顺序表match,school。为了操作的方便,设计了一个总目录,选择相应序号进入各个操作,并有错误提示,每完成一个操作程序会提示选择返回目录或退出程序,对于总分的排序使用了冒泡排序。为了使整个程序界面看起来更加惬意,又添加了背景和字体颜色设置的程序语句。每个操作前都有操作指南,易于使用。四测试分析 1、由于刚开始程序比较简单,虽能运行,但处理错误的能力很低,后来经过反复的添加修改,使程序能处理了错误,提高了健壮性。 2、开始编时由于不太规范,编译出错后由于程序长,很难找到错误,后来规范了格式,错误容易找到了,以后编程要规范。 3、算法的时空分

6、析 线性表使用的是顺序结构,各种算法的时间复杂度相对比较合理 4、本程序相对来说比较容易看明白,其中涉及到的一些函数相对来说比较容易。通过调试,运行,基本上达到了要求,但还存在一些缺点。如:不够人性化等。五. 测试结果 数据输入(输入成绩如图)输入:请输入学校编号:1项目编号1234567第名: 1 1 0 1 1 0 0第名: 第名: 0 0 0 0 1 1 1请输入学校编号: 2项目编号 1 2 3 4 5 6 7第名: 0 1 1 0 0 1 1第名: 0 0 0 1 1 0 1第名: 1 1 1 1 0 0 0输入成绩后出现总目录(下图);输出:(1) 输入:1 输出:(2) 输入:1

7、 返回总目录,再输入:2输出:(3) 输入:1 返回总目录,再输入:3输出:(4) 输入:1 返回总目录,再输入:4输出:(5) 输入:1 返回总目录,再输入:5输出:(6) 输入:1 返回总目录,再输入:6,学校编号输入:1,项目编号输入:1输出:(7) 输入:2,返回上一级,再输入学校编号:2,项目编号:3输出:(8) 输入:1,返回总目录;再输入:7,输入项目编号:7输出:(9) 如果输入提示外的数字,例如输入:4则输出错误提示:(10) 输入:0 输出:六参考文献(1) C程序设计(第三版) 谭浩强 著 清华大学出版社(2) 数据结构(C语言版)作者:严蔚敏,吴伟民 出版社:清华大学出

8、版社(3) 数据结构题集(C语言版)作者:严蔚敏,吴伟民 出版社:清华大学出版社七源程序清单#include#include#define N 2 /学校个数#define bm 4 /男团体个数#define gm 3 /女团体个数void xuanze();void xunhuan();struct match /项目int matchnum;int rank3;matbm+gm;struct school /学校int schoolnum;struct match matbm+gm;int total;int boytotal;int girltotal;schN;void huanyi

9、ngni() /*开始界面,欢迎使用*/printf(nn 东华大学信息科学与技术学院电气0910班 周涛涛nnn);printf(t*_ _ _ _ _ _ _ _ _ _ _ _ _ _*nn);printf( 欢迎使用运动会分数统计系统nn);printf(t*_ _ _ _ _ _ _ _ _ _ _ _ _ _*nn );void input() /输入成绩int i,j,k;for(i=0;iN;i+) /初始化分数schi.total=0;schi.boytotal=0;schi.girltotal=0;for(k=0;kbm+gm;k+)schi.matk.rank0=0;sc

10、hi.matk.rank1=0;schi.matk.rank2=0;schi.matk.matchnum=k+1;printf(*输入成绩*n); printf(#输入说明:n); printf( 1.学校编号为1-%d; 项目编号为1-%d (1-%d为男子项目,%d-%d为女子项目).n,N,bm+gm,bm,bm+1,bm+gm); printf( 2. 成绩只能是0或1n(0表示没获得该项目的该名次,1表示获得了该项目的该名次.以Tab键前进。)n,N);for(i=0;iN;i+) printf(*请输入学校编号: );loop3:scanf(%d,&schi.schoolnum);

11、 if(schi.schoolnumN) printf(输入错误(只能是1-%d)请重新输入:,N); goto loop3; printf(项目编号); for(k=0;kbm+gm;k+) printf(%d,schi.matk.matchnum); printf(n); for(j=0;j3;j+) loop: printf(第(%d)名:,j+1); for(k=0;kbm+gm;k+) scanf(%d,&schi.matk.rankj); for(k=0;kbm+gm;k+) if(schi.matk.rankj!=0&schi.matk.rankj!=1) printf(输入错误

12、,请重新输入,成绩只能是0或1n); goto loop; void totaljisuan()int i,k,b; for(i=0;iN;i+)for(k=0,b=0;kbm+gm;k+) b=schi.matk.rank0*5+schi.matk.rank1*3+schi.matk.rank2*2; schi.total=schi.total+b;if(k=bm)schi.girltotal=schi.girltotal+b;void mulu()printf(nn *系统目录*n); /目录printf(tt *n);printf(tt* 1.统计各学校总分 *t n);printf(t

13、t* 2.按学校编号排序输出 *t n);printf(tt* 3.按学校总分排序输出 *t n);printf(tt* 4.按男团体总分排序输出 *t n);printf(tt* 5.按女团体总分排序输出 *t n);printf(tt* 6.按学校编号查询学校某个项目情况 *t n);printf(tt* 7.按项目编号查询取得名次的学校 *t n);printf(tt* 0.退出 *t n);printf(tt *n);void funct0() /退出系统printf(ntt* 谢谢使用! *n);printf(ntt* 谢谢使用! *n);exit(0);void funct1()

14、/统计各学校总分 int i,q;printf(*统计各学校总分*n); printf(*学校编号*tttt*总分*n); for(i=0;iN;i+) printf(t%dtttt%dn,schi.schoolnum,schi.total);printf(n);printf(n);printf(# 0:退出;1:返回目录。n);printf(*请选择: );loop2:scanf(%d,&q);if(q=0) funct0();if(q=1) xunhuan(); else printf(输入错误(只能是0或1),请重新输入:); goto loop2;void funct2() /按学校编

15、号排序struct school sch1;int i,j,q;for(j=0;jN-1;j+)for(i=0;ischi+1.schoolnum)sch1=schi;schi=schi+1;schi+1=sch1; printf(*按学校编号排序*n);printf(*学校编号*tttt*总分*n); for(i=0;iN;i+) printf(t%dtttt%dn,schi.schoolnum,schi.total);printf(n);printf(n);printf(# 0:退出;1:返回目录。n);printf(*请选择: );loop2:scanf(%d,&q);if(q=0) f

16、unct0();if(q=1) xunhuan(); else printf(输入错误(只能是0或1),请重新输入:); goto loop2; void funct3() /按学校总分排序 struct school sch1;int i,j,q;for(j=0;jN-1;j+)for(i=0;iN-j-1;i+)if(schi.totalschi+1.total)sch1=schi;schi=schi+1;schi+1=sch1; printf(*按学校总分排序*n);printf(*学校编号*tttt*总分*n); for(i=0;iN;i+) printf(t%dtttt%dn,sch

17、i.schoolnum,schi.total); printf(n);printf(n);printf(# 0:退出;1:返回目录。n);printf(*请选择: );loop2:scanf(%d,&q);if(q=0) funct0();if(q=1) xunhuan(); else printf(输入错误(只能是0或1),请重新输入:); goto loop2;void funct4() /按男团体总分排序 struct school sch1;int i,j,q;for(j=0;jN-1;j+)for(i=0;iN-j-1;i+)if(schi.boytotalschi+1.boytot

18、al)sch1=schi;schi=schi+1;schi+1=sch1; printf(*按男团体总分排序*n);printf( *学校编号*tt*总分*n); for(i=0;iN;i+) printf(t%dtttt%dn,schi.schoolnum,schi.boytotal); printf(n);printf(n);printf(# 0:退出;1:返回目录。n);printf(*请选择: );loop2:scanf(%d,&q);if(q=0) funct0();if(q=1) xunhuan(); else printf(输入错误(只能是0或1),请重新输入:); goto l

19、oop2;void funct5() /按女团体总分排序 struct school sch1;int i,j,q;for(j=0;jN-1;j+)for(i=0;iN-j-1;i+)if(schi.girltotalschi+1.girltotal)sch1=schi;schi=schi+1;schi+1=sch1; printf(*按女团体总分排序*n);printf( *学校编号*tt*总分*n); for(i=0;iN;i+) printf(t%dtttt%dn,schi.schoolnum,schi.girltotal); printf(n);printf(n);printf(# 0

20、:退出;1:返回目录。n);printf(*请选择: );loop2:scanf(%d,&q);if(q=0) funct0();if(q=1) xunhuan();else printf(输入错误(只能是0或1),请重新输入:); goto loop2;void funct6() /按学校编号查询学校某个项目情况int i,n,m,q;printf(*按学校编号查询学校某个项目情况*n);loop1:printf(*请输入所要查询的学校编号: );scanf(%d,&n);if(n!=1&n!=2) printf(!输入错误,学校编号只能是“0”或“1”,请重新输入!n); goto loo

21、p1;printf(*请输入所要查询的项目编号: );scanf(%d,&m);for(i=0;iN;i+)if(n=schi.schoolnum) printf(学校编号: %d 项目编号: %dn,n,m);if(schi.matm.rank0=1)printf(第一名(获得) ); if(schi.matm.rank1=1)printf(第二名(获得) ); if(schi.matm.rank2=1)printf(第三名(获得) );elseprintf(本校该项目未进入前三名);printf(n);printf(n);printf(# 0:退出;1:返回目录;2:返回上一级。n);pr

22、intf(*请选择: );loop2:scanf(%d,&q);if(q=1) xunhuan();if(q=0) funct0();if(q=2) goto loop1; else printf(输入错误(只能是0或1或2),请重新输入:); goto loop2;void funct7() /按项目编号查询取得名次的学校 int i,t,q;printf(*按项目编号查询取得名次的学校*n);loop1: printf(*请输入所要查询的项目编号: ) ;scanf(%d,&t);printf(项目编号:%dn,t) ;for(i=0;iN;i+)if(schi.matt-1.rank0=

23、1)printf(获得第一名的学校编号是:%d n,schi.schoolnum);if(schi.matt-1.rank1=1)printf(获得第二名的学校编号是:%d n,schi.schoolnum);if(schi.matt-1.rank2=1)printf(获得第三名的学校编号是:%d n,schi.schoolnum);printf(n);printf(n);printf(# 0:退出;1:返回目录;2:返回上一级。n);printf(*请选择: );loop2:scanf(%d,&q);if(q=1) xunhuan();if(q=0) funct0();if(q=2) got

24、o loop1; else printf(输入错误(只能是0或1或2),请重新输入:); goto loop2;void xunhuan() /返回目录int t; mulu(); printf(tt请选择(输入0-7)序号:t); scanf(%d,&t); while(t!=0&t!=1&t!=2&t!=3&t!=4&t!=5&t!=6&t!=7) printf(输入有误,请重新选择:); scanf(%d,&t); switch(t)case 0:funct0();break;case 1:funct1();break;case 2:funct2();break;case 3:funct3();break;case 4:funct4();break;case 5:funct5();break;case 6:funct6();break;case 7:funct7();break;void main() system(Color 1e); /改变背景,前景色 huanyingni(); input(); totaljisuan(); xunhuan();八用户手册(1) 本程序执行文件为“运动会分数统计系统.exe”。(2) 进入本系统之后,随机显示系统主菜单。用户可在该界面下输入各子菜单相应的数字并按回车键,随即执行相应子菜单命令。(3)19

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922