足球联赛积分排名系统
#include<iostream>
#include<fstream> //包含文件流头文件
#include<string> //包含字符串头文件
#include<vector> //包含向量容器头文件
#include<iomanip> //包含操纵符setw的头文件
#include<algorithm> //包含算法的头文件
using namespace std;
//足球类的定义及实现
class Football
{
int teamID; //定义队伍编号
string name; //定义队伍名字
int scores; //定义积分
int all; //定义场数
int wins; //定义赢场数
int losts; //定义输场数
int equals; //定义平场数
int goalBalls; //定义进球数
int lostBalls; //定义失球数
public:
Football()//无参构造函数(对函数进行初始化)
{ teamID=0;
name = "";
all=0;
wins = 0 ;
losts = 0 ;
equals = 0 ;
goalBalls = 0 ;
lostBalls=0;
scores = 0 ;
}
//有参构造函数
Football( int id,string n,int a, int w , int l , int d , int gb , int lb,int s)
{
teamID=id; //队伍编号
name = n; //队名
all=a; //比赛场数
wins = w ; //赢场数
losts = l; //输场数
equals = d ; //平场数
goalBalls = gb ; //进球数
lostBalls = lb; //失球数
scores = s; //积分
}
//以下是各个属性的设置/获取方法(成员函数)
void setTeamID(int teamID )
{
this->teamID=teamID; //this指针变量
}
void setName(string name)
{
this->name = name;
}
string getName()
{
return name;
}
int getTeamID()
{
return teamID;
}
int getScores()
{
return scores;
}
int getWins()
{
return wins;
}
int getLosts()
{
return losts;
}
int getEquals()
{
return equals;
}
int getGoalBalls()
{
return goalBalls;
}
int getLostBalls()
{
return lostBalls;
}
int getAll()
{
return all;
}
//设置结果,更新对象的比赛场数,赢场,输场,平场,进球,失球,得分等信息
void setResult(int n1,int n2)
{ all++;
goalBalls += n1 ;
lostBalls += n2;
if( n1 > n2 ) //如果进球数大于失球数
{
scores += 3; //该队积分加3
wins ++; //赢场数加1
}
else if(n1 == n2 ) //如果进球数等于失球数
{
scores ++; //该队积分加1
equals ++; //平场数加1
}
else //如果进球数小于失球数
{
losts += 1; //输场数加1
}
}
//下面是对大于和小于号的重载
//为以后调用sort方法做准备
bool operator>(Football &f) //函数类型 operator 运算符(形参表)
{
if( this ->scores > f.getScores())
return true;
if( scores == f.getScores())
{
if( (goalBalls- lostBalls) > (f.getGoalBalls() - f.getLostBalls() ))
return true; //在两队积分相等情况下比较净胜球
else if( goalBalls > f.getGoalBalls())
return true; //当两队净胜球也相同时比较进球数
}
return false;
}
bool operator<(Football &f)
{
if( this ->scores < f.getScores())
return true;
if( scores == f.getScores())
{
if( (goalBalls- lostBalls) < (f.getGoalBalls() - f.getLostBalls() ))
return true;
else if( goalBalls <f.getGoalBalls())
return true;
}
return false;
}
};
//主函数部分
void menu()
{
cout<<"*********************************************"<<endl;
cout<<"+++++++操作菜单+++++++"<<endl;
cout<<"=====1.录入比分,显示排名"<<endl;
cout<<"=====2.显示记录"<<endl;
cout<<"=====3.退出"<<endl;
cout<<"*********************************************"<<endl;
}
//**********录入比分并排序显示函数
void lurubifen()
{
vector<Football> fbList;
{
//=======输出它们的信息
//控制域宽
cout<<setw(10)<<"队名"<<setw(6)<<"场数"<<setw(6)<<"赢场"
<<setw(6)<<"输场"<<setw(6)<<"平场"<<setw(6)<<"进球"
<<setw(6)<<"失球"<<setw(6)<<"积分"<<endl<<endl;
//输出信息
for(int i = 0 ; i < fbList.size(); i ++ )
{
Football f =fbList.at(i);
cout<<setw(10)<<f.getName()<<setw(6)<<f.getAll()<<setw(6)<<f.getWins()<<setw(6)<<f.getLosts()<<setw(6)<<f.getEquals()<<setw(6)<<f.getGoalBalls()
<<setw(6)<<f.getLostBalls()<<setw(6)<<f.getScores()<<endl<<endl;
}
}
char d='y';
while(d=='y')
{
string name1,name2;//定义主队名客队名
int goalBalls1,goalBalls2;//定义主队进球数 客队进球数
cout<<"========请输入最近一轮比赛的结果======="<<endl;
cout<<"****请输入主队名:";
cin>>name1;
cout<<"****请输入客队名:";
cin>>name2;
cout<<"***请输入主队进球数:";
cin>>goalBalls1;
cout<<"***请输入客队进球数:";
cin>>goalBalls2;
//如果是数组是空的,即文件中没有任何的信息
if(fbList.size() == 0 )
{
Football f;//主队
f.setTeamID(fbList.size() + 1 );
f.setName(name1);
f.setResult(goalBalls1,goalBalls2);//调用成员函数更新信息
fbList.push_back(f);//添加到向量尾部
Football f2;//客队
f2.setTeamID(fbList.size() +1 );
f2.setName(name2);
f2.setResult(goalBalls2,goalBalls1);
fbList.push_back(f2);
}
else{
for(int i = 0 ; i < fbList.size() ; i ++ )
{
//如果数组中已经有了该队伍
if(fbList.at(i).getName() == name1 )
{
fbList.at(i).setResult(goalBalls1,goalBalls2);
break;
}
else if(i == (fbList.size() - 1 ))
{
//如果没有该队伍,则新建一个Football对象
//对它进行一些初始化以后就把它保存在fbList数组中
Football f;
f.setTeamID(fbList.size() + 1 );
f.setName(name1);
f.setResult(goalBalls1,goalBalls2);
fbList.push_back(f);
break;
}
}
for(i = 0 ; i < fbList.size() ; i ++)
{
if(fbList.at(i).getName() == name2)
{ //调用设置结果函数
fbList.at(i).setResult(goalBalls2,goalBalls1);
break;
}
else if(i == (fbList.size() - 1) )
{ Football f;
f.setTeamID(fbList.size() + 1 );
f.setName(name2);
f.setResult(goalBalls2,goalBalls1);
fbList.push_back(f);
break;
}
}
}
//排序部分
sort(fbList.begin(),fbList.end());
vector<Football> team(fbList.size());
reverse_copy(fbList.begin(),fbList.end(),team.begin());
cout<<"**********************现在的排名是*************************"<<endl<<endl<<endl;
cout<<setw(10)<<"队名"<<setw(6)<<"场数"
<<setw(6)<<"赢场"<<setw(6)<<"输场"
<<setw(6)<<"平场"<<setw(6)<<"进球"
<<setw(6)<<"失球"<<setw(6)<<"积分"
<<endl<<endl;
//******************将数组中的信息保存在文件中
ofstream os("dat.txt",ios_base::out);
for(int i = 0 ; i < team.size() ; i ++ )
{
Football f = team.at(i);
cout<<setw(10)<<f.getName()<<setw(6)<<f.getAll()
<<setw(6)<<f.getWins()<<setw(6)<<f.getLosts()
<<setw(6)<<f.getEquals()<<setw(6)<<f.getGoalBalls()
<<setw(6)<<f.getLostBalls()<<setw(6)<<f.getScores()
<<endl<<endl;
os<<setw(5)<<f.getTeamID()
<<setw(10)<<f.getName()
<<setw(6)<<f.getAll()
<<setw(6)<<f.getWins()
<<setw(6)<<f.getLosts()
<<setw(6)<<f.getEquals()
<<setw(6)<<f.getGoalBalls()
<<setw(6)<<f.getLostBalls()
<<setw(6)<<f.getScores()
<<endl;
}
system("pause");
cout<<"************是否继续?(y/n)";
cin>>d;
}
}
//显示记录函数
int jilu()
{
{
int choice;
ifstream is("dat.txt",ios_base::in);//创建一个输入文件流对象
if(!is.good())//判断文件是否存在
{
cout<<"文件不存在!"<<endl;
return 1;
}
//将文件中的内容保存在fbList数组中
vector<Football> fbList;//构造一个用于存储足球类对象的向量容器
while( is.good() )
{
int num=0;
string name;
int scores;
int all;
int wins;
int losts;
int equals;
int goalBalls;
int lostBalls;
//读取数据
is>>num>>name>>all>>wins>>losts>>equals>>goalBalls>>lostBalls>>scores;
if(num != 0 )
{
//将元素添加在向量尾部
fbList.push_back(Football(num,name,all++,wins,losts,equals,goalBalls,lostBalls,scores));
}
}
is.close();
//排序部分
sort(fbList.begin(),fbList.end());
vector<Football> team(fbList.size());//声明另一向量容器
reverse_copy(fbList.begin(),fbList.end(),team.begin());
//=======输出它们的信息
//控制域宽
cout<<setw(10)<<"队名"
<<setw(6)<<"场数"
<<setw(6)<<"赢场"
足球联赛积分排名系统-排名
3星 · 超过75%的资源 需积分: 50 147 浏览量
2010-11-16
15:11:43
上传
评论 6
收藏 3KB RAR 举报
zr384050293
- 粉丝: 1
- 资源: 3
最新资源
- 校园帮项目,毕业设计/课程设计/javaWeb/SSM
- C++ plotting library,matplotlib-cpp-master.zip
- 案例源码matplotlib-examples-master.zip
- 基于JavaScript 实现的KMP 算法
- 基于C++实现二叉树的创建,遍历,添加,查找与删除
- 基于C语言实现二叉树的基本操作
- 毕业设计基于STM32的测量温度与压力的数据处理设计C语言完整源码+论文.zip
- 基于MATLAB的PCA算法人脸识别项目源码+GUI界面+说明文档.zip
- 基于STM32的测量温度与压力的数据处理设计源码+论文(毕业设计).zip
- Vision Transformer 网络对不同氨气氧气浓度轨迹RAS 图像数据集的分类,包含训练权重和数据集、迁移学习
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈