学生运动会成绩管理系统_第1页
学生运动会成绩管理系统_第2页
学生运动会成绩管理系统_第3页
学生运动会成绩管理系统_第4页
学生运动会成绩管理系统_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录一、系统开发的背景1二、系统分析与设计1(一)系统功能要求1(二)系统模块结构设计1(一)统计各系别总分:void funct1()4(二)按系别编号排序:void funct2()5(三)按系别总分排序:void funct3()6(四)按男团体总分排序:void funct4()7(五)按女团体总分排序:void funct5 ()8(六)按系别编号查询某个项目情况:void funct6 ()10(七)按项目编号查询取得名次的系别:void funct7()11(八)退出系统:void funct0()13四、系统测试14(一)测试void huanyingni()函数,void i

2、nput()函数14(二)测试void mulu()函数14(三)测试void funct1()函数14(四)测试void funct2()函数15(五)测试void funct3()函数15(六)测试void funct4()函数15(七)测试void funct5()函数16(八)测试void funct6()函数16(九)测试void funct7()函数16(十)测试void funct0()函数16五、总结17六、附件(代码)18学生运动会成绩管理系统一、系统开发的背景为了学校方便管理学生运动会成绩,查询各系总分、各项目排名、以及各系获奖情况,因此我们用所学的知识设计了一个学生运动会

3、管理系统,以此方便学校对运动会情况的了解及查询。二、系统分析与设计(一) 系统功能要求该系统可以实现:1) 可以输入各个项目的前三名的成绩;2) 能统计各系别总分;3) 可以按系别编号、系别总分、男女团体总分排序输出;4) 可以按系别编号查询某系某个项目的情况;5) 可以按项目编号查询取得前三名的系别。(二) 系统模块结构设计概要设计:1 结构体运动项目 项目编号 ;名次;系别 系别编号;项目;团体总分;男团体总分;女团体总分;2 主程序(main) 包括登陆欢迎程序,分数录入程序,查询程序,退出程序通过对系统功能的分析,学生运动会成绩管理系统功能如图1所示。学生运动会成绩管理系统统计各系别总

4、分按系别编号排序按系别总分排序按男团体总分排序按女团体总分排序按系别编号查询系别某个项目按项目编号查询取得名次的系别退出系统图1 学生运动会成绩管理系统功能图通过上图的功能分析,把整个系统划分为8个模块:1、统计各系别总分,该模块主要实现:统计各系别运动会成绩总分,借助函数void funct1()来实现;2、按系别编号排序,该模块主要实现:按照各系别编号从小到大进行排序,借助函数void funct2()来实现;3、按系别总分排序,该模块主要实现:按照各个系别运动会成绩总分从大到小进行排序,借助函数void funct3()来实现;4、按男团体总分排序,该模块主要实现:按照各系别男团体获得的

5、总分从大到小进行排序,借助函数void funct4()来实现;5、按女团体总分排序,该模块主要实现:按照各系别女团体获得的总分从大到小进行排序,借助函数void funct5()来实现;6、按系别编号查询某个项目情况,该模块主要实现:根据系别编号查询该系别在某个项目中所获得的成绩,借助函数void funct6()来实现;7、按项目编号查询取得名次的系别,该模块主要实现:根据项目编号查询取得该项目前三名的系别,借助函数void funct7()来实现;8、退出系统,该模块主要实现:学生运动会成绩管理系统的安全退出,借助函数void funct0()来实现;三、系统的设计与实现(一) 统计各系

6、别总分:void funct1()分析:根据各系所获奖项的级别,按照每个一等奖加5分,每个二等奖加3分,每个三等奖加2分,统计出各系所获得的总分。流程图如图2所示。 开始总分= 一等奖×5 + 二等奖×3 + 三等奖×2输出总分结束图2:void funct1()流程图该模块的具体代码如下所示。void funct1() /统计各系别总分 int i,q;printf(" *统计各系别总分*n"); printf(" *系别编号*tt *总分*n"); for(i=0;i<N;i+) printf("t%dt

7、tt %dn",depi.departmentnum,depi.total);printf("n");printf("n");printf("* 0:退出;1:返回目录。n");printf("*请选择: "); scanf("%d",&q);while(q=0|q=1)if(q=0) funct0();if(q=1) xunhuan(); elseprintf("输入错误(只能是0或1),请重新输入:");(二) 按系别编号排序:void funct2()

8、分析:为了使用户更好的查询各系之间的比赛成绩情况,将其按照系别编号进行排序。流程图如图3所示。 开始depi.departmentnum>depi+1.departmentnumdep1=depi;depi=depi+1;depi+1=dep1;输出排序后的系别编号结束图3:void funct2()流程图该模块的具体代码如下所示。void funct2() /按系别编号排序struct department dep1;int i,j,q;for(j=0;j<N-1;j+)for(i=0;i<N-j-1;i+)if(depi.departmentnum>depi+1.d

9、epartmentnum)dep1=depi;depi=depi+1;depi+1=dep1; printf(" *按系别编号排序*n");printf(" *系别编号*tt *总分*n"); for(i=0;i<N;i+) printf("t%dtttt%dn",depi.departmentnum,depi.total);printf("n");printf("n");printf("* 0:退出;1:返回目录。n");printf("*请选择: &quo

10、t;); scanf("%d",&q);while(q=0|q=1)if(q=0) funct0();if(q=1) xunhuan(); elseprintf("输入错误(只能是0或1),请重新输入:"); (三) 按系别总分排序:void funct3()开始depi.total<depi+1.totaldep1=depi;depi=depi+1;depi+1=dep1;输出按总分排序后的系别结束分析:为了使用户更好的查询各系之间的比赛成绩排名情况,将其按照所获成绩总分进行排序。流程图如图4所示。 图4:void funct3()流程图

11、该模块的具体代码如下所示。void funct3() /按系别总分排序 struct department dep1;int i,j,q;for(j=0;j<N-1;j+)for(i=0;i<N-j-1;i+)if(depi.total<depi+1.total)dep1=depi;depi=depi+1;depi+1=dep1; printf(" *按系别总分排序*n");printf(" *系别编号*tt *总分*n"); for(i=0;i<N;i+) printf("t%dtttt%dn",depi.d

12、epartmentnum,depi.total); printf("n");printf("n");printf("* 0:退出;1:返回目录。n");printf("*请选择: "); scanf("%d",&q);while(q=0|q=1)if(q=0) funct0();if(q=1) xunhuan(); elseprintf("输入错误(只能是0或1),请重新输入:");(四) 按男团体总分排序:void funct4()分析:根据各系男团体项目所获得的总

13、分进行排序并按所获得的总分从大到小输出。流程图如图5所示。 开始depi.boytotal<depi+1.boytotaldep1=depi;depi=depi+1;depi+1=dep1;输出按男团体所获总分排序后的系别结束图5:void funct4()流程图该模块的具体代码如下所示。void funct4() /按男团体总分排序 struct department dep1;int i,j,q;for(j=0;j<N-1;j+)for(i=0;i<N-j-1;i+)if(depi.boytotal<depi+1.boytotal)dep1=depi;depi=de

14、pi+1;depi+1=dep1; printf(" *按男团体总分排序*n");printf(" *系别编号*tt *总分*n"); for(i=0;i<N;i+) printf("t%dtttt%dn",depi.departmentnum,depi.boytotal); printf("n");printf("n");printf("* 0:退出;1:返回目录。n");printf("*请选择: "); scanf("%d"

15、,&q);while(q=0|q=1)if(q=0) funct0();if(q=1) xunhuan(); elseprintf("输入错误(只能是0或1),请重新输入:");(五) 按女团体总分排序:void funct5 ()分析:根据各系女团体项目所获得的总分进行排序并按所获得的总分从大到小输出。流程图如图6所示。 开始depi.girltotal<depi+1.girltotaldep1=depi;depi=depi+1;depi+1=dep1;输出按女团体所获总分排序后的系别结束图6:void funct5()流程图该模块的具体代码如下所示。voi

16、d funct5() /按女团体总分排序 struct department dep1;int i,j,q;for(j=0;j<N-1;j+)for(i=0;i<N-j-1;i+)if(depi.girltotal<depi+1.girltotal)dep1=depi;depi=depi+1;depi+1=dep1; printf(" *按女团体总分排序*n");printf(" *系别编号*tt *总分*n"); for(i=0;i<N;i+) printf("t%dtttt%dn",depi.departm

17、entnum,depi.girltotal); printf("n");printf("n");printf("* 0:退出;1:返回目录。n");printf("*请选择: "); scanf("%d",&q);while(q=0|q=1)if(q=0) funct0();if(q=1) xunhuan(); elseprintf("输入错误(只能是0或1),请重新输入:");(六) 按系别编号查询某个项目情况:void funct6 ()分析:首先输入所要查询的系

18、别编号以及项目编号,最后输出该系别在该项目中所获得的名次。流程图如图7所示。开始输入所要查询的系别编号输入所要查询的项目编号利用循环查找该系在该项目中获得的名次输入该系在该项目中所获得的名次结束图7:void funct6()流程图该模块的具体代码如下所示。void funct6() /按系别编号查询系别某个项目情况int i,n,m,q;printf(" *按系别编号查询系别某个项目情况*n");printf("*请输入所要查询的系别编号: ");scanf("%d",&n);while(n!=1&&n!=2

19、)if(n!=1&&n!=2)printf("输入错误,系别编号只能是0或1,请重新输入");printf("*请输入所要查询的项目编号: ");scanf("%d",&m);for(i=0;i<N;i+)if(n=depi.departmentnum) printf("系别编号: %d 项目编号: %dn",n,m);if(depi.matm.rank0=1)printf("第一名(获得) "); if(depi.matm.rank1=1)printf("

20、;第二名(获得) "); if(depi.matm.rank2=1)printf("第三名(获得) ");elseprintf("本系该项目未进入前三名");printf("n");printf("n");printf("* 0:退出;1:返回目录;2:返回上一级。n");printf("*请选择: "); scanf("%d",&q);while(q=0|q=1)if(q=0) funct0();if(q=1) xunhuan(); e

21、lseprintf("输入错误(只能是0或1),请重新输入:");(七) 按项目编号查询取得名次的系别:void funct7()分析:首先输入所要查询的项目编号,通过查找后,输出获得该项目前三名的系别。流程图如图8所示。开始输入所要查询的项目编号利用循环查找在该项目中所获得前三名的系别输出在该项目中所获得前三名的系别结束图8:void funct7()流程图该模块的具体代码如下所示。void funct7() /按项目编号查询取得名次的系别 int i,t,q;printf(" *按项目编号查询取得名次的系别*n"); printf("*请输

22、入所要查询的项目编号: ") ;scanf("%d",&t);printf("项目编号:%dn",t) ;for(i=0;i<N;i+)if(depi.matt-1.rank0=1)printf("获得第一名的系别编号是:%d n",depi.departmentnum);if(depi.matt-1.rank1=1)printf("获得第二名的系别编号是:%d n",depi.departmentnum);if(depi.matt-1.rank2=1)printf("获得第三名的

23、系别编号是:%d n",depi.departmentnum);printf("n");printf("n");printf("* 0:退出;1:返回目录;2:返回上一级。n");printf("*请选择: "); scanf("%d",&q);while(q=0|q=1)if(q=0) funct0();if(q=1) xunhuan(); elseprintf("输入错误(只能是0或1),请重新输入:");(八) 退出系统:void funct0()分析

24、:当用户输入退出指令时,则输出结束语。流程图如图9所示。 图9:void funct0()流程图该模块的具体代码如下所示。void funct0() /退出系统printf("ntt* 谢谢使用! *n");exit(0);四、 系统测试(一) 测试void huanyingni()函数,void input()函数图10:测试void huanyingni()函数,void input()函数(二) 测试void mulu()函数图11:测试void mulu()函数(三) 测试void funct1()函数图12:测试void funct1()函数(四) 测试void

25、funct2()函数图13:测试void funct2()函数(五) 测试void funct3()函数图14:测试void funct3()函数(六) 测试void funct4()函数图15:测试void funct4()函数(七) 测试void funct5()函数图16:测试void funct5()函数(八) 测试void funct6()函数图17:测试void funct6()函数(九) 测试void funct7()函数图18:测试void funct7()函数(十) 测试void funct0()函数 图19:测试void funct0()函数五、总结学生运动会成绩管理系统完

26、成了:1) 可以输入各个项目的前三名的成绩;2) 能统计各系别总分;3) 可以按系别编号、系别总分、男女团体总分排序输出;4) 可以按系别编号查询某系某个项目的情况;5) 可以按项目编号查询取得前三名的系别。系统有以下不足:1、设计程序时为了使程序简单化,问题考虑的有些不全面;2、由于结构体使用不太熟,所以结构体不能初始化不知道,导致运动会管理系统设计耗费不必要的时间;3、在编写程序时,有的函数调用功能太片面化,使得一些功能都不能实现;4、在程序运行阶段,没有突出具体运算方法等而是只是显示结果。通过本次课程设计,我掌握了程序设计的模块化思路,并真正理解了函数调用的可使用性,也了解了结构体的使用

27、方法及范围;对C语言的看法有了一定的改观,也消除了惧怕心理,也学会了设计程序时应该使其功能一个一个的逐步实现并测试正确性,而不是无条理的胡写尤其是大程序更应该有清晰的条理;同时也理解了流程图的重要意义。六、附件(代码)#include<stdio.h>#include<process.h>#define N 3 /系别个数#define bm 5 /男团体个数#define gm 3 /女团体个数void xuanze();void xunhuan();struct match /项目int matchnum;int rank3;matbm+gm;struct depa

28、rtment /系别int departmentnum;struct match matbm+gm;int total;int boytotal;int girltotal;depN;void huanyingni() /*开始界面,欢迎使用*/printf("nn 工学系2012级计算机科学与技术(网络工程方向)班 韩历英nnn");printf("t*_ _ _ _ _ _ _ _ _ _ _ _ _ _*nn");printf(" 欢迎使用运动会分数统计系统nn");printf("t*_ _ _ _ _ _ _ _

29、_ _ _ _ _ _*nn ");void input() /输入成绩int i,j,k;for(i=0;i<N;i+) /初始化分数depi.total=0;depi.boytotal=0;depi.girltotal=0;for(k=0;k<bm+gm;k+)depi.matk.rank0=0;depi.matk.rank1=0;depi.matk.rank2=0;depi.matk.matchnum=k+1; printf(" -输入成绩-n"); printf(" n"); printf(" | *输入说明: |

30、n"); printf(" | 1.系别编号为1-%d; 项目编号为1-%d (1-%d为男子项目,%d-%d为女子项目). |n",N,bm+gm,bm,bm+1,bm+gm); printf(" | 2. 成绩只能是'0'或'1'('0'表示没获得该项目的该名次, |n | '1'表示获得了该项目的该名次.以'Tab'键前进。) |n",N); printf(" n"); for(i=0;i<N;i+) printf("#请输

31、入系别编号: ");scanf("%d",&depi.departmentnum);while(depi.departmentnum<0|depi.departmentnum>N) if(depi.departmentnum<0|depi.departmentnum>N) printf("输入错误(只能是1-%d)请重新输入:",N); printf("项目编号"); for(k=0;k<bm+gm;k+) printf("%d",depi.matk.matchnum

32、); printf("n"); for(j=0;j<3;j+) printf("第(%d)名:",j+1); for(k=0;k<bm+gm;k+) scanf("%d",&depi.matk.rankj); for(k=0;k<bm+gm;k+) dowhile(depi.matk.rankj!=0&&depi.matk.rankj!=1) if(depi.matk.rankj!=0&&depi.matk.rankj!=1) printf("输入错误,请重新输入,成

33、绩只能是'0'或'1'n"); while(depi.matk.rankj!=0&&depi.matk.rankj!=1&&depi.matk.rankj!=2); void totaljisuan()int i,k,b; for(i=0;i<N;i+)for(k=0,b=0;k<bm+gm;k+) b=depi.matk.rank0*5+depi.matk.rank1*3+depi.matk.rank2*2; depi.total=depi.total+b;if(k<bm) depi.boytotal

34、=depi.boytotal+b;if(k>=bm)depi.girltotal=depi.girltotal+b;void mulu()printf("nn *系统目录*n"); /目录printf("tt *n");printf("tt* 1.统计各系别总分 *t n");printf("tt* 2.按系别编号排序输出 *t n");printf("tt* 3.按系别总分排序输出 *t n");printf("tt* 4.按男团体总分排序输出 *t n");prin

35、tf("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");exit(0);void funct1() /统计各系别总分 int i,q;printf(" *统计

36、各系别总分*n"); printf("*系别编号*tttt*总分*n"); for(i=0;i<N;i+) printf("t%dtttt%dn",depi.departmentnum,depi.total);printf("n");printf("n");printf("* 0:退出;1:返回目录。n");printf("*请选择: "); scanf("%d",&q);while(q=0|q=1)if(q=0) funct0()

37、;if(q=1) xunhuan(); elseprintf("输入错误(只能是0或1),请重新输入:");void funct2() /按系别编号排序struct department sch1;int i,j,q;for(j=0;j<N-1;j+)for(i=0;i<N-j-1;i+)if(depi.departmentnum>depi+1.departmentnum)sch1=depi;depi=depi+1;depi+1=sch1; printf(" *按系别编号排序*n");printf("*系别编号*tttt*总分

38、*n"); for(i=0;i<N;i+) printf("t%dtttt%dn",depi.departmentnum,depi.total);printf("n");printf("n");printf("* 0:退出;1:返回目录。n");printf("*请选择: "); scanf("%d",&q);while(q=0|q=1)if(q=0) funct0();if(q=1) xunhuan(); elseprintf("输入错误(

39、只能是0或1),请重新输入:"); void funct3() /按系别总分排序 struct department sch1;int i,j,q;for(j=0;j<N-1;j+)for(i=0;i<N-j-1;i+)if(depi.total<depi+1.total)sch1=depi;depi=depi+1;depi+1=sch1; printf(" *按系别总分排序*n");printf("*系别编号*tttt*总分*n"); for(i=0;i<N;i+) printf("t%dtttt%dn&qu

40、ot;,depi.departmentnum,depi.total); printf("n");printf("n");printf("* 0:退出;1:返回目录。n");printf("*请选择: "); scanf("%d",&q);while(q=0|q=1)if(q=0) funct0();if(q=1) xunhuan(); elseprintf("输入错误(只能是0或1),请重新输入:");void funct4() /按男团体总分排序 struct de

41、partment sch1;int i,j,q;for(j=0;j<N-1;j+)for(i=0;i<N-j-1;i+)if(depi.boytotal<depi+1.boytotal)sch1=depi;depi=depi+1;depi+1=sch1; printf(" *按男团体总分排序*n");printf(" *系别编号*tt*总分*n"); for(i=0;i<N;i+) printf("t%dtttt%dn",depi.departmentnum,depi.boytotal); printf(&qu

42、ot;n");printf("n");printf("* 0:退出;1:返回目录。n");printf("*请选择: "); scanf("%d",&q);while(q=0|q=1)if(q=0) funct0();if(q=1) xunhuan(); elseprintf("输入错误(只能是0或1),请重新输入:");void funct5() /按女团体总分排序 struct department sch1;int i,j,q;for(j=0;j<N-1;j+)fo

43、r(i=0;i<N-j-1;i+)if(depi.girltotal<depi+1.girltotal)sch1=depi;depi=depi+1;depi+1=sch1; printf("*按女团体总分排序*n");printf(" *系别编号*tt*总分*n"); for(i=0;i<N;i+) printf("t%dtttt%dn",depi.departmentnum,depi.girltotal); printf("n");printf("n");printf(&qu

44、ot;* 0:退出;1:返回目录。n");printf("*请选择: "); scanf("%d",&q);while(q=0|q=1)if(q=0) funct0();if(q=1) xunhuan(); elseprintf("输入错误(只能是0或1),请重新输入:");void funct6() /按系别编号查询系别某个项目情况int i,n,m,q;printf("*按系别编号查询系别某个项目情况*n");printf("*请输入所要查询的系别编号: ");scanf(

45、"%d",&n);while(n!=1&&n!=2)if(n!=1&&n!=2)printf("输入错误,系别编号只能是0或1,请重新输入");printf("*请输入所要查询的项目编号: ");scanf("%d",&m);for(i=0;i<N;i+)if(n=depi.departmentnum) printf("系别编号: %d 项目编号: %dn",n,m);if(depi.matm.rank0=1)printf("第一名(获得) "); if(depi.matm.rank1=1)printf("第二名(获得) "

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论