Advertisement
rmword

Untitled

Oct 23rd, 2017
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.92 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 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 = 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("\nWelcome!");
  34. authenticateUser();
  35. }
  36.  
  37. performTransactions();
  38. userAuthenticated=false;
  39. currentAccountNumber=0;
  40. screen.displayMessageLine("\nThank you! Goodbye!");
  41. }
  42. }
  43.  
  44. private void authenticateUser()
  45. {
  46. screen.displayMessage("\nPlease enter your account number : ");
  47. int accountNumber = keypad.getInput();
  48. screen.displayMessage("\nEnter your PIN: ");
  49. int pin = keypad.getInput();
  50.  
  51. userAuthenticated =
  52. bankDatabase.authenticateUser(accountNumber, pin);
  53.  
  54. if(userAuthenticated)
  55. {
  56. currentAccountNumber = accountNumber;
  57. }
  58. else
  59. screen.displayMessageLine(
  60. "Invalid account number or PIN. Please try again");
  61. }
  62.  
  63. private void performTransactions()
  64. {
  65. Transaction currentTransaction = null;
  66.  
  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 =
  80. createTransaction(mainMenuSelection);
  81.  
  82. currentTransaction.execute();
  83. break;
  84. case EXIT:
  85. screen.displayMessageLine("\nExiting the system...");
  86. userExited = true;
  87. break;
  88. default:
  89. screen.displayMessageLine(
  90. "\nYou did not enter a valid selection. Try again");
  91. break;
  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.  
  110. switch(type)
  111. {
  112. case BALANCE_INQUIRY:
  113. temp = new BalanceInquiry(
  114. currentAccountNumber, screen, bankDatabase);
  115. break;
  116. case WITHDRAWAL :
  117. temp = new Withdrawal(currentAccountNumber, screen,
  118. bankDatabase, keypad, cashDispenser);
  119. break;
  120. case DEPOSIT:
  121. temp = new Deposit (currentAccountNumber, screen,
  122. bankDatabase, keypad, depositSlot);
  123. break;
  124. }
  125. return temp;
  126. }
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement