Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Please write c++ program that meet all the requirements based on below instructi

ID: 3709865 • Letter: P

Question

Please write c++ program that meet all the requirements based on below instructions. Please type the same inputs as are in the screenshot to see if you got the same outputs. thanks

This homework assignment gives you the opportunity to practice inheritance. You have the option to submit the basic version (you can earn up to 100 points out of 100) or the extra credit version (you can earn up to 110 points out of 100). Please state clearly in the comments header of main.cpp which version you submit. Basic Version (graded out of 100) Your program should implement the following: 1. Account class Account has the following member variables: private: accountNumber of type int ownerName of type string protected: numberAccounts of type static int, initialized to zerdo

Explanation / Answer

Account.cpp

/*Account.cpp*/
#include<iostream>
#include<string.h>
using namespace std;

Account.h

/*Account.h*/
#include"Account.cpp"
class Account
{
private:
  int accountNumber;
  char *ownerName;
protected:
  double balance;
  static int numberAccount;
public:
  //static int numberAccount;
  Account(char *ownerName_,double balance_)
  {
   cout<<" Process in Account Class ";
   numberAccount++;
   accountNumber=balance_;
   strcpy(ownerName,ownerName_);
   accountNumber=numberAccount+1000;
  }
  virtual void withdraw(int amount)
  {
   this->balance-=amount;
  }
  void deposit(int amount)
  {
   this->balance+=amount;  
  }
  int getAccountNumber()
  {
   return accountNumber;
  }
  int getBalance()
  {
   return balance;
  }
  char *getOwnerName()
  {
   return ownerName;
  }
  static int getnumberAccount()
  {
   return numberAccount;
  }
  virtual void print()
  {
   cout<<" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
   cout<<" ---------------------------------------";
   cout<<" ACCOUNT DETAIL ";
   cout<<" ---------------------------------------";
   cout<<" Owner:"<<this->ownerName<<endl;
   cout<<" Account Number:"<<this->accountNumber<<endl;
   cout<<" Balance:Rs."<<this->balance<<endl;
   cout<<" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  }
};

RegularAccount.h

/*RegularAccount.h*/
class RegularAccount:public Account
{
private:
  static int numberRegularAccount;
public:
  //static int numberRegularAccount;
  RegularAccount(char *name,double amount):Account(name,amount)
  {
   numberRegularAccount++;
  }
  static int getNumberRegularAccount()
  {
   return numberRegularAccount;
  }
  void print()
  {
   cout<<" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
   cout<<" ---------------------------------------";
   cout<<" REGULAR ACCOUNT ";
   cout<<" ---------------------------------------";
   cout<<" Owner:"<<this->getOwnerName()<<endl;
   cout<<" Account Number:"<<this->getAccountNumber()<<endl;
   cout<<" Balance: $"<<this->balance<<endl;
   cout<<" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  }
};

PremiumAccount.h

/*PremiumAccount.h*/
class PremiumAccount:public Account
{
private:
  static int numberPremiumAccount;
  static double MIN_BALANCE;
public:
  //static int numberPremiumAccount;
  //static double MIN_BALANCE;
  PremiumAccount(char *name,double amount):Account(name,amount)
  {
   cout<<" Process in Premium Amount ";
   numberPremiumAccount++;
  }
  static int getNumberPremiumAccount()
  {
   return numberPremiumAccount;
  }
  void withdraw(int amount)
  {
   this->balance-=amount;
  }
  static double getMinBalance()
  {
   return MIN_BALANCE;
  }
  void print()
  {
   cout<<" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
   cout<<" ---------------------------------------";
   cout<<" PREMIUM ACCOUNT ";
   cout<<" ---------------------------------------";
   cout<<" Owner:"<<this->getOwnerName()<<endl;
   cout<<" Account Number:"<<this->getAccountNumber()<<endl;
   cout<<" Balance: $"<<this->balance<<endl;
   cout<<" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  }
};

main.cpp

/*main.cpp*/
#include"Account.h"
#include"RegularAccount.h"
#include"PremiumAccount.h"

int RegularAccount::numberRegularAccount=0;
int PremiumAccount::numberPremiumAccount=0;
double PremiumAccount::MIN_BALANCE=1000;

int main()
{
const int MAX_NUM_REGULAR_ACCOUNTS=5;
const int MAX_NUM_PREMIUM_ACCOUNTS=5;
RegularAccount *regularAccountArray[MAX_NUM_REGULAR_ACCOUNTS];
PremiumAccount *premiumAccountArray[MAX_NUM_PREMIUM_ACCOUNTS];

double amount=-1;
char *ownerName="";
int accountNo=-1;
int count=0;
int index=-1;
int ch=-1;
while(ch!=8)
{
  cout<<" .............................................................. ";
  cout<<" 1) Create Regular Account.";
  cout<<" 2) Create Premium Account.";
  cout<<" 3) Deposit into Regular Account.";
  cout<<" 4) Deposit into Premium Account.";
  cout<<" 5) Withdraw from Regular Account.";
  cout<<" 6) Withdraw from Premium Account.";
  cout<<" 7) Display Information of all Accounts.";
  cout<<" 8) QUIT";
  cout<<"    Enter Your Choice:";
  cin>>ch;
  cout<<" .............................................................. ";
  switch(ch)
  {
   case 1:
    if(RegularAccount::getNumberRegularAccount()<MAX_NUM_REGULAR_ACCOUNTS)
    {
     amount=-1;
     cout<<" Enter Owner Name:";
     cin>>ownerName;
     while(amount<0)
     {
      cout<<" Enter Initial Amount To Deposit:";
      cin>>amount;
      if(amount<0)
      {
       cout<<"Invalid Amount..!!!(Amount should be greater then 0) ";
      }
     }
     regularAccountArray[RegularAccount::getNumberRegularAccount()]=new RegularAccount(ownerName,amount);
    }
    break;
   case 2:
    if(PremiumAccount::getNumberPremiumAccount()<MAX_NUM_PREMIUM_ACCOUNTS)
    {
     amount=-1;
     cout<<" Enter Owner Name:";
     cin>>ownerName;
     while(amount<1000)
     {
      cout<<" Enter Initial Amount To Deposit:";
      cin>>amount;
      if(amount<1000)
      {
       cout<<"Invalid Amount..!!!(Amount should be greater then 1000) ";
      }
     }
     count=PremiumAccount::getNumberPremiumAccount();
     premiumAccountArray[count]=new PremiumAccount(ownerName,amount);
    }
    break;
   case 3:
     accountNo=-1;
     index=-1;
     count=0;
     cout<<" Enter Account Number:";
     cin>>accountNo;
     for(count=0;count<RegularAccount::getNumberRegularAccount();count++)
     {
      if(regularAccountArray[count]->getAccountNumber()==accountNo)
      {
       index=count;
       break;
      }
     }
     if(index==-1)
     {
      cout<<" Account Not Found";
     }
     else
     {
      amount=-1;
      while(amount<0)
      {
       cout<<" Enter Enter Ammount To Deposit:";
       cin>>accountNo;
       if(amount<0)
       {
        cout<<"Invalid Amount..!!!(Amount should be greater then 0) ";
       }
      }
      regularAccountArray[index]->deposit(amount);
     }
     
    break;
   case 4:
    index=-1;
    count=0;
    cout<<" Enter Account Number:";
    cin>>accountNo;
    for(count=0;count<PremiumAccount::getNumberPremiumAccount();count++)
    {
     if(premiumAccountArray[count]->getAccountNumber()==accountNo)
     {
      index=count;
      break;
     }
    }
    if(index==-1)
    {
     cout<<" Account Not Found";
    }
    else
    {
     amount=-1;
     while(amount<0)
     {
      cout<<" Enter Enter Ammount To Deposit:";
      cin>>accountNo;
      if(amount<0)
      {
       cout<<"Invalid Amount..!!!(Amount should be greater then 0) ";
      }
     }
     premiumAccountArray[index]->deposit(amount);
    }
    break;
   case 5:
    accountNo=-1;
    index=-1;
    int count;
    cout<<" Enter Account Number:";
    cin>>accountNo;
    for(count=0;count<RegularAccount::getNumberRegularAccount();count++)
    {
     if(regularAccountArray[count]->getAccountNumber()==accountNo)
     {
      index=count;
      break;
     }
    }
    if(index==-1)
    {
     cout<<" Account Not Found";
    }
    else
    {
     cout<<" Enter Enter Ammount To Deposit:";
     cin>>accountNo;
     if(amount<=regularAccountArray[index]->getBalance())
     {
      cout<<"Invalid Amount..!!!(Amount should be less then "<<regularAccountArray[index]->getBalance()<<" ";
     }
     regularAccountArray[index]->withdraw(amount);
    }
    break;
   case 6:
    accountNo=-1;
    index=-1;
    count=0;
    cout<<" Enter Account Number:";
    cin>>accountNo;
    for(count=0;count<PremiumAccount::getNumberPremiumAccount();count++)
    {
     if(premiumAccountArray[count]->getAccountNumber()==accountNo)
     {
      index=count;
      break;
     }
    }
    if(index==-1)
    {
     cout<<" Account Not Found";
    }
    else
    {
     amount=0;
     while(premiumAccountArray[index]->getBalance()>amount+PremiumAccount::getMinBalance())
     {
      cout<<" Enter Enter Ammount To Deposit:";
      cin>>accountNo;
      if(premiumAccountArray[index]->getBalance()>amount+PremiumAccount::getMinBalance())
      {
       cout<<"Invalid Amount..!!!(Amount should be less then "<<premiumAccountArray[index]->getBalance()<<" ";
      }
     }
     premiumAccountArray[index]->withdraw(amount);
    }
    break;
   case 7:
    if(Account::getnumberAccount()<1)
    {
     cout<<"No data Found";
    }
    else
    {
     int count=0;
     int temp=0;
     temp=RegularAccount::getNumberRegularAccount();
     cout<<"ACCOUNT NUMBER NAME BALANCE ";
     while(count<temp)
     {
      cout<<regularAccountArray[count]->getAccountNumber()<<" "<<cout<<regularAccountArray[count]->getOwnerName()<<" "<<regularAccountArray[count]->getBalance()<<endl;
      count++;
     }
     count=0;
     temp=PremiumAccount::getNumberPremiumAccount();
     while(count<temp)
     {
      cout<<premiumAccountArray[count]->getAccountNumber()<<" "<<cout<<premiumAccountArray[count]->getOwnerName()<<" "<<premiumAccountArray[count]->getBalance()<<endl;
      count++;
     }
     
    }
    break;
   default:
    if(ch!=8)
    {
     cout<<" Invalid Choice...!!! ";
    }
    break;   
  }
}
return 0;
}