Bank Management System - T.tonijey Benhar (21.10.24)
Bank Management System - T.tonijey Benhar (21.10.24)
Done by
T. TONIJEY BENHAR
V.G.P. Pannerpuram
B.Ed., M.A., for her invaluable guidance and support throughout the
for their assistance and cooperation during the course of this project. Their
Finally, I thank all those who had helped me directly or indirectly for
T.TONIJEY BENHAR
TABLE OF CONTENTS
1 INTRODUCTION 1
3 PROPOSED SYSTEM 4
4.4.3. Development 12
4.4.4. Testing 12
4.4.5. Deployment 12
4.4.6. Maintenance and Support 13
5 REQUIREMENTS 15
6 MODULES USED 16
7 FLOW CHART 18
8 SOURCE CODE 19
9 OUTPUT SCREEN 29
10.1. Limitations 34
11 BIBLIOGRAPHY 38
CHAPTER - 1
INTRODUCTION
2
CHAPTER - 2
3
CHAPTER – 3
PROPOSED SYSTEM
4
Bill Payments: Provide the ability to pay bills such as utilities, loans, or
credit card payments through the system.
User Management: Manage bank staff, assign roles and permissions, and monitor
system usage.
Audit Trail: Keep track of every action taken by both customers and bank
staff for accountability and transparency.
System Backup and Recovery: Implement automatic data backup
mechanisms and disaster recovery plans in case of system failures.
5
Benefits of the Proposed System
6
CHAPTER - 4
7
commonly used for writing documentation (README files, project wikis,
etc.).
➢ Documentation Generation Tools Integration: Tools like Sphinx and
MkDocs can be run from within the IDE to generate professional
documentation (HTML, PDF, etc.) from docstrings and Markdown/reST
files.
➢ Version Control Integration: Documentation files are often part of the
version-controlled codebase (using Git, for example), and IDEs help track
changes to these files, allowing for collaborative and organized
documentation development.
8
➢ Self-contained: SQLite3 is a single library that implements the entire
database engine. There are no dependencies, making it highly portable across
platforms and environments.
➢ Zero Configuration: There is no need to install or configure a server, create
users, or set permissions. The database file can be opened directly and used
right away.
➢ Lightweight: SQLite3 is designed to be minimal in size and resources,
making it ideal for embedded systems, mobile devices, and small desktop
applications.
➢ SQL Compliance: SQLite3 supports most of the SQL-92 standard, allowing
for complex queries, joins, triggers, and views.
➢ Cross-platform: It works across various operating systems (Windows,
macOS, Linux, etc.) and is compatible with a wide range of programming
languages, including Python, C, C++, Java, and more.
➢ Durable and Reliable: Despite being lightweight, SQLite3 provides ACID
(Atomicity, Consistency, Isolation, Durability) compliance, ensuring data
integrity and safety even in cases of crashes or power failures.
➢ Transactional Support: SQLite3 supports transactions, meaning multiple
changes to the database can be bundled together, either fully committing or
fully rolling back changes in case of an error.
9
➢ Data Storage for Small Applications: Desktop and small applications that
do not require multi-user access often use SQLite3 for data persistence.
name varchar(30),
UserName varchar(30),
password tinytext,
Date_of_birth date,
address varchar(40),
Mobile_Number varchar(30),
Aadhar_no varchar(30),
Balance int);
credited int,
debited int,
username1 varchar(20),
10
4.4. Life Cycle
The Life Cycle of a Bank Management System (BMS) follows the traditional
phases of the Software Development Life Cycle (SDLC). These phases ensure
the system is properly planned, developed, tested, and maintained to meet the
requirements of the bank. Here's an overview of each phase:
4.4.3. Development
Build the actual software system based on the designs.
11
Frontend Development: Create the user interface for customers and bank
employees (web portal, mobile app).
Backend Development: Build the server-side logic, including transaction
processing, account management, and security mechanisms.
Database Development: Set up the database to store and retrieve customer
and transaction data efficiently.
API Development: Integrate third-party services like payment gateways,
SMS alerts, and other financial services.
Deliverables: Functional codebase with version control (e.g., Git). Initial
working version of the system (minimum viable product or MVP).
4.4.4. Testing
Ensure the system functions correctly, securely, and efficiently by identifying and
fixing issues.
Unit Testing: Test individual modules like account management,
transactions, etc.
Integration Testing: Verify that all modules work together as expected.
System Testing: Test the entire system as a whole, including workflows like
loan approval and transaction history.
Security Testing: Check for vulnerabilities, ensuring strong encryption,
authentication, and authorization mechanisms.
Performance Testing: Test system scalability under various loads (e.g., how
the system handles thousands of transactions).
Deliverables: Test cases and test results. Bug reports and fixes. Verified,
tested system ready for deployment.
4.4.5. Deployment
Launch the system in a live environment for real-world use by bank customers
and staff. Deploy the system to a production environment (cloud or on-premise
servers). Set up the required hardware and network infrastructure (if on-premise).
12
Migrate existing customer data from legacy systems (if any) to the new system.
Set up backups, disaster recovery systems, and server monitoring. Train bank
staff on how to use the system effectively.
Deliverables: Live, operational Bank Management System. User manuals
and training materials for bank employees.
13
4.4.8. Key Considerations in the Life Cycle
Security: Since the system deals with sensitive financial data, security should be
a focus at every stage, especially during design, development, and testing.
Compliance: The system must adhere to banking regulations and standards,
including data privacy laws (like GDPR) and financial reporting requirements.
Scalability: The system should be designed to handle growing customer
numbers and transaction volumes over time.
User Experience: The system must be user-friendly for both customers
(online banking) and bank employees (internal management).
14
CHAPTER – 5
REQUIREMENTS
15
CHAPTER – 6
MODULES USED
16
Password management and reset options. Session management and activity
logging.
17
CHAPTER – 7
FLOW CHART
18
CHAPTER – 8
SOURCE CODE
bank-project.py
import sqlite3
import datetime as date
19
mycur.execute('''
CREATE TABLE IF NOT EXISTS "transaction" (
Credited REAL DEFAULT NULL,
Debited REAL DEFAULT NULL,
UserName1 TEXT,
Date TEXT
)''')
# Main loop
while True:
print("\n")
print("______________________________________________________________")
print("************* Welcome To Colony Bank Of India *******************")
print("______________________________________________________________")
print("Press 1 to Sign Up ")
print("Press 2 to Sign In ")
try:
ch = int(input("Enter Your Choice: "))
if ch < 1 or ch > 2:
raise ValueError("Invalid choice. Please select 1 or 2.")
except ValueError as ve:
print(ve)
continue
if ch == 1:
# Sign Up
while True:
try:
ut = input("Enter Your Name Here: ")
if any(sym in ut for sym in SpecialSym):
20
raise ValueError("Special characters are not allowed.")
break
except ValueError as e:
print(e)
while True:
try:
p = input("Enter Your User Name: ")
if any(sym in p for sym in SpecialSym):
raise ValueError("Special characters are not allowed.")
break
except ValueError as e:
print(e)
while True:
try:
z = input("Enter Your Password: ")
if (len(z) < 6 or not any(char.isdigit() for char in z) or
not any(char.isupper() for char in z) or
not any(char.islower() for char in z) or
not any(char in SpecialSym for char in z)):
raise ValueError("Password must contain at least 6 characters, including
uppercase, lowercase, digits, and special characters.")
break
except ValueError as e:
print(e)
while True:
try:
dob = input("Enter Your Date of Birth (DD/MM/YYYY): ")
date.datetime.strptime(dob, "%d/%m/%Y")
break
21
except ValueError:
print("Please enter the date of birth in the correct format (DD/MM/YYYY).")
while True:
try:
d = input("Enter Your Phone Number (10 digits): ")
if len(d) != 10 or not d.isdigit():
raise ValueError("Please enter a valid 10-digit phone number.")
break
except ValueError as e:
print(e)
while True:
try:
f = input("Enter Your 12 Digit Aadhar Number: ")
if len(f) != 12 or not f.isdigit():
raise ValueError("Please enter a valid 12-digit Aadhar number.")
break
except ValueError as e:
print(e)
22
elif ch == 2:
# Sign In
u = input("Enter Your Username: ")
p = input("Enter Your Password: ")
if data:
print("\nWelcome to your account!")
while True:
print("\n")
print("Press 1 To Withdraw Money")
print("Press 2 To Deposit Money")
print("Press 3 to view Last Five Transactions")
print("Press 4 To View Your Profile")
print("Press 5 To Update Account Details")
print("Press 6 to Delete Your Account Permanently")
print("Press 7 for Log Out")
try:
ch1 = int(input("Enter Your Choice: "))
if ch1 < 1 or ch1 > 7:
raise ValueError("Invalid choice. Please select a valid option.")
except ValueError as ve:
print(ve)
continue
if ch1 == 1:
# Withdraw Money
23
mycur.execute("SELECT Balance FROM bank WHERE UserName=?",
(u,))
bal = mycur.fetchone()[0]
print(f"Your Account Balance is: {bal}")
while True:
try:
a1 = float(input("Enter the amount for withdrawal: "))
if a1 <= 0 or a1 > bal:
raise ValueError("Invalid amount. Please enter a valid withdrawal
amount.")
break
except ValueError as e:
print(e)
new_balance = bal - a1
mycur.execute("UPDATE bank SET Balance=? WHERE UserName=?",
(new_balance, u))
mycur.execute("INSERT INTO \"transaction\" (Debited, UserName1,
Date) VALUES (?, ?, ?)",
(a1, u, date.datetime.now().strftime("%Y-%m-%d
%H:%M:%S")))
mycon.commit()
print(f"Withdrawal of {a1} successful. New balance: {new_balance}")
elif ch1 == 2:
# Deposit Money
while True:
try:
a11 = float(input("Enter the amount to deposit: "))
if a11 <= 0:
raise ValueError("Please enter a valid deposit amount.")
24
break
except ValueError as e:
print(e)
elif ch1 == 3:
# View Last Five Transactions
mycur.execute("SELECT Credited, Debited, Date FROM \"transaction\"
WHERE UserName1=? ORDER BY Date DESC LIMIT 5", (u,))
transactions = mycur.fetchall()
print("Last Five Transactions:")
for trans in transactions:
credited, debited, trans_date = trans
if credited:
print(f"Credited: {credited}, Date: {trans_date}")
if debited:
print(f"Debited: {debited}, Date: {trans_date}")
elif ch1 == 4:
# View Profile
25
mycur.execute("SELECT Name, UserName, Address, Mobile_Number,
Aadhar_no, Balance FROM bank WHERE UserName=?", (u,))
profile = mycur.fetchone()
print("Profile Details:")
print(f"Name: {profile[0]}, Username: {profile[1]}, Address: {profile[2]},
Mobile: {profile[3]}, Aadhar: {profile[4]}, Balance: {profile[5]}")
elif ch1 == 5:
# Update Account Details
while True:
print("Press 1 to Update Your Name")
print("Press 2 to Update Your Password")
print("Press 3 to Update Your Phone Number")
print("Press 4 to Update Address")
print("Press 5 to Go Back")
try:
ch2 = int(input("Enter Your Choice: "))
if ch2 < 1 or ch2 > 5:
raise ValueError("Invalid choice. Please select a valid option.")
except ValueError as ve:
print(ve)
continue
if ch2 == 1:
new_name = input("Enter Your New Name: ")
mycur.execute("UPDATE bank SET Name=? WHERE
UserName=?", (new_name, u))
mycon.commit()
print("Name updated successfully.")
elif ch2 == 2:
while True:
26
new_password = input("Enter Your New Password: ")
if (len(new_password) < 6 or not any(char.isdigit() for char in
new_password) or
not any(char.isupper() for char in new_password) or
not any(char.islower() for char in new_password) or
not any(char in SpecialSym for char in new_password)):
print("Password must contain at least 6 characters, including
uppercase, lowercase, digits, and special characters.")
else:
mycur.execute("UPDATE bank SET Password=? WHERE
UserName=?", (new_password, u))
mycon.commit()
print("Password updated successfully.")
break
elif ch2 == 3:
while True:
new_phone = input("Enter Your New Phone Number: ")
if len(new_phone) != 10 or not new_phone.isdigit():
print("Please enter a valid 10-digit phone number.")
else:
mycur.execute("UPDATE bank SET Mobile_Number=?
WHERE UserName=?", (new_phone, u))
mycon.commit()
print("Phone number updated successfully.")
break
elif ch2 == 4:
new_address = input("Enter Your New Address: ")
mycur.execute("UPDATE bank SET Address=? WHERE
UserName=?", (new_address, u))
mycon.commit()
27
print("Address updated successfully.")
elif ch2 == 5:
break
elif ch1 == 6:
# Delete Account
mycur.execute("DELETE FROM bank WHERE UserName=?", (u,))
mycur.execute("DELETE FROM \"transaction\" WHERE UserName1=?",
(u,))
mycon.commit()
print("Your account has been deleted permanently.")
break
elif ch1 == 7:
print("Logged out successfully.")
break
else:
print("Invalid username or password. Please try again.")
28
CHAPTER - 9
OUTPUT SCREEN
= RESTART: C:\Users\ADMIN\AppData\Local\Programs\Python\Python313\bank-
project.py
_____________________________________________________________________
******************* Welcome To Colony Bank Of India *******************
_____________________________________________________________________
Press 1 to Sign Up
Press 2 to Sign In
Enter Your Choice: 1
Enter Your Name Here: Tonijey
Enter Your User Name: Toni
Enter Your Password: 21Toni@18
Enter Your Date of Birth (DD/MM/YYYY): 18/04/2008
Enter Your Address: Thoothukudi
Enter Your Phone Number (10 digits): 8098111575
Enter Your 12 Digit Aadhar Number: 899012452786
Account has been created successfully. Kindly Login.
_____________________________________________________________________
******************* Welcome To Colony Bank Of India *******************
29
_____________________________________________________________________
Press 1 to Sign Up
Press 2 to Sign In
Enter Your Choice: 2
Enter Your Username: Toni
Enter Your Password: 21Toni@18
30
Press 1 To Withdraw Money
Press 2 To Deposit Money
Press 3 to view Last Five Transactions
Press 4 To View Your Profile
Press 5 To Update Account Details
Press 6 to Delete Your Account Permanently
Press 7 for Log Out
Enter Your Choice: 2
Enter the amount to deposit: 200
Deposit of 200.0 successful. New balance: 2200.0
32
Press 3 to view Last Five Transactions
Press 4 To View Your Profile
Press 5 To Update Account Details
Press 6 to Delete Your Account Permanently
Press 7 for Log Out
Enter Your Choice: 4
Profile Details:
Name: Tonijey, Username: Toni, Address: Eral, Mobile: 8098111575, Aadhar:
899012452786, Balance: 1900.0
33
CHAPTER – 10
10.1. Limitations
Scalability Issues: As the bank grows and the number of customers increases, the
system may face performance bottlenecks, particularly during peak usage
periods. Existing infrastructure may not support a high volume of transactions
and concurrent users.
Integration Challenges: Integrating with third-party services, such as
payment gateways, financial services, or government systems, can be complex,
and the system may not support smooth integrations or updates. Legacy systems
or incompatible technologies can make integration more difficult.
Limited Mobile and Online Banking Features: Many traditional Bank
Management Systems may not offer a fully optimized experience for mobile
banking, lacking advanced features such as biometric authentication, voice
commands, or AI-powered personal financial management.
Data Security and Privacy Risks: Despite implementing encryption and
security protocols, no system is entirely immune to cyberattacks or data breaches,
especially in the case of sophisticated hacking attempts. Systems may struggle
with complying with new and evolving data privacy regulations (e.g., GDPR,
CCPA).
Manual Interventions: Some processes, such as loan approvals or regulatory
reporting, may still require significant manual intervention or approvals, which
can lead to delays or human errors.
Customer Experience Gaps: Limited personalization of services based on
customer behavior and preferences. Traditional systems may not offer features
such as AI-driven insights, smart notifications, or customized financial advice.
34
Compliance and Regulatory Adaptability: The system may struggle to adapt
quickly to new regulations or changes in compliance requirements. This is
particularly challenging in international banking environments where multiple
jurisdictions are involved.
Limited Analytics and Reporting: The system may lack advanced data
analytics and reporting tools, making it difficult to gain actionable insights from
customer and transactional data. Lack of real-time reporting capabilities can
hinder decision-making.
Disaster Recovery Limitations: Some bank management systems might not
have robust disaster recovery systems, leading to potential data loss in case of
server failures, cyber-attacks, or natural disasters.
High Cost of Maintenance and Upgrades: Maintaining and upgrading a Bank
Management System, especially with outdated infrastructure or legacy
technologies, can be expensive and time-consuming.
35
Implement voice-based banking, allowing customers to use voice commands for
banking operations.
Cloud-based Solutions: Transition the system to a cloud-based infrastructure
for better scalability, flexibility, and cost-efficiency. Cloud services can offer
improved disaster recovery options, real-time data processing, and better security
measures.
Big Data Analytics: Utilize big data to gather insights on customer behavior,
market trends, and transaction patterns to offer personalized services. Predictive
analytics can help the bank offer targeted products (like loans, credit cards, etc.)
based on customer preferences and creditworthiness.
Omnichannel Banking: Create a seamless banking experience across
multiple channels such as mobile apps, ATMs, online banking, and in-branch
services. Allow customers to start a transaction on one platform (e.g., mobile) and
complete it on another (e.g., at an ATM or branch).
Robust Cybersecurity Measures: Strengthen the system’s defenses with AI-
powered security systems that detect and mitigate threats in real time. Implement
advanced multi-factor authentication (MFA) options such as biometric data and
behavioral analytics for a more secure banking environment. Regularly update
security measures to comply with emerging cyber risks and regulatory
requirements.
Enhanced Customer Personalization: Leverage AI and data analytics to offer
customized banking services, such as personalized offers, targeted loan products,
or tailored financial advice based on individual spending patterns. Enable
personalized dashboards where customers can see their financial health, budget
insights, and recommendations based on their specific needs.
Integration with Financial Technology (FinTech) Services: Collaborate with
or integrate third-party FinTech solutions such as digital wallets, robo-advisors,
or peer-to-peer lending platforms. Offer more diverse and modern financial
services by integrating innovative financial technologies.
36
Regulatory Compliance Automation: Implement automation tools to
automatically adjust the system to comply with new regulations and changes in
financial law. Integrate real-time regulatory compliance checking, reducing the
need for manual audits.
Smart Contract Capabilities: Incorporate smart contracts for automating
complex financial agreements such as loan terms, mortgages, or insurance
policies. This can improve transparency and enforceability.
37
CHAPTER – 11
BIBLIOGRAPHY
1. Books
o Laudon, K. C., & Laudon, J. P. (2020). Management Information Systems:
Managing the Digital Firm (16th ed.). Pearson Education.
o Silberschatz, A., Korth, H. F., & Sudarshan, S. (2019). Database System
Concepts (7th ed.). McGraw-Hill.
o Varshney, U. (2005). Mobile and Wireless Financial Services: Security and
Applications. Wiley.
2. Articles and Papers
o Dandapani, K. (2014). "Banking on the Cloud: Managing Security Issues."
Journal of Internet Banking and Commerce, 19(1), 1-10.
o McDonald, R. (2012). "Banking Systems and Risk Management."
International Journal of Financial Management, 7(3), 25-39.
3. Websites
o MySQL. (2023). MySQL 8.0 Reference Manual. Retrieved from
https://dev.mysql.com/doc/ on October 15, 2023.
o OWASP Foundation. (2023). OWASP Top Ten Security Risks. Retrieved from
https://owasp.org/Top10/ on September 20, 2023.
o "Bank Management System Overview." (2022). Retrieved from
https://www.examplebankprojectdocs.com/bms-overview on April 10, 2023.
38