document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. public class VendingMachine
  2. {
  3.     private boolean userAuthenticated;
  4.     private int currentAccountNumber;
  5.     private Screen screen;
  6.     private Keypad keypad;
  7.     private BeverageDispenser beverageDispenser;
  8.    
  9.     private EmoneyDatabase emoneyDatabase;
  10.    
  11.     private static final int BALANCE_INQUIRY = 1;
  12.     private static final int WITHDRAW = 2;
  13.    
  14.     private static final int EXIT = 3;
  15.    
  16.     public VendingMachine()
  17.     {
  18.         userAuthenticated = false;
  19.         currentAccountNumber = 0;
  20.         screen = new Screen();
  21.         keypad = new Keypad();
  22.         beverageDispenser = new BeverageDispenser();
  23.        
  24.         emoneyDatabase = new EmoneyDatabase();
  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.        
  50.        
  51.         userAuthenticated = emoneyDatabase.authenticateUser( accountNumber );
  52.        
  53.         if ( userAuthenticated )
  54.         {
  55.             currentAccountNumber = accountNumber;
  56.         }
  57.         else
  58.         {
  59.             screen.displayMessageLine( "Nomor Akun 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.                
  77.                 currentTransaction = createTransaction( mainMenuSelection );
  78.                 currentTransaction.execute();
  79.                 break;
  80.                
  81.                 case EXIT:
  82.                 screen.displayMessageLine( "\\n Keluar Dari System. . ." );
  83.                 userExited = true;
  84.                 break;
  85.                 default:
  86.                 screen.displayMessageLine( "\\nAnda Tidak Memasukan Angka dengan Tepat. Silahkan Coba Sekali Lagi!" );
  87.                 break;
  88.             }
  89.         }
  90.     }
  91.    
  92.     private int displayMainMenu()
  93.     {
  94.         screen.displayMessageLine( "\\nMain Menu:" );
  95.         screen.displayMessageLine( "1. Melihat Saldo" );
  96.         screen.displayMessageLine( "2. Beli Minuman" );
  97.        
  98.         screen.displayMessageLine( "3. EXIT\\n" );
  99.         screen.displayMessageLine( "Masukan Pilihan Anda! " );
  100.         return keypad.getInput();
  101.     }
  102.    
  103.     private Transaction createTransaction( int type )
  104.     {
  105.         Transaction temp = null;
  106.        
  107.         switch ( type )
  108.         {
  109.             case BALANCE_INQUIRY:
  110.             temp = new BalanceInquiry( currentAccountNumber, screen, emoneyDatabase );
  111.             break;
  112.             case WITHDRAW:
  113.             temp = new Withdraw( currentAccountNumber, screen, emoneyDatabase, keypad, beverageDispenser );
  114.             break;
  115.            
  116.         }
  117.         return temp;
  118.     }
  119. }
');