您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 商业计划书 > C++课程设计---足球联赛积分
1足球联赛积分1.需求和规格说明1.1问题描述:足球联赛采用主客场双循环赛制,胜一场得3分,平局各得1分,负一场得0分,联赛排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进球数与失球数之差)多者在前,若净胜球相同,则进球数多者在前,若仍相同,则抽签或踢附加赛决定名次(这在联赛结束后进行,联赛未结束则两队名次并列,本程序不做这方面要求)。试编一程序统计最近一轮比赛后,各队积分及排名。1.2基本要求设积分表结构如下:队名(不超过15个字符),已比赛场数,赢的场数,平的场数,负的场数,进球数,失球数,积分。积分表放在正文文件中。最近一轮的比赛结构从键盘输入,其形式为:主队名(可用代码),客队名(可用代码),主队得分(即进球数),客队得分(即进球数)。程序应根据此结果修改各队的积分和名次,所得的最近积分表仍在原积分文件中并同时在屏幕上显示。2.设计2.1文字描述根据要求,设计一个球队类TEAM,其中包含了该类对象的私有数据成员,即:已比赛场数,赢的场数,平的场数,负的场数,进球数,失球数,积分。公有成员方面,除了定义该类构造函数外,还将球队名定义为公有的,目的是便于被类外函数调用。除此之外,由于该程序并非针对单个对象即某个球队进行的操作,故将诸如排名、更新球队数据、排序后输出等函数定义为普通函数。又因为需要调用该类对象的某些私有数据成员,于是将此等函数声明为类的友元函数。22.2图示类名成员类别类型名称描述intrace_num比赛场数intwin_num赢的场数intpeace_num平的场数属性(private)intlose_num负的场数TEAMintball_win进球数intball_lose失球数intscore积分属性(public)char*name球队名方法TEAM()构造函数函数类别函数名描述viodproject()程序主工作函数viodinitical_name()初始化参赛球队队名friendviodrewrite_data()友元:更新球队数据friendviodrank()友元:积分排序friendviodprint_af_rank()友元:排序后输出3.用户手册根据提示操作即可,具体为:(1)程序运行时,首先要求初始化参赛队总数,各队队名等;(2)按提示操作,即可选择性修改最近一轮比赛中主客队得分,也可查看当前各队积分排名。注意:请输入与程序要求相应的选择以及正确的格式,不要超出程序给定的范围!4.附录源程序#includeiostream#includeString#includefstream#includeiomanipusingnamespacestd;classTEAM//球队类{3private:intrace_num;//比赛场数intwin_num;//赢的场数intpeace_num;//平的场数intlose_num;//输的场数intball_win;//进球数intball_lose;//失球数intscore;//积分public:char*name;//队名,在后文初始化参赛球队队名函数initical_name()中规定队名不超过15个字符TEAM();//构造函数//TEAMoperator=(TEAM&b);//赋值运算符重载成员函数,方便TEAM类型对象间的赋值操作friendvoidrank(TEAMarray[],intsize);//联赛排序方法函数friendvoidrewrite_data(TEAMTeam[],intsize);//最近一轮比赛结束后主客队数据更新//friendvoidprint(TEAMarray[],intsize);//球队当前数据查询函数friendvoidprint_af_rank(TEAMarray[],intsize);//显示排名后的各队数据};voidproject(TEAMT[],intsize);//程序主工作函数,此处声明,便于后面调用TEAM::TEAM(){name=0;race_num=0;win_num=0;peace_num=0;lose_num=0;ball_win=0;ball_lose=0;4score=0;}//TEAMTEAM::operator=(TEAM&b)//赋值运算符重载,方便TEAM类型对象间的赋值操作//{//TEAMt;//t.name=b.name;//t.race_num=b.race_num;//t.win_num=b.win_num;//t.peace_num=b.peace_num;//t.lose_num=b.lose_num;//t.ball_win=b.ball_win;//t.ball_lose=b.ball_lose;//t.score=b.score;//returnt;//}voidinitical_name(TEAMS[],intsize)//初始化参赛球队队名{if(S[0].name==0){coutCaution:当前无参赛队伍,请建立!(y/n)__;strings;cins;if(s==y||s==Y){cout_______________________________________________________________________endlendl;intnum,i;do{5cout请输入参赛队伍总数(2---size)__;cinnum;coutendl;if(num2||numsize){coutCaution:您的输入有误,请重新输入!endlendl;}}while(num2||numsize);//ofstreamfout(lsjf.txt);//foutnumendl;//fout.close;for(i=0;inum;i++){cout请输入第i+1个球队的队名__;charstr[15];cinstr;S[i].name=newchar[strlen(str)+1];strcpy(S[i].name,str);//ofstreamfout(lsjf.txt);//foutS[i].nameendl;coutendl;}//fout.close();cout____数据初始化成功!;cout________________________________________________________________________endl;coutendl;}elseif(s==n||s==N){6cout谢谢使用,祝您愉快!再见!endl;exit(0);}project(S,size);}elseif(S[0].name!=0){}return;}voidproject(TEAMT[],intsize)//程序主工作函数{intchoice;do{cout请选择您要执行的操作endl;cout1.查看当前球队排名endl;cout2.更新球队比赛数据endl;cout0.退出;cout_____________________________________________________________endl;cout请输入您的选择:(0-2)__;cinchoice;coutendl;switch(choice){case1:initical_name(T,size);7rank(T,size);print_af_rank(T,size);break;case2:initical_name(T,size);rewrite_data(T,size);rank(T,size);print_af_rank(T,size);break;case0:cout谢谢使用,祝您愉快!再见!endl;exit(0);break;default:coutCaution:您的输入有误,请重新进行选择!endlendl;break;}}while(choice!=0);return;}voidrank(TEAMarray[],intsize)//联赛排序方法函数{//cout执行排序函数1endl;TEAMtemp;//cout执行排序函数2endl;//cout执行排序函数3endl;intL=0,k=0;for(k=0;ksize;k++)8{//ifstreamfin(lsjf.txt);//finif(array[k].name!=0)L++;}inti=0,j=0;for(i=0;iL-1;i++){for(j=0;jL-1-i;j++)//积分多者在前{if(array[j].scorearray[j+1].score){}elseif(array[j].scorearray[j+1].score)//比较积分多少{temp=array[j];array[j]=array[j+1];array[j+1]=temp;//cout执行排序函数aendl;}elseif(array[j].score==array[j+1].score)//积分相同时,净胜球数多者在前{//比较净胜球数多少if((array[j].ball_win-array[j].ball_lose)(array[j+1].ball_win-array[j+1].ball_lose)){}elseif((array[j].ball_win-array[j].ball_lose)(array[j+1].ball_win-array[j+1].ball_lose)){temp=array[j];array[j]=array[j+1];array[j+1]=temp;//cout执行排序函数bendl;9}//积分与净胜球数均相同时,进球数多者在前elseif((array[j].ball_win-array[j].ball_lose)==(array[j+1].ball_win-array[j+1].ball_lose)){if(array[j].ball_winarray[j+1].ball_win){}//比较进球数多少elseif(array[j].ball_winarray[j+1].ball_win){temp=array[j];array[j]=array[j+1];array[j+1]=temp;//cout执行排序函数cendl;}elseif(array[j].ball_win=array[j+1].ball_win){}}}}}return;}voidprint_af_rank(TEAMarray[],intsize)//显示排名后的各队数据{intn;cout________________________________________________________________________endl;cout当前各队积分排名endl;cout名次\t队名\t赛\t胜\t平\t负\t进\t失\t净\t积分endl;10for(n=0;nsize;n++){if(array[n].name!=0){cout第n+1名\tarray[n].name\tarray[n].race_num\tarray[n].win_num\tarra
本文标题:C++课程设计---足球联赛积分
链接地址:https://www.777doc.com/doc-3947928 .html