Note AcademyNote Academy

Computer Science · May / June 2023 · Paper 22 · Question 12

0478

As printed in the paper

The question as text

A two-dimensional (2D) array Account[] contains account holders’ names and passwords for a banking program. A 2D array AccDetails[] has three columns containing the following details: • column one stores the balance – the amount of money in the account, for example 250.00 • column two stores the overdraft limit – the maximum total amount an account holder can borrow from the bank after the account balance reaches 0.00, for example 100.00 • column three stores the withdrawal limit – the amount of money that can be withdrawn at one tim The amount of money in a bank account can be negative (overdrawn) but not by more than the overdraft limit. For example, an account with an overdraft limit of 100.00 must have a balance that is greater than or equal to –100.00 Suitable error messages must be displayed if a withdrawal cannot take place, for example if the o The bank account ID gives the index of each account holder’s data held in the two arrays. For example, account ID 20’s details would be held in: Account[20,1] and Account[20,2] AccDetails[20,1] AccDetails[20,2] and AccDetails[20,3] The variable Size contains the number of accounts. The arrays and variable Size have already been set up and the data stored. Write a program that meets the following requirements: • checks the account ID exists and the name and password entered by the account holder m Account[] before any action can take place • displays a menu showing the four actions available for the account holder to choose from: 1. display balance 2. withdraw money 3. deposit money 4. exit • allows an action to be chosen and completed. Each action is completed by a procedure w You must use pseudocode or program code and add comments to explain how your code works. All inputs and outputs must contain suitable messages. You only need to declare any local arrays and local variables that you use. You do not need to declare and initialise the data in the global arrays Account[] and AccDetails[] and the variable Size

Read automatically from the paper; the printed page above is exact.

Show the answer and mark scheme

Read the whole answer:

Check if each requirement listed below has been met. Requirements may be met using a suitable built-in function from the programming language used (Python, VB.NET or Java)

Mark SEEN on script if requirement met, cross if no attempt seen, NE if partially met (see marked scripts).

Use the tables for A02 and A03 below to award a mark in a suitable band using a best fit approach

Then add up the total.

Marks are available for:

AO2 (maximum 9 marks)
AO3 (maximum 6 marks)

Data Structures required names shown underlined must be used as given in the scenario

Arrays or lists Account, AccDetails

Variable Size, AccountNumber

Requirements (techniques)

R1 Check account number and password (iteration and validation, selection, input, output)

R2 Display menu and make a selection (output, input and selection)

R3 Perform actions selected (use of arrays and procedures with parameters)

Example 15 mark answer in pseudocode

// Procedures to be called

PROCEDURE CheckDetails(AccID : INTEGER)

DECLARE Name, Password : STRING // local variables

Valid ← FALSE

IF AccID <0 OR AccID > Size

THEN

OUTPUT "Invalid Account Number"

ELSE

OUTPUT "Please Enter Name "

INPUT Name

OUTPUT "Please Enter Password "

INPUT Password

IF Name <> Account[AccID,1] OR Password <> Account[AccID,2]

THEN

OUTPUT "Invalid name or password"

ELSE

Valid ← True

ENDIF

ENDIF

ENDPROCEDURE

PROCEDURE Balance(AccID : INTEGER)

OUTPUT "Your balance is ", AccDetails[AccID,1]

ENDPROCEDURE

PROCEDURE WithDrawal(AccID : INTEGER)

DECLARE Amount : REAL // local variable

REPEAT

OUTPUT "Please enter amount to withdraw "

INPUT Amount

IF Amount > AccDetails[AccID,3]

THEN

OUTPUT "Amount greater than withdrawal limit"

ENDIF

IF Amount > AccDetails[AccID,2] + AccDetails[AccID,1]

THEN

OUTPUT "Amount greater than cash available"

ENDIF

IF Amount <= AccDetails[AccID,3] AND Amount < AccDetails[AccID,2] +

AccDetails[AccID,1]

THEN

AccDetails[AccID,1] ← AccDetails[AccID,1] - Amount

ENDIF

UNTIL Amount<= AccDetails[AccID,3] AND Amount > AccDetails[AccID,2] +

AccDetails[AccID,1] AND Amount > 0

ENDPROCEDURE

PROCEDURE Deposit(AccID : INTEGER)

DECLARE Amount : REAL // local variable

REPEAT

OUTPUT "Please enter a positive amount to deposit "

INPUT Amount

UNTIL Amount >0

AccDetails[AccID,1] ← AccDetails[AccID,1] + Amount

ENDPROCEDURE

// Declarations of global variables for information – not required in candidate responses

DECLARE AccountNumber, Choice : INTEGER

DECLARE Valid, Exit : BOOLEAN

OUTPUT "Please enter your account number "

INPUT AccountNumber

CheckDetails(AccountNumber)

IF Valid

THEN

REPEAT

OUTPUT "Menu"

OUTPUT "1. display balance"

OUTPUT "2. withdraw money"

OUTPUT "3. deposit money"

OUTPUT "4. exit"

OUTPUT "please choose 1, 2, 3 or 4"

INPUT Choice

CASE OF Choice

1 : Balance(AccountNumber)

2 : Withdrawal(AccountNumber)

3 : Deposit(AccountNumber)

4 : Exit ← TRUE

OTHERWISE OUTPUT "Invalid choice"

ENDCASE

UNTIL Choice = 4

ELSE

OUTPUT "Invalid account number "

ENDIF

AO2: Apply knowledge and understanding of the principles and concepts of computer science to a given context, including the analysis and design of computational or programming problems

Make a free account to save your answers and see your weak topics and ask the AI why a wrong answer is wrong.