'' Online Banking System'': PM Shri Kendriya Vidyalaya Afs, Thanjavur
'' Online Banking System'': PM Shri Kendriya Vidyalaya Afs, Thanjavur
THANJAVUR
1
CERTIFICATE
PRINCIPAL
2
ACKNOWLEDGEMENT
and support.
in time.
I acknowledge the great help rendered by one and all in one way or
S.S.SAISHARVESH
3
TABLE OF CONTENTS [ T O C ]
01 INTRODUCTION 02
03 PROPOSED SYSTEM 03
06 FLOW CHART 10
07 SOURCE CODE 11
08 OUTPUT 14
09 TESTING 16
11 BIBLIOGRAPHY 18
4
Introduction to the Online Banking System Project
In today’s digital age, online banking has become a cornerstone of financial services,
allowing users to manage their accounts, perform transactions, and access banking
services from anywhere at any time. The Online Banking System project aims to simulate
and develop an automated and user-friendly platform that empowers users to manage
their finances remotely.
This system provides a secure environment where customers can perform various banking
activities such as checking account balances, making fund transfers, paying bills, and
viewing transaction history—all through a simple, intuitive interface. By leveraging
modern technologies, the system ensures that these actions are done securely, quickly,
and efficiently.
The primary goal of this project is to create a platform that is not only easy to use but also
safe and scalable, accommodating the needs of both customers and banking institutions.
With an emphasis on security, privacy, and convenience, the Online Banking System
aims to deliver a comprehensive solution for individuals seeking a more modern approach
to managing their financial needs.
Whether it's transferring money between accounts, paying utility bills, or simply keeping
track of spending, the Online Banking System is designed to provide a complete digital
banking experience.
5
⦁ Support Financial Transactions:
Facilitate various banking transactions like transferring money between accounts,
bill payments (utilities, credit cards), and scheduling payments for future dates.
⦁ Provide Comprehensive Customer Support:
Implement a customer support system that allows users to track their issues or
queries and resolve them effectively. This may include live chat, email support,
and a ticketing system.
⦁ Generate Transaction Reports and Statements:
Provide users with access to transaction reports, account statements, and balance
overviews for better tracking and management of their finances.
⦁ Improve Operational Efficiency for Banks:
By automating several banking tasks, the system helps banks reduce operational
costs, improve efficiency, and better serve customers.
6
Payment Integration: Secure APIs for fund transfers and bill payments.
Data Security: Ensures encryption and secure authentication methods.
Out of Scope:
7
⦁ Support Scalability
Design a system that can handle increasing numbers of users and transactions as
the bank grows.
Enable integration with new technologies and banking features over time.
⦁ Reduce Operational Costs
Minimize expenses associated with traditional banking processes such as
paperwork, physical branch maintenance, and staffing.
⦁ Enhance Customer Engagement
Offer personalized services such as notifications, reminders, and
recommendations based on user activity.
Provide customer support through chatbots, live chat, or other digital
communication tools.
⦁ Compliance with Regulations
Ensure the system adheres to banking and financial regulatory standards to
maintain legal compliance.
8
- Update customer details through user-friendly forms.
- Support account creation and closure requests directly from the system.
3. **Fund Transfers**
- Internal and external fund transfer capabilities with real-time confirmation.
- Options for scheduled and recurring payments.
4. **Bill Payments**
- Enable payment of utility bills, credit card bills, and other invoices.
- Customizable reminders for upcoming payments.
5. **Loan and Credit Services**
- Online loan applications and tracking with status updates.
- Manage credit card accounts, including balance checks and payment scheduling.
6. **Notifications and Alerts**
- Transaction alerts and promotional notifications via email or SMS.
- Integration of Python libraries like `smtplib` for email alerts and APIs for SMS.
7. **Customer Support**
- Provide chatbot support using Python’s NLP libraries (e.g., NLTK, SpaCy).
- Enable ticketing systems for customer queries with status tracking.
8. **Mobile-Friendly API**
- RESTful APIs built using Flask or FastAPI to support mobile banking apps.
- Real-time synchronization of web and mobile platforms.
9. **Admin Panel for Bank Staff**
- Dashboard for managing user accounts and approving requests.
- Generate reports and audit logs using Python libraries like `pandas` and `matplotlib`.
⦁ Technology Stack
1.Frontend
- HTML, CSS, JavaScript (with Python integration via Flask/Jinja2 templates).
2.Backend
- Frameworks: Flask/Django for web application development.
- Libraries: SQLAlchemy for database ORM, bcrypt for password hashing,
9
and NumPy for data processing.
⦁ Database
- SQLite or PostgreSQL for reliable data storage and management.
⦁ APIs and Integration
- RESTful APIs with Flask or FastAPI for seamless integrations.
- Third-party integrations like payment gateways via Python SDKs.
⦁ Security
- Encryption using `cryptography` or `pyOpenSSL` libraries.
- Secure session handling via Flask-Security or Django's built-in tools.
⦁ Hosting
- Deployment on cloud platforms like AWS, Google Cloud, or Heroku using
tools like Docker.
⦁ Advantages of Python for the Online Banking System
1. Ease of Development
⦁ Python’s simplicity and extensive libraries speed up development and reduce
bugs.
2. Security
⦁ Robust libraries for encryption, secure session management, and data protection
ensure compliance with banking regulations.
3. Scalability
⦁ Frameworks like Django and FastAPI support scalable and modular application
development.
4. Integration
⦁ Python’s compatibility with APIs and third-party libraries allows seamless
integration with payment systems and other services.
⦁ This Python-based system provides a modern, secure, and scalable solution for
online banking, ensuring customer satisfaction and streamlined operations for
financial institutions.
10
The System Development Life Cycle (SDLC) is a structured methodology used to design,
develop, and implement software systems. It consists of distinct phases, each with specific
deliverables and objectives to ensure successful system development. Below are the key phases
of SDLC:
Planning
**Objective:** Define the purpose and scope of the system to be developed.
**Activities:**
Requirements Analysis
**Objective:** Gather and document the functional and non-functional requirements of the
system.
**Activities:**
⦁ - Document requirements using tools like use-case diagrams, process flow diagrams, and
requirement specifications.
Design
**Objective:** Translate requirements into a detailed system architecture and design.
**Activities:**
⦁ - Create system and software design diagrams (e.g., database schema, UML diagrams).
11
**Deliverables:** System Design Document (SDD), prototypes, and wireframes.
Development
**Objective:** Build the system based on the design specifications.
**Activities:**
**Deliverables:** Developed system modules, unit test reports, and source code repository.
Testing
**Objective:** Ensure the system meets the requirements and is free of defects.
**Activities:**
⦁ - Perform different levels of testing (unit testing, integration testing, system testing, and user
acceptance testing).
Implementation (Deployment)
**Objective:** Deploy the system to the production environment for use.
**Activities:**
⦁ - Deploy the system using strategies like phased, parallel, or direct implementation.
Maintenance
12
**Objective:** Ensure the system operates efficiently and remains up to date.
**Activities:**
Benefits of SDLC
- Provides a clear roadmap for system development.
The SDLC methodology ensures that systems are developed systematically, meeting both user
expectations and business requirements while minimizing risks and defects.
**Activities:**
**Outcome:** Feasibility study report, project charter, and high-level project plan.
Requirements Analysis
**Objective:** Gather and document the functional and non-functional requirements of the
system.
**Activities:**
13
⦁ - Conduct interviews, surveys, and workshops with stakeholders.
System Design
**Objective:** Develop a blueprint for the system architecture, data design, and interfaces.
**Activities:**
Development
**Objective:** Build the system as per the design specifications.
**Activities:**
Testing
**Objective:** Ensure the system functions as intended and is free from defects.
**Activities:**
⦁ - Conduct various levels of testing (unit, integration, system, and user acceptance testing).
14
**Outcome:** Test cases, defect logs, and a validated system.
Implementation (Deployment)
**Objective:** Deploy the system to the production environment for use.
**Activities:**
⦁ - Deploy the system using strategies like phased, parallel, or direct implementation.
Maintenance
**Objective:** Ensure the system operates efficiently and remains up to date.
**Activities:**
CODING
Online Bank Management System
import
mysql.connector
from datetime
import date
def clear():
for _ in
range(65):
print()
def account_status(acno):
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
15
password='') cursor = conn.cursor()
sql ="select status,balance from customer where acno
='"+acno+"'" result = cursor.execute(sql)
result = cursor.fetchone()
conn.close()
return result
def deposit_amount():
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='') cursor = conn.cursor()
clear()
acno = input('Enter
account No :') amount =
input('Enter amount :')
today = date.today()
result =
account_status(acno
) if result [0]==
'active':
sql1 ="update customer set balance = balance+"+amount + '
where acno = '+acno+' and status="active";'
sql2 = 'insert into transaction(amount,type,acno,dot) values(' +
amount
+',"deposit",'+acno+',"'+str(today)+
'");' cursor.execute(sql2)
cursor.execute(sql1)
#print(sql
1)
#print(sql
2)
print('\n\namount deposited')
else:
print('\n\nClosed or Suspended Account .......... ')
def withdraw_amount():
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='') cursor = conn.cursor()
clear()
acno = input('Enter
16
account No :') amount =
input('Enter amount :')
today = date.today()
result = account_status(acno)
if result[0] == 'active' and
int(result[1])>=int(amount): sql1 = "update
customer set balance = balance-" + \
amount + ' where acno = '+acno+' and status="active";'
sql2 = 'insert into transaction(amount,type,acno,dot) values('
+ \ amount + ',"withdraw",'+acno+',"'+str(today)+'");'
cursor.execut
e(sql2)
cursor.execut
e(sql1)
#print(sql1)
#print(sql2)
print('\n\namount Withdrawn')
else:
print('\n\nClosed or Suspended Account.Or Insufficient amount')
def
transaction_
menu():
while True:
clear()
print(' Trasaction
Menu') print("\n1.
Deposit Amount")
print('\n2. WithDraw
Amount') print('\n3.
Back to Main Menu')
print('\n\n')
choice = int(input('Enter your
choice ...: ')) if choice == 1:
deposit_
amount()
if choice
== 2:
withdraw
_amount()
17
if choice
== 3:
break
def search_menu():
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='') cursor = conn.cursor()
while
True:
clear
()
print(' Search Menu')
print("\n1. Account
No") print('\n2.
Aadhar Card')
print('\n3. Phone
No') print('\n4.
Email') print('\n5.
Names') print('\n6.
Back to Main Menu')
choice = int(input('Enter your
choice ...: ')) field_name=''
if choice ==
1:
field_name
='acno'
if choice == 2:
field_name
='aadhar_no'
if choice ==
3:
field_name
= 'phone'
if choice ==
4:
field_name
= 'email'
if choice ==
5:
18
field_name
= 'name'
if choice
== 6:
break
msg ='Enter
'+field_name+': '
value = input(msg)
if field_name=='acno':
sql = 'select * from customer where '+field_name + ' =
'+value+';' else:
sql = 'select * from customer where '+field_name +' like
"%'+value+'%";' #print(sql)
cursor.execute(sql
) records =
cursor.fetchall()
n = len(records)
clear()
print('Search Result for ', field_name, '
',value) print('-'*80)
for record in records:
print(record[0], record[1], record[2], record[3],
record[4], record[5], record[6], record[7],
record[8])
if(n <= 0):
print(field_name, ' ', value, ' does not
exist') wait = input('\n\n\n Press any key
to continue..............................................................................................')
conn.close()
wait=input('\n\n\n Press any key to continue ........... ')
def
daily_report(
): clear()
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='') today = date.today()
cursor = conn.cursor()
sql = 'select tid,dot,amount,type,acno from transaction t where dot="'+
str(today)+'";'
cursor.execute(sql
) records =
19
cursor.fetchall()
clear()
print('Daily
Report :',today)
print('-'*120)
for record in records:
print(record[0], record[1], record[2], record[3],
record[4]) print('-'*120)
conn.close()
wait = input('\n\n\n Press any key to continue........... ')
def
monthly_repor
t(): clear()
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='') today = date.today()
cursor = conn.cursor()
sql = 'select tid,dot,amount,type,acno from transaction t where
month(dot)="' +
\
str(today).split('-')
[1]+'";'
cursor.execute(sql)
records =
cursor.fetchall()
clear()
print(sql)
print('Monthly Report :',
str(today).split( '-')[1],
'-,', str(today).split('-')[0])
print('-'*120)
for record in records:
print(record[0], record[1], record[2], record[3],
record[4]) print('-'*120)
conn.close()
wait = input('\n\n\n Press any key to continue........... ')
def
account_deta
ils():
20
clear()
acno = input('Enter
account no :') conn =
mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='') cursor = conn.cursor()
sql ='select * from customer where acno ='+acno+';'
sql1 = 'select tid,dot,amount,type from transaction t where
t.acno='+acno+';' cursor.execute(sql)
result =
cursor.fetchone()
clear()
print('Account
Details')
print('-'*120)
print('Account
No :',result[0])
print('Customer
Name :',result[1])
print('Address :',result[2]
) print('Phone
NO :',result[3])
print('Email
ID :',result[4])
print('Aadhar
No :',result[5])
print('Account
Type :',result[6])
print('Account
Status :',result[7])
print('Current
Balance :',result[8])
print('-'*120)
cursor.execute(sql
1) results =
cursor.fetchall()
for result in
results:
print(result[0], result[1], result[2], result[3])
conn.close()
wait=input('\n\n\nPress any key to continue.............. ')
def
report_
21
menu():
while
True:
clear()
print(' Report Menu')
print("\n1. Daily
Report") print('\n2.
Monthly Report')
print('\n3. Account
Details') print('\n4.
Back to Main Menu')
choice = int(input('Enter your
choice ...: ')) if choice == 1:
daily
_report
() if
choice
== 2:
monthly_
report()
if choice
== 3:
account_details()
if choice
== 4:
break
def add_account():
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='') cursor = conn.cursor()
name = input('Enter
Name :') addr =
input('Enter address ')
phone = input('Enter
Phone no :') email =
input('Enter Email :')
aadhar = input('Enter AAdhar no :')
actype = input('Account Type
(saving/current ) :') balance =
input('Enter opening balance :')
sql = 'insert into
customer(name,address,phone,email,aadhar_no,acc_type,balance,status) values
22
( ' + name +'","'+
addr+'","'+phone+'","'+email+'","'+aadhar+'","'+actype+'",'+balance+',"acti
ve" );'
cursor.execu
te(sql)
conn.close()
print('New customer added successfully')
def modify_account():
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='') cursor = conn.cursor()
clear()
acno = input('Enter customer Account
No :') print('Modify screen ')
print('\n 1. Customer
Name') print('\n 2.
Customer Address')
print('\n 3. Customer
Phone No') print('\n 4.
Customer Email ID')
choice = int(input('What do you want to
change ? ')) new_data = input('Enter New
value :') field_name=''
if choice ==
1:
field_na
me
='name'
if choice == 2:
field_name =
'address'
if choice ==
3:
field_name
= 'phone'
if choice ==
4:
field_name
= 'email'
sql ='update customer set ' + field_name + '="'+ new_data +'" where
acno='+acno+';'
print(sql)
23
cursor.execu
te(sql)
print('Customer Information modified..')
def close_account():
conn = mysql.connector.connect(
host='localhost', database='bankproject', user='root',
password='') cursor = conn.cursor()
clear()
acno = input('Enter customer Account No :')
def
main_me
nu():
while
True:
clear()
print(' Main Menu')
print("\n1. Add
Account")
print('\n2. Modify
Account')
print('\n3. Close
Account')
print('\n4.
Transactio Menu')
print('\n5. Search
Menu') print('\n6.
Report Menu')
print('\n7. Close
application') print('\n
\n')
choice = int(input('Enter your
choice ...: ')) if choice == 1:
add_a
ccount(
) if
choice
== 2:
modify_a
24
ccount()
if choice
== 3:
close_a
ccount()
if choice
==4 :
transactio
n_menu() if
choice ==5 :
sea
rch_m
enu()
if
choic
e ==
6:
repor
t_men
u()
if
choic
e ==
7 :
break
if name == "
main ":
main_menu()
25