document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1.  
  2. /**
  3. * Write a description of class ATM here.
  4. *
  5. * @author (your name)
  6. * @version (a version number or a date)
  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.  
  35. public void run()
  36. {
  37. while(true)
  38. {
  39. while(!userAuthenticated)
  40. {
  41. screen.displayMessageLine("\\nWelcome!");
  42. authenticateUser();
  43. }
  44.  
  45. performTransaction();
  46. userAuthenticated = false;
  47. currentAccountNumber = 0;
  48. screen.displayMessageLine("\\nThank you! Goodbye!");
  49. }
  50. }
  51.  
  52. private void authenticateUser()
  53. {
  54. screen.displayMessage("\\nPlease enter your account number: ");
  55. int accountNumber = keypad.getInput();
  56. screen.displayMessage("\\nEnter your PIN: ");
  57. int pin = keypad.getInput();
  58.  
  59. userAuthenticated = bankDatabase.authenticateUser(accountNumber, pin);
  60.  
  61. if(userAuthenticated)
  62. {
  63. currentAccountNumber = accountNumber;
  64. }
  65. else screen.displayMessageLine("Invalid account number or PIN. Please try again.");
  66. }
  67.  
  68. private void performTransaction()
  69. {
  70. Transaction currentTransaction = null;
  71. boolean userExited = false;
  72.  
  73. while(!userExited)
  74. {
  75. int mainMenuSelection = displayMainMenu();
  76. switch(mainMenuSelection)
  77. {
  78. case BALANCE_INQUIRY:
  79. case WITHDRAWAL:
  80. case DEPOSIT:
  81. currentTransaction = createTransaction(mainMenuSelection);
  82. currentTransaction.execute();
  83. break;
  84. case EXIT:
  85. screen.displayMessageLine("\\nExiting the system...");
  86. userExited = true;
  87. break;
  88. default:
  89. screen.displayMessageLine("\\nYou did not enter a valid selection. Try again.");
  90. break;
  91. }
  92. }
  93. }
  94.  
  95. private int displayMainMenu()
  96. {
  97. screen.displayMessageLine( "\\nMain menu:" );
  98. screen.displayMessageLine( "1 - View my balance" );
  99. screen.displayMessageLine( "2 - Withdraw cash" );
  100. screen.displayMessageLine( "3 - Deposit funds" );
  101. screen.displayMessageLine( "4 - Exit\\n" );
  102. screen.displayMessage( "Enter a choice: " );
  103. return keypad.getInput();
  104. }
  105.  
  106. private Transaction createTransaction(int type)
  107. {
  108. Transaction temp = null;
  109. switch (type)
  110. {
  111. case BALANCE_INQUIRY:
  112. temp = new BalanceInquiry(currentAccountNumber, screen, bankDatabase);
  113. break;
  114. case WITHDRAWAL:
  115. temp = new Withdrawal(currentAccountNumber, screen, bankDatabase, keypad, cashDispenser);
  116. break;
  117. case DEPOSIT:
  118. temp = new Deposit(currentAccountNumber, screen, bankDatabase, keypad, depositSlot);
  119. break;
  120. }
  121.  
  122. return temp;
  123. }
  124.  
  125. }
');