AVK INTERNATIONAL RESIDENTIAL
SENIOR SECONDARY SCHOOL,
SANKARANKOVIL.
PROJECT WORK 2023-2024
NAME :
CLASS : XII
SUBJECT : Computer Science
Exam No. :
REG. No. :
COMPUTER SCIENCE PROJECT
REPORT
ON
BANK MANAGEMENT SYSTEM
Project prepared by
Name of the students:
1.
2.
3.
TABLE OF CONTENTS
Certificate
Acknowledgement
Abstract
Introduction
List of Abbreviation
List of modules
Header files and their purpose
About MySQL Database
Coding
Output
Requirements
Future Enhancement
Bibliography
AVK INTERNATIONAL RESIDENTIAL SENIOR
SECONDARY SCHOOL,
#197, RAJAPALAYAMMAIN ROAD,
SANKARANKOVIL, TENKASI DISTRICT-627753.
Certified to the Bonafide Project work done in Computer
Science by ___________________________________________
Registration number ______________________ Standard XII of
Group ________________ during the year 2023-2024
Signature of Subject Teacher Signature of the Principal
School Seal
Submitted for the practical examination held on___________
INTERNAL EXAMINER EXTERNAL
EXAMINER
I feel great pleasure to acknowledge all those involved in the process of my
education. In the first place, I would like to record my deep and sincere gratitude to
God then to my Parents and then to our Chairman Dr.S.Ayyadurai Pandian who
have provided us this opportunity, next my whole hearted gratitude to our beloved
Principal Dr.B.Sekar Kumar and next my sincere thanks to our teacher
Mr.S.PonMuthuRaj for his supervision, advice, guidance and crucial contribution,
which made them a backbone of this project.
Their understanding, encouraging and personal guidance have provided a good
basis for the present project. Their involvement with their originality has triggered
and nourished our intellectual maturity that we will benefit from, for a long time to
come. I extend my acknowledgement to my project mates, who directly or
indirectly involved in carrying out the project work.
ABSTRACT
I would like to share my project that, Bank Management System
(BMS) Project in Python is a simple console-based totally application
and developed using python programming language. Basically, this
device includes a python script (Banking-System.Py) and a database
(MySQL Database). This device is a simple console-based totally
device so it’s far very easy to understand and use. Talking about the
machine, it includes all of the fundamental features required in a bank.
Besides, this means the person can use all those available
capabilities without difficulty without any restrictions. It’s too simple to
use, the person can look at the facts of total financial institution
account without problems.
The Banking Management System is an application for maintaining
a person’s account in a bank. The system provides the access to the
customer to create an account, deposit/withdraw the cash and other core
banking features from his account. It also enables customer to view
reports of all accounts present.
LIST OF ABBREVIATIONS
BMS Bank Management System
API Application Program Interface
DBMS Database Management System
RDBMS Relational DBMS
DML Data Manipulation Language
DDL Data Definition Language
DCL Data Control Language
CLR Common Language Runtime
SSMSE SQL Server Management Studio Express
SQL Structured Query Language
INTRODUCTION
The “Bank Management System” (BMS) project enables the customers to
perform the basic banking transactions through PC or laptop. The system provides
the access to the customer to create an account, deposit/withdraw the cash from his
account, also to view reports of all accounts present. The primary aim of this
“Bank Management System” is to provide an improved design methodology,
which envisages the future expansion, and modification, which is necessary
for a core sector like banking. Bank is the place where customers feel the sense of
safety for their property. In the bank, customers deposit and withdraw their money.
Transaction of money also is a part where customer takes shelter of the bank. Now
to keep the belief and trust of customers, there is the positive need for management
of the bank, which can handle all this with comfort and ease.
Now a day’s, managing a bank is tedious job up to certain limit. So software
that reduces the work is essential. Also today’s world is a genuine computer world
and is getting faster and faster day-by-day. Thus, considering above necessities, the
software for bank management has became necessary which would be useful in
managing the bank more efficiently. All transactions are carried out through this
application and keeping record the transaction for further use. The software is
meant to overcome the drawbacks of the manual system.
The software has been developed using the most powerful and secure
backend MYSQL database and the most widely accepted web oriented as well as
application oriented.
LIST OF MODULES
There are five types of modules namely,
Add Account
Modify Account
o Modify Customer Name
o Modify Customer Address
o Modify Customer Phone No.
o Modify Customer Email Id
Close Account
Transaction Menu
o Deposit Amount
o Withdraw Amount
Search Menu
o Search by Account No.
o Search by Aadhar No.
o Search by Phone No.
o Search by Email Id
o Search by Name
Report Menu
o Daily Report
o Monthly Report
o Account Details
Close application
1. Add Account:
2. Modify Account:
3. Close Account:
4. Transaction Menu:
5. Search Menu:
6. Report Menu:
7. Close Application:
HEADER FILES
&
THEIR PURPOSE
S.No. Header File Purpose
The connect() constructor creates a
1. import connection to the MySQL server and returns
mysql.connector
a MySQLConnection object.
This can be imported to work with the date
2. import date
as well as time.
MYSQL
DATABASE
Introduction:
MySQL is a freely available open source Relational Database Management System
(RDBMS) that uses Structured Query Language (SQL). MySQL is faster, more reliable, and
cheaper -- or, simply put, better -- than any other database system (including commercial systems
such as Oracle and DB2).
Features of MySQL
The following list shows the most important properties of MySQL. We will use some
terminology from the relational database.
Relational Database System
Client/Server Architecture
SQL compatibility
User interface
Full-text search
Platform independence
Speed - Very fast database program
Database of Banking System is maintained in MySQL tables- Customer and Transaction.
The structure of the Customer Table is as follows
Account number is defined as a primary key as well as this will auto_increment.
Account number is also serving as a foreign key in Transaction Table
Structure of the Transaction Table
CODING
import mysql.connector
from datetime import date
def clear():
for _ in range(5):
print()
def account_status(acno):
conn = mysql.connector.connect(host='localhost',user='root',
password='root@123',database='avkschool')
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',user='root',
password='root@123',database='avkschool')
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)
conn.commit()
#print(sql1)
#print(sql2)
print('\n\namount deposited')
else:
print('\n\nClosed or Suspended Account....')
wait= input('\n\n\n Press any key to continue....')
conn.close()
def withdraw_amount():
conn = mysql.connector.connect(host='localhost',user='root',
password='root@123',database='avkschool')
cursor = conn.cursor()
clear()
acno = input('Enter 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.execute(sql2)
cursor.execute(sql1)
conn.commit()
#print(sql1)
#print(sql2)
print('\n\namount Withdrawn')
else:
print('\n\nClosed or Suspended Account.Or Insufficient amount')
wait = input('\n\n\n Press any key to continue....')
conn.close()
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()
if choice == 3:
break
def search_menu():
conn = mysql.connector.connect(host='localhost',user='root',
password='root@123',database='avkschool')
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:
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)
print("Acc. No.\tName\tAddress\tPhone No.\tMail Id\t\tAadhar No.\tAcc. Type\
tStatus\tBalance")
print("="*80)
for record in records:
print(record[0],"\t", record[1],"\t", record[2],"\t", record[3],"\t",record[4],"\t",
record[5],"\t", record[6],"\t", record[7],"\t", 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',user='root',
password='root@123',database='avkschool')
today = date.today()
cursor = conn.cursor()
sql = 'select tid,dot,amount,type,acno from transaction t where dot="'+ str(today)+'";'
cursor.execute(sql)
records = cursor.fetchall()
clear()
print('Daily Report :',today)
print('-'*120)
print("Trans. Id\tDate of Trans\tamount\tType of Trans\tAcc No.")
print("="*120)
for record in records:
print(record[0], "\t\t",record[1], "\t",record[2], "\t",record[3], "\t",record[4])
print('-'*120)
conn.close()
wait = input('\n\n\n Press any key to continue....')
def monthly_report():
clear()
conn = mysql.connector.connect(host='localhost',user='root',
password='root@123',database='avkschool')
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)
print("Trans. Id\tDate of Trans\tamount\tType of Trans\tAcc No.")
print("="*120)
for record in records:
print(record[0],"\t\t", record[1],"\t", record[2], "\t",record[3],"\t", record[4])
print('-'*120)
conn.close()
wait = input('\n\n\n Press any key to continue....')
def account_details():
clear()
acno = input('Enter account no :')
conn = mysql.connector.connect(host='localhost',user='root',
password='root@123',database='avkschool')
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(sql1)
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_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',user='root',
password='root@123',database='avkschool')
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 ( %s,%s,
%s,%s,%s,%s,%s,%s)'
val=(name,addr,phone,email,aadhar,actype,balance,"active" )
cursor.execute(sql,val)
conn.commit()
conn.close()
print('New customer added successfully')
def modify_account():
conn = mysql.connector.connect(host='localhost',user='root',
password='root@123',database='avkschool')
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_name ='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)
cursor.execute(sql)
conn.commit()
conn.close()
print('Customer Information modified..')
def close_account():
conn = mysql.connector.connect(host='localhost',user='root',
password='root@123',database='avkschool')
cursor = conn.cursor()
clear()
acno = input('Enter customer Account No :')
sql ='update customer set status="close" where acno ='+acno+';'
cursor.execute(sql)
conn.commit()
conn.close()
print('Account closed')
def main_menu():
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_account()
if choice == 2:
modify_account()
if choice == 3:
close_account()
if choice ==4 :
transaction_menu()
if choice ==5 :
search_menu()
if choice == 6:
report_menu()
if choice ==7 :
break
if __name__ == "__main__":
main_menu()
OUTPUT
Main Menu
Product Management
Adding New Product
List all the Product
List the Product Category wise
Update the Product Quantity
Delete the Product
Adding Purchase Details
Order Details
Requirements
SOFTWARE REQUIREMENTS
PLATFORM : WINDOWS 7
SOFTWARE : Python 3.7.0 (Front End)
: MySQL 5.1.7 (Back End)
HARDWARE REQUIREMENTS
PROCESSOR : PENTIUM-IV 2.4GHZ
RAM : 512MB
HARDDISK : 40GB
FUTURE ENHANCEMENT
Although i have put my best efforts to make the project flexible, easy to
operate, but limitations cannot be ruled out even by me. In future, to make
better Stock Management System to add the bill payment option into the main
menu.
To make a better interaction with Stock Management System, we suggest
creating a consumer login page to view their account. We can add secure for
admin and consumer login with some security options.
BIBLIOGRAPHY
COMPUTER SCIENCE WITH PYTHON BY: – SUMITA
ARORA
http/www.cbseportal.com
http://cbse-sample-papers.blogspot.com