You are required to design, implement, test and maintain an object-oriented application that will be used to manage customer accounts of a bank. The customers’ bank accounts should be created through an inheritance hierarchy

There are three types of accounts held by the bank. These are Savings account, Current account, and Fixed-Term account. The details stored in the customer account include:

  • Account number
  • Customer name
  • Customer address
  • Account balance
    • For current account, this should include over-draft limit.
    • For the savings accounts, this should include interest rate.
    • For fixed term account, this should include the fee charged per transaction

The bank’s customer should be able to:

  • Create new accounts
  • View and update account details
  • Make deposits for customers
  • Make withdrawals for customers

Specifications :

Create an inheritance hierarchy containing base class Account and derived classes Current Account, Savings Account and Fixed-term Account that inherit from class Account.

##Base Class Account:

  • Base class Account should include data members like name, address and account_balance.
  • The class should provide a constructor that receives an initial balance and uses it to initialize the data member. The constructor should validate the initial balance to ensure that it is greater than or equal to 0.0. If not, the balance should be set to 0.0, and the constructor should display an error message, indicating that the initial balance was invalid.
  • The class should provide three functions. The function Deposit () should add an amount to the current balance. The function Withdraw () should withdraw amount from the account balance and ensure that he debit amount does not exceed the account balance. If it does, the balance should be left unchanged and the function should print the message “Debit amount exceeds account balance”. Function get Balance () should return the current balance.

##Derived class Current Account:

  • Derived class Current Account should inherit the functionality of the class Account, but also include a data member overdraft type double indicating the agreed overdraft limit.
  • Current Account’s constructor should receive the initial balance, as well as an initial overdraft limit.
  • If an overdraft has not been agreed(set) and sufficient funds are not available for withdrawal, a £5 overdraft penalty is charged.

##Derived class Saving Account:

  • Derived class Savings Account should inherit the functionality of the class Account, but also include a data member interest-rate of type double indicating the interest rate (percentage).
  • Savings Account’s constructor should receive the initial balance, as well as an initial interest_rate for the Savings Account.
  • Savings Account should provide public method Calculate-Interest () that returns a double value indicating the amount of interest earned by an account. The function Calculate Interest () should determine this amount by multiplying the amount by the interest rate.[ Note: the Savings Account should inherit the public functions Deposit and Withdraw without redefining them.]

##Derived class Fixed-term Account:

  • Derived class Fixed-term Account should inherit the functionality of the class Account, but also include a data member fee-charged of type double indicating the fee charged per transaction.
  • Fixed-term Account’ s constructor should retrieve the initial balance, as well as a parameter indicating a fee amount.
  • Fixed-term Account should provide a public function Is Fee Charged () that returns a Boolean value indicating whether the fee amount is charged or not. If the transaction is successful then only fee must be charged. If the transaction is cancelled then the fee must not be charged. [Note: the Fixed-term Account should inherit the public functions Deposit and Withdraw without redefining them.

Note the following:

  • You are allowed (and encouraged) to add more details to each of the account types but any additional detail must be justified.
  • Your solution should provide facilities for saving and retrieving account details from file(s). Additional facilities can also be provided.
  • You are expected to show aspects of inheritance, polymorphism and dynamic binding in your solution.
  • Your solution shown exhibit aspects of re-usability through the use of separate files for declaration, implementation and usage.

Program Testing

You must test your program thoroughly to ensure that it conforms to the specification in all respects. If there are any problems these should be fully described in your documentation.

Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.