AndreanJP

ATM class

Dec 15th, 2016
1,082
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.71 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 DepositSlot depositSlot;
  9.     private BankDatabase bankDatabase;
  10.    
  11.     private static final int BALANCE_INQUIRY = 1;
  12.     private static final int WITHDRAW = 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 = new Screen();
  21.         keypad = new Keypad();
  22.         cashDispenser = new CashDispenser();
  23.         depositSlot = new DepositSlot();
  24.         bankDatabase = new BankDatabase();
  25.     }
  26.    
  27.     public void run()
  28.     {
  29.         while (true)
  30.         {
  31.             while( !userAuthenticated )
  32.             {
  33.                 screen.displayMessageLine( "\nSelamat Datang!");
  34.                 authenticateUser();
  35.             }
  36.            
  37.             performTransactions();
  38.             userAuthenticated = false;
  39.             currentAccountNumber = 0;
  40.  
  41.         }
  42.     }
  43.    
  44.     private void authenticateUser()
  45.     {
  46.         screen.displayMessage("\nMasukkan Nomor Akun Anda: " );
  47.         int accountNumber = keypad.getInput();
  48.         screen.displayMessage("\nMasukkan PIN Anda: " );
  49.         int pin = keypad.getInput();
  50.        
  51.         userAuthenticated = bankDatabase.authenticateUser( accountNumber, pin );
  52.        
  53.         if ( userAuthenticated )
  54.         {
  55.             currentAccountNumber = accountNumber;
  56.         }
  57.         else
  58.         {
  59.             screen.displayMessageLine( "Nomor Akun atau PIN anda SALAH. Silahkan coba lagi!" );
  60.         }
  61.     }
  62.    
  63.     private void performTransactions()
  64.     {
  65.         Transaction currentTransaction = null;
  66.         boolean userExited = false;
  67.        
  68.         while ( !userExited )
  69.         {
  70.             int mainMenuSelection = displayMainMenu();
  71.            
  72.             switch ( mainMenuSelection )
  73.             {
  74.                 case BALANCE_INQUIRY:
  75.                 case WITHDRAW:
  76.                 case DEPOSIT:
  77.                
  78.                 currentTransaction = createTransaction( mainMenuSelection );
  79.                 currentTransaction.execute();
  80.                 break;
  81.                
  82.                 case EXIT:
  83.                 screen.displayMessageLine( "\n Keluar Dari System. . ." );
  84.                 userExited = true;
  85.                 break;
  86.                 default:
  87.                 screen.displayMessageLine( "\nAnda Tidak Memasukan Angka dengan Tepat. Silahkan Coba Sekali Lagi!" );
  88.                 break;
  89.             }
  90.         }
  91.     }
  92.    
  93.     private int displayMainMenu()
  94.     {
  95.         screen.displayMessageLine( "\nMain Menu:" );
  96.         screen.displayMessageLine( "1. Melihat Saldo" );
  97.         screen.displayMessageLine( "2. Tarik Tunai" );
  98.         screen.displayMessageLine( "3. Menyimpan Uang" );
  99.         screen.displayMessageLine( "4. EXIT\n" );
  100.         screen.displayMessageLine( "Masukan Pilihan Anda! " );
  101.         return keypad.getInput();
  102.     }
  103.    
  104.     private Transaction createTransaction( int type )
  105.     {
  106.         Transaction temp = null;
  107.        
  108.         switch ( type )
  109.         {
  110.             case BALANCE_INQUIRY:
  111.             temp = new BalanceInquiry( currentAccountNumber, screen, bankDatabase );
  112.             break;
  113.             case WITHDRAW:
  114.             temp = new Withdraw( 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. }
Advertisement
Add Comment
Please, Sign In to add comment