This project is a console-based application built in Python for managing basic bank account operations, utilizing MySQL for data persistence. It demonstrates essential full-stack workflow concepts including user registration, data validation, and basic account management features.
- User Registration: Allows users to register and automatically generates a unique 8-digit Account Number.
- Sign-In: Secure login using Name and Account Number.
- KYC Management: Users can update their profile (Name, Age, Phone, Email) and link their Aadhaar number.
- PIN Management: Change account PIN with a simulated OTP confirmation flow for security.
- Account Transfer/Deletion: Functionality to transfer account ownership or delete the account entirely (both require OTP confirmation).
- Database Setup: Automatically creates the
Bank_Account_Managementdatabase and the requiredProfileandAccounttables on the first run.
To run this application, you need the following:
-
Python 3.x
-
MySQL Server: Ensure your MySQL service is running locally.
-
Python Connector: You must install the MySQL Python connector library:
pip install mysql-connector-python
The application connects to MySQL using hardcoded credentials in the db_connection() function. You must update this line in Source_Code.py to match your local MySQL configuration:
def db_connection():
global con, cursor
try:
# UPDATE the 'passwd' here to your MySQL root password!
con = mysql.connector.connect(host='localhost', user='root', passwd='tiger')
cursor = con.cursor()
# ...After updating the credentials, run the program from your terminal:
python Source_Code.pyThe system will connect to the database, ensure the necessary tables exist, and present the main menu.
This project is intended as a learning tool to demonstrate database interaction. It contains a critical security vulnerability: the account PIN is stored in plaintext within the Account table.
In a real-world application, sensitive data like PINs and passwords must always be stored as securely hashed values (using libraries like bcrypt or hashlib) and never in plaintext.
.
βββ Source_Code.py # Main application logic and database interactions
βββ README.md # Project documentation (this file)