⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 union.h

📁 足球俱乐部游戏的管理软件 能够完成交易等
💻 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 + -