Write a Java application to simulate a bank system. In the system, customers can open new bank accounts with the bank, and register/use an online account to manage their bank accounts. Some of the requirements on the functions implemented in this application are listed as follows:
1) A customer can open multiple bank accounts. When a new bank account is opened, it needs the information of the customer's SSN, an account number and an initial deposit. The account number must be unique. If the account number is used by another account, the creation of the new account fails.
2) A customer can register only ONE online account ID to manage his/her bank accounts by providing his selected online ID, password and SSN. If a customer tries to register another online account ID under his/her SSN, the registration fails. Also, the online account ID must be unique. If the ID is used by someone else, the registration fails.
3) A customer can use his/her online account to manage the bank accounts after the customer successfully signs in. When the customer tries to login his/her online account, it needs to check the password.
4) After the user signs in, a welcome page will be shown. The welcome page has a menu to allow the user make a selection from those in 5).
5) The customer can perform the following operations in his/her online account:
- See activities statement and current balance of a selected online bank account.
The activities include the date, time and type of the operation.
The process consists of entering a new password, confirming the new password and entering the correct old password.
Transfer money online from one of the customer's account to another
6) Please use at least the following six classes. Feel free to add any more classes, variables and methods. However, your design needs to follow the Object-Oriented approach.
- BankSystem: this is the main class.
- BankAccount: this is the class for bank accounts.
- OnlineSystem: this is the class for the online account system.
- Banker: this is the class for bankers. In this class, we define a static method to open new bank accounts.
- OnlineAccount: this is the class for online accounts for customers. A customer can register one online account to manage his/her own bank accounts.
- DateAndTime: This is the class defined by the instructor. This class provides a static method to get the current date and time. The date and time are used to keep a statement of the activities of a bank account.
7) Use ArrayList to keep the bank account and online account objects in memory when the program is running.
8) The program should run in a continuous way until the user enters "x" in the main menu to exit the program.