0

ok after somet time im now ready into breaking my code apart into 4 class Sports,NBA,NFL,MLB,

here is the original code

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

// definition of strct that will hold all information of match
struct Match
{
string Season;
string Team1;
string Team2;
string Result;
};

// Display the main menu on screen
void DisplayMainMenu()
{
cout<<"1- Please eneter team name"<<endl;
cout<<"2- View last record"<<endl;
cout<<"3- Exit program"<<endl;
cout<<"Please select number"<<endl;
}

//Search within array of matches and display the results
void SearchMatches(Match* matches,int size,string TeamName)
{
//declare the result array
Match SearchResult[2000];
//initalize the result counter
int SearchResultCount=0;

int SelectedNumber;

//search within the matches array
for(int i=0;i<size;i++)
{
//check if the entered name is the team1 or team2 in the match
if(matches[i].Team1==TeamName || matches[i].Team2==TeamName)
{
//update the search result counter
SearchResultCount++;
//display the seasons
cout<<endl<<"("<<SearchResultCount<<") "<<matches[i].Season;
//store the matched match in the search result array
SearchResult[SearchResultCount] = matches[i];
}
}
cout<<endl;

//check for results
if(SearchResultCount>0)

{


cout << "which year would you like to view results "<<endl;
cin>>SelectedNumber;

SelectedNumber;

ofstream myfile;
myfile.open("recallTeam.txt",ios::app);
myfile << endl << SelectedNumber;
myfile.close();

//display the match information
cout<<SearchResult[SelectedNumber].Season<<endl;
cout<<SearchResult[SelectedNumber].Team1<<endl;
cout<<"Over"<<endl;
cout<<SearchResult[SelectedNumber].Team2<<endl;
cout<<SearchResult[SelectedNumber].Result<<endl;
}
else cout<<"No search result";
cout<<endl;
}
void SearchMatches(Match* matches,int size,string TeamName, int record)
{
//declare the result array
Match SearchResult;
//initalize the result counter
int SearchResultCount=0;

//int SelectedNumber;

//search within the matches array
for(int i=0;i<size;i++)
{
//check if the entered name is the team1 or team2 in the match
if(matches[i].Team1==TeamName || matches[i].Team2==TeamName)
{
//update the search result counter
SearchResultCount++;
if (SearchResultCount == record)
{
//store the
//display the seasons
//cout<<endl<<"("<<SearchResultCount<<") "<<matches[i].Season;

//store the matched match in the search result array
SearchResult = matches[i];
break;
}
}
}
cout<<endl;

//check for results
if(SearchResultCount>0)
{
//display the match information
cout<<SearchResult.Season<<endl;
cout<<SearchResult.Team1<<endl;
cout<<"Over"<<endl;
cout<<SearchResult.Team2<<endl;
cout<<SearchResult.Result<<endl;
}
else cout<<"No search result";
cout<<endl;
}

// This function is used for storing the last search keyword entered to the recallteam.txt
void WriteLastSearchWord(string word)
{
ofstream myfile;
myfile.open("recallTeam.txt");
myfile <<word;
myfile.close();
}
// This function is used for read the last search keyword enter from the recallteam.txt
void ReadLastSearchWord(string &team, int &record)
{
ifstream inFile("recallTeam.txt");
getline(inFile, team);
inFile >> record;
inFile.close();
}


int main()
{
//initailze the matches ( array of strcuts )
Match matches[2000];

// create input stream to nba.txt file
ifstream inFile("nfl.txt");

//It will holds the read lines from the file
string Buffer;

// check if the file is exist
if(!inFile.is_open())
{
//display the error message
cout<<"Failed to open file"<<endl;
return 0;
}

// initalize the counter
int matchesCounter=0;
while(!inFile.eof())
{
//read season
getline(inFile,Buffer);
matches[matchesCounter].Season = Buffer;
//read team1 name
getline(inFile,Buffer);
matches[matchesCounter].Team1 = Buffer;
//read the "over" string
getline(inFile,Buffer);
//read team2 name
getline(inFile,Buffer);
matches[matchesCounter].Team2 = Buffer;
//read result
getline(inFile,Buffer);
matches[matchesCounter].Result = Buffer;
//read the empty line
getline(inFile,Buffer);
//update the matches counter
matchesCounter++;
}


//its used for Main menu selection
char Check='1';

while(Check !='3')
{
//Display the main menu
DisplayMainMenu();
cin>>Check;

switch(Check)
{
//Search
case '1':
{
string TeamName="";
getline(cin,TeamName);//users input
getline(cin,TeamName);//free buffer
WriteLastSearchWord(TeamName);
SearchMatches(matches,matchesCounter,TeamName);
break;
}
//Display the last search team
case '2':
{
string team;
int record;
ReadLastSearchWord(team, record);
SearchMatches(matches,matchesCounter ,team , record);

break;
}
//Exit the program
case '3':
{
exit(0);
}
default:continue;

}
}
}

now i have broken it to where that parent class will be the Sports class
and the other 3 classes will drive from Sports the only problem is how i wrote my program and the problem is with the opening and closing of the file i defined in the runSportsSearch function i made .
i made these functions in my Sports.h

struct Match
{
string Season;
string Team1;
string Team2;
string Result;
};
void SearchMatches(Match* matches,int size,string TeamName);
virtual void SearchMatches(Match* matches,int size,string TeamName, int record);
int runSportsSearch();
voidWriteLastSearchWord(string word);
void ReadLastSearchWord(std::string &team, int &record);
setTextName();
Sports();

i defined them like this :

void sports::WriteLastSearchWord(string word)
{
ofstream myfile;
myfile.open(solo);
myfile << word;
myfile.close();
}

void Sports::ReadLastSearchWord(std::string &team, int &record)
{
ifstream inFile(solo);
getline(inFile, team);
inFile >> record;
inFile.close();
}
void Sports::setTextName(char *name3)
{
solo = name3 ;// sets variable name for one text file

}
void Sports::SearchMatches(Match *matches, int size, std::string TeamName, int record)
{
//this fuction is to overload the Searchmatches to store data of last team entered

//declare the result array
Match SearchResult;
//initalize the result counter
int SearchResultCount=0;

//int SelectedNumber;

//search within the matches array
for(int i=0;i<size;i++)
{
//check if the entered name is the team1 or team2 in the match
if(matches[i].Team1==TeamName || matches[i].Team2==TeamName)
{
//update the search result counter
SearchResultCount++;
if (SearchResultCount == record)
{
//store the
//display the seasons
//cout<<endl<<"("<<SearchResultCount<<") "<<matches[i].Season;

//store the matched match in the search result array
SearchResult = matches[i];
break;
}
}
}
cout<<endl;

//check for results
if(SearchResultCount>0)
{
//display the match information
cout << SearchResult.Season << endl;
cout <<SearchResult.Team1 << endl;
cout <<"Over"<<endl;
cout << SearchResult.Team2 << endl;
cout << SearchResult.Result << endl;
}
else cout<<"No search result";
cout<<endl;
}
void Sports::SearchMatches(Match *matches, int size, std::string TeamName)
{


//declare the result array
Match SearchResult[2000];
//initalize the result counter
int SearchResultCount=0;

int SelectedNumber;

//search within the matches array
for(int i=0;i<size;i++)
{
//check if the entered name is the team1 or team2 in the match
if(matches[i].Team1==TeamName || matches[i].Team2==TeamName)
{
//update the search result counter
SearchResultCount++;
//display the seasons
cout<<endl<<"("<< SearchResultCount << ") "<<matches[i].Season;
//store the matched match in the search result array
SearchResult[SearchResultCount] = matches[i];
}
}
cout << endl;

//check for results
if(SearchResultCount>0)

{


cout << "which year would you like to view results "<<endl;
cin >> SelectedNumber;

SelectedNumber;

ofstream myfile;
myfile.open("recallTeam.txt",ios::app);
myfile << endl << SelectedNumber;
myfile.close();

//display the match information
cout << SearchResult[SelectedNumber].Season<< endl;
cout << SearchResult[SelectedNumber].Team1 << endl;
cout << "Over" << endl;
cout << SearchResult[SelectedNumber].Team2 << endl;
cout << SearchResult[SelectedNumber].Result << endl;
}
else cout << "No results found ";
cout << endl;
}
Sports::int runSportsSearch()
{
{
ifstream inFile("nfl.txt");//want to remove file nfl.txt
//so the user
can make a selection to what file they want open (such as nfl.txt,mlb.txt
//or nba.txt
//initailze the matches ( array of strcuts )
Match matches[2000];

// create input stream to nba.txt file


//It will holds the read lines from the file
string Buffer;

// check if the file is exist
if(!inFile.is_open())
{
//display the error message
cout<<"Failed to open file"<<endl;
return 0;
}

// initalize the counter
int matchesCounter=0;
while(!inFile.eof())
{
//read season
getline(inFile,Buffer);
matches[matchesCounter].Season = Buffer;
//read team1 name
getline(inFile,Buffer);
matches[matchesCounter].Team1 = Buffer;
//read the "over" string
getline(inFile,Buffer);
//read team2 name
getline(inFile,Buffer);
matches[matchesCounter].Team2 = Buffer;
//read result
getline(inFile,Buffer);
matches[matchesCounter].Result = Buffer;
//read the empty line
getline(inFile,Buffer);
//update the matches counter
matchesCounter++;
}


//its used for Main menu selection
char Check='1';

while(Check !='3')
{
//Display the main menu
DisplayMainMenu();
cin>>Check;

switch(Check)
{
//Search
case '1':
{
string TeamName="";

getline(cin,TeamName);
system("cls");
cout << "Please Enter Team City And Team Name" <<endl;
getline(cin,TeamName);//free's buffer
WriteLastSearchWord(TeamName);
SearchMatches(matches,matchesCounter,TeamName);
break;
}
//Display the last search team
case '2':
{
string team;
int record;
ReadLastSearchWord(team, record);
system("cls");
cout << "Last Recorded Viewed" <<endl;
SearchMatches(matches,matchesCounter ,team , record);

break;
}
//Exit the program
case '3':
{
exit(0);
}
default:continue;

}
}
}

my problem is how can i store a variable to hold a temporary value in the inFile until the user prompts which text will be sent from 1 of the other 3 classes to inFile i made coments to where file is ..i only have one problem which is inFile is an undeclared variable ..the other classes will all call the same functions from the sports class the only difference will be what file they open

1
Contributor
1
Reply
2
Views
8 Years
Discussion Span
Last Post by shadowfire36
0

sorry i left something out of the class reposting correctly
struct Match
{
string Season;
string Team1;
string Team2;
string Result;
};
class Sports
{
public:
void SearchMatches(Match* matches,int size,string TeamName);
virtual void SearchMatches(Match* matches,int size,string TeamName, int record);
int runSportsSearch();
voidWriteLastSearchWord(string word);
void ReadLastSearchWord(std::string &team, int &record);
setTextName();
Sports();
}

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.