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 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.

The Banking Transaction objects will have a Transaction superclass that has the subclasses: Debit, Cashpoint, DirectDebit, Transfer, Creditpoint and Interest.

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

All Transaction subclasses will have a name, date 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. An identifier for the object sub-class should not need to be stored.

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 user should be prompted to delete the Banking Transaction object from the top of the linked list.

C - Contents of the display: Display a list of all the 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 in a suitable text format.

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 programs linked list.

N - Linear Search: Perform a linear search through the link list to find a Banking Transaction object by date and display its attribute values. The linear search algorithm used should be from the slides.

B - Binary Search: Perform a linear search through the link list to find a Banking Transaction object by date and display its attribute values. The binary search algorithm used should be from the slides.

T - Sort: Sort the Linked List so that the date attribute of each Banking Transaction object is decreasing from the top of the link list. The sort algorithm used should be from the slides.

After completion of each choice, other than Quit, the system waits for the user to press a key to return to the menu again.

The time taken to do the linear search, binary search and sort functions should be displayed when each function has been completed. The time must be calculated using the clock timer.

An interface will be required to perform the functionality above. Clarity, performance and simplicity should be considered in the interface design.

Additional Program Design Requirements Specification

1.There will be base class named Transaction. The display of the Banking Transaction objects will use a class TransactionManager that has a linked list containing pointers to Transaction objects. Dynamic memory for the objects will be allocated/deallocated with new and delete.

2.The TransactionManager class will use a linked list to store the Banking Transaction objects. The linked list will have a List class and a Link class.

3.A file created by you containing at least one of each type of Banking Transaction objects should be submitted with the code. This file should be associated with your test plan and enable testing of all the functions completed.

4.A file of 1000 transactions will be supplied with this specification. This is to test the performance of the link list searches and sorting by recording the time taken for doing: a linear search on the original file data; a sort followed by a binary search on the original file data.

5.Code given in the lectures should be used to perform the algorithms for linear search, binary search and sort, and the timer function.

REPORT Specification

The report about the design and testing of your program should start with a title, your student id, module name and id, and the following four sections:

(a)Explanation of the Design of the Program
This section, which should be no longer than two pages, should describe the design of your source code and how it works. (You will provide a listing of your source code in Appendix A). This explanation should be based on your classes, class operations, class attributes, and how these produce your program's functionality.

(b)Test Plan and Results
This section should contain: a series of tests and expected outcomes; the results of running these tests; an evaluation of the test results. The tests should relate to the list of requirements in part (a).

(c)Evaluation of the Program
This section, which should be no longer than one page, should state the success of the program.

(d)Appendix: Full Source Code Listing
This section should contain all your source code for the program. The files that you wrote should be included but not standard C++ header or library content.

Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.