足球联赛管理课设报告.doc_第1页
足球联赛管理课设报告.doc_第2页
足球联赛管理课设报告.doc_第3页
足球联赛管理课设报告.doc_第4页
足球联赛管理课设报告.doc_第5页
免费预览已结束,剩余15页可下载查看

下载本文档

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

文档简介

*实践教学*你的大学计算机与通信学院2011年春季学期 C+面向对象 课程设计题 目: 足球联赛积分系统 专业班级:计算机科学与技术六班 姓 名: xxx 学 号: 010 指导教师: xxx 成 绩:_摘 要2一、序言3二、系统分析与设计1三、详细设计2四、系统测试9五、软件使用说明书9六、程序设计总结10七、致谢10参考文献11摘 要足球联赛采用主客场双循环赛制,胜一场得3分,平局各得1分,负一场得0分。输入比赛信息后,在屏幕上显示积分排名结果。排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进球数与失球数之差)多者在前,若净胜球相同,则进球数多者在前。积分表结构要求如下:队名(不超过15个字符),已比赛的场数,赢的场数,平的场数,负的场数,进球数,失球数,积分。积分表放在正文文件中。最近一轮的结果从键盘输入,其形式为:主队名(可用代码),客队名(可用代码),主队得分(即进球数),客队得分(即进球数)。关键词:足球 比赛 积分 4一、序言足球联赛采用主客场双循环赛制,胜一场得3分,平局各得1分,负一场得0分,联赛排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进球数与失球数之差)多者在前,若净胜球相同,则进球数多者在前,若仍相同,则抽签或踢附加赛决定名次(这在联赛结束后进行,联赛未结束则两队名次并列,本程序不做这方面要求)。该设计要求学生以足球联赛为背景,设计、开发一套“足球联赛积分管理系统”软件。通过该题目的设计,培养学生面向对象程序设计的思想,要求学生达到熟练掌握C+语言的基本知识和技能,基本掌握面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。同时强调好的程序设计风格,提高解决实际问题的能力。二、系统分析与设计本程序是定义了一个Team类,每个球队均是该类的对象。将联赛中参赛的队伍数限定不小于2,并根据输入顺序自动编号。每输入一次比赛成绩,则相应的队的有关数据(比赛场次、赢球场次、平的场次、输球场次、进球数、失球数、净胜球、得分)进行记录,且立即进行更新。当比赛成绩录入完成时,调用联赛排序方法(对象数组作为参数)排出名次并输出。从而实现题目的要求。UML类图: Team+T_name:char15+T_matches:int+T_wins:int+T_vs:int+T_loses:int+T_goal:int+T_lose_goal:int+T_win_goal:int+T_marks:int+FindTeam(char TeamName15,int TeamNum,CTeam *Teams,int &i)+CharStyle(char strInput15)+Sort(int *Array1,int *Array2,int *Array3,int row,int col,int *order)+sTeamSort(int TeamNum,CTeam *Teams,int *TeamOrder) 图1 UML类图三、详细设计#include #include string.h#include #include stdlib.husing namespace std;/ 定义球队类class CTeam public: char T_name15; int T_matches,/比赛场次T_wins, /赢球场次T_vs, / 平的场次T_loses, / 输球场次T_goal, / 进球数T_lose_goal, / 失球数T_win_goal, / 净胜球T_marks; / 得分/*条件降序排序*/*输入:待排序的数组(Array1/Array2/Array3)、数组元素脚标(order)/*输出:按降序排序好的数组(Array)、排序完的元素脚标(order)/*/void Sort(int *Array1,int *Array2,int *Array3,int row,int col,int *order)int temp1,temp2,temp3; / 数组值中间变量int ktemp; / 索引值中间变量int i,j;for (j=0;jrow*col-1;j+)for (i=0;irow*col-j-1;i+)if (Array1iArray1i+1)ktemp = orderi;orderi = orderi+1;orderi+1 = ktemp;temp1= Array1i;Array1i = Array1i+1;Array1i+1 = temp1;temp2 = Array2i;Array2i = Array2i+1;Array2i+1 = temp2;temp3 = Array3i;Array3i = Array3i+1;Array3i+1 = temp3;else if(Array1i=Array1i+1)if(Array2iArray2i+1)ktemp = orderi;orderi = orderi+1;orderi+1 = ktemp;temp1= Array1i;Array1i = Array1i+1;Array1i+1 = temp1;temp2 = Array2i;Array2i = Array2i+1;Array2i+1 = temp2;temp3 = Array3i;Array3i = Array3i+1;Array3i+1 = temp3;else if(Array2i=Array2i+1)if(Array3iArray3i+1)ktemp = orderi;orderi = orderi+1;orderi+1 = ktemp;temp1= Array1i;Array1i = Array1i+1;Array1i+1 = temp1;temp2 = Array2i;Array2i = Array2i+1;Array2i+1 = temp2;temp3 = Array3i;Array3i = Array3i+1;Array3i+1 = temp3;/ 球队排序,输出球队排序结果TeamOrdervoid TeamSort(int TeamNum,CTeam *Teams,int *TeamOrder)int i;int *Point=new intTeamNum;int *win_goal=new intTeamNum;int *goal=new intTeamNum;/-小组A排名-/for(i=0;iTeamNum;i+)Pointi=Teamsi.T_marks;win_goali=Teamsi.T_win_goal;goali=Teamsi.T_goal;TeamOrderi=i;/ 小组排序Sort(Point,win_goal,goal,1,TeamNum,TeamOrder); / 按积分/按净胜球/按进球数delete Point;delete win_goal;delete goal;四、系统测试 图2 程序界面测试图五、软件使用说明书1. 首先按编号依次输入各队名称,便将各队经行了编号。2. 然后,各个球队间进行一次比赛后,依次输入主队名称(可用编号代替),客队名称(可用编号代替),主队得分,客队得分(得分即为进球数)。3. 确认后就可以显示本次比赛后,各个球队的积分情况,依次重复步骤2,最后就可以可出所有比赛结束后各个球队的积分情况表。六、程序设计总结C+语言课程设计是我们在本阶段学完理论课程之后对自己该方面的能力的一次很好的检验,从开始的算法思路到另人兴奋的可用程序,都是一个很好的学习和锻炼的过程。使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。使我们体会到自身知识和能力能在实际中的应用和发挥。不但可以激发创新意识,还可以开发创造能力、培养沟通能力。这次课程设计时间虽然不太长,但确实使我受益匪浅。通过课程设计我丰富了计算机操作经验,更加深了对C+语言的了解,熟悉了其环境,更增强了对VC+的使用技巧。整个课程设计终于完成了,完成的好辛苦,好艰难,但还是顺利的完成了。我们付出了很多心血和汗水,但我认为我们得到的更多。如果没有同学们的互相帮助,这次课程设计就不会这么顺利,这种同舟共济的团队精神深深震撼了我,礼记学记上也有讲过:“独学而无友,则孤漏而寡闻”。同时有些同学积极的态度让我感到一丝惭愧,他们所体现出的坚持不懈的品质更令我折服。当然这次程序设计也让我看到了自己基础的薄弱。古人有诗云:“路漫漫其修远兮,吾将上下而求索”。从今天起我将不断继续求索,学习之路也好,人生之路也罢。总之我受益匪浅。七、致谢结束了这次的C+课程设计,首先要感谢xxx老师在课程设计上给予我的指导,支持与帮助。这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。其次,要感谢网络上的各大程序设计网站,为我本次程序设计提供了一定的设计参考,一定程度上为我解决了很多我不明白的知识以及技术上的难题,让我能够完成了这个课程设计。最后,我还要再次感谢此次课程设计中给予指导的赵付青老师,正是您的帮助使我们终于圆满的完成了这次课设。参考文献1陈维兴,林小茶.c+面向对象程序设计教程. 北京: 清华大学出版社,1996.2004.2张国峰. C+程序设计实用教程. 北京: 清华大学出版社,1996. 3张松梅. C+语言教程. 电子科技大学出版社,1993. 4阎龙. C程序员的C+指南. 北京航空航天大学出版社,1992.5王博. 面向对象的建模、设计技术与方法. 北京希望电脑公司,1990.附录#include #include string.h#include #include stdlib.husing namespace std;/ 定义球队类class CTeam public: char T_name15; int T_matches,/比赛场次T_wins, /赢球场次T_vs, / 平的场次T_loses, / 输球场次T_goal, / 进球数T_lose_goal, / 失球数T_win_goal, / 净胜球T_marks; / 得分void Tmark() / 计算得分和净胜球 T_marks=3*T_wins+T_vs; T_win_goal=T_goal-T_lose_goal; void cput() / 输出球队信息,球队名固定长度输出 int len=strlen(T_name);char T_Wname15;int i;strcpy(T_Wname,T_name);for(i=len;i15;i+)T_Wnamei= ;coutT_namesetw(15) T_matches T_wins T_vs T_loses T_goal T_lose_goal T_marksn; ; / 函数声明bool FindTeam(char TeamName15,int TeamNum,CTeam *Teams,int &i);int CharStyle(char strInput15);void Sort(int *Array1,int *Array2,int *Array3,int row,int col,int *order);void TeamSort(int TeamNum,CTeam *Teams,int *TeamOrder);int main() int TeamNum=0; / 球队数量char Temp15; / 临时字符组int i; / 循环变量while (TeamNum2) system(cls); coutTemp;TeamNum=atoi(Temp); int *TeamOrder = new intTeamNum; / 球队积分排名CTeam *Teams=new CTeamTeamNum; / 创建球队 / 输入球队信息for(i=0;iTeamNum;i+)cout请输入球队名i+1Teamsi.T_name;Teamsi.T_matches=0;Teamsi.T_wins=0;Teamsi.T_vs=0;Teamsi.T_loses=0;Teamsi.T_goal=0;Teamsi.T_lose_goal=0;Teamsi.T_win_goal=0;Teamsi.T_marks=0;TeamOrderi=i;/ 输出比赛结果信息cout球队 比场数 赢的场数 平的场数 负的场数 进球数 失球数 积分n; for(i=0;iTeamNum;i+)Teamsi.cput(); / 根据最新一轮比赛情况,输出比赛结果,球队名可用代码代替(代码为最初输入球队的序号)while(1)coutHostTeamNameVisitingTeamNameHostGoalVisitingGoal;int HostTeam,VisitingTeam; / 主队和客队的序号if(FindTeam(HostTeamName,TeamNum,Teams,HostTeam) / 查找主队,为真则继续if(FindTeam(VisitingTeamName,TeamNum,Teams,VisitingTeam) / 查找客队,为真则继续/ 更新比赛的球队信息TeamsHostTeam.T_matches+=1; TeamsVisitingTeam.T_matches+=1; if(HostGoalVisitingGoal)TeamsHostTeam.T_wins+=1;TeamsVisitingTeam.T_loses+=1;else if(HostGoal=VisitingGoal)TeamsHostTeam.T_vs+=1;TeamsVisitingTeam.T_vs+=1;else if(HostGoalVisitingGoal)TeamsHostTeam.T_loses+=1;TeamsVisitingTeam.T_wins+=1;TeamsHostTeam.T_goal+=HostGoal; TeamsVisitingTeam.T_goal+=VisitingGoal;TeamsHostTeam.T_lose_goal+=VisitingGoal; TeamsVisitingTeam.T_lose_goal+=HostGoal;TeamsHostTeam.Tmark();TeamsVisitingTeam.Tmark();/ 根据比赛结果对球队排序TeamSort(TeamNum,Teams,TeamOrder);/ 按球队排名输出最新的球队信息cout球队 比场数 赢的场数 平的场数 负的场数 进球数 失球数 积分n; for(i=0;iTeamNum;i+)TeamsTeamOrderi.cput(); / 主队不存在elsecout客队不存在,请重新输入比赛结果n;/ 客队不存在elsecoutTeamNum-1)return false;return true;else if(type=2) / 输入为字符while (i0:非法字符:1:数字;2:非数字/-/int CharStyle(char strInput15)if(atoi(strInput)=0)return 2;else if(atoi(strInput)0)return 1;elsereturn 0;/*条件降序排序*/*输入:待排序的数组(Array1/Array2/Array3)、数组元素脚标(order)/*输出:按降序排序好的数组(Array)、排序完的元素脚标(order)/*/void Sort(int *Array1,int *Array2,int *Array3,int row,int col,int *order)int temp1,temp2,temp3; / 数组值中间变量int ktemp; / 索引值中间变量int i,j;for (j=0;jrow*col-1;j+)for (i=0;irow*col-j-1;i+)if (Array1iArray1i+1)ktemp = orderi;orderi = orderi+1;orderi+1 = ktemp;temp1= Array1i;Array1i = Array1i+1;Array1i+1 = temp1;temp2 = Array2i;Array2i = Array2i+1;Array2i+1 = temp2;temp3 = Array3i;Array3i = Array3i+1;Array3i+1 = temp3;else if(Array1i=Array1i+1)if(Array2iArray2i+1)ktemp = orderi;orderi = orderi+1;orderi+1 = ktemp;temp1= Array1i;Arr

温馨提示

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

评论

0/150

提交评论