Ramdan51-062

ATM

Oct 19th, 2017
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.74 KB | None | 0 0
  1. public class ATM
  2. {
  3.     private boolean userAuthenticated;
  4.     private int currentAccountNumber;
  5.     private Screen screen;
  6.     private Keypad keypad;
  7.     private CashDispenser cashDispenser;
  8.     private BankDatabase bankDatabase;
  9.    
  10.    
  11.     private static final int BALANCE_INQUIRY = 1;
  12.     private static final int WITHDRAWAL = 2;
  13.     private static final int DEPOSIT = 3;
  14.     private static final int EXIT = 4;
  15.    
  16.     public ATM()
  17.     {
  18.         userAuthenticated = false;
  19.         currentAccountNumber = 0;
  20.         Screen screen = new Screen();
  21.         Keypad keypad = new Keypad();
  22.         CashDispenser cashDispenser = new CashDispenser();
  23.         BankDatabase bankDatabase = new BankDatabase();
  24.     }
  25.    
  26.     public void run()
  27.     {
  28.         while(true)
  29.         {
  30.             while(!userAuthenticated)
  31.             {
  32.                 screen.displayMessage("\nWelcome!");
  33.                 authenticateUser();
  34.             }
  35.            
  36.             performTransactions();
  37.             userAuthenticated = false;
  38.             currentAccountNumber = 0;
  39.             scren.displayMessage("/nThank You!. Come Again!");
  40.         }
  41.     }
  42.    
  43.     private void authenticateUser()
  44.     {
  45.         screen.displayMessage("/nPlease enter your account number: ");
  46.         int accountNumber = keypad.getInput();
  47.         screen.displayMessage("/nPlease enter your PIN: ");
  48.         int pin = keypad.getInput();
  49.        
  50.         userAuthenticated = bankDatabase.authenticateUser(accountNumber, pin);
  51.        
  52.         if(userAuthenticated)
  53.         {
  54.             currentAccountNumber = accountNumber;
  55.         }
  56.        
  57.         else
  58.         {
  59.             screen.displayMessage("/nInvalid account or PIN. Please try again");
  60.         }
  61.        
  62.     }
  63.    
  64.     private void performTransaction()
  65.     {
  66.         Transaction currentTransaction = null;
  67.         boolean userExited = false;
  68.        
  69.         while(!userExited)
  70.         {
  71.             int mainMenuSelection = displayMainMenu();
  72.            
  73.             switch(mainMenuSelection)
  74.             {
  75.                 case BALANCE_INQUIRY:
  76.                 case WITHDRAWAL:
  77.                 case DEPOSIT:
  78.                
  79.                     currentTransaction = createTransaction(mainMenuSelection);
  80.                    
  81.                     currentTransaction.execute();
  82.                     break;
  83.                 case EXIT:
  84.                     screen.displayMessage("/nExiting system...");
  85.                     userExited = true;
  86.                     break;
  87.                 default:
  88.                     screen.displayMessage("/nYou did not enter a valid selection. Try again.");
  89.                     break;
  90.                 }
  91.             }
  92.         }
  93.        
  94.     private int displayMainMenu()
  95.     {
  96.       screen.displayMessageLine( "\nMain menu:" );
  97.       screen.displayMessageLine( "1 - View my balance" );
  98.       screen.displayMessageLine( "2 - Withdraw cash" );
  99.       screen.displayMessageLine( "3 - Deposit funds" );
  100.       screen.displayMessageLine( "4 - Exit\n" );
  101.       screen.displayMessage( "Enter a choice: " );
  102.       return keypad.getInput();
  103.     }
  104.    
  105.     private Transaction createTransaction(int type)
  106.     {
  107.         Transaction temp = null;
  108.         switch(type)
  109.         {
  110.             case BALANCE_INQUIRY:
  111.                 temp = new BalanceInquiry(currentAccountNumber, screen, bankDatabase);
  112.                 break;
  113.             case WITHDRAWAL:
  114.                 temp = new Withdrawal(currentAccountNumber, screen, bankDatabase, keypad, cashDispenser);
  115.                 break;
  116.             case DEPOSIT:
  117.                 temp = new Deposit(currentAccountNumber, screen, bankDatabase, keypad, depositSlot);
  118.                 break;
  119.             }
  120.             return temp;
  121.         }
  122.  
  123. }
Add Comment
Please, Sign In to add comment