0% found this document useful (0 votes)
8 views6 pages

clsBankClient H

it's library im c++ that can create a project for bank system easier

Uploaded by

y.yahiaoui.inf
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views6 pages

clsBankClient H

it's library im c++ that can create a project for bank system easier

Uploaded by

y.yahiaoui.inf
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 6

#pragma once

#include <iostream>
#include <string>
#include "clsPerson.h"
#include "clsString.h"
#include <vector>
#include <fstream>

using namespace std;


class clsBankClient : public clsPerson
{
private:

enum enMode { EmptyMode = 0, UpdateMode = 1, AddNewMode = 2 };


enMode _Mode;
string _AccountNumber;
string _PinCode;
float _AccountBalance;

static clsBankClient _ConvertLinetoClientObject(string Line, string Seperator =


"#//#")
{
vector<string> vClientData;
vClientData = clsString::Split(Line, Seperator);

return clsBankClient(enMode::UpdateMode, vClientData[0], vClientData[1],


vClientData[2],
vClientData[3], vClientData[4], vClientData[5], stod(vClientData[6]));

static string _ConverClientObjectToLine(clsBankClient Client, string Seperator


= "#//#")
{

string stClientRecord = "";


stClientRecord += Client.FirstName + Seperator;
stClientRecord += Client.LastName + Seperator;
stClientRecord += Client.Email + Seperator;
stClientRecord += Client.Phone + Seperator;
stClientRecord += Client.AccountNumber() + Seperator;
stClientRecord += Client.PinCode + Seperator;
stClientRecord += to_string(Client.AccountBalance);

return stClientRecord;

static vector <clsBankClient> _LoadClientsDataFromFile()


{

vector <clsBankClient> vClients;

fstream MyFile;
MyFile.open("Clients.txt", ios::in);//read Mode

if (MyFile.is_open())
{
string Line;

while (getline(MyFile, Line))


{

clsBankClient Client = _ConvertLinetoClientObject(Line);

vClients.push_back(Client);
}

MyFile.close();

return vClients;

static void _SaveCleintsDataToFile(vector <clsBankClient> vClients)


{

fstream MyFile;
MyFile.open("Clients.txt", ios::out);//overwrite

string DataLine;

if (MyFile.is_open())
{

for (clsBankClient C : vClients)


{
DataLine = _ConverClientObjectToLine(C);
MyFile << DataLine << endl;

MyFile.close();

void _Update()
{
vector <clsBankClient> _vClients;
_vClients = _LoadClientsDataFromFile();

for (clsBankClient& C : _vClients)


{
if (C.AccountNumber() == AccountNumber())
{
C = *this;
break;
}

}
_SaveCleintsDataToFile(_vClients);

void _AddNew()
{

_AddDataLineToFile(_ConverClientObjectToLine(*this));
}

void _AddDataLineToFile(string stDataLine)


{
fstream MyFile;
MyFile.open("Clients.txt", ios::out | ios::app);

if (MyFile.is_open())
{

MyFile << stDataLine << endl;

MyFile.close();
}

static clsBankClient _GetEmptyClientObject()


{
return clsBankClient(enMode::EmptyMode, "", "", "", "", "", "", 0);
}

public:

clsBankClient(enMode Mode, string FirstName, string LastName,


string Email, string Phone, string AccountNumber, string PinCode,
float AccountBalance) :
clsPerson(FirstName, LastName, Email, Phone)

{
_Mode = Mode;
_AccountNumber = AccountNumber;
_PinCode = PinCode;
_AccountBalance = AccountBalance;

bool IsEmpty()
{
return (_Mode == enMode::EmptyMode);
}

string AccountNumber()
{
return _AccountNumber;
}

void SetPinCode(string PinCode)


{
_PinCode = PinCode;
}

string GetPinCode()
{
return _PinCode;
}
__declspec(property(get = GetPinCode, put = SetPinCode)) string PinCode;

void SetAccountBalance(float AccountBalance)


{
_AccountBalance = AccountBalance;
}

float GetAccountBalance()
{
return _AccountBalance;
}
__declspec(property(get = GetAccountBalance, put = SetAccountBalance)) float
AccountBalance;

void Print()
{
cout << "\nClient Card:";
cout << "\n___________________";
cout << "\nFirstName : " << FirstName;
cout << "\nLastName : " << LastName;
cout << "\nFull Name : " << FullName();
cout << "\nEmail : " << Email;
cout << "\nPhone : " << Phone;
cout << "\nAcc. Number : " << _AccountNumber;
cout << "\nPassword : " << _PinCode;
cout << "\nBalance : " << _AccountBalance;
cout << "\n___________________\n";

static clsBankClient Find(string AccountNumber)


{

fstream MyFile;
MyFile.open("Clients.txt", ios::in);//read Mode

if (MyFile.is_open())
{
string Line;
while (getline(MyFile, Line))
{
clsBankClient Client = _ConvertLinetoClientObject(Line);
if (Client.AccountNumber() == AccountNumber)
{
MyFile.close();
return Client;
}

MyFile.close();
}

return _GetEmptyClientObject();
}

static clsBankClient Find(string AccountNumber, string PinCode)


{

fstream MyFile;
MyFile.open("Clients.txt", ios::in);//read Mode

if (MyFile.is_open())
{
string Line;
while (getline(MyFile, Line))
{
clsBankClient Client = _ConvertLinetoClientObject(Line);
if (Client.AccountNumber() == AccountNumber && Client.PinCode ==
PinCode)
{
MyFile.close();
return Client;
}

MyFile.close();

}
return _GetEmptyClientObject();
}

enum enSaveResults { svFaildEmptyObject = 0, svSucceeded = 1,


svFaildAccountNumberExists = 2 };

enSaveResults Save()
{

switch (_Mode)
{
case enMode::EmptyMode:
{
if (IsEmpty())
{

return enSaveResults::svFaildEmptyObject;

case enMode::UpdateMode:
{
_Update();

return enSaveResults::svSucceeded;

break;
}

case enMode::AddNewMode:
{
//This will add new record to file or database
if (clsBankClient::IsClientExist(_AccountNumber))
{
return enSaveResults::svFaildAccountNumberExists;
}
else
{
_AddNew();

//We need to set the mode to update after add new


_Mode = enMode::UpdateMode;
return enSaveResults::svSucceeded;
}

break;
}
}

static bool IsClientExist(string AccountNumber)


{

clsBankClient Client1 = clsBankClient::Find(AccountNumber);


return (!Client1.IsEmpty());
}

static clsBankClient GetAddNewClientObject(string AccountNumber)


{
return clsBankClient(enMode::AddNewMode, "", "", "", "", AccountNumber, "",
0);
}

};

You might also like