Mini Project 3 Manual V1
Mini Project 3 Manual V1
Introduction to Programming
Spring 2019
Project Logic:
The application is based on the idea that customers should be able to interact with their bank
accounts in the easiest way possible. The main features you will develop in this mini
project are as follows:
● withdraw
● deposit money
● transfer money to other accounts
● display the users account information history or report the actions of the user in
the bank.
Each user needs to have an instance in the data structure that will have a:
● balance which should contain – current balance amount
● user deposits which should contain - amount, timestamp
● user withdrawals which should contain – amount, timestamp
● user transfers which should contain – amount, to who (username), timestamp
Note: For Data Structure, the exact number and type of data structure are not specified. What
matters is that the functionality and data storage capacity should be met within one
encompassing structure.
● First user’s username will be Ahmed and his password should be 1234
● Second user’s username should be Erva and her password should be 4321
● Third user’s username should be Ayse and his password should be 4422
These three user names and their corresponding passwords should be placed in a proper data
structure.
When your program first starts, welcome message and time in Istanbul will be displayed as
shown below in Figure 1. Then, users will be asked the service they want. They will
have two options: either log in or exit the application.
Valid inputs are 1 or 2. Figure 1 below is a sample of how your welcome page should look like:
If the user chooses login, your application should ask the user to enter his username and
password. If the user enters a wrong input, your application should warn the user and
ask for a valid username/password again, until the user provides the correct one.
Next, the user will be asked 2 options as shown in Figure 2. If Back is entered, the
login/exit page should show up.
Your program should keep asking until the user gives the correct credentials. Once your
application gets the correct credentials, your program should again welcome the user
but this time with his/her name clearly displayed (Figure 2) . Your application should also
display the list of the available services (1,2,3,4,5 in Figure 2).
Your program should keep asking until the user gives the correct credentials. Once your
application gets the correct credentials, your program should again welcome the user but this time
with his/her name clearly displayed (Figure 2) . Your application should also display the list of the
available services (1,2,3,4,5 in Figure 2).
Figure 2. Login screen and available services after a proper login.
The user should have 4 services to choose from and a logout option (Figure 2). Your program
should print the service numbered and the users should be able to enter the number
corresponding to the service they want to use.
Important: Wrong user inputs and Back should be handled properly, if the user inputed Back at
anytime after choosing a service, the user should be directed to the services menu,
also at any time the user gives the wrong inputs should be asked again to correct it.
If option 1 (Figure 2) is picked, your program should ask the user to provide an amount of money
to withdraw from their account as shown in Figure 3 below. Your program should check
whether or not the user’s account has enough money to do that transaction. If not, your
program should warn the user that he/she doesn’t have enough money and go back to
the main menu. If the user has enough money to do the transaction required, then your
program should inform the user that the amount he/she requested has been withdrawn
from his/her account.
The change in amount of money after withdrawal should be reflected on the balance and
recorded in data structure. A time stamp and the amount should also be appended to
the respected transactions s tructure.
In this project you will keep track of each service a user has done and store it in a data structure
so that it can be shown as a part of the user account information service.
If option 2 (Figure 2) is picked, your program should ask the user to provide an amount of
money to deposit to their account (Figure 4) . After the deposit is successful, your
program should inform the user that the amount he/she entered has been deposited
into his/her account. This change should again be reflected on the balance and be
recorded in data structure. A time stamp and the amount should also be appended to
the respected transaction structure.
Your program should go back to the main menu after the deposit is complete.
If option 3 (Figure 2) is picked, your program should ask the user to enter a name of the user to
whom the money will be transferred to (Figure 5).
Figure 5
If the user enters his/her own name, the program should print that the user does not exist . Or, if
a name of a non-existing user is entered, the program should print that the user does
not exist and give another chance to the user to enter another username.
If the user exists, then you should give the chance to enter the money for transfer. If the user has
enough money in their account for the amount of transfer, the transfer should be
allowed (Figure 5). Otherwise, your program should not allow the user to transfer
money and print that the user does not have enough money and give the choice to
transfer again or go back to services menu .
If the transfer is possible and successful you should reflect this to the balance of BOTH users and
update the necessary information (amount, to/from who (username), timestamp) in
BOTH users’ transfer structures as part of data structure 3.
If option 4 (Figure 2) is picked, My Account Information, your application should display the
name of the bank, the current date and time. The USER NAME, PASSWORD, BALANCE
AND ALL THE TRANSACTIONS, DEPOSITS, WITHDRAWALS BEING ORDERED BY TIME
should be displayed as shown in Figure 10.
Figure 6. My Account Information for different users: Ahmet at different date-times.
When you log out from the system and then log in with another user account and go to My
Account Information, the right information for the right user should be displayed.
Each user should be able to transfer to all the existing users in the bank!!!
• You may check this link to get further information about the time stamps with the time
module. (https://docs.python.org/3/library/time.html)
● You MUST use functions. You are strongly advised to use a function for each service.
However, you have to use at least 3 functions. (10% reduction if you do not create 3
functions)
● YOU MUST USE 3 DATA STRUCTURES (including the one for bonus part), NO MORE AND
NO LESS.
● Your code should be efficient, easy to follow, and track.
Warnings:
● If you don’t follow the implementation notes, you are very likely to lose points.
● Do not talk to your classmates on project topics when you are implementing your
projects. Do not show or email your code to others. If you need help, talk to your TA’s or
the instructor, not to your classmates. If somebody asks you for help, explain them the
lecture slides, but do not explain any project related topic or solution. Any similarity in
your source codes will have serious consequences for both parties.
● Carefully read the project document, and pay special attention to sentences that involve
“should”, “must”, “should not”, “do not”, and other underlined/bold font statements.
• If you use code from a resource (web site, book, etc.), make sure that you reference those
resource at the top of your source code file in the form of comments. You should give
details of which part of your code is from what resource. Failing to do so may result in
plagiarism investigation.
• Even if you work as a group of two students, each member of the team should know every
line of the code well. Hence, it is important to understand all the details in your submitted
code.
Meaningful Proper use Proper use Login Depositing Display My Logout Using 3
variable of functions, of data Function (10 pts) and Information classes
names and compact structures Withdrawing
following code with as (10 pts) and
the text no explained Transferring
interface as unnecessary in this (15 pts)
given in this repetitions document
document
(2 pts) and
sufficient
commenting
(4 pts)
(4 pts)
(15 pts) (5 pts) (10 pts) (30 pts)
(25 pts) (5 pts)
(6 pts)
Please contact your TAs if you have further questions. If you need help with anything, please use the office
hours of your TAs and the instructor to get help. Do not walk in randomly (especially on the last
day) into your TAs’ or the instructor’s offices. Make an appointment first. This is important. Your
TAs have other responsibilities. Please respect their personal schedules!
Good Luck!!