1、在各个学校之间的比赛时,需要对运动会的信息进行整理,它涉及到的数据量之大,用单纯的手写记录已经不能满足用户的需求,利用运动会管理系统及时了解各个环节中信息的变更,有利于提高管理的效率。 本项目作为c+课程设计课程的训练项目提出,目的是为了提高同学们系统的开发,则提高大家的实践能力。所以开发一个符合自身运动会实际情况的工作平台是十分必要的。系统使用对象定为由太原科技大学,太原理工大学,山西大学,中北大学联合举办的校际运动会。系统需要建立两个结构体学校和运动员。学校应该包含学校名,学校代码,学校总分和学校排名等信息;运动员则要包含姓名,性别,学校,比赛成绩,比赛名次和比赛成绩等信息。系统就是要实现
2、学校和运动员基本信息的输入和输出,还有查询,最后再生成报表。3.2功能模块划分 根据题目的要求及系统功能可以将系统分为学校信息录入,学生信息录入,成绩录入,查询,显示数据,输出文件,显示排名七个模块。各个模块基本介绍如下:学校信息录入模块:输入学校总数,对学校名字,代码,成绩,排名等信息进行初始化。学生信息录入模块:输入学生总数,对运动员姓名,性别,学校,成绩,排名,得分等信息进行计算。成绩录入模块:录入运动员比赛成绩由系统对运动员进行排名和积分。查询模块:用户可以选择运动员,学校,项目三种查询方式。显示数据模块:显示学校信息,运动员信息和得分规则。输出文件模块:将文件存储。显示排名模块:显示
3、学校排名和运动员排名。我主要负责查询,显示数据,输出文件,显示排名四个模块的相关内容,黄科荣同学负责编写学校信息录入,学生信息录入,成绩录入三个模块的相关内容,最后的整体代码由两个人组合完成。 校际运动会管理系统 图3.1校际运动会管理系统功能模块图以下输入项均为键盘输入:得分规则选择 int a(1、2、3)选择主菜单选项 int n(1、2、3、4、5、6、7、8)学校个数 int XN学校校名 string mingzi 学校代号 string daihao 学生数量 int SN学生姓名 string xingming 学生性别 bool xingbie参赛项目 bool xiangm
4、u4成绩 float chengji选择查询方式 int a(1、2、3、4)选择显示的信息 int l(1、2、3、4)选择现实的排名 int a(1、2、3)学校名次 int mingci4;学校校名 string mingzi单项得分 int defen4总分 int zongfen四、系统实现与测试4.1主菜单模块实现图 N N N N Y Y Y Y N N N Y Y Y4.1主菜单流程图void menu() /菜单 int w1,n; system(cls); couttt-endl tt*welcome to load*tttt 欢迎使用校运动会计分系统 tt tt 1.学校
5、信息录入 tt 2.学生信息录入 tt 3.成绩录入 tt 4.查询 tt 5.显示数据 tt 6.输出文件 tt 7.显示排名 tt 8.退出 tt 制作人 endl; do coutn; if(n8) w1=1; cout您的输入有误,请重新输入! else w1=0; while(w1=1); switch(n) case 1:xuexiaoluru(); case 2:xueshengluru(); case 3:chengjiluru();case 4:chaxun();case 5:xianshi();case 6:wenjian();case 7:paimingxianshi()
6、; 主菜单运行结果如图4.2 图4.2主菜单界面4.2查询模块实现图4.3查询模块流程图void chaxun() /查询void xscx();void xmcx();void xxcx();int a;docouta;switch(a)case 1:xscx();break;case 2:xmcx();case 3:xxcx();while(a4);system(pausemenu();void xscx()int i,sb=0;string x;请输入要查询的名字:x;for(i=0;iSN;i+) if(xsi.xingming=x) sb+; cout姓名xsi.xingming 学
7、校 for(int k=0;k+) if(xsi.xue=xxk.daihao) coutsetw(15)xxk.mingzi; break; cout 性别 if(xsi.xingbie)setw(4)男 else女 号码xsi.haoma if(sb=0) cout没找到该名字的学生void xmcx()int j;请输入要查询的项目名:j; if(xsi.xiangmuj-1)未找该项目的学生void xxcx()学校信息为:endl学校名称 学校代号XN;xxi.mingzi xxi.daihaostring l;请输入要查询的学校代号:l; if(xsi.xue=l)l if(xsi
8、.xingbie)setw(6) switch(l)xsxxxx();xsxsxx();xsdfgz();while(l4&1);void xsxxxx()setw(8)学校得分学校排名 for(int i=0;xxi.chengjixxi.mingcivoid xsxsxx()学校性别 setw(12)项目1 成绩项目2 成绩项目3 成绩项目4 成绩 for(int j=0;jj+)xsj.xingming; if(xsj.xue=xxk.daihao) if(xsj.xingbie) for(int x=0;x4;x+)xsj.xiangmuxxsj.chengjix;setw(18)项目
9、1得分 排名项目2得分 排名项目3得分 排名项目4得分 排名setw(7)总分 for(j=0; for(int x=0;setw(9)xsj.defenxxsj.mingcixsetw(7);xsj.zongfenvoid xsdfgz() for(int z=0;z+) if(dfz!=0) 第z+1名得dfz分 continue; 其后所有人得分为0 break;显示模块测试分为学校显示如图4.8,所有学生显示如图4.9和得分显示如图4.10 图4.8学校信息显示界面图4.8选择1时参赛学校的名称,代号,得分和排名的显示. 图4.9学生信息显示界面图4.9为选择2时所有参赛学生学校,性别
10、,参赛项目,成绩,得分和排名的信息显示. 图4.10得分规则显示界面图4.10为选择号码3时比赛采用的积分规则的显示.4.4输出文件模块void wenjian() /输出到文件 fstream s1(输出文件.txt,ios:out); if(!s1)打开失败! s1 学校名字 学校代码 学校名次 学校总分n for (int i=0; s1int(xxi.chengji) 姓名 学校代码 性别 号码 项目1 成绩 名次 项目2 成绩 名次 项目3 成绩 名次 项目4 成绩 名次 总分 for(i=0;xsi.xuexsi.xingbie xsi.xiangmu0xsi.chengji0xs
11、i.mingci0xsi.xiangmu1xsi.chengji1xsi.mingci1xsi.xiangmu2xsi.chengji2xsi.mingci2xsi.xiangmu3xsi.chengji3xsi.mingci3xsi.zongfen s1.close();输出成功! menu(); 图4.11输出文件4.5显示排名图4.12排名模块流程图void paimingxianshi() /显示排名void xxpm();void ydypm(); 1 学校排名 2 运动员总分排名 3 退出xxpm();ydypm();void xxpm() string dd50; for(int
12、 i=0; ddxxi.mingci-1=xxi.mingzi;i+1名为 ddivoid ydypm() string dd200,te; int ss200,mp,p,q; ddi=xsi.xingming; ssi=xsi.zongfen; for(p=0;pp+) for(q=p+1;qSN-1;q+) if(sspssq) te=ddq; ddq=ddp; ddp=te; mp=ssq; ssq=ssp; ssp=mp; 显示排名测试分为学校排名如图4.13,运动员排名如图4.13 图4.13学校排名界面 图4.14运动员排名界面 五、调试错误及解决方法 在调试过程中遇到了各种各样的错误,但总结起来也就是马虎造成的,现列举一二。如在调用函数时出现函数未声明的错误,只要在函数的开头进行声明就行了;还有如“D:测试.cpp(579) : error C2018: unknown character 0xa3
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1