Skip to content

Python Essentials Portfolio Project 3 for the Code Institute Full-Stack Software Development Course

Notifications You must be signed in to change notification settings

sediqa01/atm-system

Repository files navigation

ATM SYSTEM - (Automated Teller Machine)

This's a computer-based program, and it makes managing bank account funds very simple and conceivable. Through this program, users would be able to check their account balances, make cash withdrawals, and make deposits. This ATM program can run in console mode. It has a number of features, including Account Statement, Withdrawal, and Depositing Amount. The link to the deployed program can be found here: ATM Program

image

Note: Due to the nature of the programme, it is not suitable for mobile phones and smaller devices.

image

How To Use

The user must first provide an existing username, and if the username matches, the system will proceed to the next step, which asks for a pin number. When a user completes all of these sign-in procedures, they will be able to utilize all of the capabilities. It’s far too simple to utilize; they can verify their own account statements. When the user enters the system, if they want to check their account balance, they must enter "1". If they want to withdraw money, they must enter "2." Following that, they can insert the amount they wish to withdraw. If the user wants to deposit money, they must end with "3" and, following that, they can type the amount they intend to add to their account. Finally, they can exit from the system by clicking "4".

Features

Existing Feature

  1. Welcome Message

messge


  1. User Login Users can conduct transactions by verifying their own account statements; all user inputs are validated, and errors allow for multiple attempts to enter a valid username and password.

User 1

login

User 2

login

Successful Login

login

Invalid UserName & Password

login login

Failed Login

login


  1. Transaction Menu This feature allows users to choose from the menu which transaction they would like to carry out. Users must be able to check their A/C balance and withdraw or deposit money into a certain account.

login

Invalid User Input

login login


  1. Check A/C balance

This feature allows users to check the amount of balance they have on their account so they can make a valid transaction.

balance


  1. Withdraw This feature allows users to withdraw the amount they wish. Here also, all user inputs are validated, and errors allow repeat opportunities to input a valid amount. For withdrawal, the user must enter an integer amount. This program does not accept float numbers for cash withdrawal. Furthermore, users cannot withdraw more than their balance.

Case1: Successful withdrawal

withdraw

Case2: Float numbers inputs

withdraw

Case3: Invalid User Input

withdraw


  1. Deposit This feature allows users to deposit the amount they wish. Here also, all user inputs are validated, and errors allow repeat opportunities to input a valid amount. Users can make deposits of more than ten dollars. This program does not accept float numbers for cash deposit.

Case1: Successful Deposit

Deposit

Case2: Float numbers inputs

Deposit

Case3: Invalid User Input

Deposit


  1. System Exit If a user finishes a transaction, he/she can exit the system by clicking 4.

exit

Testing

I have tested this project by doing the following :

  • Passed the code through a PEP8 linter and confirmed there is no problems.
  • I performed the tests by entering wrong inputs to check the OK and the not OK paths.
  • Tested in my Gitpod local terminal.

Check Result

Bugs

Solved Bugs

  1. When I tested the program, I realized that in the message requesting the response from the user, I had set a character for each responses, which is not correct in terms of the user experience, because the ATM system uses responses to request the responses from the user. So, I have determined the numbers for the user's responses.

User Responses

Solved bug

  1. When I ran the program, I noticed that the option for exiting the system was incomplete, so that the system closed without any message to the user. To solve this, I created a goodbye message using the pyfiglet library before exiting the program.

Exiting System

Solved bug

Remaining Bugs

  • No bugs remaining

Language & Programs

  • Github - To store my repository.
  • Gitpod - To create my project files.
  • python - To write ATM program.
  • Heroku - To deploy the program.
  • Snipping Tool - A screenshot tool is built into Windows. I used it to take screenshots of different parts of the ATM program.

Python Libraries & Modules

I used these python libraries :

  • Pyfiglet - To create a header & Goodbye Message.
  • OS - to clear the system after user login.
  • String - To capitalize the usernames.
  • Time - To add the sleep() function to make a delay in the terminal for simulating the insert card.

Note: I have installed the termcolor library and imported it into my program to color the code in the terminal , but when I applied I noticed that there was no sign that text has color , so I changed my mind and deleted the import library.

Deployment

The project was deployed using Code Institute's mock terminal for Heroku.

Steps for deployment:

  1. Click "New" and select "Create new app".
  2. Input a meaningful name for your app and choose the region best suited to your location.
  3. Select "Settings" from the tabs.
  4. Set the buildbacks to python and NodeJS in that order.
  5. Select "Deploy" from the tabs.
  6. Link the Heroku app to the respository.
  7. Select "GitHub - Connect to GitHub" from deployment methods.
  8. Search for the GitHub repository by name.
  9. Either click Enable Automatic Deploys for automatic deploys or Deploy Branch to deploy manually. Manually deployed branches will need re-deploying each time the repo is updated.
  10. Click on Deploy.
  11. Click View button to view the deployed site.

Credits

  • Source Code Hero - The code for multi-user login was taken from this site. When I decided to build an ATM program , at first my program had one user login, then I thought it would be better if it had a multi-user login. So, I searched on Google and found this site.
  • Learn Scratch Tutorials - This YouTube video helps to learn how to use the Pyfiglet library for converting text to big ASCII text using Pyfiglet.
  • Programiz - Helped me to apply Exception Handling using a try-except statement.
  • Love Sandwiches - This project was a great starting point for me.

About

Python Essentials Portfolio Project 3 for the Code Institute Full-Stack Software Development Course

Topics

Resources

Stars

Watchers

Forks