Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ATM
- {
- private boolean userAuthenticated;
- private int currentAccountNumber;
- private Screen screen;
- private Keypad keypad;
- private CashDispenser cashDispenser;
- private BankDatabase bankDatabase;
- private static final int BALANCE_INQUIRY = 1;
- private static final int WITHDRAWAL = 2;
- private static final int DEPOSIT = 3;
- private static final int EXIT = 4;
- public ATM()
- {
- userAuthenticated = false;
- currentAccountNumber = 0;
- Screen screen = new Screen();
- Keypad keypad = new Keypad();
- CashDispenser cashDispenser = new CashDispenser();
- BankDatabase bankDatabase = new BankDatabase();
- }
- public void run()
- {
- while(true)
- {
- while(!userAuthenticated)
- {
- screen.displayMessage("\nWelcome!");
- authenticateUser();
- }
- performTransactions();
- userAuthenticated = false;
- currentAccountNumber = 0;
- scren.displayMessage("/nThank You!. Come Again!");
- }
- }
- private void authenticateUser()
- {
- screen.displayMessage("/nPlease enter your account number: ");
- int accountNumber = keypad.getInput();
- screen.displayMessage("/nPlease enter your PIN: ");
- int pin = keypad.getInput();
- userAuthenticated = bankDatabase.authenticateUser(accountNumber, pin);
- if(userAuthenticated)
- {
- currentAccountNumber = accountNumber;
- }
- else
- {
- screen.displayMessage("/nInvalid account or PIN. Please try again");
- }
- }
- private void performTransaction()
- {
- Transaction currentTransaction = null;
- boolean userExited = false;
- while(!userExited)
- {
- int mainMenuSelection = displayMainMenu();
- switch(mainMenuSelection)
- {
- case BALANCE_INQUIRY:
- case WITHDRAWAL:
- case DEPOSIT:
- currentTransaction = createTransaction(mainMenuSelection);
- currentTransaction.execute();
- break;
- case EXIT:
- screen.displayMessage("/nExiting system...");
- userExited = true;
- break;
- default:
- screen.displayMessage("/nYou did not enter a valid selection. Try again.");
- break;
- }
- }
- }
- private int displayMainMenu()
- {
- screen.displayMessageLine( "\nMain menu:" );
- screen.displayMessageLine( "1 - View my balance" );
- screen.displayMessageLine( "2 - Withdraw cash" );
- screen.displayMessageLine( "3 - Deposit funds" );
- screen.displayMessageLine( "4 - Exit\n" );
- screen.displayMessage( "Enter a choice: " );
- return keypad.getInput();
- }
- private Transaction createTransaction(int type)
- {
- Transaction temp = null;
- switch(type)
- {
- case BALANCE_INQUIRY:
- temp = new BalanceInquiry(currentAccountNumber, screen, bankDatabase);
- break;
- case WITHDRAWAL:
- temp = new Withdrawal(currentAccountNumber, screen, bankDatabase, keypad, cashDispenser);
- break;
- case DEPOSIT:
- temp = new Deposit(currentAccountNumber, screen, bankDatabase, keypad, depositSlot);
- break;
- }
- return temp;
- }
- }
Add Comment
Please, Sign In to add comment