Problem Solving for Programming

Problem Solving for Programming
Tutor Marked Assignment (TMA)
An Automated Teller Machine (ATM)
Introduction
The TMA accounts for 40% of the marks for this module.
Completing the TMA
The TMA is a substantial task that requires planning and effort to complete satisfactorily. You should begin work on it as early as possible.
You must complete tasks 1 to 7 below. Read the instructions for each task carefully, until you understand exactly what you are being asked to do. Apply the HTTLAP approach as you work.
Make sure that you submit your solution for each task separately (e.g. submit the code for each task and sub task rather than simply one long, single solution).
Getting support
You may submit a draft of your work to your tutor for comment up to a week before the submission deadline.
TMA Specifications
You are required to design algorithms for an Automated Teller Machine. To do this, you should use the constructs and techniques taught in sessions 1-6 of the module.
Task 1 – Problem Decomposition (10 marks)
iBank wants to develop its own ATM system. The system will look and work much like other competitor systems work. You have been asked to develop the software for the system. This software will allow customers to withdraw cash and check their balance.
a) Using the approach to problem solving learned in class, identify:
• The principal parts (sub-problems) of the problem.
• Any assumptions you are making with regards to the problem.

b) In pseudo code, outline the basic steps (no more than five) involved in withdrawing cash (Do not include any choice or iteration at this point). Page 2 of 5
Task 2 – Start-up (5 marks)
The process of withdrawing cash will begin only if a customer card is entered. Add a simple IF/ENDIF statement to your pseudo code that will account for the customer inserting a card. Please note that if a customer does not insert a card, then NONE of the steps in the cash withdrawal, or balance checking process, should happen.
Task 3 – Pin Entry (15 marks)
Once a card has been inserted into the machine, a customer should be prompted to enter their PIN in order to proceed further. We will assume at this point that the customer has an unlimited number of attempts at entering the correct PIN.
a) Identify the variables required for the checking of the PIN. Provide a data type, description and data range for each variable.
b) Use a loop to check the entered PIN number against a customer’s stored PIN number. Make sure you use and initialize the variables you identified in (a).
Task 4 – Menu Choices (15 marks)
Once a correct PIN has been entered, customers will be presented with a services menu. The services menu screen will provide two choices: Check Balance and Withdraw Cash. These choices can be made by selecting buttons 1 or 2 on the menu screen (Figure 1).
Button 1 >> Button 2 >> Button 3 >> Button 4 >> << Button 5 << Button 6 << Button 7 << Button 8 Check balance Withdraw cash Select Service
Figure 1.
If button 1 is selected, the balance screen with the customer’s balance should be displayed on the screen. If button 2 is selected, the withdrawal screen should be displayed. You can assume that at this point that all other buttons (3-8) have been disabled.
When the withdrawal screen is presented, the following options for the amount to be withdrawn will be presented: £10, £20, £50, £100, £200 (Figure 2). Page 3 of 5

Button 1 >> Button 2 >> Button 3 >> Button 4 >> << Button 5 << Button 6 << Button 7 << Button 8 £10 £20 £50 £100 £200 Select Amount to Withdraw
Figure 2.
a) Identify any further variables that you would need to implement the menu. Provide a data type, description and data range for each variable.
b) Using nested conditional statements. Represent the menu choices detailed above. Note that the outer conditional statement should deal with the service choice, and the inner conditional statement should deal with the withdrawal choice.
Task 5 – Dispensing Cash (25 marks)
Once the customer has chosen the amount he/she wishes to withdraw, the ATM should dispense the cash and return the card. The cash should be dispensed in the optimum number of notes (Note that the machine dispenses only twenty and ten pound notes. You can assume that the machine has an unlimited supply of both tens and twenties).
a) Identify any further variables that you would need to implement the dispensing of cash problem. Provide a data type, description and data range for each variable.
b) Extend your algorithm so that it calculates the optimum number of notes for any requested amount. Thus, if a customer chooses to withdraw £100, the optimum format for the cash to be dispensed would be five twenties, while if the customer chooses to withdraw £50 the optimum format for the cash would be two twenties and one ten.
c) Use an appropriate loop structure to return the cash to be dispensed to the customer. Note that you need one loop for tens, and one loop for twenties. Page 4 of 5

Task 6 – Limiting PIN Attempts (25 marks)
A customer should be allowed only three attempts at entering a correct PIN before their card is retained.
c) Identify any further variables that you would need to implement the limitation of PIN attempts to three. Provide a data type, description and data range for each variable.
a) Adapt the PIN verification loop from task 3, so that the customer has only three attempts at entering a correct PIN number. If, after three attempts, a correct PIN has not been entered, then the customer’s card should be retained, and none of the subsequent steps should happen.
To complete this task, you will need to adapt the loop structure you created in task 3. You will need to create a variable for the number of allowed attempts at entering a PIN. Each time the customer has a failed attempt at a correct PIN entry; this variable should be decremented by one. When there are no more attempts left, the loop should exit. This will require a compound loop condition that takes account of (a) whether a correct PIN has been entered (b) whether there are any PIN attempts remaining.
Task 7 – Documentation (5 marks)
a) Provide a short description (max 100-200 words) for your completed algorithm.
b) Add explanatory comments to the pseudo code.
TMA Criteria for Assessment
Your tasks will be graded on the following criteria:
– Ability to solve complex problems
– Ability to express logical solutions in algorithmic format
– Presentation and documentation of solutions

Deliverables for submission
Completed TMA tasks 1- 6 must be submitted electronically in a .doc or .docx file (e.g. pfpTMAUsername.doc) through the appropriate assignment dropbox in Moodle before the stated TMA submission deadline for your class. Do NOT submit your TMA files in other formats (e.g. .wps).
Note: If a required file is not submitted, the examiners will not search for missing files and 0% will be awarded for any missing files.
Getting feedback
Feedback on the marked TMA can be downloaded from Moodle and will normally be returned to you within 2 weeks of submission.
Backing up files
Always keep a back-up copy of all work submitted for assessment in case of unforeseen submission problems.

This question has been answered.

Get Answer