Banking services providers need a software system that allows to safely manage the customers accounts. In order to ensure correct and integrated updates for customers accounts, you need to implement a simple bank management system that enables users to perform different transactions (updates) on the accounts that are usually performed in real bank environment. In particular, the user of your system can create a new account, update information of an existing account, view and manage transactions, check the details of an existing account, remove existing account and view customers list. Moreover, you need to store customers records (including account information) in a way that facilitates processing these accounts. The user should be able to track all updates (transactions) conducted on customers' accounts.
In order to achieve the tasks mentioned above, you need to implement the appropriate structures for the following:
1. The system should serve customers with updating/processing account information, where first customer comes (enter the waiting list) must be served first.
2. The system should be able to present and track the accounts information for all updated/processed accounts starting from the last customer account (backtracking).
3. A data base that stores customers accounts' records in a way that the search process can be performed within (log(n)) time.
ShowMenu(): This method displays the menu to select/perform different banking activities.
CreateAccount(): This method creates a new customer account. It asks for some personal and banking details of the customer such as name, date of birth, citizenship number, address and phone number, initial balance to be deposit, and the account type. For the account type use: Saving Account, Fixed for 1 year, or Fixed for 2 years.
DoTransact() : This method performs two banking activities: deposit and withdraw to and from a particular customer account.
EditCustomerInfo(): This method modifies personal information for a particular customer, such as name, telphone, address, ... etc.
SortCustomersRecord(): This method can sort customers records in the waiting list (for processing/serving) based on a particular key (name, balance, customerID, ... etc)
DeleteAccount(): This method can be used to delete a particular customer account/record
Print(): This method prints a particular customer information.
ShowCustomerList(): This method shows a list of customer records in a particular list, such as the waiting list for customers to be served.