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

下载本文档

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

文档简介

目录目录 一、系统开发的背景一、系统开发的背景.1 二、系统分析与设计二、系统分析与设计.1 (一)(一)系统功能要求系统功能要求.1 (二)(二)系统模块结构设计系统模块结构设计.1 (一)(一)统计各系别总分:统计各系别总分:VOIDVOID FUNCTFUNCT1()1().4 (二)(二)按系别编号排序:按系别编号排序:VOIDVOID FUNCTFUNCT2()2().5 (三)(三)按系别总分排序:按系别总分排序:VOIDVOID FUNCTFUNCT3()3().6 (四)(四)按男团体总分排序:按男团体总分排序:VOIDVOID FUNCTFUNCT4()4().7 (五)(五)按女团体总分排序:按女团体总分排序:VOIDVOID FUNCTFUNCT5 5 ()().8 (六)(六)按系别编号查询某个项目情况:按系别编号查询某个项目情况:VOIDVOID FUNCTFUNCT6 6 ()().10 (七)(七)按项目编号查询取得名次的系别:按项目编号查询取得名次的系别:VOIDVOID FUNCTFUNCT7()7().11 (八)(八)退出系统:退出系统:VOIDVOID FUNCTFUNCT0()0().13 四、四、系统测试系统测试.14 (一)(一)测试测试VOIDVOID HUANYINGNIHUANYINGNI()()函数,函数,VOIDVOID INPUTINPUT()()函数函数.14 (二)(二)测试测试VOIDVOID MULUMULU()()函数函数 .14 (三)(三)测试测试VOIDVOID FUNCTFUNCT1()1()函数函数.14 (四)(四)测试测试VOIDVOID FUNCTFUNCT2()2()函数函数.15 (五)(五)测试测试VOIDVOID FUNCTFUNCT3()3()函数函数.15 (六)(六)测试测试VOIDVOID FUNCTFUNCT4()4()函数函数.15 (七)(七)测试测试VOIDVOID FUNCTFUNCT5()5()函数函数.16 (八)(八)测试测试VOIDVOID FUNCTFUNCT6()6()函数函数.16 (九)(九)测试测试VOIDVOID FUNCTFUNCT7()7()函数函数.16 (十)(十)测试测试VOIDVOID FUNCTFUNCT0()0()函数函数.16 五、总结五、总结.17 六、附件(代码)六、附件(代码).18 1 学生运动会成绩管理系统学生运动会成绩管理系统 一、一、系统开发的系统开发的背景背景 为了学校方便管理学生运动会成绩,查询各系总分、各项目排名、以 及各系获奖情况,因此我们用所学的知识设计了一个学生运动会管理系统, 以此方便学校对运动会情况的了解及查询。 二、系统分析与设计二、系统分析与设计 (一)(一) 系统功能要求系统功能要求 该系统可以实现:1) 可以输入各个项目的前三名的成绩;2) 能统计 各系别总分;3) 可以按系别编号、系别总分、男女团体总分排序输出;4) 可以按系别编号查询某系某个项目的情况;5) 可以按项目编号查询取得 前三名的系别。 (二)(二) 系统模块结构设计系统模块结构设计 概要设计:概要设计: 1 结构体 运动项目 项目编号 ;名次; 系别 系别编号;项目;团体总分;男团体总分;女团体总分; 2 主程序(main) 包括登陆欢迎程序,分数录入程序,查询程序,退出程序 通过对系统功能的分析,学生运动会成绩管理系统功能如图 1 所示。 2 图 1 学生运动会成绩管理系统功能图 通过上图的功能分析,把整个系统划分为 8 个模块: 1、统计各系别总分,该模块主要实现:统计各系别运动会成绩 总分,借助函数 void funct1()来实现; 2、按系别编号排序,该模块主要实现:按照各系别编号从小到 大进行排序,借助函数 void funct2()来实现; 3、按系别总分排序,该模块主要实现:按照各个系别运动会成 绩总分从大到小进行排序,借助函数 void funct3()来实现; 4、按男团体总分排序,该模块主要实现:按照各系别男团体获 得的总分从大到小进行排序,借助函数 void funct4()来实现; 5、按女团体总分排序,该模块主要实现:按照各系别女团体获 得的总分从大到小进行排序,借助函数 void funct5()来实现; 学生运动会成绩管理系统学生运动会成绩管理系统 统 计 各 系 别 总 分 按 系 别 编 号 排 序 按 系 别 总 分 排 序 按 男 团 体 总 分 排 序 按 女 团 体 总 分 排 序 按 系 别 编 号 查 询 系 别 某 个 项 目 按 项 目 编 号 查 询 取 得 名 次 的 系 别 退 出 系 统 3 6、按系别编号查询某个项目情况,该模块主要实现:根据系别 编号查询该系别在某个项目中所获得的成绩,借助函数 void funct6()来实现; 7、按项目编号查询取得名次的系别,该模块主要实现:根据项 目编号查询取得该项目前三名的系别,借助函数 void funct7()来实 现; 8、退出系统,该模块主要实现:学生运动会成绩管理系统的安 全退出,借助函数 void funct0()来实现; 4 三、系统的设计三、系统的设计与实现与实现 (一)(一) 统计各系别总分:统计各系别总分:voidvoid funct1()funct1() 分析:根据各系所获奖项的级别,按照每个一等奖加 5 分,每个二等 奖加 3 分,每个三等奖加 2 分,统计出各系所获得的总分。流程图如图 2 所示。 图 2:voidvoid funct1()funct1()流程图 该模块的具体代码如下所示。 void funct1() /统计各系别总分 int i,q; printf( *统计各系别总分*n); printf( *系别编号*tt *总分*n); for(i=0;iN;i+) printf(t%dttt %dn,depi.departmentnum,depi.total); printf(n);printf(n); printf(* 0:退出;1:返回目录。n); printf(*请选择: ); scanf(%d, while(q=0|q=1) if(q=0) funct0(); if(q=1) xunhuan(); else printf(输入错误(只能是 0 或 1) ,请重新输入:); 开始 总分= 一等奖5 + 二 等奖3 + 三等奖2 输出总分 结束 5 (二)(二) 按系别编号排序:按系别编号排序:voidvoid funct2()funct2() 分析:为了使用户更好的查询各系之间的比赛成绩情况,将其按 照系别编号进行排序。流程图如图 3 所示。 图 3:voidvoid funct2()funct2()流程图 该模块的具体代码如下所示。 void funct2() /按系别编号排序 struct department dep1; int i,j,q; for(j=0;jN-1;j+) for(i=0;idepi+1.departmentnum) dep1=depi; depi=depi+1; depi+1=dep1; printf( *按系别编号排序*n); printf( *系别编号*tt *总分*n); for(i=0;idepi+1.departmentnum dep1=depi; depi=depi+1; depi+1=dep1; 输出排序后 的系别编号 结束 6 scanf(%d, while(q=0|q=1) if(q=0) funct0(); if(q=1) xunhuan(); else printf(输入错误(只能是 0 或 1) ,请重新输入:); (三)(三) 按系别总分排序:按系别总分排序:voidvoid funct3()funct3() 分析:为了使用户更好的查询各系之间的比赛成绩排名情况,将 其按照所获成绩总分进行排序。流程图如图 4 所示。 图 4:voidvoid funct3()funct3()流程图 该模块的具体代码如下所示。 void funct3() /按系别总分排序 struct department dep1; int i,j,q; for(j=0;jN-1;j+) for(i=0;iN-j-1;i+) if(depi.totaldepi+1.total) dep1=depi; depi=depi+1; depi+1=dep1; 开始 depi.totaldepi+1.total dep1=depi; depi=depi+1; depi+1=dep1; 输出按总分排 序后的系别 结束 7 printf( *按系别总分排序*n); printf( *系别编号*tt *总分*n); for(i=0;iN;i+) printf(t%dtttt%dn,depi.departmentnum,depi.total); printf(n);printf(n); printf(* 0:退出;1:返回目录。n); printf(*请选择: ); scanf(%d, while(q=0|q=1) if(q=0) funct0(); if(q=1) xunhuan(); else printf(输入错误(只能是 0 或 1) ,请重新输入:); (四)(四) 按男团体总分排序:按男团体总分排序:voidvoid funct4()funct4() 分析:根据各系男团体项目所获得的总分进行排序并按所获得的 总分从大到小输出。流程图如图 5 所示。 图 5:voidvoid funct4()funct4()流程图 该模块的具体代码如下所示。 void funct4() /按男团体总分排序 struct department dep1; int i,j,q; 开始 depi.boytotaldepi+1.boytotaldep1=depi; depi=depi+1; depi+1=dep1; 输出按男团体所获 总分排序后的系别 结束 8 for(j=0;jN-1;j+) for(i=0;iN-j-1;i+) if(depi.boytotaldepi+1.boytotal) dep1=depi; depi=depi+1; depi+1=dep1; printf( *按男团体总分排序*n); printf( *系别编号*tt *总分*n); for(i=0;iN;i+) printf(t%dtttt%dn,depi.departmentnum,depi.boytotal); printf(n);printf(n); printf(* 0:退出;1:返回目录。n); printf(*请选择: ); scanf(%d, while(q=0|q=1) if(q=0) funct0(); if(q=1) xunhuan(); else printf(输入错误(只能是 0 或 1) ,请重新输入:); (五)(五) 按女团体总分排序:按女团体总分排序:voidvoid funct5funct5 ()() 分析:根据各系女团体项目所获得的总分进行排序并按所获得的 总分从大到小输出。流程图如图 6 所示。 9 图 6:voidvoid funct5()funct5()流程图 该模块的具体代码如下所示。 void funct5() /按女团体总分排序 struct department dep1; int i,j,q; for(j=0;jN-1;j+) for(i=0;iN-j-1;i+) if(depi.girltotaldepi+1.girltotal) dep1=depi; depi=depi+1; depi+1=dep1; printf( *按女团体总分排序*n); printf( *系别编号*tt *总分*n); for(i=0;iN;i+) printf(t%dtttt%dn,depi.departmentnum,depi.girltotal); printf(n);printf(n); printf(* 0:退出;1:返回目录。n); printf(*请选择: ); scanf(%d, while(q=0|q=1) if(q=0) funct0(); if(q=1) xunhuan(); else printf(输入错误(只能是 0 或 1) ,请重新输入:); 开始 depi.girltotaldepi+1.girltotaldep1=depi; depi=depi+1; depi+1=dep1; 输出按女团体所获 总分排序后的系别 结束 10 (六)(六) 按系别编号查询某个项目情况:按系别编号查询某个项目情况:voidvoid funct6funct6 ()() 分析:首先输入所要查询的系别编号以及项目编号,最后输出 该系别在该项目中所获得的名次。流程图如图 7 所示。 图 7:voidvoid funct6()funct6()流程图 该模块的具体代码如下所示。 void funct6() /按系别编号查询系别某个项目情况 int i,n,m,q; printf( *按系别编号查询系别某个项目情况*n); printf(*请输入所要查询的系别编号: ); scanf(%d, while(n!=1 printf(*请输入所要查询的项目编号: ); scanf(%d, for(i=0;iN;i+) if(n=depi.departmentnum) 开始 输入所要查询的系别编号 输入所要查询的项目编号 利用循环查找该系在 该项目中获得的名次 输入该系在该项目中所获得的名次 结束 11 printf(系别编号: %d 项目编号: %dn,n,m); if(depi.matm.rank0=1) printf(第一名(获得) ); if(depi.matm.rank1=1) printf(第二名(获得) ); if(depi.matm.rank2=1) printf(第三名(获得) ); else printf(本系该项目未进入前三名); printf(n);printf(n); printf(* 0:退出;1:返回目录;2:返回上一级。n); printf(*请选择: ); scanf(%d, while(q=0|q=1) if(q=0) funct0(); if(q=1) xunhuan(); else printf(输入错误(只能是 0 或 1) ,请重新输入:); (七)(七) 按项目编号查询取得名次的系别:按项目编号查询取得名次的系别:voidvoid funct7()funct7() 分析:首先输入所要查询的项目编号,通过查找后,输出获得 该项目前三名的系别。流程图如图 8 所示。 12 图 8:voidvoid funct7()funct7()流程图 该模块的具体代码如下所示。 void funct7() /按项目编号查询取得名次的系别 int i,t,q; printf( *按项目编号查询取得名次的系别*n); printf(*请输入所要查询的项目编号: ) ; scanf(%d, printf(项目编号:%dn,t) ; for(i=0;iN;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(获得第三名的系别编号是:%d n,depi.departmentnum); printf(n);printf(n); printf(* 0:退出;1:返回目录;2:返回上一级。n); printf(*请选择: ); scanf(%d, while(q=0|q=1) if(q=0) funct0(); if(q=1) xunhuan(); 开始 输入所要查询的项目编号 利用循环查找在该项目 中所获得前三名的系别 输出在该项目中所获得前三名的系别 结束 13 else printf(输入错误(只能是 0 或 1) ,请重新输入:); (八)(八) 退出系统:退出系统:voidvoid funct0()funct0() 分析:当用户输入退出指令时,则输出结束语。流程图如图 9 所示。 图 9:voidvoid funct0()funct0()流程图 该模块的具体代码如下所示。 void funct0() /退出系统 printf(ntt* 谢谢使用! *n); exit(0); 开始 输出结束语 结束 14 四、四、 系统测试系统测试 (一)(一) 测试测试 voidvoid huanyingni()huanyingni()函数函数,voidvoid input()input()函数函数 图 10:测试测试 voidvoid huanyingni()huanyingni()函数,函数,voidvoid input()input()函数函数 (二)(二) 测试测试 voidvoid mulu()mulu()函数函数 图 11:测试测试 voidvoid mulu()mulu()函数函数 15 (三)(三) 测试测试 voidvoid funct1()funct1()函数函数 图 12:测试测试 voidvoid funct1()funct1()函数函数 (四)(四) 测试测试 voidvoid funct2()funct2()函数函数 图 13:测试测试 voidvoid funct2()funct2()函数函数 (五)(五) 测试测试 voidvoid funct3()funct3()函数函数 图 14:测试测试 voidvoid funct3()funct3()函数函数 (六)(六) 测试测试 voidvoid funct4()funct4()函数函数 16 图 15:测试测试 voidvoid funct4()funct4()函数函数 (七)(七) 测试测试 voidvoid funct5()funct5()函数函数 图 16:测试测试 voidvoid funct5()funct5()函数函数 (八)(八) 测试测试 voidvoid funct6()funct6()函数函数 图 17:测试测试 voidvoid funct6()funct6()函数函数 (九)(九) 测试测试 voidvoid funct7()funct7()函数函数 图 18:测试测试 voidvoid funct7()funct7()函数函数 (十)(十) 测试测试 voidvoid funct0()funct0()函数函数 17 图 19:测试测试 voidvoid funct0()funct0()函数函数 五、总结五、总结 学生运动会成绩管理系统完成了:1) 可以输入各个项目的前三名的 成绩;2) 能统计各系别总分;3) 可以按系别编号、系别总分、男女团体 总分排序输出;4) 可以按系别编号查询某系某个项目的情况;5) 可以按 项目编号查询取得前三名的系别。 系统有以下不足:1、设计程序时为了使程序简单化,问题考虑的有 些不全面;2、由于结构体使用不太熟,所以结构体不能初始化不知道, 导致运动会管理系统设计耗费不必要的时间;3、在编写程序时,有的函 数调用功能太片面化,使得一些功能都不能实现;4、在程序运行阶段, 没有突出具体运算方法等而是只是显示结果。 通过本次课程设计,我掌握了程序设计的模块化思路,并真正理解了 函数调用的可使用性,也了解了结构体的使用方法及范围;对 C 语言的看 法有了一定的改观,也消除了惧怕心理,也学会了设计程序时应该使其功 能一个一个的逐步实现并测试正确性,而不是无条理的胡写尤其是大程序 更应该有清晰的条理;同时也理解了流程图的重要意义。 18 六、六、附件(代码)附件(代码) #include #include #define N 3 /系别个数 #define bm 5 /男团体个数 #define gm 3 /女团体个数 void xuanze(); void xunhuan(); struct match /项目 int matchnum; int rank3; matbm+gm; struct department /系别 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*_ _ _ _ _ _ _ _ _ _ _ _ _ _*nn ); void input() /输入成绩 int i,j,k; for(i=0;iN;i+) /初始化分数 depi.total=0; depi.boytotal=0; depi.girltotal=0; for(k=0;kbm+gm;k+) 19 depi.matk.rank0=0; depi.matk.rank1=0; depi.matk.rank2=0; depi.matk.matchnum=k+1; printf( -输入成绩-n); 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或1(0表示没获得该项目的该名次, |n | 1表示获得了该项目的该名次.以Tab键前进。 ) |n,N); printf( n); for(i=0;iN;i+) printf(#请输入系别编号: ); scanf(%d, while(depi.departmentnumN) if(depi.departmentnumN) printf(输入错误(只能是 1-%d)请重新输入:,N); printf(项目编号 ); for(k=0;kbm+gm;k+) printf(%d,depi.matk.matchnum); printf(n); for(j=0;j3;j+) printf(第(%d)名:,j+1); for(k=0;kbm+gm;k+) scanf(%d, for(k=0;kbm+gm;k+) do while(depi.matk.rankj!=0 while(depi.matk.rankj!=0 void totaljisuan() int i,k,b; for(i=0;iN;i+) for(k=0,b=0;kbm+gm;k+) b=depi.matk.rank0*5+depi.matk.rank1*3+depi.matk.rank2*2; depi.total=depi.total+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); 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); 21 exit(0); void funct1() /统计各系别总分 int i,q; printf( *统计各系别总分*n); printf(*系别编号*tttt*总分*n); for(i=0;iN;i+) printf(t%dtttt%dn,depi.departmentnum,depi.total); printf(n);printf(n); printf(* 0:退出;1:返回目录。n); printf(*请选择: ); scanf(%d, while(q=0|q=1) if(q=0) funct0(); if(q=1) xunhuan(); else printf(输入错误(只能是 0 或 1) ,请重新输入:); void funct2() /按系别编号排序 struct department sch1; int i,j,q; for(j=0;jN-1;j+) for(i=0;idepi+1.departmentnum) sch1=depi; depi=depi+1; depi+1=sch1; printf( *按系别编号排序*n); printf(*系别编号*tttt*总分*n); for(i=0;iN;i+) printf(t%dtttt%dn,depi.departmentnum,depi.total); printf(n);printf(n); printf(* 0:退出;1:返回目录。n); printf(*请选择: ); scanf(%d, 22 while(q=0|q=1) if(q=0) funct0(); if(q=1) xunhuan(); else printf(输入错误(只能是 0 或 1) ,请重新输入:); void funct3() /按系别总分排序 struct department sch1; int i,j,q; for(j=0;jN-1;j+) for(i=0;iN-j-1;i+) if(depi.totaldepi+1.total) sch1=depi; depi=depi+1; depi+1=sch1; printf( *按系别总分排序*n); printf(*系别编号*tttt*总分*n); for(i=0;iN;i+) printf(t%dtttt%dn,depi.departmentnum,depi.total); printf(n);printf(n); printf(* 0:退出;1:返回目录。n); printf(*请选择: ); scanf(%d, while(q=0|q=1) if(q=0) funct0(); if(q=1) xunhuan(); else printf(输入错误(只能是 0 或 1) ,请重新输入:); void funct4() /按男团体总分排序 struct department sch1; int i,j,q; 23 for(j=0;jN-1;j+) for(i=0;iN-j-1;i+) if(depi.boytotaldepi+1.boytotal) sch1=depi; depi=depi+1; depi+1=sch1; printf( *按男团体总分排序*n); printf( *系别编号*tt*总分*n); for(i=0;iN;i+) printf(t%dtttt%dn,depi.departmentnum,depi.boytotal); printf(n);printf(n); printf(* 0:退出;1:返回目录。n); printf(*请选择: ); scanf(%d, while(q=0|q=1) if(q=0) funct0(); if(q=1) xunhuan(); else printf(输入错误(只能是 0 或 1) ,请重新输入:); void funct5() /按女团体总分排序 struct department sch1; int i,j,q; for(j=0;jN-1;j+) for(i=0;iN-j-1;i+) if(depi.girltotaldepi+1.girltotal) sch1=depi; depi=depi+1; depi+1=sch1; printf(*按女团体总分排序*n); printf( *系别编号*tt*总分*n); for(i=0;iN;i+) printf(t%dtttt%dn,depi.departmentnum,depi.girltotal); printf(n);printf(n); printf(* 0:退出;1:返回目录。n); 24 printf(*请选择: ); scanf(%d, while(q=0|q=1) if(q=0) funct0(); if(q=1) xunhuan(); else printf(输入错误(只能是 0 或 1) ,请重新输入:); void funct6() /按系别编号查询系别某个项目情况 int i,n,m,

温馨提示

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

评论

0/150

提交评论