资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
运动会分数统计系统1.设计内容任务:参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。 项目编号为1m,女子为m+1w。不同的项目取前5名或前3明积分;取前5名的积 分为:7、5、3、2、1,前3名的积分分别为:5、3、2;哪些项目取前5名或前3名由 学生自己决定。(m=20,n1.设计思路系统结构设计图运动会分数统计系统结构设计图项目2 Event2.思路分析1)从上面的结构设计图来看,隐含地给出了第一个约束条件:每个参赛学校均参加所有的 比赛项目。然而这种设计思路并不符合实际情况,因为每个学校有权利选择参加或不参 加某个比赛项目。2)首先,在上述结构图中,比赛项目Event是最小的数据存储基本单元。比赛项目集合 SportEvents可以理解为Event数组,包含了所有的比赛项目。根据约束,只要有学校 University参加运动会,此学校就包含了一个SportEvents集合,即为每个学校分配自己 的项目成绩单。有n个学校报名参加了运动会SportsMeeting,大会的工作人员根据比 赛项目结果统计各个学校的成绩。因此,这种设计结构有3层包含关系,但是每一部分 相互独立,耦合性弱。3)除了第1条所指出的设计缺陷,这种设计也面临着另一个问题。项目的成绩如何输入? 常规思想是根据比赛结果,向系统输入比赛项目的前3或5名的学校编号或名称,系统 后台自动累加积分。但是,这里项目是最小的单元,学校又包含了项目,也就是说每个 学校的项目成绩单之间是封闭的,学校和学校之间是无法看到的,只有运动会的工作人 员才有权限按照逻辑关系查询某个学校的某项成绩,所以显然就不能按照常规思想进行 项目成绩的输入。那怎么办呢?直接输入分数。我再给出第二个约束:对于一个项目来 说,每个学校只派出一个代表参加。通常对于一个比赛项目来说,学校可以派出不止 一个代表参加,就像奥运会的男子百米飞人大赛,牙买加出3名,美国出3名等。表1项目1学校11学校2学校33学校4学校52表2项目1学校15学校20学校32学校40学校53根据第二个约束条件,假设裁判给出比赛结果表1中的学校名次,工作人员根据名次, 将表2的分数输入到系统即可。4)从另一个方面来看,如果大会的积分规则改变了。除非系统有对外修改积分规则的接口, 否则工作人员就无能为力了。因此以表2的形式更加有灵活性。5)客观的说,此系统的设计上有很多缺陷,与实际的常规思想有所不同,所以才加入了两 个约束条件。功能设计1. 功能模块设计图运动会分数统计系统模块设计图2. 实现思路1) 模块设计图中具体功能明了,这里就不再重复了。2) 一般情况下,学校信息,比赛项目信息和项目成绩都需要在cmd窗口中进行输入。这也带来2个问题。一是如果学校有n个,项目有m个,取前5名,那么你就要输入n*m*5 个数据,工作量大。二是一旦发现历史输入有误,那么就要全部重新输入数据。为解决 这个问题,本系统以文件流的形式导入数据,文件流最简单的方式就是读写txt。我把 每个项目的成绩放在对应的txt文件中,如男子100米M100.txt,具体对应关系可以查看PointsRules.txt。文件里的内容形式与表2相同,存放的是项目成绩。在cmd窗口中,需要哪个项目的成绩,就导入对应的txt文件即可。此外,如果项目成绩发生变 化,只需修改txt文件,再重新导入即可。3)采用OOP编程,将每一部分封装成一个类,每个类满足了强内聚、松耦合原则。具体 的类的定义和声明请查看代码。4)在结构设计图中,学校和项目的数量是可以任意的,虽然需求规定m=20,n=20。如 果直接定义数组(对象数组或者结构数组)大小为20,可能存在资源浪费的情况。为 此,我采用了 C+自带的通用模板(也即泛型)vector结构。对于SportEvents类来说, 它包含了 vector 类型的数据成员;在 SportsMeeting 类中,包含了 vector 类型的数据成员。调用push_back()函数,就可以根据实际情况添加任意个学校或者项 目。5)此外,采用vector另一个好处,就在于排序,对应功能要求的第5条。Vector背后运用 的是迭代器,也就可以调用通用函数sort()对vector进行排序,只要设计相应的排序规 则即可,简化了工作量。程序实现1.运行环境Win XP,VC+ 6.0。2.工程项目工程文件 SportsMeeting,包括 SportsMeeting.h,SportsMeeting.cpp,Client.cpp。编译原理图3.4.类声明对应结构设计图中所设计的4个类,在SportsMeeting.h中声明Event类class Event public:Event();void setEventInfo(const int & index, const string name); / 设置项目编号和名称int getEventIndex()const; / 返回项目编号string getEventName() const; / 返回项目名称int getEventScore() const; / 返回项目成绩void setEventScore(const int & score); / 设置项目成绩private:int eventindex; / 项目编号 string eventName; / 项目名称 int eventScore; / 项目成绩;SportEvents 类class SportEventspublic:SportEvents();void setSportEventsinfo(); /设置运动会项目信息void displaySportEventsinfo()const; /返回所有比赛项目信息和目前成绩void initializeSportEvents();/ 初始化比赛信息vector & getMySportEvents();private:vector mySportEvents;University 类class Universitypublic:University();void initializeUinversity();/ 初始化void setUniversityinfo(const int & index, const string name);/设置学校信息 void getUniversityinfo()const; / 返回学校信息int getUniversityindex()const; / 返回学校编号string getUniversityName()const; / 返回学校名称void getUniversitySportsinfo()const; / 返回学校所有参赛项目信息int getTotalScore();/返回学校总成绩int getMTScore(); /返回男团总分int getWTScore();/返回女团总分SportEvents & getUniSportEvents();private:int uindex; /学校编号string uName; / 学校名称int totalScore;/ 学校总成绩 int mTeamScore;/ 男团总分int wTeamScore;/ 女团总分SportEvents uSportEvents; / Sports 对象;SportsMeeting 类class SportsMeetingpublic:SportsMeeting();void initializeSportsMeeting(); / 初始化运动会void displayUniversity()const; / 显示所有参赛学校信息void displaySportEvents()const; / 显示所有比赛项目信息void displaySingleUniversity();/显示指定学校所有成绩信息和总分void displayPointsRules()const; / 显示积分排名规则void importEventScore(); /导入某个项目的成绩 void countTotalScore();/ 统计各学校总分void sortByTotalScore(); / 按学校总分排序void sortByMTScore();/ 按男团总分排序void sortByWTScore();/ 按女团总分排序void inquireByUIandEI(); /按学校编号查询某个项目成绩void inquireByEIandTop();/ 按项目编号查询 Top(n学校private:vector myUniversity;bool flag; /标记是否导入过成绩 ;5.程序代码请见附录测试数据:学校数据校名东华大学上海交大复旦大学同济大学华东师范编号12345项目数据项目编号12345项目名称男子100男子200男子400男子跳高男子跳远项目编号678910项目名称女子跳高女子跳远女子铅球女子100女子4006.1)实验结果程序界面Menu Infopmation Nodule 1-Part ic ipat injf Uniuersities Info mat io n Events InfavnationREinking Points Rules Statistics Hodule 4.Enter the Euent Scot reCount Total Score mf Each Uniuersit6.?8.10.11.InquireInquireInquireInquireInquireInquireQuery Module Euent Scopes and Total Scope of Certain UniuersityPankinjBankingPankinjCertainof Each Uniuersitii By Total Scoieof Each Uniuersitii By Men-Team Score of Each U
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号