Advertisement
rmword

Untitled

Oct 23rd, 2017
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.50 KB | None | 0 0
  1. public class Withdrawal extends Transaction
  2. {
  3. private int amount;
  4. private Keypad keypad;
  5. private CashDispenser cashDispenser;
  6.  
  7. private final static int CANCELED = 6;
  8.  
  9. public Withdrawal(int userAccountNumber, Screen atmScreen,
  10. BankDatabase atmBankDatabase, Keypad atmKeypad,
  11. CashDispenser atmCashDispenser)
  12. {
  13. super(userAccountNumber, atmScreen, atmBankDatabase);
  14.  
  15. keypad = atmKeypad;
  16. cashDispenser = atmCashDispenser;
  17. }
  18.  
  19. @Override
  20. public void execute()
  21. {
  22. boolean cashDispensed = false;
  23. double availableBalance;
  24.  
  25. BankDatabase bankDatabase = getBankDatabase();
  26. Screen screen = getScreen();
  27.  
  28. do
  29. {
  30. amount = displayMenuOfAmounts();
  31.  
  32. if(amount!= CANCELED)
  33. {
  34. availableBalance = bankDatabase.getAvailableBalance(getAccountNumber());
  35.  
  36. if(amount <= availableBalance)
  37. {
  38. if(cashDispenser.isSufficientCashAvailable(amount))
  39. {
  40. bankDatabase.debit(getAccountNumber(), amount);
  41.  
  42. cashDispenser.dispenseCash(amount);
  43. cashDispensed = true;
  44.  
  45. screen.displayMessageLine("\nYour cash has been"
  46. + " dispensed. Please take your cash now.");
  47. }
  48. else
  49. screen.displayMessageLine(
  50. "\nInsufficient cash available in the ATM." +
  51. "\n\nPlease choose a smaller amount.");
  52. }
  53. else
  54. {
  55. screen.displayMessageLine(
  56. "\nInsufficient funds in your account." +
  57. "\n\nPlease choose a smaller amount.");
  58. }
  59. }
  60. else
  61. {
  62. screen.displayMessageLine("\nCanceling transaction...");
  63. return;
  64. }
  65. } while( !cashDispensed );
  66.  
  67. }
  68.  
  69. private int displayMenuOfAmounts()
  70. {
  71. int userChoice = 0;
  72.  
  73. Screen screen = getScreen();
  74.  
  75. int[] amounts = {0, 20, 40, 60, 100, 200};
  76.  
  77. while(userChoice ==0)
  78. {
  79. screen.displayMessageLine("\nWithdrawal Menu:");
  80. screen.displayMessageLine("1 - $20");
  81. screen.displayMessageLine("2 - $40");
  82. screen.displayMessageLine("3 - $60");
  83. screen.displayMessageLine("4 - $100");
  84. screen.displayMessageLine("5 - $200");
  85. screen.displayMessageLine("6 - Cancel transaction");
  86. screen.displayMessage("\nChoose a withdrawal amount: ");
  87.  
  88. int input = keypad.getInput();
  89.  
  90. switch(input)
  91. {
  92. case 1:
  93. case 2:
  94. case 3:
  95. case 4:
  96. case 5:
  97. userChoice = amounts[input];
  98. break;
  99. case CANCELED:
  100. userChoice = CANCELED;
  101. break;
  102. default:
  103. screen.displayMessageLine(
  104. "\nInvalid selection. Try again.");
  105. }
  106. }
  107. return userChoice;
  108. }
  109.  
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement