Description
Project Title: Interactive Banking System
Project Description:
The main objective is to implement a functional banking system using the fundamental concepts of object-oriented programming studied in class. In this project, each team is required to develop a console-based banking system, where in the user can perform the following main actions:
• Withdraw/Deposit cash
• Display remaining balance
• Modify PIN code
• Transfer cash between accounts
Similar to most ATM terminals, the program should intake some input from the user and depending on the user’s action request, it should intereact with the database (in this case, the database.csv file provided) to execute the action. Upon running the program, the screen should provide the following options on display:
Welcome to the Bank of <Your Team Name> Card number (6 digits):
As shown above, the name you selected for your team should be displayed in place of <Your Team Name>. At first, the user should be asked to enter his/her card number (we assume it to be a 6-digit number). If the format of the number entered is verified with the database, then the user should be asked to enter the corresponding PIN code (we assume it to be a 4-digit number).
Welcome to the Bank of <Your Team Name>
Card number (6 digits): 581058 PIN code (4 digits):
If either the card number or PIN code is incorrect, then the program should display the error and ask the user to enter the number as follows:
Welcome to the Bank of <Your Team Name> The card number or PIN code is incorrect. Try again!
Card number (6 digits):
Once the card number and PIN code match the entry in the database provided, the next screen should display the following options to select from:
The Bank of <Your Team Name> Select one of the following options:
1. Withdraw Cash 2. Deposit Cash
3. Modify PIN Code 4. Show Balance
5. Transfer Between Accounts 6. End Session Enter option number:
In what follows, each of the 6 actions will be discussed in detail:
1. Withdraw Cash:
If the user selects this option (by entering 1), then the program should display the following:
The Bank of <Your Team Name>
Current balance: 1,234,567 KZT
Enter amount to withdraw: 5000
The user should see the current amount remaining in the account, followed by the amount to be withdrawn. If the amount requested to be withdrawn exceed the current balance, an approporaite message should be displayed to the user, thus informing and allowing him/her to withdraw a lesser amount. Once the amount is withdrawn, it shold be deducted from the balance and updated in the database. In the above example, if the user withdraws 5,000 KZT, the amount stored in the csv file should be 1,234,567 – 5,000 = 1,229,567 KZT. If the action is successful, you can display something similar to what is shown below, allowing the user to return to the main menu (by typing ‘y’) or end the session (by typing ‘n’):
The Bank of <Your Team Name> Cash withdrawn successfully!
Remaining balance: 1,229,567 KZT
Would you like to return to the main menu? (Y/N)
2. Deposit Cash:
This action is very similar to withdrawing cash, except that the amount entered by the user should be summed with the current balance in the account and displayed accordingly.
3. Modify PIN:
Once the PIN code is set, the display should have an option for the user to either return to the main menu page or exit.
4. Show Balance:
If the user opts for this action, the program should display the following information, which shold be retrieved from the database (Assume USD to KZT to USD xchange rate to be 1 USD = 450 KZT):
The Bank of <Your Team Name>
Card owner: Pete Jones
Card number: 581058
Current balance in KZT: 1,229,567
Current balance in USD: 2,732
Last transaction: – 5000 KZT
Would you like to return to the main menu? (Y/N)
5. Transfer Between Accounts:
Under this option, the user is required to enter the 6-digit number of the beneficiary’s account and the amount to be transferred as shown below:
The Bank of <Your Team Name>
**Commission for fund transfers over 20,000 KZT is 500 KZT Beneficiary’s card number: 912510
Transfer amount (in KZT): 15000
Beneficiary’s name: Aresh Dadlani
Conform transfer? (Y/N): Y Transfer successful!
Would you like to return to the main menu? (Y/N)
There are a number of points to be noticed while implementing this option. Firstly, the program should check and verify if the beneficiary’s card number exists in the database or not. If not, it should display the error to the user and ask to re-enter the correct card number. Secondly, the fund transferred should not exceed the current amaount available in the sender’s account. Thirdly, if the fund being transferred is more than 20,000 KZT, the program should automatically deduct 500 KZT from the sender’s account after making the transfer. For instance, the example shown above, no commissionw ill be taken from the sender’s balance as the fund being transferred in exactly 20,000 KZT. Also, keep in mind that if the sender intends to transfer fund more than 20,000 KZT, there should be at least 500 KZT remaining in the sender’s account that will be then reduced for the commission fee. Otherwise, the transcations should be carried out successfully and the user should be informed about it with an appropriate display message on the screen.
Finally, if a transfer is made between cards from two different banks (indicated using the ‘Bank ID field in the csv file), then 200 KZT is deducted from the sender’s account irrespective of the amount being transferred.
6. End Session
If the user selects this option, the program should show a good bye message and return to the very first screenshot, where a new user has to enter a card number and PIN code to initiate an action.
Policy and Requirements:
• The project will be graded based on the extent to which elements of OOP (classes, encapsulation, inheritance, polymorphism, exception handling,…) have been implemented. So, make sure you think about the project in terms of objects from the very beginning.
• We have zero tolerance for non-genuine code. The code should be originally yours. Any code found to be taken off the Internet or from other sources will not be graded.
• Each team will be graded based on the following items: (i) presentation, (ii) individual contribution, (iii) teamwork, (iv) report, and (v) OOP knowledge.
• The report should detial the design of the program developed by the team and explicitly hihglight the main contributions of each tem meber towards the implementation of the project. Kindly note that ‘preparing the presentation slides’ or ‘compling the report’ are not considered as individual contributions. Each student should be equally involved in implementing specific modules of the project. A sample report will be uploaded to Moodel as reference.
• During the 15-minute online presentation, each team is required to prepare and present a 5-slide presention that should explicitly include: (i) team name and members, (ii) contribution of each member in the team, (iii) examples of OOP concepts applied in the project, (iv) challenges faced and strengths of working as a team, (v) any additional features added to the project.
• Each team should use the original database.csv file during the online project presentation.
Good Luck



Reviews
There are no reviews yet.