You are on page 1of 3

Programming Fundamentals Spring 2011 (BS-CS-F10 Morning & Afternoon)

Programming Project (Regular Category)

Banking System
Submission Deadline: Friday, 10th June, 2011 (till 5:00 PM)

You have to develop a banking management system in C++, containing four main entities: User Transaction Account Account Holder The entity User are of two categories Admin and Operator. They will have the following fields: Name (First Name, Middle Initial and Last Name), CNIC number, Address, Phone, Email, Username (unique in the system), 4-Digit Pin-code and User Type (Admin or Operator). The entity Transaction will contain the following fields: Transaction ID (unique in the system), Transaction Type (Desposit, Withdraw), Transaction Mode (Cash, Cheque, Transfer), Transaction Account (Account number for which the transaction is committed), Transaction Amount (Minimum Rs. 500) and Transaction Date. The entity Account will have the following fields: Account Number (unique in the system), Account Title (Name of Account Holder), ID of Account Holder (CNIC number), Account Type (Savings, Current), Account Balance (Minimum Rs. 500), Interest and Transaction History (List of transactions). The entity Account Holder will have the following fields: Name (First Name, Middle Initial and Last Name), CNIC number, Address, Phone, Email, Username (Account number), 4-Digit Pin-code.

Following are the main functionalities that your application should provide: 1. 2. 3. 4. 5. 6. 7. 8. User log-in. Add new user in the Banking System Edit user details. (Only Address, Phone, Email and Pin-Code can be modified) Remove an existing user from Banking System Change Pin-code of a user. Create new account (Auto generated account number, i.e. last account number+1) Add details of an account holder. Change details of an account holder (Only Address, Phone, Email and Pin-Code can be modified). 9. Disable an existing account 10. Enable a disabled account

Page 1 of 3

11. Display the list of all Users. 12. Display the list of all Accounts. 13. Display the list of all Active (Enabled) Accounts. 14. Display the list of all Disabled Accounts. 15. Display the list of all Account Holders. 16. Search an account through Account Title e.g. list all accounts which have title M Ali. 17. Search an account through Customer ID 18. Deposit Amount in an account. 19. Rollback a transaction. (Reverse a transaction) 20. Account Holder log-in. 21. Withdraw Amount from an account. 22. Transfer Amount from one account to another. 23. Generate bank statement (Complete list or last N transactions) 24. View Balance of an account. 25. Change Pin-Code of an Account Holder. 26. Log-off. 27. Quit Banking System.

Create a user-friendly interface that enables the user to run the queries (functionalities you have to implement). When your application starts it should take the input data about the four entities (i.e. Users, Accounts, Account Holders and Transactions) from four files namely users.txt, accounts.txt, account_holders.txt and transactions.txt. Once the data has been read from the files, all the actions (queries) should be performed on it and no file I/O will be required. When the user chooses to quit the program, all the data should be written back to their respective files, reflecting any changes that the user made during the execution of the program. Similarly, when the system exits; all the data should be written back to the respective files reflecting any changes made by the user/account holders.

Constraints / Business Rules Admin-User must be able to perform all tasks EXCEPT the task#20. Operator-User must be able to perform all tasks EXCEPT the following: o 2, 4, 5 Account Holder can perform only the following tasks: o 20 - 26 Only limited number of accounts against one CNIC number. (You can define any limit between 1 to 5).

Page 2 of 3

Important Points to Remember Use a modular approach i.e. define separate functions for separate tasks The application must have a user-friendly interface. Output should be displayed in a neat (well-formatted) tabular way. Special/Boundary cases should be properly handled by your application. For example: trying to deposit in an account which does not exist, trying to access the record of a user which does not exist, etc. Use meaningful variable and function names. Comment your code intelligently.

Page 3 of 3

You might also like