In this assignment you are to create an interactive line command driven C++ program that allows a user to do the following:

1) Create a bank account by supplying a user id and password
2) Login using this id and password
3) Quit the program

Upon successful login, the user will be presented with a menu to do one or more of the following actions:

1) Withdraw money
2) Deposit money
3) Request balance
4) Exit the Bank Account Session

During application initialization create a new occurrence of a Banking Institution class, which contains the following for your institution

1) Institution ID : Your name
2) Course: "CIS2513"
3) Term: "Fall 2016"
4) Vector list of Bank Accounts [created during the online session]

When creating each Bank Account (ref: step one from Project 1), you are to:

1) Ensure that your Bank Account does not already exist within the Banking Institution

a. Issue an error message if the bank account exists and DO NOT create
a new Bank Account entry
b. Create the NEW Bank Account class occurrence if it does not exist
c. Add the NEW Bank Account to the Bank Institution Vector IN
ASCENDING AlphaNumeric order by Bank Account User ID Value

2) For each NEW occurrence of the Bank Account class

a. Bank Account identification
i. User ID
ii. Password
iii. Creation Date and Time
iv. Bank Account Balance
total value of all User ID account types as of last Balance
Change Activity
v. Last Activity date and time
b. Three separate Account Type vectors for the supplied User ID
i. A Savings Account
ii. A Line of Credit Account
iii. A Checking Account

3) Each Account Type class occurrence (which must inherit these common characteristics) contains

a. Current Balance (which may be positive or negative)
b. A vector list of transactions
i. Transaction Type
1. Credit
2. Debit
ii. Transaction Date and Time
iii. Transaction Amount (Absolute value – these MUST all be
positive Real values with FOUR decimal places)
c. For the Savings Account Type ONLY
i. Balance may NEVER be less than ZERO
ii. Store the Date and Time of first Deposit
d. For the Checking Account ONLY
i. Balance may NEVER be less than ZERO
ii. Store the Date and Time of most recent Deposit
iii. Store the Date and Time of most recent Withdrawal
e. For the Line of Credit Account ONLY
i. Balance may NEVER be GREATER than ZERO
ii. Store the Date and Time of first Withdrawal
iii. Store the Amount of first Withdrawal

1) Withdraw money

For the amount of money requested by this User ID, create one (or more) debit transactions and record them as Transactions in the Vector List of the corresponding account type in the following sequence:

a) Up to the balance available in the Checking Account
b) Up to the balance available in the Savings Account
c) Up to the remaining amount requested by the User ID against the Line
of Credit Account

2) Deposit money

For the amount of money deposited by this User ID, create one (or more) credit transactions and record them as Transactions in the Vector List of the corresponding account type in the following sequence:

a) Up to the outstanding balance (debt) in the Line of Credit Account
(balance after deposit would be a maximum of zero)
b) Up to a maximum balance of $500 in the Checking Account
c) The remaining amount is to be deposited in the Savings Account

3) Request balance

a) Display the balance for all three account types
b) Display the TOTAL balance for the User ID (remember that the Line of
Credit balance is ALWAYS negative or ZERO)
Your SAVINGS balance is : $ x,xxx.xx
Your CHECKING balance is : $ xxx.xx
Your LINE OF CREDIT balance is : $ x,xxx.xx
Your TOTAL balance is : $ x,xxx.xx

4) Exit the Bank Account Session

a) Return to the Main Menu for Create Account/Login/Quit

5) Quit the program

a) Output (to the Console) the following for each User ID
a. User ID
b. Last Activity date and Time
c. Total Balance
d. For each Account Type
i. Current Balance
ii. Last Transaction Date and Time
iii. For the Savings Account Type ONLY
1. Date and Time of first Deposit
iv. For the Checking Account ONLY
1. Store the Date and Time of most recent Deposit
2. Store the Date and Time of most recent Withdrawal
v. For the Line of Credit Account ONLY
1. Store the Date and Time of first Withdrawal
2. Store the Amount of first Withdrawal

Exception to handle invalid input for one field without requiring re-entry of all values

Ensure that you remove any unnecessary punctuation from monetary input (for example, all $ or other currency symbols should be removed prior to processing, do NOT display an error message to the user for characters which can be removed from the input string without changing the intended value).

Format all monetary outputs on the display Currency (e.g. $ 25,928.43) with all decimal places containing digits.

The User ID and password fields may be any combination of characters which are:

1) Visible when displayed on the screen (no control characters0
2) Normally accessible from a standard US keyboard

Separate your code into multiple functions and classes, demonstrating good programming practices.

If login was not successful (for example the id or password did not match) then the user must be returned to the introduction menu.

(screen capture of the console copied to a Word [or equivalent] single document) to demonstrate your program in action. Items in BOLD are user input, Items in italic are modifications from Project 1 dialogue:

Welcome to COP2513.F16’s ATM Machine
Please select an option:
l -> Login
c -> Create New Account
q -> Quit
> l
Please enter your user id: QTL7Zark7
Please enter your password B1rdGo!
******** LOGIN FAILED! ********
Please select an option from the menu below:
l -> Login
c -> Create New Account
q -> Quit
> c
Please enter your user name: Y0ro1den!
Please enter your password: S@murA1
Thank You! Your account has been created!
l -> Login
c -> Create New Account
q -> Quit
> l
Please enter your user name: Y0ro1den!
Please enter your password: S@murA1
Access Granted - Y0ro1den!
d -> Deposit Money
w -> Withdraw Money
r -> Request Balance
x -> Exit
> d
Amount of deposit: $2056.45
d -> Deposit Money
w -> Withdraw Money
r -> Request Balance
x -> Exit
> r
Your SAVINGS balance is : $ 1,556.45
Your CHECKING balance is : $ 500.00
Your LINE OF CREDIT balance is : $ 0.00
Your TOTAL balance is : $ 2,056.45
d -> Deposit Money
w -> Withdraw Money
r -> Request Balance
x -> Exit
> d
Amount of deposit: 56.45
d -> Deposit Money
w -> Withdraw Money
r -> Request Balance
x -> Exit
> r
Your SAVINGS balance is : $ 1,612.90
Your CHECKING balance is : $ 500.00
Your LINE OF CREDIT balance is : $ 0.00
Your TOTAL balance is : $ 2,112.90
d -> Deposit Money
w -> Withdraw Money
r -> Request Balance
x -> Exit
> w
Amount of withdrawal: -2.5
d -> Deposit Money
w -> Withdraw Money
r -> Request Balance
x -> Exit
> r
Your SAVINGS balance is : $ 1,615.40
Your CHECKING balance is : $ 500.00
Your LINE OF CREDIT balance is : $ 0.00
Your TOTAL balance is : $ 2,115.40
d -> Deposit Money
w -> Withdraw Money
r -> Request Balance
x -> Exit
> w
Amount of withdrawal: 125.57
d -> Deposit Money
w -> Withdraw Money
r -> Request Balance
x -> Exit
> r
Your SAVINGS balance is : $ 1,615.40
Your CHECKING balance is : $ 374.43
Your LINE OF CREDIT balance is : $ 0.00
Your TOTAL balance is : $ 1,989.83
d -> Deposit Money
w -> Withdraw Money
r -> Request Balance
x -> Exit
> w
Amount of withdrawal: 6125.78
d -> Deposit Money
w -> Withdraw Money
r -> Request Balance
x -> Exit
> r
Your SAVINGS balance is : $ 0.00
Your CHECKING balance is : $ 0.00
Your LINE OF CREDIT balance is : -$ 4,135.95
Your TOTAL balance is : -$ 4,135.95
d -> Deposit Money
w -> Withdraw Money
r -> Request Balance
x -> Exit
> x
Thanks for banking with COP2513.F16, Y0ro1den!!
============================================
Welcome to COP2513.F16’s ATM Machine
Please select an option:
l -> Login
c -> Create New Account
q -> Quit
> c
… Create at least TWO additional Bank Account logins with at least
three monetary transactions of various types
============================================
Welcome to COP2513.F16’s ATM Machine
Please select an option:
l -> Login
c -> Create New Account
q -> Quit
> q
List of all Account content for each User ID created in the session for
the Banking Institution
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.