C++课程设计足球联赛积分.docx
《C++课程设计足球联赛积分.docx》由会员分享,可在线阅读,更多相关《C++课程设计足球联赛积分.docx(15页珍藏版)》请在冰豆网上搜索。
C++课程设计足球联赛积分
足球联赛积分
1.需求和规格说明
1.1问题描述:
足球联赛采用主客场双循环赛制,胜一场得3分,平局各得1分,负一场得0分,联赛排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进球数与失球数之差)多者在前,若净胜球相同,则进球数多者在前,若仍相同,则抽签或踢附加赛决定名次(这在联赛结束后进行,联赛未结束则两队名次并列,本程序不做这方面要求)。
试编一程序统计最近一轮比赛后,各队积分及排名。
1.2基本要求
设积分表结构如下:
队名(不超过15个字符),已比赛场数,赢的场数,平的场数,负的场数,进球数,失球数,积分。
积分表放在正文文件中。
最近一轮的比赛结构从键盘输入,其形式为:
主队名(可用代码),客队名(可用代码),主队得分(即进球数),客队得分(即进球数)。
程序应根据此结果修改各队的积分和名次,所得的最近积分表仍在原积分文件中并同时在屏幕上显示。
2.设计
2.1文字描述
根据要求,设计一个球队类TEAM,其中包含了该类对象的私有数据成员,即:
已比赛场数,赢的场数,平的场数,负的场数,进球数,失球数,积分。
公有成员方面,除了定义该类构造函数外,还将球队名定义为公有的,目的是便于被类外函数调用。
除此之外,由于该程序并非针对单个对象即某个球队进行的操作,故将诸如排名、更新球队数据、排序后输出等函数定义为普通函数。
又因为需要调用该类对象的某些私有数据成员,于是将此等函数声明为类的友元函数。
2.2图示
3.用户手册
根据提示操作即可,具体为:
(1)程序运行时,首先要求初始化参赛队总数,各队队名等;
(2)按提示操作,即可选择性修改最近一轮比赛中主客队得分,也可查看当前各队积分排名。
注意:
请输入与程序要求相应的选择以及正确的格式,不要超出程序给定的范围!
4.附录源程序
#include
#include
#include
#include
usingnamespacestd;
classTEAM//球队类
{
private:
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;
score=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")
{
cout<<"Caution:
当前无参赛队伍,请建立!
(y/n)__";
strings;
cin>>s;
if(s=="y"||s=="Y")
{
cout<<"_______________________________________________________________________"<intnum,i;
do
{
cout<<">>>请输入参赛队伍总数(2---"<cin>>num;
cout<if(num<2||num>size)
{
cout<<"Caution:
您的输入有误,请重新输入!
"<}
}while(num<2||num>size);
//ofstreamfout("lsjf.txt");
//fout<//fout.close;
for(i=0;i{
cout<<">>>请输入第"<
charstr[15];
cin>>str;
S[i].name=newchar[strlen(str)+1];
strcpy(S[i].name,str);
//ofstreamfout("lsjf.txt");
//fout<
cout<}
//fout.close();
cout<<"____数据初始化成功!
";
cout<<"________________________________________________________________________"<cout<}
elseif(s=="n"||s=="N")
{
cout<<">>>>>>>>>>>>>>>>>>>>>>>>>>>谢谢使用,祝您愉快!
再见!
<<<<<<<<<<<<<<<<<<<<<<<<<<"<exit(0);
}
project(S,size);
}
elseif(S[0].name!
="0"){}
return;
}
voidproject(TEAMT[],intsize)//程序主工作函数
{
intchoice;
do
{
cout<<">>>>>>>>>>>>>>>>>>>>>>>>>请选择您要执行的操作<<<<<<<<<<<<<<<<<<<<<<<<"<cout<<"1.查看当前球队排名"<cout<<"2.更新球队比赛数据"<cout<<"0.退出";
cout<<"_____________________________________________________________"<cout<<">>>请输入您的选择:
(0-2)__";
cin>>choice;
cout<switch(choice)
{
case1:
initical_name(T,size);
rank(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<<">>>>>>>>>>>>>>>>>>>>>>>>>>>谢谢使用,祝您愉快!
再见!
<<<<<<<<<<<<<<<<<<<<<<<<<<"<exit(0);
break;
default:
cout<<"Caution:
您的输入有误,请重新进行选择!
"<break;
}
}
while(choice!
=0);
return;
}
voidrank(TEAMarray[],intsize)//联赛排序方法函数
{
//cout<<"执行排序函数1"<TEAMtemp;
//cout<<"执行排序函数2"<//cout<<"执行排序函数3"<intL=0,k=0;
for(k=0;k{
//ifstreamfin("lsjf.txt");
//fin>>
if(array[k].name!
="0")L++;
}
inti=0,j=0;
for(i=0;i{
for(j=0;j{
if(array[j].score>array[j+1].score){}
elseif(array[j].score{
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
//cout<<"执行排序函数a"<}
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<<"执行排序函数b"<}
//积分与净胜球数均相同时,进球数多者在前
elseif((array[j].ball_win-array[j].ball_lose)==(array[j+1].ball_win-array[j+1].ball_lose))
{
if(array[j].ball_win>array[j+1].ball_win){}
//比较进球数多少
elseif(array[j].ball_win{
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
//cout<<"执行排序函数c"<}
elseif(array[j].ball_win=array[j+1].ball_win){}
}
}
}
}
return;
}
voidprint_af_rank(TEAMarray[],intsize)//显示排名后的各队数据
{
intn;
cout<<"________________________________________________________________________"<cout<<"当前各队积分排名"<cout<<"名次\t队名\t赛\t胜\t平\t负\t进\t失\t净\t积分"<for(n=0;n{
if(array[n].name!
="0")
{
cout<<"第"<}
}
cout<<"________________________________________________________________________"<return;
}
voidrewrite_data(TEAMTeam[],intsize)//最近一轮比赛结束后主客队数据更新
{
intm;
intht_num,at_num,ht_ball_win,at_ball_win;
cout<<"________________________________________________________________________"<cout<<"参赛球队代码:
"<for(m=0;m{
if(Team[m].name!
="0")cout<<""<}
cout<<"________________________________________________________________________"<cout<<">>>请选择主队代码:
__";
cin>>ht_num;
cout<cout<<">>>请选择客队代码:
__";
cin>>at_num;
cout<Team[ht_num-1].race_num++;//主队比赛总场数默认+1
Team[at_num-1].race_num++;//客队比赛总场数默认+1
cout<<">>>请输入主队"<<"“"<__";
cin>>ht_ball_win;
cout<Team[ht_num-1].ball_win+=ht_ball_win;
Team[at_num-1].ball_lose+=ht_ball_win;
cout<<">>>请输入客队"<<"“"<__";
cin>>at_ball_win;
cout<Team[at_num-1].ball_win+=at_ball_win;
Team[ht_num-1].ball_lose+=at_ball_win;
if(ht_ball_win>at_ball_win)
{
Team[ht_num-1].win_num++;
Team[at_num-1].lose_num++;
Team[ht_num-1].score=3*Team[ht_num-1].win_num+1*Team[ht_num-1].peace_num;
}
elseif(ht_ball_win{
Team[at_num-1].win_num++;
Team[ht_num-1].lose_num++;
Team[at_num-1].score=3*Team[at_num-1].win_num+1*Team[at_num-1].peace_num;
}
elseif(ht_ball_win==at_ball_win)
{
Team[at_num-1].peace_num++;
Team[ht_num-1].peace_num++;
Team[at_num-1].score+=1;
Team[at_num-1].score+=1;
}
return;
}
intmain()
{
TEAMteam[18];
cout<cout<cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<cout<<"★☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆★"<cout<<"★☆☆★"<cout<<"★☆☆★"<cout<<"★☆☆★"<cout<<"★☆联赛积分应用系统☆★"<cout<<"★☆☆★"<cout<<"★☆☆★"<cout<<"★☆☆★"<cout<<"★☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆★"<cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<cout<cout<<"->->->->->->->->->->->->->->WELCOME<-<-<-<-<-<-<-<-<-<-<-<-<-"<cout<project(team,18);
return0;
}
7.程序实现