Advertisement
arafaee

ATM.java

May 13th, 2017
951
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.93 KB | None | 0 0
  1. /**  
  2.   * ATM.java  
  3.   *  
  4.   * @author Hafara Firdausi/ 5115100043
  5.   * @version 01
  6.   */
  7.  
  8. public class ATM
  9. {
  10.     private boolean userAuthenticated;
  11.     private int currentAccountNumber;
  12.     private Screen screen;
  13.     private Keypad keypad;
  14.     private CashDispenser cashDispenser;
  15.     private DepositSlot depositSlot;
  16.     private BankDatabase bankDatabase;
  17.    
  18.     private static final int BALANCE_INQUIRY = 1;
  19.     private static final int WITHDRAWAL = 2;
  20.     private static final int DEPOSIT = 3;
  21.     private static final int EXIT = 4;
  22.    
  23.     public ATM()
  24.     {
  25.         userAuthenticated = false;
  26.         currentAccountNumber = 0;
  27.         screen = new Screen();
  28.         keypad = new Keypad();
  29.         cashDispenser = new CashDispenser();
  30.         depositSlot = new DepositSlot();
  31.         bankDatabase = new BankDatabase();
  32.     }
  33.  
  34.     public void run()
  35.     {
  36.         while(true)
  37.         {
  38.             while(!userAuthenticated)
  39.             {
  40.                 screen.displayMessageLine("\nSelamat Datang!");
  41.                 authenticateUser();    
  42.             }  
  43.             performTransactions();      
  44.             userAuthenticated = false;  
  45.             currentAccountNumber = 0;  
  46.             screen.displayMessageLine("\nTerima Kasih!\nSampai Jumpa!");
  47.         }
  48.     }
  49.  
  50.     private void authenticateUser()
  51.     {
  52.         screen.displayMessage("\nSilahkan masukkan nomor akun anda : ");
  53.         int accountNumber = keypad.getInput();
  54.         screen.displayMessage("\nSilahkan masukkan PIN anda : ");
  55.         int pin = keypad.getInput();
  56.        
  57.         userAuthenticated = bankDatabase.authenticateUser(accountNumber, pin);
  58.        
  59.         if(userAuthenticated)
  60.         {
  61.             currentAccountNumber = accountNumber;  
  62.         }
  63.         else
  64.         {
  65.             screen.displayMessageLine("Nomor akun atau PIN anda tidak valid.");
  66.             screen.displayMessageLine("Silahkan coba lagi.");
  67.         }
  68.     }
  69.  
  70.     private void performTransactions()
  71.     {
  72.         Transaction currentTransaction = null;
  73.         boolean userExited = false;  
  74.        
  75.         while(!userExited)
  76.         {
  77.             int mainMenuSelection = displayMainMenu();
  78.  
  79.             switch(mainMenuSelection)
  80.             {
  81.                 case BALANCE_INQUIRY :
  82.                 case WITHDRAWAL :
  83.                 case DEPOSIT :
  84.                     currentTransaction = createTransaction(mainMenuSelection);
  85.                     currentTransaction.execute();
  86.                     break;
  87.                 case EXIT :
  88.                     screen.displayMessageLine("\nKeluar dari sistem...");
  89.                     userExited = true;    
  90.                     break;
  91.                 default :
  92.                     screen.displayMessageLine("\nMenu yang anda pilih tidak valid.");
  93.                     screen.displayMessageLine("Silahkan coba lagi.");
  94.                     break;
  95.             }  
  96.         }
  97.     }  
  98.  
  99.     private int displayMainMenu()
  100.     {
  101.         screen.displayMessageLine("\nMain Menu :");
  102.         screen.displayMessageLine("1. Lihat Saldo");
  103.         screen.displayMessageLine("2. Tarik Uang");
  104.         screen.displayMessageLine("3. Simpan Uang");
  105.         screen.displayMessageLine("4. Keluar\n");
  106.         screen.displayMessage("Masukkan pilihan : ");
  107.         return keypad.getInput();
  108.     }
  109.    
  110.     private Transaction createTransaction(int type)
  111.     {
  112.         Transaction temp = null;      
  113.         switch(type){
  114.             case BALANCE_INQUIRY :
  115.                 temp = new BalanceInquiry(currentAccountNumber, screen, bankDatabase);
  116.                 break;
  117.             case WITHDRAWAL :
  118.                 temp = new Withdrawal(currentAccountNumber, screen, bankDatabase, keypad, cashDispenser);
  119.                 break;
  120.             case DEPOSIT :
  121.                 temp = new Deposit(currentAccountNumber, screen, bankDatabase, keypad, depositSlot);
  122.                 break;
  123.         }  
  124.         return temp;  
  125.     }  
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement