You are on page 1of 3

Object Oriented Programming Special Section C

Assignment # 2
Submission Deadline: First Lecture after vacations

Submission Folders:

\\printsrv\Teacher Data\Abdullah\OOP Spring 2017\Assignments\A2

Instructions
This is an individual assignment. You are NOT allowed to work/submit in form of group. Absolutely
NO collaboration is allowed. Any traces of plagiarism/cheating would result in an F grade in this
course.
Do NOT copy even a single line of code from any other person or book or Internet or any other source.
This assignment needs to be submitted in Soft Copy. See Submission Procedure at the end.
Late submissions will NOT be accepted, in any case.

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. User log-in.
2. Add new user in the Banking System
3. Edit user details. (Only Address, Phone, Email and Pin-Code can be modified)
4. Remove an existing user from Banking System
5. Change Pin-code of a user.
6. Create new account (Auto generated account number, i.e. last account number+1)
7. Add details of an account holder.
8. 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
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:
2, 4, 5
Account Holder can perform only the following tasks:
20 - 26
Only limited number of accounts against one CNIC number. (You can define any limit
between 1 to 5).

You can take assumption if needed. Use object oriented approach to complete this task.
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.
Use separate .cpp and .h file for all class which will you build in this task.

Submission Procedure
You are required to submit this assignment in soft copy format (in the specified folder). Put the all .cpp and
.h files in a folder (do NOT include any other files in your submission). The name of the folder should be your
complete roll number (like BCSF10M052), then compress that folder, and copy the .RAR file in the specified
submission folder for your section.
Please note:
These good programming practices will also have their (significant) weightage in the marking of
this assignment:
o Comment your code intelligently. Uncommented code will not be given any credit.
o Indent your code properly.
o Use meaningful variable names.
o Use meaningful prompt lines/labels for input/output.

You might also like