Hey everyone, I have to take some code and make my a linked list using the accounts class. would i simply have to replace the list class with a struct???? here is my code....
//Assignment #6 due 2-8-2010
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
//global declarations
typedef char Name_t[15];
typedef fstream Infile_t;
typedef fstream Outfile_t;
typedef char Filename_t[50];
//*********************************************************************************************************
//classes
class cAccount
{
private:
int accountID;
Name_t accountName;//(last,first)
float accountBal;
public:
cAccount();
int get_accountID(int &accountID)
{ accountID=this->accountID; return accountID;};
void read(Infile_t &Infile);
void print(Outfile_t &Outfile);
void display();
};//end of cAccount
class cAccountList
{
private:
static const int MAXARRAYSIZE=51;
int counter;
typedef cAccount AccountArray[MAXARRAYSIZE];
AccountArray AccountList;
public:
cAccountList();
void load_data(Infile_t &Infile);
void print_to_outfile(Outfile_t &Outfile);
void print_to_screen();
void sort_by_ID();
bool search();
};//end of cAccountList
//*********************************************************************************************************
//class cAccount functions
cAccount::cAccount()
{
accountID=0;
accountBal=0;
};//default constructor
void cAccount::read(Infile_t &Infile)
{ Infile>>accountID>>accountName>>accountBal; };
//end of cAccount::Read
void cAccount::print(Outfile_t &Outfile)
{
Outfile<<" "<<accountID<<" "<<accountName<<" $"<<accountBal<<endl;
Outfile<<"_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_"<<endl;
};//end of print
void cAccount::display()
{
cout<<" "<<accountID<<" "<<accountName<<" $"<<accountBal<<endl;
cout<<"***********************************************************"<<endl;
};//end of display
//*********************************************************************************************************
//class cAccountList functions
cAccountList::cAccountList()
{ counter=0; };//default constructors
void cAccountList::load_data(Infile_t &Infile)
{
Filename_t Filename;
cout<<"BEGINING PROCESS......."<<endl<<endl;
cout<<"Please enter the name of the datafile to be used:"<<endl;
cin>>Filename;
Infile.open(Filename,ios::in);
AccountList[counter].read(Infile);
while(!Infile.eof())
{
counter=counter+1;
AccountList[counter].read(Infile);
}//end while
Infile.close();
cout<<"Datafile read....SUCCESS!"<<endl;
};//end of read_data
void cAccountList::print_to_outfile(Outfile_t &Outfile)
{
Filename_t Filename;
cout<<"Please enter the name of the output file:"<<endl;
cin>>Filename;
Outfile.open(Filename,ios::out);
Outfile<<"*************************************************************************"<<endl;
Outfile<<" "<<"ACCOUNT_ID#"<<" "<<"ACCOUNT_NAME"<<" "<<"ACCOUNT_BALANCE"<<endl;
Outfile<<"*************************************************************************"<<endl<<endl;
for(int I=0; I<counter; I++)
{
AccountList[I].print(Outfile);
}//end for
Outfile.close();
cout<<"Outfile write...SUCCESS!"<<endl<<endl;
};//end print_to_outfile
void cAccountList::print_to_screen()
{
int choice;
cout<<"Would you like to preview your output file? (Y/N)"<<endl;
cout<<"Enter '1' for yes or '2' for no"<<endl;
cin>>choice;
if(choice == 1)
{
cout<<"Generating preview of output....."<<endl<<endl;
cout<<"********************************************************************"<<endl;
cout<<" "<<"ACCOUNT_ID#"<<" "<<"ACCOUNT_NAME"<<" "<<"ACCOUNT_BALANCE"<<endl;
cout<<"********************************************************************"<<endl<<endl;
for(int I=0; I<counter; I++)
{
AccountList[I].display();
}//end for
}//end if
else
{ cout<<"Very well...MOVING TO NEXT PROCESS"<<endl;}
};//end print_to_screen
void cAccountList::sort_by_ID()
{
int I,Pass;
int accountID;
AccountArray temp;
for(Pass=1; Pass<counter-1; Pass++)
{
for(I=0; I<counter-1; I++)
{
if(AccountList[I].get_accountID(accountID) > AccountList[I+1].get_accountID(accountID))
{
temp[I]=AccountList[I];
AccountList[I]=AccountList[I+1];
AccountList[I+1]=temp[I];
}//end if
}//end inside for
}//end outside for
};//end sort_by_ID
bool cAccountList::search()
{
bool Found=false;
int I=0;
int accountID;
int searchID=0;
Name_t searchName;
Name_t accountName;
int choice;
cout<<"Would you like to search for a record at this time? (Y/N)"<<endl;
cout<<"Enter '1' for yes or '2' for no"<<endl;
cin>>choice;
while(choice==1)
{
cout<<"Please enter the 5 digit ID number:"<<endl;
cout<<"If the record is not found you will be asked if you would like another search."<<endl;
cin>>searchID;
while((!Found)&&(I<counter))
{
if(AccountList[I].get_accountID(accountID)!=searchID)
{ I=I+1;}//end if
else if (AccountList[I].get_accountID(accountID)==searchID)
{ Found=true;
cout<<"**************************************************************"<<endl;
cout<<" "<<"ACCOUNT_ID#"<<" "<<"ACCOUNT_NAME"<<" "<<"ACCOUNT_BALANCE"<<endl;
cout<<"**************************************************************"<<endl<<endl;
AccountList[I].display();
}//end else if
}//end interior while
Found=false;
choice=0;
searchID=0;
I=0;
cout<<"Would you like to search for another record? (Y/N)"<<endl;
cout<<"Enter '1' for yes or '2' for no"<<endl;
cin>>choice;
}//end while
cout<<"Very Well...GOODBYE!"<<endl<<endl;
return Found;
};//end search
//*********************************************************************************************************
//*********************************************************************************************************
//prototypes
bool search(List_t List, cAccount theaccount, Addr_t &Pred);
void Delete(List_t &List, Addr_t &start, Addr_t pred);
void remove(List_t &List, Addr_t &start, cAccount theaccount);
//main
int main()
{
Infile_t Infile;
Outfile_t Outfile;
cAccountList ACCOUNT;
ACCOUNT.load_data(Infile);
ACCOUNT.sort_by_ID();
ACCOUNT.print_to_outfile(Outfile);
ACCOUNT.print_to_screen();
ACCOUNT.search();
return 0;
}//end main
//*********************************************************************************************************
bool search(List_t List, cAccount theaccount, Addr_t &Pred)
{
Addr_t current;
bool Found;
bool Done;
Done=false;
current=start;
while(!Done)&&(current!=NIL));
{
if(List[current].account.comparenameto(theaccount)<0)
{
Pred=current;
current=List[current].Link;
}
else if(List[current.account.comparenameto(theaccount)>0)
{
Done=true;
Found=false;
}
else
{
Done=true;
Found=true;
theaccount=List[current].account;
}//end of if
}//end of while
return Found;
};//end search
//*********************************************************************************************************
void Delete(List_t &List, Addr_t &start, Addr_t pred)
{
Addr_t current;
if(Pred!=NIL)
{
List[Pred].link=List[current].link;
}
else
{
start=List[current].link;
}//end if
}//end of delete
//*********************************************************************************************************
void remove(List_t &List, Addr_t &start, cAccount theaccount)//contains the target
{
Addr_t current;
bool Found;
Addr_t Pred;
Found=Search(List,Start,theaccount,pred);
if(Found)
{
Delete(List,Start,Pred)
}
return Found;
};//end remove
//*********************************************************************************************************