| Tags | skill/combined_concept_projects |
| Hard Prerequisites | |
| IMPORTANT: Please review these prerequisites, they include important information that will help you with this content. | |
|
|
In the last part of this project you created a BankAccount, now it is time to create a Bank.
Your directory structure should look like this:
├── banking
│ └── bank_account.py
| └── bank.py
├── setup.py
├── requirements.txt
├── .gitignore
└── tests
└── ???
Please use pytest to test your work.
Your directory structure should look like this:
├── spec
| ├── support
| | └── jasmine.json
| └── ???
├── src
| └── bank_account.js
| └── bank.js
└── package.json
Please test your work using jasmine.
Update your directory structure to:
...
├── app
| ├── build.gradle
| └── src
| ├── main
| | └── java
| | └── banking
| | ├── BankAccount.java
| | └── Bank.java <---NEW
| └──test
| └── java
| └── banking
| ├── ???.java <-------- names are important
| └── ???.java <-------- names are important
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
...
Create a class called Bank.
If you have ever opened an account at a bank then you will know that there is a set menu of different types of accounts you can open. You can’t just choose your interest rate when you feel like it.
For example, a Bank might allow you to open a current account (with a low interest rate), and a 32-day call account (with a high interest rate).
add account type. This should accept an account type name (string) and an interest rate.Here is some pseudocode:
bank.add_account_type("Saving", 5)
bank.add_account_type("Current",2.5)
bank.add_account_type("Fixed deposit", 8.2)
Now a Bank can manage a lot of bank accounts. It keeps track of all the different bank accounts by associating each account with a unique 10 digit number. This number wont change.
Create a function called open bank account. It should have one string parameter, the account type name. The function should return the account number of the new bank account.
The account number should be a string that is 10 characters long. Each character in the string should be a digit.
Here is some pseudocode:
savings_account_number = bank.open_bank_account("Saving")
current_account_number = bank.open_bank_account("Current")
The bank will need to keep track of which bank account is associated with bank account number.
Create the following functions:
(Please follow the naming conventions for the language you are working in)
deposit(bank_account_number, amount) This will find the BankAccount with the matching bank account number and then deposit the moneywithdraw(bank_account_number, amount) This will find the BankAccount with the matching bank account number and then withdraw the moneytransfer(from_account_number,to_account_number, amount) This will find the two matching accounts, withdraw some money from one of them, and deposit the money into the other one. Please try to keep your code DRYcompound_interest(): This should compound the interest on all the Bank Accounts that the Bank controlsget_balance(from_account_number): This should return the balance of the matching accountget_interest_rate(from_account_number): This should return the interest rate of the matching account// javascript
const bank = new Bank();
// addAccountType
bank.addAccountType({ accountType: "Savings", interestRate: 5 });
bank.addAccountType({ accountType: "Current", interestRate: 2.5 });
// openBankAccount
const savingsAccountNumber = bank.openBankAccount({ accountType: "Savings" }); // should return a 10 digit account number string
const currentAccountNumber = bank.openBankAccount({ accountType: "Current" }); // - - - 10 digit account number string
// deposit
bank.deposit({ accountNumber: savingsAccountNumber, amount: 1500 });
bank.deposit({ accountNumber: currentAccountNumber, amount: 500 });
// withdraw
bank.withdraw({ accountNumber: savingsAccountNumber, amount: 300 });
bank.withdraw({ accountNumber: currentAccountNumber, amount: 200 });
// transfer
bank.transfer({
fromAccountNumber: currentAccountNumber,
toAccountNumber: savingsAccountNumber,
amount: 200,
});
// getBalance
console.log(bank.getBalance({ accountNumber: savingsAccountNumber })); // should return 1400.00
console.log(bank.getBalance({ accountNumber: currentAccountNumber })); // should return 100.00
// getInterestRate
console.log(bank.getInterestRate({ accountNumber: savingsAccountNumber })); // should return 5
console.log(bank.getInterestRate({ accountNumber: currentAccountNumber })); // should return 2.5
// getCompoundInterest
bank.compoundInterest();
console.log(bank.getBalance({ accountNumber: savingsAccountNumber })); // should return 1405.83
console.log(bank.getBalance({ accountNumber: currentAccountNumber })); // should return 100.21
Again, please take testing very seriously. Imagine working at an actual bank. How careful would you be if a bug in your code could cost someone their life-savings?