nawamkihafahd

Untitled

Oct 19th, 2017
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.51 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. private int displayMenuOfAmounts()
  69. {
  70. int userChoice = 0;
  71.  
  72. Screen screen = getScreen();
  73.  
  74. int[] amounts = { 0, 20, 40, 60, 100, 200 };
  75.  
  76. while ( userChoice == 0 )
  77. {
  78. screen.displayMessageLine( "\nWithdrawal Menu:" );
  79. screen.displayMessageLine( "1 - $20" );
  80. screen.displayMessageLine( "2 - $40" );
  81. screen.displayMessageLine( "3 - $60" );
  82. screen.displayMessageLine( "4 - $100" );
  83. screen.displayMessageLine( "5 - $200" );
  84. screen.displayMessageLine( "6 - Cancel transaction" );
  85. screen.displayMessage( "\nChoose a withdrawal amount: " );
  86.  
  87. int input = keypad.getInput();
  88.  
  89. switch ( input )
  90. {
  91. case 1:
  92. case 2:
  93. case 3:
  94. case 4:
  95. case 5:
  96. userChoice = amounts[ input ];
  97. break;
  98. case CANCELED:
  99. userChoice = CANCELED;
  100. break;
  101. default:
  102. screen.displayMessageLine( "\nInvalid selection. Try again." );
  103. }
  104. }
  105.  
  106. return userChoice;
  107. }
  108. }
Add Comment
Please, Sign In to add comment