Design solutions to programming problems

Learning Outcomes to be Assessed:

Design solutions to programming problems

Implement those solutions in an imperative programming language by using common programming tools (such as editors and interpreters).

Use common programming tools and techniques (e.g. IDE, testing APIs and theories) to test and evaluate programs.

Title: Java Coding Practice

Type: Design and Implementation of programming courseworks

Style: Summative Assessment

Design, development and testing of a computer programme solution

Part A – Design documentation (weight 22%)

Overview of banking systems

A banking system is a group or a network of institutions that provide financial services for citizens. These institutions are responsible for operating a payment system, providing loans, taking deposits, performing money transfer and helping with investments. In this coursework, students will create a ‘prototype’ Banking system to focus on basic operations such as deposit money, withdraw money, transfer money and agree to make loans to their customers. The system admin can create new bank accounts to customers, search for customers’ accounts, update/view customer personal details and close customers bank account.

Use the above activities to draw two flowcharts using the special shapes to represent different types of actions or steps in a process. Link these activities with Lines and arrows show the sequence of the steps, and the relationships among them.

For this part of the assessment you need to submit two flow chart diagrams in PDF format (total weight 22%). To complete this you must refer to Week 2 learning materials.

(11%) One diagram should depict the log-in process for the banking system
(11%) Second diagram should explain a critical/complicated process of the system e.g. making money transfer from one account to another.

Part B – System development (weight 57%)

Important:

This part of the assessment should not be based on the partial implementation code provided.

Developing your banking system from scratch is not acceptable for this assessment, and may lead into losing substantial amount of marks.

Description:

Rationale

This programming assignment is to apply the programming principles covered in tutorials and lectures to develop a python software that implements core banking solution that is used in banks by its customers and staff members. The software can be fully implemented using text based interface, however, to achieve higher marks, a GUI based software can be developed using the Python GUI Programming module namely Tkinter. The aim of the exercises is to enhance a student’s experience of programming by applying programming principles to a larger problem of developing a complete application.

There are mainly two reasons behind the selection of the banking system as the topic of this coursework. Firstly, the students are familiar with the banking systems, hence, students will spend less time and effort to understand the functions specification of the software they will be developing for this coursework. Hence, most of their time will be devoted to the design, development and testing of the banking system by applying the programming knowledge and skills they learnt throughout this module. Secondly, GUI based programs make it easier to interact with the developed system and demonstrate a direct relationship between the user interaction and the system functions and data. Also, students will learn about how a product works entirely from the user’s (or customer’s) perspective and not from just a developer prospective. Hence, they will need to develop a user-friendly GUI.

Objective – Sample prototype application

The objective of this assessment is to develop a python software that implements a core banking solution that is used in banks by its customers and bank admins. A partial implementation of a prototype banking system will be developed during the practical sessions in the PC labs. This prototype will be developed to include basic banking system functionalities such deposit money and display balance. The main class will allow to add a number of customers accounts at the start of the software. At the initial stage, all customer data will be hard coded. However, for students to achieve higher marks, they should enhance the system functionalities by using text files to store the customers related information.

Assessment specifications with a detailed marking scheme:

To achieve a mark to maximum of 40% of the total marks for Part B

The application must implement all the following:

Create the necessary classes and functions which allow admins to perform the following tasks

Admin Login
Search for a particular customer to perform various banking operations on a customer bank account i.e. check balance, deposit or withdraw money etc.
Deposit money into a customer account
Withdraw money from a customer account
Check current balance for a customer
View customer details e.g. name and address
Update customer information e.g. name and address

To achieve a mark of 41% to maximum of 50% of the total marks for Part B

The application must implement all the above and the following:

Create the necessary classes and functions which allow admins to perform the following tasks:

Close a customer account i.e. remove customer from the system
Update admin own information i.e. name and address
Print all customers details

To achieve a mark of 51% to maximum of 70% of the total marks for Part B

The application must implement all the above and the following:

Customers can have different types of bank account. Accounts will differ in their name, interest rate and overdraft limit etc.
The bank system should be able to store and load all customers’ data from and into a file.

To achieve a mark of 71% to maximum 80% of the total marks for Part B

The application must implement all the above and the following:

Transferring funds/money from one account to another. For example, an Admin can transfer funds from one customer account to another customer account.
Admins can request a management report. This should show the following information;

Total number of customers in the system.
The sum of all money the customers currently have in their bank account. o Using individual account balance, the report should calculate the sum of interest rate payable to all accounts for one year, note, if customers have different account types, their rates will vary.
Total amount of overdrafts currently taken by all customers.

To achieve a mark of 80% and over of the total marks for Part B

Development of a suitable Graphical User Interface (GUI) to perform all the above banking functions.

Note: students need to submit their system alongside the necessary objects to test their software by the tutors when marking. For example, if your system is able to deal with different types of bank accounts (e.g. business and savings accounts), then you should populate the system with at least two customers that have two or more different account types.

Part C – Testing and evaluation (weight 21%)

Software testing is the process of evaluation a software item to detect differences between given input and expected output. Students are expected to perform White Box Testing (also known as Clear Box Testing). White box testing involves looking at the structure of the code. Since you know the internal structure of a system, tests can be conducted to ensure that the internal methods and operations perform according to the specification. Students must chooses inputs to exercise paths through the code and determines the appropriate outputs. Good testing means your system is free of logical and run time errors.

For this part, you need to develop a test plan that includes test cases based upon the system design and implementation of your Banking System.

We expect around 15 unique and valid test cases for your system.
Testing and evaluation will only be done when the 1st version of your software has been implemented.
All test tables should be submitted in PDF format