C++课程设计文档.doc_第1页
C++课程设计文档.doc_第2页
C++课程设计文档.doc_第3页
C++课程设计文档.doc_第4页
全文预览已结束

下载本文档

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

文档简介

1 项目介绍1.1 项目简介(1) 项目名称足球排名系统1.2 项目背景与可行性分析在VC+6.0的环境中运用C+与C的知识以及足球知识,根据需求编写程序。1.3 术语与缩写解释全文术语与缩写解释如表1.1所示:表1.1 术语与缩写解释缩写、术语解 释Rand()取随机数 Srand()避免每次取到相同的随机数 GetnumberOfcoat() 获取队员球衣号GetservingOfage()获取队员效力时间 Score 比赛得分 sBalls 净进球数 Array() 三个数比较大小,并排序,用于小组赛的调用friend int competition() Team类的友元函数,用于实现两队之间的比赛Int bifen() 用于两球队比赛时,随机出比分2 需求分析2.1 系统面向的用户群体 该系统主要面向于热爱足球的群体。2.2 系统应当遵循的标准或规范应当按照C+的规范模式编写,2.3 系统功能性需求2.3.1 功能需求1创建各个类,如:构造基本属性的类person,由其派生出来的player、coach类,还有由player、coach组成的team类,由team构成的小组group,最后是进行比赛的worldcup类2.3.2 功能需求2类的创建知识实现该功能的一部分,为了实现该项目,还应当在各个类中添加相应的函数,比如:为了得到随机比分就应当创建一个函数来获取随机数。3 系统设计3.1 总体设计以程序运行成功为目的进行设计。对于模拟世界杯模式,首先想到的是要有完整的体系,也就是说要有构成这个体系的基本元素,要有球队这是最基本的。具有球队之后就要像实际一样进行分组,之后小组赛,四分之一,半决赛,决赛,一项一项有条不紊的进行。(在实际中有32支球队,小组赛结束之后,留下16强进行八分之一决赛)3.2 模块命名规则类:Person ,Player ,Coach ,Team ,Group ,Worldcup变量: Person类:Name 姓名 ,Motherland 国籍 ,Birthday 出生日期 , Sex 性别 ,Age 年龄 Player类:ServingOfage 效力时间 ,Position 队员在场上的位置 ,NumberOfCoat 球衣号 ,Shooting 该队员的进球数 Coach类:ServingOfage 效力时间 Team类:Tname 球队名 ,Score 比赛得分 ,SBalls 净进球数 ,Goals 总进球数Group类:Groupname 小组名称 ,Teams 组成该小组的队名 ,NumOfTeam 球队数Worldcup类:Name 名称 ,Pteams 存放队名的数组 ,Pgroups 组名 ,Nteams 队的数量 ,Ngroups 组的数量Main函数:SW 失球数 ,ZW 总进球数 ,JW 净进球数 ,tw 存放各球队的积分 3.3 模块关系“ ”表示公有继承Worldcup Group TeamPlayerCoachPerson 该关系图说明各个之间的继承关系 3.4 详细模块设计 要想模拟实现世界杯比赛系统,首先应当想到的是有球队,那么要构成这些球队,先构造他们的基本属性:Person类、Coach类、Player类。基本属性完成之后就要根据下图与模块关系图来进一步实现。决赛半决赛四分之一决赛小组循环赛随机分组三级标题自拟4 系统实现(1)用于获取两队的比赛得分,利用Srand()函数int bifen() int z; Sleep(600); srand(time(NULL); z=rand()%5; return z;(2) 实现分组for(int y=0;y12;y+)x=suiji(x);if(y%3=0)cout 第y/3+1Match();cout ;if(y%3=2)coutendl;定义两个Team类型的数组,一个用于存放12支球队的名称,一个用于空着,用于赋值。 5 项目总结5.1 项目特色 C+与C相结合,面向对象的方式 程序环环相扣,层层递进5.2 主要工作 编写组成实现项目的各个类及测试函数Main()函数 编写这段程序思路很重要5.3 系统展望 在模拟世界杯比赛的基础上,还可以将原有的12支球队拓展为32支球队,结合运用这个模拟系统,增加八分之一决赛,来实现真正的世界杯。除了模拟世界杯之外,还可以模拟篮球赛、冰球、羽毛球等等。在模拟其他比赛时,首要是了解这些这些比赛的规则。以篮球为例:每支队的人员相对足球有所减少,比赛的比分相对足球增大。6 附录 编程日志 程序名称足球赛排名系统功能描述分组以及部分类的编写开发者起止日期2011-7-41. 如何来进行分组:利用循环结合team类和group类,还得利用srand()函数。加入计数变量。给12队手动赋值,也就是将法国 德国 英格兰 美国 巴西 阿根廷 意大利 丹麦 荷兰 葡萄牙 西班牙 南非这些队名写入后再起别名,(此处可以利用循环)。再定义一个数组。从而实现分组。2. person类中首先想到的是应该分国籍(只分国籍就好)。然后编写构造函数,以及一个输出函数,我觉得对于一个基类而言足以。由基类派生出的coach和player,这两个类在person的基础上把各自的职位附上去。3. team类中包含1个教练和1个队员,由此类推到group类,group类中含有12个team并含有分组的内容。程序名称足球赛排名系统功能描述对于各个类内容的编写开发者起止日期2011-7-51. 今天的主要任务是对昨天编写的Person类的修改和补充。Person类中补充了更多的个人信息。对于Birthday可以定义为char型,也可以重新定义一个Date类,但过于繁琐,所以定义为char型。再定义一个私有成员age,用于在getage()函数中获取age。2. Player类是由person类派生出来的。在player类中定义bool型的一个变量用于判断该队员是否为队长。(bool类型可以等于bool类型)3. Goal 类主要用于进球方面。该类含有内嵌对象,为player类的内嵌对象,它的构造函数要接收赋给Gplayer成员的player类的对象。(就是一个内嵌对象为goal类和player类建立了千丝万缕的关系,用于输出进球人的各项信息)。编写team类不仅要用到内嵌对象,还要使用静态数据成员。作为一个队应当包含有教练Coach和队员Player,所以内嵌对象主要是来完善team类。使用静态数据成员,来对该队的总进球数进行统计。从而为系统筛选进入八强的队伍。4. 在group类中将进行重头戏,对这12支球队进行分组。程序名称足球赛排名系统功能描述类的编写开发者起止日期2011-7-61. 今天依旧是在编写与修改中完成一个个类。修改了Person这个基类,给它新增加了几个get函数,使得它的派生类中可以将私有成员直接继承过来。2. 在team类中的int versus(team &t)函数通过利用*this指针来实现两队的比赛,以及srand()函数随机输出两支球队的比赛进球数。通过自增自减来实现对总进球数,和净进球数的计数(也考虑过采用静态数据成员与静态成员函数进行计数,但是觉得这样也可以所以就未采用)。3. 其实之前的的认识都是错误的,并不是在group类中实现对12支球队的分组,而是在worldcup中实现的。4. 各个类的雏形已完成,其成员函数大多已编写完成。总之今天的收获较小。程序名称足球排名系统功能描述类的编写开发者起止日期2011-7-71. 今天依旧是在对编写的各个类不断的完善、修改。在Team类里加入友元函数friend int competition(team &a,team &b)(因为会用到Team类的私有成员),该友元函数的主要功能是实现两只队伍的比赛。这个函数的作用很大,为以后的小组赛,八分之一决赛,四分之一决赛,半决赛,决赛做铺垫。2. 还是未将分组的程序想出来,依旧在缓慢的编写,修改程序。参考网上的一段分组程序对其进行修改,来实现分组。通过老师的讲解明白了group类的成员函数int addTeam(team &t)的作用(对它的定义仍是任重而道远)。group类中实现3支球队的比赛,也就是实现小组赛,可以调用team类中的competition()函数。程序名称足球排名系统功能描述类、主函数的编写开发者起止日期2011-7-111 今天主要是对group、team、worldcup类的补充和修改。存在的问题仍然比较大。就比如说,在小组赛时,每支球队比两场,对于同一支球队它的score、sballs、totalballs该如何记录,这是个比较大的问题。2 在worldcup里,分组函数的编写是参照网上流传甚广的一段程

温馨提示

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

评论

0/150

提交评论