$30
COP 2510
Homework #2
Title: Adding Functionality To The ATM Machine
Congratulations! The initial software that you provided to the Bank of America (BoA) for their
new ATM machines has been accepted by them and has been deployed in the field. BoA has
sent teams of marketing researchers to study how people have been using their new ATM
machines in order to better understand how they can improve them. The teams have collected
a great deal of data and now BoA believes that they know what their highest priority changes
that they need you to make to your ATM machine control software is.
BoA manages savings accounts a little differently than checking accounts. Customers are only
allowed to make 5 changes to a savings account each month before they will start to be
charged $1.00 per transaction. If an ATM user has exceeded the 5 change limit, the ATM
machine has to notify them about the potential charge and get their permission to continue. If
permission is granted, then the additional $1.00 will be taken out of the savings account.
Update your software to keep track of the number of savings account transactions have been
performed this month and charge the user $1.00 per transaction once they have done 5.
With the addition of support for processing savings accounts via an ATM machine, a new
functionality has to be supported: moving funds between a checking and a savings account. The
ability to move funds in both directions must be supported. Note that moving funds either into
or out of a savings account counts as a transaction.
Update your software to permit users to move funds between their checking and savings
accounts. Make sure that you check to make sure that they have enough money to complete
the transaction.
It has become very obvious that one of the most desired functions that the ATM machine does
not currently support is the ability to check the current balance of either a checking or a savings
account. Add this functionality.
Update your software to allow users to check the current account balance in either their
checking or their savings account.
Another critical function that needs to be added is the ability to deposit checks and cash into
either a checking or a savings account via the ATM Machine. The way that this will work is the
ATM Machine user will tell the machine that they want to make a deposit. The machine will
then ask them if they want to make a deposit into their checking or savings account. It will then
tell them to insert an envelope that contains the funds. The user will then be asked to enter the
amount that has been entered and their account will be updated with that amount. Humans
will later on check the envelope to ensure that the proper amount is there and if there are any
issues, then the account balance will be corrected.
Update your software to support the depositing of funds into either a person's checking
account or savings account.
Additionally, every user has an existing balance in their checking and savings account. Obviously
they cannot withdraw more money than they have in their account and the ATM machine must
inform them of this if they try.
You can assume that the ATM has been loaded with $1,000 in the following denominations: 25
$20 bills, 25 $10 bills, 40 $5 bills, and 50 $1 bills. The ATM machine will attempt to provide
every customer with money using the largest available bills assuming that the machine still has
enough money to fulfill the request – denominations don't matter (i.e. it could use all $1 if
that's all that it had left).
The ATM machine should be programmed to display "Wrong PIN", "Unrecognized card", "Out
of money – cannot complete transaction", "No account to transfer to", and "Insufficient funds
for transfer". The machine should "eat" the ATM card if the PIN is entered incorrectly 4 times.
You have to ask the user via the keyboard if they want to use their checking / savings account
and how much they'd like to transfer between accounts.
Make sure that you inform the customer if their savings activity will cause them to incur an
additional charge.
The machine will be preloaded to recognize the following ATM cards:
Card Number PIN Customer Name
123456789 1111 Kyle Bustami
135792468 2097 Cory Chambers
019283746 6194 Tanner Douglas
675849302 0071 Jordan Jones
347821904 9871 Jesse Pecar
The following people have the following starting balances in their checking /savings accounts:
Checking
Balance
Customer
Name
Savings
Balance
# Savings
Changes
Made This
Month
$500 Kyle Bustami $200 2
$100 Cory
Chambers
$700 3
$1,500 Tanner
Douglas
$2,500 5
$50 Jordan Jones -1 0
$150 Jesse Pecar $250 1
Note: Jordon Jones does not have a savings account
Once you've created your ATM machine, simulate the following transactions:
1. Kyle Bustami has both a checking and a savings account with BoA. He uses the ATM with card
123456789 and enters PIN 1111. He then requests $100 from his checking account.
2. Cory Chambers uses the ATM with card and PIN 2097. He then requests to transfer $200
from savings to checking. Cory then deposits $300 into his savings account.
3. Tanner Douglas uses the ATM with card 019283746 and enters PIN 6194. He then requests to
transfer $500 from his checking account to his savings account. Tanner then deposited $1,200
into his checking account.
4. Jordan Jones uses the ATM with card 675849302 and enters PIN 0071. He requests to
transfer $100 from his savings account to his checking account. The request is rejects. He then
requests to withdraw $75 from his checking account. This request is rejected. He then requests
to withdraw $50 and this request is completed.
5. Jesse Pecar the ATM with card 347821904 and enters PIN 9871. He then requests the system
to tell him his checking account balance. He then requests that the system tell him his savings
balance. He then withdraws $200 from his savings account.
Note: You are only permitted to use the Java commands that we have covered in class so far.
Yes, there are many more, but no, you can't use them in solving this homework!
→ Homework Assignment: Turn in a lis"ng of your program and
output based on running the sample data sets that have been
provided as a part of this assignment. No screenshots!
Assignment Requirements:
1. You are required to turn in a (1) printout of your Java program and (2) a printout of the results
of running your program using the provided sample data sets. [no screen shots!]
2. Before each method, put the following comment lines:
//
// Method Name: xxx
// Description: xxx
3. Your code must contain the following comment header:
//
// COP 2510 – Spring Semester, 2020
//
// Homework #2: Adding Functionality To The ATM Machine
//
// (Your Name)
//
4. This homework is due at the start of class on Tuesday, 03/10/2020