Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 30

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

You might also like