C++课程设计足球联赛积分.docx
- 文档编号:5026353
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:15
- 大小:484.10KB
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.程序实现
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 足球联赛 积分