Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Programming Assignment 1 In this project, you will write a program that helps a

ID: 3803306 • Letter: P

Question

Programming Assignment 1

In this project, you will write a program that helps a player select players in Fantasy Premier League game. You have £100 to get 15 players, distributed as follows:

£10 to get 2 goal keepers

£25 to get 5 defenders

£35 to get 5 midfielders

£30 to get 3 forwards

You will develop the following classes:

Player class: It is an abstract base class and has as private data fields

string name;

string team;

string position;

double price;

int ptsPrevSeason;

As regular public methods, the getters and setters of each private data field

An abstract function selectPlayer defined as follows

virtual vector<Player*> selectPlayer(vector<Player*> players)=0;

Goalkeeper class:

This is a derived class of class Player

It overrides selectPlayer method to select the designed players for goalkeeper position

It defines the budget for goalkeepers as static const

Defender class:

This is a derived class of class Player

It overrides selectPlayer method to select the designed players for defender position

It defines the budget for defender as static const

Midfielder class:

This is a derived class of class Player

This is a derived class of class Player

It overrides selectPlayer method to select the designed players for midfielder position

It defines the budget for midfielder as static const

Forward class:

This is a derived class of class Player

It overrides selectPlayer method to select the designed players for forward position

It defines the budget for forward as static const

You are given in “Players.txt” the list of player names, teams, positions, price and points in previous season. You have to parse this file to populate the vectors of players of type goalkeeper, defender, midfielder and forward.

When overriding selectPlayer method at each derived class, you must count the available budget for that position and substract the amount of money you spent for previous players taking into consideration that you can select exactly only 2 goalkeepers, 5 defenders, 5 midfielders and 3 forwards.

You are given some handouts of sample code to read from/write to a file and to insert to/ delete from vectors.

Write the final squad choice into file “Squad.txt” as follows:

*****************************

The selected Goalies are:

*****************************

Hugo Lloris (Spurs)

Heurelho Gomes (Watford)

*****************************

The selected Defenders are:

*****************************

Kyle Walker (Man City)

Daley Blind (Man Utd)

Hector Bellerin (Arsenal)

Alberto Moreno (Liverpool)

Seamus Coleman (Everton)

*****************************

The selected Midfielders are:

*****************************

Dimitri Payet (West Ham)

Oscar (Chlesea)

Sadio Mane (Liverpool)

Anthony Martial (Man Utd)

Christian Eriksen (Spurs)

*****************************

The selected Forwards are:

*****************************

Sergio Aguero (Man City)

Jermain Defoe (Sunderland)

Harry Kane (Spurs)

Deliverable: Zipped File of your Project Folder that contains all your C++ files. You may work in pairs on this project.

Explanation / Answer

//Program

#include <iostream>
#include <fstream>

using namespace std;

class Player //It is an abstract base class
{
private:
   string name;
   string team;
   string position;
   double price;
   int ptsPrevSeason;
public: //the getters and setters of each private data field
void setName(string n)
{
   name=n;
   }
   string getName()
{
   return name;
   }
   void setTeam(string t)
{
   team=t;
   }
   string getTeam()
{
   return team;
   }
   void setPosition(string p)
{
   position=p;
   }
   string getPosition()
{
   return position;
   }
   void setPrice(double p)
{
   price=p;
   }
   double getPrice()
{
   return price;
   }
   void setPtsPrevSeason(int p)
   {
       ptsPrevSeason=p;
   }
   int getPtsPrevSeason()
   {
       return ptsPrevSeason;
   }
  
//An abstract function selectPlayer
virtual vector<Player*> selectPlayer(vector<Player*> players)=0;
};
//derived class of class Player
class Goalkeeper : public Player
{
   //It defines the budget for goalkeepers as static const
   static budgetForGoalKeepers=10; //£10 to get 2 goal keepers
   //It overrides selectPlayer method to select the designed players for goalkeeper position
   vector<Player*> selectPlayer(vector<Player*> players)
   {
      
   }
};

//derived class of class Player
class Defender : public Player
{
   //It defines the budget for defenders as static const
   static budgetForDefender=25; //£25 to get 5 defenders
   //It overrides selectPlayer method to select the designed players for defender position
   vector<Player*> selectPlayer(vector<Player*> players)
   {
      
   }
};

//derived class of class Player
class Midfielder : public Player
{
   
    //It defines the budget for midfielders as static const
   static budgetForMidfielders=35; //£35 to get 5 midfielders
   //It overrides selectPlayer method to select the designed players for midfielders position
   vector<Player*> selectPlayer(vector<Player*> players)
   {
      
   }
};
//This is a derived class of class Player
class Forward : public Player
{
  
    //It defines the budget for forward as static const
   static budgetForForwards=30; //£30 to get 3 forwards
   //It overrides selectPlayer method to select the designed players for forward position
   vector<Player*> selectPlayer(vector<Player*> players)
   {
      
   }
};


int main()
{
   /*“Players.txt” the list of player names, teams, positions, price and points in previous season. */
   ifstream infile("Players.txt");
   if(!infile)
   {
      cout<<"Please provide input file Players.txt";
      exit(0);
   }
   //vectors of players of type goalkeeper, defender, midfielder and forward.
     
   vector<Goalkeeper> goalkeeper( 20, Goalkeeper() );
   vector<Defender> defender( 20, Defender() );
   vector<Midfielder> midfielder( 20, Midfielder() );
   vector<Forward> forward( 20, Forward() );
   //parse the Players.txt file to populate the vectors
   string name;
   string team;
   string position;
   double price;
   int ptsPrevSeason;
   while(!infile.eof())
   {
      infile>>name>>team>>position>>price>>ptsPrevSeason;
      if(position.compare("Goalkeeper")==0)
      {
      Goalkeeper gk(name,team,position,price,ptsPrevSeason);
      goalkeeper.push_back(gk);
   }
   else if(position.compare("Defender")==0)
      {
      Defender df(name,team,position,price,ptsPrevSeason);
      defender.push_back(df);
   }
   if(position.compare("Midfielder")==0)
      {
      Midfielder mf(name,team,position,price,ptsPrevSeason);
      Midfielder.push_back(mf);
   }
   if(position.compare("Forward")==0)
      {
      Forward ff(name,team,position,price,ptsPrevSeason);
      Forward.push_back(ff);
   }
   }