Solution
Solution
#include <fstream>
#include <string>
#include <vector>
#include <iomanip>
void ShowMainMenue();
struct sClient
{
string AccountNumber;
string PinCode;
string Name;
string Phone;
double AccountBalance;
bool MarkForDelete = false;
};
if (S1 != "")
{
vString.push_back(S1); // it adds last word of the string.
}
return vString;
Client.AccountNumber = vClientData[0];
Client.PinCode = vClientData[1];
Client.Name = vClientData[2];
Client.Phone = vClientData[3];
Client.AccountBalance = stod(vClientData[4]);//cast string to double
return Client;
}
if (MyFile.is_open())
{
string Line;
sClient Client;
MyFile.close();
}
return false;
}
sClient ReadNewClient()
{
sClient Client;
cout << "Enter Account Number? ";
return Client;
}
if (MyFile.is_open())
{
string Line;
sClient Client;
void ShowAllClientsScreen()
{
vector <sClient> vClients = LoadCleintsDataFromFile(ClientsFileName);
cout << "\n\t\t\t\t\tClient List (" << vClients.size() << ") Client(s).";
cout << "\n_______________________________________________________";
cout << "_________________________________________\n" << endl;
cout << "| " << left << setw(15) << "Accout Number";
cout << "| " << left << setw(10) << "Pin Code";
cout << "| " << left << setw(40) << "Client Name";
cout << "| " << left << setw(12) << "Phone";
cout << "| " << left << setw(12) << "Balance";
cout << "\n_______________________________________________________";
cout << "_________________________________________\n" << endl;
if (vClients.size() == 0)
cout << "\t\t\t\tNo Clients Available In the System!";
else
PrintClientRecordLine(Client);
cout << endl;
}
if (C.AccountNumber == AccountNumber)
{
Client = C;
return true;
}
}
return false;
}
Client.AccountNumber = AccountNumber;
if (C.AccountNumber == AccountNumber)
{
C.MarkForDelete = true;
return true;
}
return false;
}
string DataLine;
if (MyFile.is_open())
{
for (sClient C : vClients)
{
if (C.MarkForDelete == false)
{
//we only write records that are not marked for delete.
DataLine = ConvertRecordToLine(C);
MyFile << DataLine << endl;
}
MyFile.close();
}
return vClients;
}
if (MyFile.is_open())
{
MyFile.close();
}
}
void AddNewClient()
{
sClient Client;
Client = ReadNewClient();
AddDataLineToFile(ClientsFileName, ConvertRecordToLine(Client));
}
void AddNewClients()
{
char AddMore = 'Y';
do
{
//system("cls");
cout << "Adding New Client:\n\n";
AddNewClient();
cout << "\nClient Added Successfully, do you want to add more clients? Y/N?
";
cin >> AddMore;
PrintClientCard(Client);
cout << "\n\nAre you sure you want delete this client? y/n ? ";
cin >> Answer;
if (Answer == 'y' || Answer == 'Y')
{
MarkClientForDeleteByAccountNumber(AccountNumber, vClients);
SaveCleintsDataToFile(ClientsFileName, vClients);
//Refresh Clients
vClients = LoadCleintsDataFromFile(ClientsFileName);
}
else
{
cout << "\nClient with Account Number (" << AccountNumber << ") is Not
Found!";
return false;
}
}
sClient Client;
char Answer = 'n';
PrintClientCard(Client);
cout << "\n\nAre you sure you want update this client? y/n ? ";
cin >> Answer;
if (Answer == 'y' || Answer == 'Y')
{
for (sClient& C : vClients)
{
if (C.AccountNumber == AccountNumber)
{
C = ChangeClientRecord(AccountNumber);
break;
}
}
SaveCleintsDataToFile(ClientsFileName, vClients);
}
else
{
cout << "\nClient with Account Number (" << AccountNumber << ") is Not
Found!";
return false;
}
}
string ReadClientAccountNumber()
{
string AccountNumber = "";
void ShowDeleteClientScreen()
{
cout << "\n-----------------------------------\n";
cout << "\tDelete Client Screen";
cout << "\n-----------------------------------\n";
vector <sClient> vClients = LoadCleintsDataFromFile(ClientsFileName);
string AccountNumber = ReadClientAccountNumber();
DeleteClientByAccountNumber(AccountNumber, vClients);
}
void ShowUpdateClientScreen()
{
cout << "\n-----------------------------------\n";
cout << "\tUpdate Client Info Screen";
cout << "\n-----------------------------------\n";
void ShowAddNewClientsScreen()
{
cout << "\n-----------------------------------\n";
cout << "\tAdd New Clients Screen";
cout << "\n-----------------------------------\n";
AddNewClients();
}
void ShowFindClientScreen()
{
cout << "\n-----------------------------------\n";
cout << "\tFind Client Screen";
cout << "\n-----------------------------------\n";
void ShowEndScreen()
{
cout << "\n-----------------------------------\n";
cout << "\tProgram Ends :-)";
cout << "\n-----------------------------------\n";
}
enum enMainMenueOptions
{
eListClients = 1, eAddNewClient = 2,
eDeleteClient = 3, eUpdateClient = 4,
eFindClient = 5, eExit = 6
};
void GoBackToMainMenue()
{
cout << "\n\nPress any key to go back to Main Menue...";
system("pause>0");
ShowMainMenue();
short ReadMainMenueOption()
{
cout << "Choose what do you want to do? [1 to 6]? ";
short Choice = 0;
cin >> Choice;
return Choice;
}
case enMainMenueOptions::eDeleteClient:
system("cls");
ShowDeleteClientScreen();
GoBackToMainMenue();
break;
case enMainMenueOptions::eUpdateClient:
system("cls");
ShowUpdateClientScreen();
GoBackToMainMenue();
break;
case enMainMenueOptions::eFindClient:
system("cls");
ShowFindClientScreen();
GoBackToMainMenue();
break;
case enMainMenueOptions::eExit:
system("cls");
ShowEndScreen();
break;
}
}
void ShowMainMenue()
{
system("cls");
cout << "===========================================\n";
cout << "\t\tMain Menue Screen\n";
cout << "===========================================\n";
cout << "\t[1] Show Client List.\n";
cout << "\t[2] Add New Client.\n";
cout << "\t[3] Delete Client.\n";
cout << "\t[4] Update Client Info.\n";
cout << "\t[5] Find Client.\n";
cout << "\t[6] Exit.\n";
cout << "===========================================\n";
PerfromMainMenueOption((enMainMenueOptions)ReadMainMenueOption());
}
int main()
{
ShowMainMenue();
system("pause>0");
return 0;
}