13.20 GR X Lab04.pdf Section 1: Problem Statement. Suppose that you are hired from a local bank to develop an easy management system for client accounts. The system is quite straightforward, i.e., it has only two kinds of transactions that can be carried out deposit and withdraw. Deposit transaction (transCode: PST) is to deposit some money to a bank account, and withdraw transaction (transCode: WDW) is to withdraw some money from a bank account However, the bank strongly requires a security policy. That is, before any transaction is performed on a specific account, the system should ask for username and password for a security validation purpose. If the entered username and password are matched the system updates the details of the account accordingly and inform that the transaction is successfully done Otherwise, the system must refuse to perform the transaction and report the failure. Section 2: System Design. Your implementation should follow the class diagram below: Account - - change regeringsko showing Sering Decorating It has two classes: Account and Transaction. The class Account represents the bank accounts which consist of three instance variables and four methods. The variables username and password are used to store the authentication details for the bank account, and the variable balance stores the current account balance so far. The class Account also has four methods. The following table shows the requirements of each method Method Name Requirement CLASS: Account register aims to set the details for the bank account in which it accepts three parameters which are username, password, and balance authenticate checks whether the entered username and password are matched with the ones that were set by the method register or not. If they are, the method returns true indicating the authentication is successful; otherwise, it fails to authorize. MTS280 2/2020 MTS280 2/2020 * When comparing the username and password, you cannot ignore upper and lower cases showAccount Details shows the report the current situation for the bank account. For (require authentication example, "Username:Thamnasat, Balance:1000.e. It accepts two = if it fails to awthorize, parameters for authentication purpose. the transaction should be cancelled) execute Transaction aims to execute the specified transaction. It accepts four ("require authentication parameters, the first two parameters (having types Transaction = if it fails to authorize, and double respectively) indicate the transaction details to be the transaction should be executed, and the remaining two are used for authentication cancelled) purpose This method must check the type (transCode) of the specified transaction, that is If the transCode is "DPST", the system should top up the current balance by the entered amount If the transCode is "WTDW", the system should deduet the current balance by the entered amount Otherwise; the system should report that "invalid code." When comparing the transCode, you can ignore upper and lower cases For the class Transaction, it has two variables transcode and description to store the transaction code and description for a transaction. The two variables will be set by the constructor. This class also provides two getter methods as indicated in the class diagram, Section 3: Test class. Here is the provided test class. public class TestAccount public static void main(String args[]) { String USER = "Thammasat"; String PASS - "TU2564"; Transaction Dep new Transaction("OPST", "DEPOSITE"); Transaction thit new Transaction("WOW", "WITHDRAW"); Account ac . new Account(); ac.register(e, Thammasat", "TU2564"); 13.20 GR Lab04.pdf MTS280 2/2020 ac.executeTransaction(Dep, 180, USER, PASS); ac.showAccount Details(USER, PASS); ac.execute Transaction(twit, 1200, USER, PASS); ac showAccountDetails(USER, PASS); ac.execute Transaction(wit, 850, USER, PASS); ac.showAccount Details(USER, PASS); ac.execute Transaction(twit, 2se, USER, PASS); ac.showAccount Details(USER, PASS); Output (Console): Trans Code DPST(DEPOSITE) with amount of 1960. has been successfully executed. Username: Thammasat, Balance:1080.2 Trans Code WTOW(WITHDRAW) with sount of 1200.8 failed due to the insufficient balance. Username: Thammasat, Balance:1000. Trans Code WTOW(WITHDRAW) with anount of 850.e has been successfully executed. Trans Code WTOW(WITHDRAW) with anount of 258.0 failed due to the insufficient balance. Username: Thammasat, Balance:150.0 Students are encouraged to build the whole system on their own. However, we provide partial codes such that you may consider them as a hint to start doing the lab. (the provided codes can be found in labop) Submission: Due date: within Feb 16, 2021 by 18:00 Submission channel: Submit on Google Classroom You are required to submit this lab as Eclipse project (compressed as.zip or.nur). In this project, it must contain the following files. 1. Accounjava 2. Transaction java 3. TestAccount.java