SEHH2042 Computer Programming Group ProjectBank Account System Due: 23:59, 23 30 November 2019
Expected Learning Outcomes
familiarise themselves with at least one high level language programming environment.
develop a structured and documented computer program.
understand the fundamentals of objectoriented programming and apply it in computer
program development.
apply the computer programming techniques to solve practical problems.
Introduction
In this assignment, you are going to develop an Online Banking System that runs in the command line environment. The system retrieves and updates the bank account information in a data file for example, a text file named as account.dat in a defined format see Requirement R10 below. User can perform the following operations on his bank account: Open Account, Update Account Information, Login, Logout, Balance Enquiry, Deposit, Withdraw, Transfer and Fixed Deposit Enquiry.
This is a group assignment. You need to form a group with 5 to 6 students, and write a Win32 Console Application program called OnlineBanking.cpp. The requirements are listed below.
System Requirements
R0 When the program starts, the console should display a welcome message, and then a prompt message that asks for the file name of the data file to be used in this current program execution.
Welcome Message designed by your group
Please input the file name of the data file: account.dat
Your program can assume that the data file to be used can be found and is of the correct format with at most 1000 account records. After the file data is successfully loaded, the Main Menu of the program should be displayed. User can enter the options of the corresponding actions see R1 to R5 below.
Main Menu
1 Open Account
2 Login
3 List All Accounts
SEHH2042 1920s1Group Project 1
4 Credits
5 Exit
Option 15:
R1 1 Open Account
When the user inputs 1 in the Main Menu, a new bank account will be created. User should be prompted for the following necessary information:
Account Holder Name
Mobile Phone Number
Password
Initial Amount to Deposit
The following requirements related to Open Account should be followed.
R1.1 Input checking
The following validity check regarding the input data should be carried out
The account holder name does not contain any digits or other symbols except the alphabets and the space character. It should be at most 20character long.
Mobile phone number should be an 8digit input.
A password should be of at least 8character long, which includes at least one
capital letter, one small letter and one digit.
The initial amount to deposit should be at least 100.
User is asked to input the data again for any invalid input.
R1.2 Handling of password
To ensure the password is correctly typed, user needs to retype the password again and the system should ensure the two entered passwords are the same. Otherwise, user needs to enter the password again.
In the data file e.g., account.dat, the password is not stored directly. Instead, the hash value of the password should be saved use the hash function available in C standard library, see the Tips section.
R1.3 Creating an account
SEHH2042 1920s1Group Project 2
A new account can be created only if the input mobile phone number is not present in the data file. If successful, the account number will be displayed in the screen, and the system enters the Bank Menu see R2.1 below so the user can use the new account no login is needed. Otherwise, an error message and then the Main Menu should be displayed.
The new account number should be a 9digit number that is randomly generated, not found in the list of all accounts, and should start with 567. E.g., 567123456.
R1.4 Saving data to the data file
Upon the account creation, a new entry with the necessary fields will be added into the data file when the program terminates see R6. Refer to R10 below for the format of the data file.
R2 2 Login
When the user inputs 2 in the Main Menu, the console asks for user input of an account number and a password. If the account is found and the password is correct i.e., the hash value of the input password matches with that in record, the system displays the Bank Menu of the program see R2.1 below. Otherwise, an appropriate message should be displayed and the console should show the Main Menu again.
R2.1 Bank Menu
When the Bank Menu of the program is shown, user can enter the options of the corresponding actions see R2.2 to R2.6 below.
Hello, Chan Tai Man
Account No: 567123456
Bank Menu
1 Check Balance
2 Deposit
3 Withdraw
4 Transfer
5 Fixed Deposit Enquiry
6 Update Account Info
7 Logout
Option 17:
R2.2 Check Balance, Deposit and Withdraw
SEHH2042 1920s1Group Project 3
Check Balance: If such option is chosen, the balance in the users bank account is displayed.
DepositWithdraw: If such option is chosen, the user is prompted for the amount to deposit i.e., add into account or withdraw i.e., take away from account. If the transaction is successful, a meaningful message and the updated bank account balance should be displayed. Program data about the account should be updated after a successful transaction.
The system returns to the Bank Menu when the above is done.
R2.3 Transfer
If such option is chosen, the system asks for the followings user inputs: 1 the recipient information, either the account number or the mobile phone number, and 2 the amount to transfer. If the transaction is successful, a meaningful message and the updated bank account balance of the user should be displayed. Program data about the related accounts should also be updated after a successful transaction.
The system returns to the Bank Menu when the above is done.
R2.4 Fixed Deposit Enquiry
If such option is chosen, the user is asked to input the principal amount for deposit with error checking to ensure the entered value is not larger than the users account balance, the period in months, and the interest rate per year. The console then displays a table showing the Amount after each month has passed for period number of months. The interest is compounded monthly according to the input interest rate.
Compound Interest Formula compounded monthly
112
where:
: the Amount including interest after t months
: the Principal value
: the Interest Rate per year
: the Period, i.e., the number of months to be deposited
For example, for a principal amount of 100,000 to be deposited for 15 months at an interest rate of 2.375 per year, the table below should be displayed.
Month 1 2
Interest
197.92
198.31
Amount
100197.92
100396.23
SEHH2042 1920s1Group Project
4
3 198.70
4 199.09
5 199.49
6 199.88
7 200.28
8 200.67
9 201.07
10 201.47
11 201.87
12 202.27
13 202.67
14 203.07
15 203.47
100594.93
100794.02
100993.51
101193.39
101393.67
101594.34
101795.42
101996.89
102198.76
102401.02
102603.69
102806.76
103010.23
The system returns to the Bank Menu when the above is done.
R2.5 Update Account Info
The user can update either the Mobile Phone Number or the password under this option. User first chooses which information to update, then the system performs the following accordingly.
Mobile phone number: the system asks for the new Mobile Phone Number, and then requires the user to input the correct password for the change to be effective.
Password: the system asks the user to input the original password, then input the new password, and type the new password again. The update can go ahead only if the original password is a correct one, and the two input new passwords are the same.
Corresponding input checking as listed in R1.1 above should be carried out here as well. Upon successful update, program data about the account should be updated. No update should be carried out under wrong inputs.
The system returns to the Bank Menu when the above is done.
R2.6 Logout
If such option is chosen, the system returns to the Main Menu.
R2.7 Timeout Requirement
If the user has logged in but the system is left idled i.e., no user input received by the system for 15 seconds, the system will show the message below and logout returns to the Main Menu upon getting the next user input.
SEHH2042 1920s1Group Project 5
You are logged out as the system is idle for 15 seconds. Please login again.
R3 3 List All Accounts
If such option is chosen, the following information about all accounts should be displayed in a table format: the Account number, the Account holder name, the Mobile phone number and the Account balance. Latest information should be shown, which includes any account updates since the program starts. Entries are displayed in ascending order of Account Number. Appropriate formatting on the table should be applied for output clarity. Monetary values should be displayed in 2 decimal places.
The system returns to the Main Menu when the above is done.
R4 4 Credits
The system displays the personal particulars e.g. student name, student ID, class, tutorial group, etc. of the group members. After displaying the information, the system returns to the Main Menu.
R5 5 Exit
When the user inputs this option, the system prompts for users confirmation. If the user inputs y or Y, the program terminates and the data file is updated. If the user inputs n or N, the system returns to the Main Menu. Other input is not acceptable and the system should ask the user to confirm again.
Other General Requirements
R6 Any changes on the accounts during the program execution should be effective after that particular account operation. However, changes to the data file should happen in one go when the program terminates.
R7 Meaningful guidelines should be printed to assist with users input. Whenever an option is selected, meaningful messages should be displayed.
R8 Suitable checking on users input is expected. Appropriate error messages should be printed whenever unexpected situation happens, e.g., invalid input, not enough money, etc.
R9 The use of functions in addition to main function and classes are expected in your program. Appropriate comments should be added in your source code file.
SEHH2042 1920s1Group Project 6
R10 Format of the data file e.g., account.dat should be strictly followed: Each entry a row in the data file represents information of an account, which contains the following fields: Account Number, Account Holder Name, Mobile Phone Number, Hashed Password, Account Balance. Fields are separated by one tab interval. See the sample account.dat provided.
R11 Creativity and Critical Thinking: other features that you find useful such as ways to enhance the user experience, user interface, interactivity can also be implemented.
Grading criteria
Your program will be executed with different test cases in Microsoft Visual Studio 2017, as installed in the computer labs. Any deviation from the requirement is considered as incorrect and no mark is given for that case.
Aspects
Percentage
Program correctness
Follow ALL instructions, marks deduction on errors found
70
Program design
Appropriate use of functions, use of class, modularity, etc.
10
Program standard
Use of variable names, indentation, line spacing, clarity, comments, etc.
5
Algorithm design
Use of reasonable algorithms and data structures
5
Userfriendliness
Clear guidelines to users, messages to users, etc.
5
Creativity and critical thinking Additional useful features
5
Total Group Mark
100 max
Note: the length of your program does not affect the grading of the assignment. However, appropriate use of loops and functions are expected to avoid too many repeated codes in your program, which contributes to the program design score of this assignment.
Marks deduction
Late submission: Due to extended deadline, late submission is NOT allowed. 20 deduction in your final marks for each day late including public holiday and Sundays. No late submission is allowed 4 days after the due date.
Syntax error: 100 deduction. You will get 0 mark if your program fails to be compiled. Runtime error: No mark for the particular test case that triggers the runtime error.
SEHH2042 1920s1Group Project 7
Logic error bug: No mark for the particular test case that deviates from the requirement. Note that a logic error may lead to failure in ALL test cases of one particular set of requirements.
Individual mark is determined by both group mark 80 and percentage of individual contribution 20, where the percentage of individual contribution is directly proportion to the average marks given by group members in the peertopeer evaluation form.
Submission
Source File: Each group by leader submits one source code file i.e., OnlineBanking.cpp.
Peertopeer Evaluation: Each student fills in and submits the peertopeer evaluation form i.e., SEHH2042P2PEvaluation.docx.
All submission should be done through Moodle by 23:59, 23 November 2019. Late submission is subject to 20 deduction in your final marks for each day including public holidays and Sundays. No late submission is allowed 4 days after the due date.
Tips
To refresh the console screen, you may use the following windows platform commands appropriately in your program:
systemcls;Clear everything on the screen. systempause;Wait until user pressing any key to continue.
To handle unexpected input error e.g. input a character to an integer variable, you may use the following code appropriately in your program:
cin.ignore;Discard the content in the input sequence. cin.clear;Reset the input error status to no error.
To handle file readwrite and to produce the hash value of a string, you can try out and refer to the given example program SEHH2042GPReference.cpp for some useful codes. Related reference includes:
Hash function: http:www.cplusplus.comreferencefunctionalhash
File handling: http:www.cplusplus.comdoctutorialfiles
Note that to test the file read function, the data file account.dat should be put in the same folder as your source code file. You can assume that the data file is placed correctly during our assignment grading.
Ensure the originality of your work. Plagiarism in any form is highly prohibited.
End
SEHH2042 1920s1Group Project
8
Reviews
There are no reviews yet.