Write a program named bank.java that allows you to set up checking accounts and loan accounts.  This file should include 3 classes: Customer, CheckingAccount, LoanAccount.  The CheckingAccount and LoanAccount classes inherit from the Customer class.  Create an ArrayList of 5 Checking Account customers and an ArrayList of 5 Loan Account customers.

The program should be set up in a loop with the following menu options:
(1)  Bank Information (show BankBalance, Bank Transactions, Number Customers)
(2)  Print all Checking accounts
(3)  Deposit Money (ask user for the Record# and Amount)
(4)  Withdraw Money (ask user for the Record# and Amount)
(5)  Print all Loan accounts 
(6)  Make Loan (ask user for the Record# and Amount of Loan)
(7)  Make Payment (ask user for the Record# and Payment Amount)
(8)  Exit
Extra Credit: Have options to add and delete customers.


Bank of Eastfield logo

Customer Class

Variable Names Variable Description
String FName, LName Customer's first and last name.
String Email Customer's e-mail address.
int CustomerTransactions The total number of transactions (deposits and withdrawals) made by the customer.
static double BankBalance The bank's total balance (static).  You should change this variable when customers make deposits, withdrawals, take loans, and make loan payments.
static int NumberCustomers The total number of customers at the bank (static).  Increment this variable in the CheckAccount and LoanAccount constructors.

 

CheckingAccount Class

Variable Names Variable Description
private double CheckingBalance The customer's checking account balance.
Methods Names Methods Description
CheckingAccount(String theLName, String theFName, String theEmail, double OpeningDeposit) The constructor should (1) initialize the name and email variables,  (2) set CheckingBalance to OpeningDeposit,  (3)  add the OpeningDeposit to the BankBalance,  (5) increment NumberCustomers.
getCheckingBalance() The Get method is needed since CheckingBalance is Private.
Deposit(Amount) Deposit money into the customer's account (include the amount as a parameter).  Remember to increment CustomerTransactions and add Amount to BankBalance.
Withdraw(Amount) Withdraw money from the customer's account (include the amount as a parameter).  If the customer overdrafts, charge a $25 fee.  Remember to increment CustomerTransactions and subtract Amount from BankBalance.

 

LoanAccount Class

Variable Names Variable Description
private double LoanBalance The customer's remaining loan principle.
Methods Names Methods Description
LoanAccount(String theLName, String theFName, String theEmail, double OpeningLoan) The constructor should: (1) initialize the name and email,  (2) set LoanBalance to OpeningLoan * 1.25 for a 25% interest premium,  (3) subtract the OpeningLoan from BankBalance,  (4) increment NumberCustomers.
getLoanBalance() Get method since LoanBalance is private
MakeLoan(Amount) Add this amount and a 25% interest premium to the LoanBalance.  Remember to increment CustomerTransactions and subtract Amount from BankBalance.
MakePayment(Amount) Subtract Amount from the LoanBalance.  If LoanBalance <= 0, output a message (e.g. "Customer X just payed off his/her loan!").  Remember to increment CustomerTransactions and add Amount to BankBalance.


How to Declare an ArrayList of Objects


In your main program, declare two ArrayLists - one for CheckingAccount and one for LoanAccount.   You can use the data below to get started.

ArrayList<CheckingAccount> Check = new ArrayList<CheckingAccount>();
Check.add(new CheckingAccount("Kirk","David","dkirk@dcccd.edu",10000.0));
Check.add(new CheckingAccount("Spock","Mister","tribbles@starfleet.gov",500.0));
Check.add(new CheckingAccount("Scott","Hulu","hulu@aol.com",75.0));

ArrayList<LoanAccount> Loan = new ArrayList<LoanAccount>();
Loan.add(new LoanAccount("Zeus","Apollo","apollo@gmail.com",5000));
Loan.add(new LoanAccount("Einstein","Amy","amy@yahoo.com",1000));
Loan.add(new LoanAccount("Caesar","Julie","julie@hotmail.com",500));

Printing all Accounts

To print all accounts you can use a for loop to step through each ArrayList element.

for (int i=0; i<Check.size(); i++)
{
   System.out.println (i + "\t" + Check.get(i).GetLName() + ", " + Check.get(i).GetFName() + "\t" + Check.get(i).getCheckingBalance() + "\t" + Check.get(i).CustomerTransactions);
}


Retrieving (static) Bank Information


For the static variables, remember that you can use any of the array elements and either the Check class or Loan class - they all point to the same variable.  The following two lines give you the same answer:

System.out.println( Check.get(0).BankBalance );
System.out.println( Loan.get(0).BankBalance );

Example Output

//Option 1 to print bank information
====================================================
| Bank of Eastfield Information
|
| Total Bank Balance: 4075.0
| Total Bank Customers: 6
====================================================

//Option 2 to print checking accounts
====================================================
| Checking Accounts
| Rec Name           Balance   Transactions
| -----------------------------------------
| 0   Kirk, David    10000.0   3
| 1   Spock, Mister  500.0     0
| 2   Scott, Hulu    75.0      2

//Option 3 to deposit money
====================================================
Enter checking record number:
2
Amount to deposit:
100
Scott Hulu now has $175.0