// bank Account header
#include <iostream>
using namespace std;
class BankAccount
{
public:
BankAccount();
BankAccount(char *name, int AccountNumber, double balance);
BankAccount(BankAccount©);
void Deposit(double AMT);
double Balance1();
virtual void WithDraw(double AMT);
virtual void ViewAccount();
virtual ~BankAccount();
private:
char *name;
int AccountNumber;
double Balance;
};
// bank Account cpp header
BankAccount::BankAccount()
{
}
BankAccount::BankAccount(char *name, int AccountNumber, double balance)
{
int i = 0;
while (name[i] != '\0')
{
this->name[i] = name[i];
}
this->name[i] = '\0';
this->AccountNumber = AccountNumber;
this->Balance = balance;
}
BankAccount::BankAccount(BankAccount©)
{
int i = 0;
while (name[i] != '\0')
{
this->name[i] = copy.name[i];
}
this->AccountNumber = copy.AccountNumber;
this->Balance = copy.Balance;
}
void BankAccount::Deposit(double AMT)
{
if (AMT < 0)
{
cout << "Invalid or negative amount. Payment canceled " << endl;
}
else
Balance += AMT;
}
void BankAccount::WithDraw(double AMT)
{
if (AMT < 0)
{
cout << "Invalid or negative amount. Payment canceled " << endl;
}
else if (AMT <= Balance)
{
Balance -= AMT;
}
else
{
cout << "There are not enough funds in your account " << endl;
}
}
void BankAccount::ViewAccount()
{
cout << "name: " << name << endl;
cout << "balance: " << Balance << endl;
cout << "AccountNumber: " << AccountNumber << endl;
}
double BankAccount::Balance1()
{
return Balance;
}
BankAccount::~BankAccount()
{
delete[] name;
}
using namespace std;
class BankAccountPlus:public BankAccount
{
private:
double MaxLoan;
double Rate;
double OwesBank;
public:
BankAccountPlus();
BankAccountPlus(char *name, int AccountNumber, double Balance, double MaxLoan, double Rate);
BankAccountPlus(const BankAccount&Balance1, double MaxLoan, double Rate);
BankAccountPlus(BankAccountPlus©);
virtual void ViewAccount();
virtual void WithDraw(double AMT);
virtual ~BankAccountPlus();
void StartLoan(double Maxloan1);
void StartRate(double Rate1);
void StartOwes();
};
BankAccountPlus::BankAccountPlus()
{
}
BankAccountPlus::BankAccountPlus(char *name, int AccountNumber, double Balance, double MaxLoan, double Rate) :BankAccount(name, AccountNumber, Balance)
{
MaxLoan = MaxLoan;
OwesBank = 0;
Rate = Rate;
}
BankAccountPlus::BankAccountPlus(const BankAccount&Balance1, double MaxLoan, double Rate)
{
this->MaxLoan = MaxLoan;
this->Rate = Rate;
this->OwesBank = 0;
}
BankAccountPlus::BankAccountPlus(BankAccountPlus©)
{
this->MaxLoan = copy.MaxLoan;
this->Rate = copy.Rate;
this->OwesBank = copy.OwesBank;
}
void BankAccountPlus::ViewAccount()
{
BankAccount::ViewAccount(); // przywolywanie elementow z klasy bazowej
cout << " Max debit is: " << MaxLoan << " PLN " << endl;
cout << " Liabilities to the bank " << OwesBank << endl;
cout << " Interest rate " << 100 * Rate << endl;
}
void BankAccountPlus::WithDraw(double AMT)
{
double balance = Balance1();
if (AMT < balance)
{
BankAccount::WithDraw(AMT);
}
else if (AMT <= balance + MaxLoan - OwesBank)
{
double more = AMT - balance;
OwesBank += more*(1 + Rate);
cout << " Real Loan: " << more << endl;
cout << " interest: " << more*Rate << " zl" << endl;
Deposit(more);
BankAccount::WithDraw(AMT);
}
else
{
cout << " Your limit is overrated. Operation canceled " << endl;
}
}
BankAccountPlus::~BankAccountPlus()
{
}
// MAIN
#include <iostream>
#include <istream>
const int clients = 4;
using namespace std;
int main()
{
char Name[50];
int AccountNumber, choice;
double Balance;
BankAccount *P_Clients[clients];
for (int i = 0; i < clients; i++)
{
cout << "Enter Basic Informations - including: Name, Account Number and Balance " << endl;
system("cls");
cout << "Name" << endl;
cin >> Name;
cout << "AccountNumber" << endl;
cin >> AccountNumber;
cout << "Balance " << endl;
cin >> Balance;
cout << " Which acccount would you choose ? If you press 1 - Standrad Account If you press 2- LoAccount" << endl;
cin >> choice;
if (choice == 1)
{
P_Clients[i] = new BankAccount(Name, AccountNumber, Balance);
}
else if (choice == 2)
{
double Loan, RatePlus;
cout << " eneter value of your max debit " << endl;
cin >> Loan;
cout << " enter interest rate | decimal format like: xx.zzz " << endl;
cin >> RatePlus;
P_Clients[i] = new BankAccountPlus(Name, AccountNumber, Balance, Loan, RatePlus);
}
cout << endl;
}
cout << "Show a member of bank." << endl;
for (int i = 0; i<clients; i++)
{
P_Clients[i]->ViewAccount(); // wskazanie na informacje o danym czlonku ( w zaleznosci od wyboru konta za pomoca -> ) // uzycie metody virtuanej
cout << endl;
}
for (int i = 0; i < clients; i++)
{
delete[] P_Clients[i]; // zwalanianie pamieci
}
return 0;
}