📄 union.h
字号:
#ifndef _Union_h_
#define _Union_h_
#include<iostream>
#include<fstream>
#include<string>
#include "club.h"
#include "player.h"
using namespace std;
class Union
{
club Clubs[39];
player players[1024];
int cnum;
int plnum;
public:
Union();
void club_disp(); // 输出
void player_disp();
void player_search(string &str); // 搜索
void club_search(string &str);
int getcnum(){return cnum;} // 获得球队个数
int getplnum(){ return plnum; } // 球员
player getplayer(int k)
{
if((k<=plnum)&&(k>=1))
return players[k];
// else
// return 0;
}
// 球员资格审查
bool exam(player &pl);
//球队资格审查
bool clubexam(club &b);
//谈判
void treaty(club &buyer, club &seller, player &pl );
club getclub(int tmp);
club *getcb()
{
return Clubs;
}
int Min(int a, int b)
{
if(a<b) return a;
else return b;
}
int Max(int a, int b)
{
if(a>b) return a;
else return b;
}
};
bool Union::clubexam(club &b)
{
int sum=0;
int subsum=0;
for(int i=1;i<=plnum;i++)
{
if(players[i].get_club()==b.getname())
{
sum++;
if(players[i].getnation()!="England")
{
subsum++;
}
}
}
if((subsum+1)/(sum+1)<0.4)
return 1;
else
return 0;
}
club Union::getclub(int tmp)
{
if((tmp>=1)&&(tmp<=38))
return Clubs[tmp];
else
{
cout<<"没有这个队!!!"<<endl;
// return 0;
}
}
void Union::treaty(club &buyer, club &seller,player &pl)
{
int buyprice[8];int sellprice[8];
buyprice[0]=pl.getvalue();
sellprice[0]=pl.getvalue();
int time=1;
do
{
switch (seller.getsellgame())
{
case 1: sellprice[time]=buyprice[time-1];break;
case 2: sellprice[time]=sellprice[0];
case 3: sellprice[time]=Min(sellprice[time-1]-100000,0.7*sellprice[0]);break;
case 4: sellprice[time]=Min(sellprice[time-1]*0.9,0.7*sellprice[0]);break;
case 5: sellprice[time]=Min(sellprice[time-1]-0.3*(sellprice[time-1]-buyprice[time-1]),0.7*sellprice[0]);break;
default: cout<<endl;
}
switch (buyer.getbuygame())
{
case 1: buyprice[time]=sellprice[time-1];break;
case 2: buyprice[time]=buyprice[0];
case 3: buyprice[time]=Max(buyprice[time-1]+100000,0.8*buyprice[0]);break;
case 4: buyprice[time]=Max(buyprice[time-1]*1.1, 0.8*buyprice[0]);break;
case 5: buyprice[time]=Max(buyprice[time-1]+0.4*(sellprice[time-1]-buyprice[time-1]),0.8*buyprice[0]);break;
default: cout<<endl;
}
time++;
}while((time<=7)&&(buyprice[time]<sellprice[time]));
if((buyprice[time]>=sellprice[time])&&(time<=7)&&(buyprice[time]<=buyer.getbalance()*buyer.getpolicy()))
{
cout<<"交易成功!!!!\n"<<"交易价格为: "<<buyprice[time]<<endl;
buyer.set_balance(buyer.getbalance()-buyprice[time]);
seller.set_balance(seller.getbalance()+ buyprice[time]);
}
else cout<<"交易失败!!!!"<<endl;
}
bool Union::exam(player &pl)
{
if(pl.getransf==0) return 0;
else
{
for(int t=1;t<cnum;t++)
{
if((Clubs[t].getname()==pl.get_club())&&(Clubs[t].getnation()=="England"))
{
int sum=0;int deff=0;
for(int f=1;f<=plnum;f++)
{
if(players[f].get_club()==pl.get_club())
{
sum++;
if(players[f].getnation()!="England")
deff++;
}
}
if((deff+1)/(sum+1)>=0.4)
return 0;
else return 1;
}
}
return 1;
}
}
void Union::club_search(string &str)
{
for(int t=1;t<cnum;t++)
Clubs[t].content=Clubs[t].club_search(str);
}
void Union::player_search(string &str)
{
for(int t=1;t<plnum;t++)
players[t].content=players[t].player_search(str);
}
Union::Union():plnum(0),cnum(0)
{
//读入俱乐部数据
string line;
cnum=0;
fstream file("E:\\study\\c++\\大实验\\5_Data_031218\\Data_031218\\club\\club.csv",ios_base::in);
while( getline(file,line,'\n'))
{
line=line+",";
if(cnum>=1)
{
string temp;
int j=0;
for(int i=0;i<line.size();i++)
{
if(line[i]!=',')
temp=temp+line[i];
else if(line[i]==',')
{
j++;
switch(j)
{
case 1: Clubs[cnum].set_name(temp);
case 2: Clubs[cnum].set_nation(temp);
case 3: Clubs[cnum].set_balance(atoi(temp.c_str()));
case 4: Clubs[cnum].set_financepolicy(atof(temp.c_str()));
case 5: Clubs[cnum].set_buy(atoi(temp.c_str()));
case 6: Clubs[cnum].set_sell(atoi(temp.c_str()));
}
temp="";
}
}
}
cnum++;
}
// 读入球员数据
string pline[39]={"0","EN_arsenal.csv","EN_aston Villa.csv","EN_birmingham City.csv",
"EN_Blackburn rovers.csv","EN_Bolton Wanderers.csv","EN_Charlton Athletic.csv",
"EN_chelsea.csv","EN_Everton.csv","EN_Fulham.csv" , "EN_Leeds United.csv" ,
"EN_Liverpool.csv" , "EN_Manchester City.csv","EN_Manchester United.csv", "EN_Middlesbrough.csv",
"EN_Newcastle United.csv","EN_Southampton.csv","EN_Sunderland.csv","EN_Tottenham Hotspur.csv",
"EN_West Bromwich Albion.csv","EN_West Ham United.csv","IT_AC Milan.csv", "IT_Atalanta.csv",
"IT_Bologna.csv","IT_Brescia.csv","IT_Chievo Verona.csv","IT_Como.csv","IT_Empoli.csv",
"IT_Internazionale.csv", "IT_Jeventus.csv","IT_Lazio.csv","IT_Modena.csv","IT_Parma.csv",
"IT_Perugia.csv","IT_Piacenza.csv","IT_Reggina.csv","IT_Roma.csv","IT_Torino.csv",
"IT_Udinese.csv"};
//
string pass="E:\\study\\c++\\大实验\\5_Data_031218\\Data_031218\\english premier division\\";
for(int filenum=1;filenum<39;filenum++)
{
string cline;
int pnum=0;
fstream in((pass+pline[filenum]).c_str(),ios_base::in);
while (getline(in,cline))
{
cline+="," ;
if(pnum>0)
{
plnum++;
string ttemp;
int j=0;
for( int i=0;i<cline.size();i++)
{
if(cline[i]!=',')
ttemp=ttemp+cline[i];
else if(cline[i]==',')
{
j++;
switch(j)
{
case 1 : players[plnum].set_name(ttemp) ;
case 2 : players[plnum].set_nation(ttemp) ;
case 3 : players[plnum].set_club(ttemp) ;
case 4 : players[plnum].set_birth (ttemp) ;
case 5 : players[plnum].set_position (ttemp) ;
case 6 : players[plnum].set_age(atoi(ttemp.c_str())) ;
case 7 : players[plnum].set_ability (atoi(ttemp.c_str())) ;
case 8 : players[plnum].set_value (atol(ttemp.c_str())) ;
case 9 : players[plnum].set_caps (atoi(ttemp.c_str()));
case 10: players[plnum].set_wage (atoi(ttemp.c_str())) ;
case 11: players[plnum].set_tran (atoi (ttemp.c_str())) ;
case 12: players[plnum].set_pace(atoi(ttemp.c_str()));
case 13: players[plnum].set_strength(atoi(ttemp.c_str()));
case 14: players[plnum].set_stamina(atoi(ttemp.c_str()));
case 15: players[plnum].set_fin (atoi(ttemp.c_str())) ;
case 16: players[plnum].set_handling (atoi(ttemp.c_str())) ;
case 17: players[plnum].set_heading (atoi(ttemp.c_str())) ;
case 18: players[plnum].set_passing (atoi(ttemp.c_str())) ;
case 29: players[plnum].set_tackl(atoi(ttemp.c_str())) ;
case 20: players[plnum].set_teamwork(atoi(ttemp.c_str())) ;
case 21: players[plnum].set_tech(atoi(ttemp.c_str()));
}
ttemp="";
}
}
}
pnum++;
}
}
}
void Union::club_disp()
{
for(int k=1;k<cnum;k++)
{
if(Clubs[k].content==1)
{
cout<<k<<endl;
Clubs[k].show();
Clubs[k].content=0;
}
}
}
void Union::player_disp()
{
for(int d=1;d<=plnum;d++)
if(players[d].content==1)
{
cout<<d<<endl;
players[d].show();
players[d].content=0;
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -