Professional Documents
Culture Documents
#include<iostream>
#include<fstream>
#include<string>
#include<vector>
#include<iomanip>
void ShowMainMenuScreen();
struct stClient
string AccountNumber;
string PinCode;
string Name;
string Phone;
double AccountBalance = 0;
};
vector<string> vString;
short pos = 0;
if (sWord != "")
vString.push_back(sWord);
if (S1 != "")
return vString;
stClient Client;
vector<string> vClientData;
Client.AccountNumber = vClientData[0];
Client.PinCode = vClientData[1];
Client.Name = vClientData[2];
Client.Phone = vClientData[3];
return Client;
fstream MyFile;
if (MyFile.is_open())
string Line;
stClient Client;
Client = ConvertLinetoRecord(Line);
vClients.push_back(Client);
MyFile.close();
return vClients;
if (C.AccountNumber == AccountNumber)
Client = C;
return true;
}
return false;
getline(cin, Client.Name);
getline(cin, Client.Phone);
return Client;
stClientRecord += to_string(Client.AccountBalance);
return stClientRecord;
cout << "| " << setw(15) << left << Client.AccountNumber;
cout << "| " << setw(10) << left << Client.PinCode;
cout << "| " << setw(40) << left << Client.Name;
cout << "| " << setw(12) << left << Client.Phone;
cout << "| " << setw(12) << left << Client.AccountBalance;
cout << "\n\t\t\t\t\tClient List (" << vClients.size() << ") Client(s).";
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";
PrintClientRecord(Client);
}
void AddDataLineToFile(string FileName, string stDataLine)
fstream MyFile;
if (MyFile.is_open())
MyFile.close();
string ReadClientAccountNumber()
return AccountNumber;
while(TryAgain == 'Y')
Client = ReadNewClient(Client);
AddDataLineToFile(ClientsFileName, ConvertRecordToLine(Client));
TryAgain = 'N';
else
cout << "Client With Account Number [" << Client.AccountNumber <<
do
system("cls");
AddNewClient(Client);
cout << "\nClient Added Successfully, do you want to add more clients? Y/N? ";
if (C.AccountNumber == AccountNumber)
C.MarkForDelete = true;
return true;
return false;
fstream MyFile;
string DataLine;
if (MyFile.is_open())
if (C.MarkForDelete == false)
//we only write records that are not marked for delete.
DataLine = ConvertRecordToLine(C);
MyFile.close();
return vClients;
stClient Client;
PrintClientCard(Client);
cout << "\n\nAre you sure you want delete this client? y/n ? ";
MarkClientForDeleteByAccountNumber(AccountNumber, vClients);
vClients = LoadClientsDataFromFile(ClientsFileName);
return true;
else
{
cout << "\nClient with Account Number (" << AccountNumber << ") is Not
Found!";
return false;
stClient Client;
Client.AccountNumber = AccountNumber;
getline(cin, Client.Name);
getline(cin, Client.Phone);
return Client;
stClient Client;
PrintClientCard(Client);
cout << "\n\nAre you sure you want update this client? y/n ? ";
cin >> Answer;
if (C.AccountNumber == AccountNumber)
C = ChangeClientRecord(AccountNumber);
break;
SaveCleintsDataToFile(ClientsFileName, vClients);
return true;
else
cout << "\nClient with Account Number (" << AccountNumber << ") is Not
Found!";
return false;
switch (Choise)
case 1:
{
system("cls");
PrintAllClientsData(vClients);
cout << "Press Any Key To Go Back To The Main Menu Screen...\n";
system("pause>0");
ShowMainMenuScreen();
break;
case 2:
system("cls");
stClient Client;
do
Client.AccountNumber = ReadClientAccountNumber();
if (!FindClientByAccountNumber(Client.AccountNumber, vClients,
Client))
AddClients(Client);
cout << "Press Any Key To Go Back To The Main Menu Screen...\
n";
system("pause>0");
ShowMainMenuScreen();
else
break;
case 3:
system("cls");
stClient Client;
DeleteClientByAccountNumber(AccountNumber, vClients);
cout << "Press Any Key To Go Back To The Main Menu Screen...\n";
system("pause>0");
ShowMainMenuScreen();
else
cout << "Press Any Key To Go Back To The Main Menu Screen...\n";
system("pause>0");
ShowMainMenuScreen();
break;
case 4:
system("cls");
stClient Client;
UpdateClientByAccountNumber(AccountNumber, vClients);
cout << "Press Any Key To Go Back To The Main Menu Screen...\n";
system("pause>0");
ShowMainMenuScreen();
else
cout << "Press Any Key To Go Back To The Main Menu Screen...\n";
system("pause>0");
ShowMainMenuScreen();
break;
case 5:
system("cls");
stClient Client;
ClientAccount = ReadClientAccountNumber();
PrintClientCard(Client);
cout << "\n\nPress Any Key To Go Back To The Main Menu Screen...\n";
system("pause>0");
ShowMainMenuScreen();
else
cout << "Press Any Key To Go Back To The Main Menu Screen...\n";
system("pause>0");
ShowMainMenuScreen();
break;
default:
system("cls");
break;
void ShowMainMenuScreen()
short Choise = 0;
system("cls");
cout << "Please Enter What You Want To Do? [1-6]? ";
GoTo(Choise);
int main()
ShowMainMenuScreen();
return 0;
Code2:
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <iomanip>
struct sClient
string AccountNumber;
string PinCode;
string Name;
string Phone;
double AccountBalance;
};
vector<string> vString;
short pos = 0;
if (sWord != "")
vString.push_back(sWord);
S1.erase(0, pos + Delim.length()); /* erase() until positon and move to next word. */
}
if (S1 != "")
return vString;
sClient Client;
vector<string> vClientData;
Client.AccountNumber = vClientData[0];
Client.PinCode = vClientData[1];
Client.Name = vClientData[2];
Client.Phone = vClientData[3];
return Client;
stClientRecord += to_string(Client.AccountBalance);
return stClientRecord;
fstream MyFile;
if (MyFile.is_open())
string Line;
sClient Client;
Client = ConvertLinetoRecord(Line);
if (Client.AccountNumber == AccountNumber)
MyFile.close();
return true;
vClients.push_back(Client);
}
MyFile.close();
return false;
sClient ReadNewClient()
sClient Client;
cout << "\nClient with [" << Client.AccountNumber << "] already exists, Enter another
Account Number? ";
getline(cin, Client.PinCode);
getline(cin, Client.Name);
return Client;
fstream MyFile;
if (MyFile.is_open())
string Line;
sClient Client;
Client = ConvertLinetoRecord(Line);
vClients.push_back(Client);
MyFile.close();
return vClients;
}
void PrintClientRecordLine(sClient Client)
cout << "| " << setw(15) << left << Client.AccountNumber;
cout << "| " << setw(10) << left << Client.PinCode;
cout << "| " << setw(40) << left << Client.Name;
cout << "| " << setw(12) << left << Client.Phone;
cout << "| " << setw(12) << left << Client.AccountBalance;
void ShowAllClientsScreen()
cout << "\n\t\t\t\t\tClient List (" << vClients.size() << ") Client(s).";
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";
if (vClients.size() == 0)
else
for (sClient Client : vClients)
PrintClientRecordLine(Client);
{
if (C.AccountNumber == AccountNumber)
Client = C;
return true;
return false;
sClient Client;
Client.AccountNumber = AccountNumber;
getline(cin, Client.Name);
getline(cin, Client.Phone);
return Client;
}
bool MarkClientForDeleteByAccountNumber(string AccountNumber, vector <sClient>& vClients)
if (C.AccountNumber == AccountNumber)
C.MarkForDelete = true;
return true;
return false;
fstream MyFile;
MyFile.open(FileName, ios::out);//overwrite
string DataLine;
if (MyFile.is_open())
{
if (C.MarkForDelete == false)
//we only write records that are not marked for delete.
DataLine = ConvertRecordToLine(C);
MyFile.close();
return vClients;
fstream MyFile;
if (MyFile.is_open())
MyFile.close();
}
void AddNewClient()
sClient Client;
Client = ReadNewClient();
AddDataLineToFile(ClientsFileName, ConvertRecordToLine(Client));
void AddNewClients()
do
//system("cls");
AddNewClient();
cout << "\nClient Added Successfully, do you want to add more clients? Y/N? ";
sClient Client;
PrintClientCard(Client);
cout << "\n\nAre you sure you want delete this client? y/n ? ";
MarkClientForDeleteByAccountNumber(AccountNumber, vClients);
SaveCleintsDataToFile(ClientsFileName, vClients);
//Refresh Clients
vClients = LoadCleintsDataFromFile(ClientsFileName);
return true;
else
cout << "\nClient with Account Number (" << AccountNumber << ") is Not Found!";
return false;
{
sClient Client;
PrintClientCard(Client);
cout << "\n\nAre you sure you want update this client? y/n ? ";
if (C.AccountNumber == AccountNumber)
C = ChangeClientRecord(AccountNumber);
break;
SaveCleintsDataToFile(ClientsFileName, vClients);
return true;
else
{
cout << "\nClient with Account Number (" << AccountNumber << ") is Not Found!";
return false;
string ReadClientAccountNumber()
return AccountNumber;
void ShowDeleteClientScreen()
DeleteClientByAccountNumber(AccountNumber, vClients);
void ShowUpdateClientScreen()
{
cout << "\n-----------------------------------\n";
UpdateClientByAccountNumber(AccountNumber, vClients);
void ShowAddNewClientsScreen()
AddNewClients();
void ShowFindClientScreen()
sClient Client;
else
cout << "\nClient with Account Number[" << AccountNumber << "] is not found!";
void ShowEndScreen()
enum enMainMenueOptions
eListClients = 1, eAddNewClient = 2,
eDeleteClient = 3, eUpdateClient = 4,
eFindClient = 5, eExit = 6
};
void GoBackToMainMenue()
system("pause>0");
ShowMainMenue();
short ReadMainMenueOption()
{
cout << "Choose what do you want to do? [1 to 6]? ";
short Choice = 0;
return Choice;
switch (MainMenueOption)
case enMainMenueOptions::eListClients:
system("cls");
ShowAllClientsScreen();
GoBackToMainMenue();
break;
case enMainMenueOptions::eAddNewClient:
system("cls");
ShowAddNewClientsScreen();
GoBackToMainMenue();
break;
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");
PerfromMainMenueOption((enMainMenueOptions)ReadMainMenueOption());
int main()
ShowMainMenue();
system("pause>0");
return 0;