SOFT40051 Advanced Software Engineering.

Publish By: Admin,
Last Updated: 07-Sep-23
Price: $120

Aim

The aim of the Module`s portfolio assignment is to demonstrate the knowledge gained during the module in understanding BOTH object-oriented analysis and design (OOAD), and object- oriented programming (OOP) using C++.

In this assignment task, you are required to produce a working program in C++, a design overview based on a reversed engineered class and sequence diagram, and a structured report describing the testing and evaluation of the program and its design. The System Specification for the C++ program is given below in Section B C++ Assessment Scenario/Problem`. The Design Specification is given below in Section C Design Specification`. The Report Specification is given below in Section D Report Specification`. A short summary is given below.

B. C++ Assessment Scenario/Problem
Requirements Specification for a Simple Banking Transaction Data Structure and Management Tool

A system (to be developed as a program written in C++ and using the command line for output) is required that allows the user to create and edit a list containing a number of initially unordered Banking Transaction objects. The Banking Transaction objects represent various types of currency withdrawals by debit card, cashpoint machine, direct debit, and deposits by transfer, creditpoint machine and interest payment. The Banking Transaction objects will be entered by the user and stored in a linked list (consisting of a List class and a Link class, which must be adapted from those used in lecture 8 and lab 8, or lecture 11 and lab 11).

The Banking Transaction objects will have a Transaction base class that has the derived classes: Debit, Cashpoint, DirectDebit, Transfer, Creditpoint and Interest.

Transaction will be an abstract class and its subclasses will be concrete classes.

All Transaction derived classes will have a type, date, time and amount (in pounds and pence). In addition:

Class Debit will have attributes to store the card number used, retailer name, retailer location, authorisation method (online, phone, mail order).

 Class Cashpoint will have attributes to store the location id of the cashpoint machine, and the card used.

 Class DirectDebit will have an attribute to store a reference.

 Class Transfer will have attributes to store the account number and bank sort code from where the transfer originated.

 Class Creditpoint will have an attribute to store the type of payment (cheque or cash).

 Class Interest will have an attribute to store the type of interest (daily, monthly or annual).

The user will be able to set the attributes of the Banking Transaction objects only when they are created and not after addition to the link list. The type of Banking Transaction should not need to be stored as a class attribute to record what the type of derived class is (e.g. typeid can be used to identify the type of derived class), but the program will need to be store the type in the file output.

The user interface will be a menu having the following options:

Q - Quit: The program should end without saving the Banking Transaction objects.

I - Insert an object: The user should be prompted to enter a Banking Transaction object type and its attributes, and place the Banking Transaction object at the top (start) of the linked list.

D - Delete an object: The Banking Transaction object at the top of the linked list is deleted. C - Contents of the list: Display a list of all the Banking Transaction objects, their type and their attributes.

U - Contents of the upper objects: Display a list of the first ten Banking Transaction objects, their type and their attributes.

S - Save to file: Ask the user for a filename and append (add to the end of the file) all the Banking Transaction objects, from the linked list, and their attributes in that file. The same text format should be used in this file as in the supplied test file TestData.txt (see below).

L - Load from file: Ask the user for a filename and load the Banking Transaction objects and their attributes from that file into the program`s linked list. The Banking Transaction objects are added to those already in the program`s linked list. The file saved in S` should be able to be loaded in L`.