Class 12 Banking Management System Documentation Utkarsh Saxena
Class 12 Banking Management System Documentation Utkarsh Saxena
(Affiliated to C.B.S.E.)
Project file
On
Submitted to:
Mr. Vivek Kumar Sharma
PGT (Computer Science)
Utkarsh Saxena
Class XII
INDEX:
Topic Page No.
• Preface 1
• Introduction 2
• Objective of the project 3
• System Analysis 4
o Current System Configuration
o Minimum System Requirement
o Requirement Analysis
• Project Design 5
o Data Flow Diagram
• Front-end and Back-end 6-10
o About Python
o About IDE used
o About modules used:
About Tkinter
About Pillow
About MySQL-connector-python
o About SQL
o About MySQL command line
• References 46
PREFACE
This project has been prepared keeping in view the requirements of central
board of secondary education, New Delhi.
UTKARSH SAXENA
Bonnie Foi Co. Ed. Sr. Sec. School
INTRODUCTION
During the past several decades personnel function has been transformed from a
relatively obscure record keeping staff to central and top-level management function.
There are many factors that have influenced this transformation like technological
advances, professionalism, and general recognition of human beings as most
important resources.
A computer-based management system is designed to handle all the primary
information required to calculate monthly statements of customer account which
include monthly statement of any month. Separate database is maintained to
handle all the details required for the correct statement calculation and generation.
This project intends to introduce more user friendliness in the various activities such
as record updating, maintenance, and searching. The searching of record has been
made quite simple as all the details of the customer can be obtained by simply
keying in the identification or account number of that customer. Similarly, record
maintenance and updating can also be accomplished by using the account number
with all the details being automatically generated. These details are also being
promptly automatically updated in the master file thus keeping the record
absolutely up-to-date.
The entire information has maintained in the database or Files and whoever wants
to retrieve can’t retrieve, only authorization user can retrieve the necessary
information which can be easily be accessible from the file.
OBJECTIVE OF THE PROJECT
A computer based management system is designed to handle all the primary
information required to calculate monthly statements of customer account which
include monthly statement of any month. Separate database is maintained to handle
all the details required for the correct statement calculation and generation.
This project intends to introduce more user friendliness in the various activities such
as record updating, maintenance, and searching. The searching of record has been
made quite simple as all the details of the customer can be obtained by simply keying
in the identification or account number of that customer. Similarly, record
maintenance and updating can also be accomplished by using the account number
with all the details being automatically generated. These details are also being
promptly automatically updated in the master file thus keeping the record absolutely
up-to-date.
The main objective of our project is providing the different typed of customers
facility, the main objective of this system is to find out the actual customer service.
Etc.
• It should fulfill almost all the process requirements of any Bank.
• It should increase the productivity of bank by utilizing the working hours more
and more, with minimum manpower.
This project includes the entire upgraded feature required for the computerization
banking system. This system is very easy to use, so that any user can use without
getting pre-knowledge about this. Its very much user friendly and meet almost all
daily working process requirements. This system is completely GUI based and can
be use by mouse and as well as keyboard. This system is melded in such a way that
has got all features to upgrade without making much change in existing
components.
SYSTEM ANALYSIS
• Current System:
o Requires a 64-bit processor and operating system
o OS: Windows 11
o Processor: Intel Core i3-10100
o Memory: 8 GB DDR4 RAM
o Graphics: NVIDIA GeForce GT 710
o DirectX: Version 11
• Requirement Analysis:
o Requires Python version 2.0.1 or above:
Modules of python required:
1) tkinter
2) Pillow
3) mysql-connector-python
o Requires mysql 7.0 or above
Data Flow Diagram: Project Design
Front-end and Back-end
About Python
Python is a high level, general-purpose programming language. Its design
philosophy emphasizes code readability with the use of significant indentation. Its
language constructs and object-oriented approach aim to help programmers write
clear, logical code for small- and large-scale projects.
It is dynamically typed and It supports multiple programming paradigms,
including structured, object-oriented and functional programming. It is often
described as a "batteries included" language due to its comprehensive standard
library.
Guido van Rossum began working on Python in the late 1980s as a successor to
the ABC programming language and Modula 3. It was first released it in 1991 as
Python 0.9.0. Python 2.0 was released in 2000 and introduced new features such
as list comprehensions, cycle-detecting garbage collection, reference counting,
and Unicode support. Python 3.0, released in 2008, was a major revision that is not
completely backward-compatible with earlier versions. Python 2 was discontinued
with version 2.7.18 in 2020.
• Pillow:
Python Imaging Library (expansion of PIL) is the de facto image processing
package for Python language. It incorporates lightweight image processing tools
that aids in editing, creating and saving images. Support for Python Imaging
Library got discontinued in 2011, but a project named pillow forked the original
PIL project and added Python3.x support to it. Pillow was announced as a
replacement for PIL for future usage. Pillow supports a large number of image
file formats including BMP, PNG, JPEG, and TIFF. The library encourages
adding support for newer formats in the library by creating new file decoders.
Capability of Pillow Module:
Pillow offers several standard procedures for image manipulation. These include:
1. per-pixel manipulations,
2. masking and transparency handling,
3. image filtering, such as blurring, contouring, smoothing, or edge finding,
4. image enhancing, such as sharpening, adjusting brightness, contrast or color,
5. adding text to images and much more.
• MySQL-connector-python
MySQL Connector/Python enables Python programs to access MySQL databases,
using an API that is compliant with Python Database.
About SQL
SQL is a language to operate databases; it includes database creation, deletion,
fetching rows, modifying rows, etc. SQL is an ANSI (American National Standards
Institute) standard language, but there are many different versions of the SQL
language.
About MySQL
My SQL is an open-source relational database management system (RDMS).
Its name is a combination of "My", the name of co-founder Michael Widenius's
daughter, and "SQL", the abbreviation for Structured Query Language. A relational
database organizes data into one or more data tables in which data types may be
related to each other; these relations help structure the data. SQL is a language
programmers use to create, modify and extract data from the relational database, as
well as control user access to the database. In addition to relational databases and
SQL, an RDBMS like MySQL works with an operating system to implement a
relational database in a computer's storage system, manages users, allows for
network access and facilitates testing database integrity and creation of backups.
MySQL is free and open-source software under the terms of the GNU General
Public License, and is also available under a variety of proprietary licenses. MySQL
was owned and sponsored by the Swedish company MySQL AB, which was bought
by Sun Microsystems (now Oracle Corporation. In 2010, when Oracle acquired
Sun, Widenius forked the open-source MySQL project to create MariaDB.
Data Table
Tables present in database
• Bank_Statement
• Account_detail:
• Transaction:
USER MANUAL
On opening this program, a login page will appear which will require mobile
number and password to login to the main window if you have already registered
you can enter your detail and login, but if you haven’t registered you can create
your account from create new account button.
• Create new account: On clicking this button a new window will open in
which you have to fill some details to create your account
Details will include:
i. Account Number: It should not be longer than 16digits and it has to
be unique
ii. Name: Enter you desired name, and it should not be longer than 30
characters
iii. Date Of Birth: Enter it in YYYYMMDD format.
iv. E-mail: It should be no longer than 30 characters. And same email
cannot be entered twice.
v. Mobile Number: It should be unique.
vi. Password and Confirm Password: They should be same and not
longer than 20 characters.
Then after entering the details your account will be created successfully
and a message box will appear.
And after closing message box you will be directed to previous window
and now you can enter you details and login.
After logging new window will open i.e., home window it contains options to
perform other functions. On the left corner of this page is and info button which
tells you about who has created this program. And in the center, there are three
options to choose from:
1. Check Bank Balance.
2. Fund Transfer/Transfer Money
3. Profile
• Check bank balance: On selecting this option and clicking continue
button a new window will open which will tell you your balance. It will also
tell you about your total credited amount, total debited amount and it will tell
you about your last five transactions with sender’s account number,
receiver’s account number, amount and date and time.
• Fund Transfer/Transfer Money: On selecting this option and clicking
continue button a new window will open from which you can transfer money
to others. Your account number will already be there you just have to enter
receiver’s account number and amount and press transfer button. Your
transaction will be successfully completed and a message box will appear if
you have balance.
• Profile: On selecting this option and clicking continue a new window will
open which will show you your information
i.e., User Name, Account Number, Date of Birth, Mobile Number, E-Mail ID
and Password.
This is all about the functions available in the program. And all windows have a
back button on their upper left corner to go back to previous window.
CODING:
####************************************
#### HEADER FILE USED IN PROJECT
####************************************
import tkinter
from PIL import ImageTk,Image
import tkinter.messagebox
import mysql.connector
from functools import partial
####************************************
###****************************************************************
***********
### 1. transaction_fnc executed during the execution of Check_balance_fnc
### it gives recent transaction details.
###****************************************************************
***********
def transaction_fnc(counter,amount=0,acc_no_receiver=None):
global transaction ## DECLARING GLOBAL
if counter==1:
#Sending data to sql table
###****************************************************************
***********
### 2. Check_bank_balance_fnc executed when check balance option is selected
### in home page it tells balance,credit and debit amount and exectues
### transaction_fnc.
###****************************************************************
***********
def check_bank_balance_fnc():
global userstatement #DECLARING GLOBAL
a=cursor2.rowcount
x=0
for x in range(a):
tup=data_bank_statement[x]
if userprofile[0]==tup[0]:
userstatement=tup
balance=userstatement[1]
credit=userstatement[2]
debit=userstatement[3]
transaction_fnc(counter=2)
return balance,credit,debit
###****************************************************************
***********
### 3. amount_fnc executed while sending money from one person to another
### it tells wheter you have sufficient amount to transfer money or not
### and also transfers the money.
###****************************************************************
***********
def anmount_fnc(amount,acc_no_receiver):
global data_bank_statement #DECLARING GLOBAL
blank=" "*100
a=int(0)
a=cursor2.rowcount
#function to apper msg box after successfully transfering money
def msg():
a=tkinter.messagebox.showinfo("Laxmi Cheat Fund",'Money
Transfered',parent=FT)
for x in range(a):
tup=data_bank_statement[x]
if userprofile[0]==tup[0]:
if tup[1]<amount:
lbl=tkinter.Label(FT, text="Insufficient Balance To transfer Money" ,
fg='red', font=("Times New Roman", 9)).place(x=260,y=290)
elif tup[1]>=amount:
lbl=tkinter.Label(FT, text=blank , fg='red', font=("Times New Roman",
9)).place(x=260,y=290)
#Sending data to sql table
minus="UPDATE bank_statement SET balance = balance -
"+str(amount)+",credit_amount=credit_amount + " +str(amount) + " WHERE
Account_no=" + str(userprofile[0])
cursor2.execute(minus)
plus="UPDATE bank_statement SET balance = balance +
"+str(amount)+",debit_amount=debit_amount + " +str(amount) + " WHERE
Account_no=" + str(acc_no_receiver)
cursor2.execute(plus)
connect1.commit()
cursor2.execute("select* from bank_statement")
data_bank_statement=cursor2.fetchall()
msg()
###****************************************************************
***********
### 4. transfer_fnc executed while sending money from one person to another
### it tells wheter you have entered valid account number or not , and also
### calls the amount_fnc for execution.
###****************************************************************
***********
def transfer_fnc(account_entry,amount_entry):
blank=" "*100
data1=data_account_detail
a=int(0)
x=int(0)
check=int(0)
a=cursor1.rowcount
for x in range (a):
try:
acc_no_receiver=int(account_entry.get())
lbl=tkinter.Label(FT, text=blank , fg='red', font=("Times New Roman",
9)).place(x=260,y=290)
except ValueError:
lbl=tkinter.Label(FT, text="Enter Numbers only In Receivers Account
Number" , fg='red',
font=("Times New Roman", 9)).place(x=260,y=290)
break
try:
amount=int(amount_entry.get())
lbl=tkinter.Label(FT, text=blank , fg='red', font=("Times New Roman",
9)).place(x=260,y=290)
except ValueError:
lbl=tkinter.Label(FT,text="Enter Numbers only In
Amount",fg='red',font=("Times New Roman",9)).place(x=260,y=290)
break
if acc_no_receiver==userprofile[0]:
lbl=tkinter.Label(FT, text="Don't Enter Your Account Number" , fg='red',
font=("Times New Roman", 9)).place(x=260,y=290)
break
lbl=tkinter.Label(FT, text=blank , fg='red', font=("Times New Roman",
9)).place(x=260,y=290)
if amount<0:
lbl=tkinter.Label(FT, text="Enter valid amount" , fg='red', font=("Times New
Roman", 9)).place(x=260,y=290)
break
lbl=tkinter.Label(FT, text=blank , fg='red', font=("Times New Roman",
9)).place(x=260,y=290)
tup=data1[x]
if acc_no_receiver==tup[0]:
lbl=tkinter.Label(FT, text=blank , fg='red', font=("Times New Roman",
9)).place(x=260,y=290)
anmount_fnc(amount,acc_no_receiver)
check=check+1
transaction_fnc(1,amount,acc_no_receiver)
elif x==(a-1) and check==0:
lbl=tkinter.Label(FT, text="Account Number Dosen't exist" , fg='red',
font=("Times New Roman", 9)).place(x=260,y=290)
###****************************************************************
***********
### 5. continue_fnc executed after clicking continue button on home page
### it decides which window to open next .
###****************************************************************
***********
def continue_fnc():
a=var.get()
if a==1:
Check_bank_balance()
elif a==2:
Fund_Transfer()
elif a==3:
Profile()
###****************************************************************
***********
### 6. login_fnc executes after clicking login button on login page
### it takes user input of mobile no and password and check wheter they are
### valid or not, and open account if they are valid.
###****************************************************************
***********
def login_fnc(mob_entry,pass_entry):
global userprofile #DECLARING GLOBAL
data1=data_account_detail
check=0
blank=" "*100
a=int(0)
x=int(0)
a=cursor1.rowcount
b=0
for x in range (a):
try:
tup=data1[x]
mobile_no=int(mob_entry.get())
password=str(pass_entry.get())
except ValueError:
lbl=tkinter.Label(mainwindow, text="Enter Number in mobile number" ,
fg='red', font=("Times New Roman", 6)).place(x=300,y=150)
break
lbl=tkinter.Label(mainwindow, text=blank, fg='red', font=("Times New
Roman", 6)).place(x=300,y=150)
if tup[3]==mobile_no and tup[5]==password :
userprofile=tup
lbl1=tkinter.Label(mainwindow, text=blank, fg='red', font=("Times New
Roman", 6)).place(x=300,y=195)
check=1
login_window()
elif x==a-1 and check==0:
lbl1=tkinter.Label(mainwindow, text="Invalid password or mobile number" ,
fg='red',
font=("Times New Roman", 6)).place(x=300,y=195)
###****************************************************************
***************
### 7. create_acc_fnc executes after clicking create button on create new account
### window. it takes input from user and send them in sql table to create
### new account.
###****************************************************************
***************
def
create_acc_fnc(acc_no_entry,name_entry,dob_entry,email_entry,mob_no_entry,
pass_entry,confirm_pass_entry):
global data_account_detail #DECLARING GLOBAL
global data_bank_statement #DECLARING GLOBAL
blank=" "*100
check=0
cond=True
a=cursor1.rowcount
lbl=tkinter.Label(create_new_acc, text=blank , fg='red', font=("Times New
Roman", 6)).place(x=300,y=313)
##function to appear msg box after succesfully creating account
def msg():
a=tkinter.messagebox.showinfo("Laxmi Cheat Fund",'Account Created
Sucessfully',parent=create_new_acc)
while True:
try:
name=name_entry.get()
email=email_entry.get()
password=pass_entry.get()
password_confirm=confirm_pass_entry.get()
dob=int(dob_entry.get())
acc_no=int(acc_no_entry.get())
mob_no=int(mob_no_entry.get())
lbl=tkinter.Label(create_new_acc, text=blank , fg='red', font=("Times New
Roman", 6)).place(x=350,y=313)
except ValueError:
lbl=tkinter.Label(create_new_acc, text="Enter Valid details" , fg='red',
font=("Times New Roman", 6)).place(x=350,y=313)
break
for x in range(a):
tup=data_account_detail[x]
if tup[0]==acc_no:
lbl=tkinter.Label(create_new_acc, text="account number already
registered." , fg='red',
font=("Times New Roman", 6)).place(x=300,y=313)
check=0
break
elif tup[2]==email:
lbl=tkinter.Label(create_new_acc, text=" E-mail already registered." ,
fg='red',
font=("Times New Roman", 6)).place(x=300,y=313)
check=0
break
elif tup[3]==mob_no:
lbl=tkinter.Label(create_new_acc, text="Mobile number already
registered." , fg='red',
font=("Times New Roman", 6)).place(x=300,y=313)
check=0
break
elif len(email)>30:
lbl=tkinter.Label(create_new_acc, text="E-mail id too long." , fg='red',
font=("Times New Roman", 6)).place(x=300,y=313)
check=0
break
elif len(str(acc_no))>16:
lbl=tkinter.Label(create_new_acc, text="Max 16 digit account number is
allowed." , fg='red',
font=("Times New Roman", 6)).place(x=300,y=313)
check=0
break
elif len(str(mob_no))>10:
lbl=tkinter.Label(create_new_acc, text="Mobile Number invalid" ,
fg='red',
font=("Times New Roman", 6)).place(x=300,y=313)
check=0
break
elif len(name)>30:
lbl=tkinter.Label(create_new_acc, text="Name is too long" , fg='red',
font=("Times New Roman", 6)).place(x=300,y=313)
check=0
break
elif len(password)>20:
lbl=tkinter.Label(create_new_acc, text="Password too long" , fg='red',
font=("Times New Roman", 6)).place(x=300,y=313)
check=0
break
else:
check=1
dob1=str(dob)
if check==1:
check=2
if check==2:
if password==password_confirm:
check=3
else:
lbl=tkinter.Label(create_new_acc, text="Enter same password." , fg='red',
font=("Times New Roman", 6)).place(x=300,y=313)
if check==3:
#Sending data to sql table
add2="INSERT INTO
bank_statement(Account_no,Balance,credit_amount,debit_amount) VALUES (" +
str(acc_no)+", 0,0,0)"
cursor2.execute(add2)
connect1.commit()
cursor2.execute("select* from bank_statement")
data_bank_statement=cursor2.fetchall()
msg()
create_new_acc.destroy()
break
break
###****************************************************************
***********
### 1. Check_bank_balance execute after select check bank balance in home page
### open check bank balance window
###****************************************************************
***********
# main windows
def Check_bank_balance():
global CBB #DECLARING GLOBAL
CBB=tkinter.Toplevel(mainwindow)
CBB.geometry("800x450")
CBB.title("Laxmi Cheat Fund")
balance,credit,debit=check_bank_balance_fnc() ##calling function
balance1=str(balance)+" ₹"
debit1="Debit Amount: " +str(debit) +" ₹"
credit1="Credit Amount: " +str(credit) +" ₹"
# label widget
lbl=tkinter.Label(CBB, text="Bank Balance" , fg='Black', font=("Times New
Roman", 32,"bold")).place(x=250, y=25)
lb2=tkinter.Label(CBB, text=balance1 , fg='dimgray', font=("Times New Roman",
24,"bold")).place(x=300, y=80)
lb3=tkinter.Label(CBB, text="Accumulative:" , fg='Black', font=("Times New
Roman", 16,"bold")).place(x=140, y=140)
lb4=tkinter.Label(CBB ,text=debit1, fg='Black', font=("Times New Roman",
12,"bold")).place(x=160, y=170)
lb5=tkinter.Label(CBB, text=credit1,fg='Black', font=("Times New Roman",
12,"bold")).place(x=160, y=200)
lb6=tkinter.Label(CBB, text="Recent Transactions:" , fg='Black', font=("Times
New Roman", 16,"bold")).place(x=140, y=250)
lb7=tkinter.Label(CBB, text="Sender's Account No Receiver's Account No
Amount Date and Time" , fg='Black',
font=("Times New Roman", 12,"bold")).place(x=140, y=280)
# insterting picture
canvas=tkinter.Canvas(CBB,width=0,height=0)
canvas.place(x=0,y=0)
img=ImageTk.PhotoImage(Image.open("arrow3.png"))
canvas.create_image(00,0,image=img)
label = tkinter.Label(CBB,image=img)
label.image =img # keep a reference
canvas2=tkinter.Canvas(CBB,width=800,height=5)
canvas2.place(x=100,y=120)
img2=ImageTk.PhotoImage(Image.open("line1.png"))
label2=tkinter.Label(CBB,image=img2)
label2.image=img2
canvas2.create_image(200,10,image=img2)
canvas3=tkinter.Canvas(CBB,width=800,height=5)
canvas3.place(x=100,y=230)
img3=ImageTk.PhotoImage(Image.open("line1.png"))
label3=tkinter.Label(CBB,image=img3)
label3.image=img3
canvas3.create_image(200,10,image=img3)
#button
b1=tkinter.Button(CBB,image=img,text="pic",font=("arial",14),bd=0,command=CB
B.destroy).place(x=30,y=20)
###****************************************************************
***********
### 2. Fund_Transfer executes after select transfer money in home page
### open window to send money to other
###****************************************************************
***********
def Fund_Transfer():
global FT #DECLARING GLOBAL
FT=tkinter.Toplevel(mainwindow)
FT.geometry("800x450")
FT.title("Laxmi Cheat Fund")
acc_no=userprofile[0]
# label widget
lbl=tkinter.Label(FT, text="Transfer Money" , fg='Black', font=("Times New
Roman", 32,"bold")).place(x=250, y=25)
lb2=tkinter.Label(FT, text="Your Account Number:" , fg='Black', font=("Times
New Roman", 14,"bold")).place(x=140, y=100)
lb3=tkinter.Label(FT, text=acc_no , fg="dimgray", font=("Times New Roman",
16,"bold")).place(x=140, y=130)
lb4=tkinter.Label(FT ,text="Receivers Account Number:", fg='Black',
font=("Times New Roman", 16,"bold")).place(x=140, y=160)
lb5=tkinter.Label(FT, text="Amount:",fg='Black', font=("Times New Roman",
16,"bold")).place(x=140, y=220)
#entry
account_entry=tkinter.Entry(FT,width=30,fg='Grey',font=("Times New
Roman",14))
account_entry.place(x=140,y=190)
amount_entry=tkinter.Entry(FT,width=12,fg='Grey',font=("Times New
Roman",14))
amount_entry.place(x=230,y=220)
# insterting picture
canvas=tkinter.Canvas(FT,width=0,height=0)
canvas.place(x=0,y=0)
img=ImageTk.PhotoImage(Image.open("arrow3.png"))
canvas.create_image(00,0,image=img)
label = tkinter.Label(FT,image=img)
label.image =img # keep a reference
canvas2=tkinter.Canvas(FT,width=800,height=5)
canvas2.place(x=100,y=80)
img2=ImageTk.PhotoImage(Image.open("line1.png"))
label2=tkinter.Label(FT,image=img2)
label2.image=img2
canvas2.create_image(200,10,image=img2)
#button
b1=tkinter.Button(FT,text="Transfer",bg='green',fg='white',font=("arial",14),active
background='light green',
command=partial(transfer_fnc,account_entry,amount_entry)).place(x=320,y=310)
b2=tkinter.Button(FT,image=img,text="pic",font=("arial",14),bd=0,command=FT.d
estroy).place(x=30,y=20)
###****************************************************************
***********
### 3. Check_bank_balance execute after selecting profile in home page
### open profile window which show all available detail about account
###****************************************************************
***********
def Profile():
global Profile #DECLARING GLOBAL
profile=tkinter.Toplevel(mainwindow)
profile.geometry("800x450")
profile.title("Laxmi Cheat Fund")
# label widget
canvas2=tkinter.Canvas(profile,width=800,height=5)
canvas2.place(x=100,y=80)
img2=ImageTk.PhotoImage(Image.open("line1.png"))
label2=tkinter.Label(profile,image=img2)
label2.image=img2
canvas2.create_image(200,10,image=img2)
#button
b1=tkinter.Button(profile,image=img,text="pic",font=("arial",14),bd=0,command=
profile.destroy).place(x=30,y=20)
###****************************************************************
***********
### 4. login_window opens after succesfully logging in
### opens home page to select further options
###****************************************************************
***********
def login_window():
global login #DECLARING GLOBAl
login= tkinter.Toplevel(mainwindow)
login.geometry("800x450")
login.title("Laxmi Cheat Fund")
#Create a Label in New window
tkinter.Label(login, text="Laxmi Cheat Fund", font=("Times New Roman", 32,
'bold')).place(x=220,y=25)
#adding button
#inserting picture
canvas=tkinter.Canvas(login,width=0,height=0)
canvas.place(x=0,y=0)
img=ImageTk.PhotoImage(Image.open("info2.png"))
canvas.create_image(0,0,image=img)
canvas2=tkinter.Canvas(login,width=0,height=0)
canvas2.place(x=0,y=0)
img2=ImageTk.PhotoImage(Image.open("arrow3.png"))
canvas2.create_image(00,0,image=img)
label = tkinter.Label(login,image=img)
label.image =img # keep a reference
label2 = tkinter.Label(login,image=img2)
label2.image =img2 # keep a referenc
#defining function
def msg():
text='Developed by:\nNishchay Sharma\nUtkarsh Saxena\nVikram Sarkar'
a=tkinter.messagebox.showinfo("Laxmi Cheat Fund",text,parent=login)
#button
B1=tkinter.Button(login,text="continue",font=("arial",16),bg='green',fg='white',co
mmand=continue_fnc).place(x=290,y=270)
B2=tkinter.Button(login,image=img,text="pic",font=("arial",14),bd=0,command=m
sg).place(x=35,y=380)
b2=tkinter.Button(login,image=img2,text="pic",font=("arial",14),bd=0,command=l
ogin.destroy).place(x=30,y=20)
###****************************************************************
************************
### 5. create_new_acc_window opens after clicking create new account button on
login window
### open create new account window to create account
###****************************************************************
************************
def create_new_acc_window():
global create_new_acc #DECLARING GLOBAL
create_new_acc=tkinter.Toplevel(mainwindow)
create_new_acc.geometry("800x450")
create_new_acc.title("Laxmi Cheat Fund")
# label widget
lbl=tkinter.Label(create_new_acc, text="Create New Account" , fg='Black',
font=("Times New Roman", 32,"bold")).place(x=220, y=25)
lb2=tkinter.Label(create_new_acc, text="Account Number:" , fg='Black',
font=("Times New Roman", 12,"bold")).place(x=160, y=110)
lb3=tkinter.Label(create_new_acc, text="Name:" , fg='Black', font=("Times New
Roman", 12,"bold")).place(x=160, y=140)
lb4=tkinter.Label(create_new_acc, text="Date of Birth:" , fg='Black',
font=("Times New Roman", 12,"bold")).place(x=160, y=170)
lb5=tkinter.Label(create_new_acc, text="E-mail ID:" , fg='Black', font=("Times
New Roman", 12,"bold")).place(x=160, y=200)
lb6=tkinter.Label(create_new_acc, text="Mobile No.:" , fg='Black', font=("Times
New Roman", 12,"bold")).place(x=160, y=230)
lb7=tkinter.Label(create_new_acc, text="Password:" , fg='Black', font=("Times
New Roman", 12,"bold")).place(x=160, y=260)
lb8=tkinter.Label(create_new_acc, text="Confirm Password:" , fg='Black',
font=("Times New Roman", 12,"bold")).place(x=160, y=290)
#entry
acc_no_entry=tkinter.Entry(create_new_acc,width=30,fg='Black',font=("Times
New Roman",12))
acc_no_entry.place(x=300,y=110)
name_entry=tkinter.Entry(create_new_acc,width=30,fg='Black',font=("Times
New Roman",12))
name_entry.place(x=300,y=140)
dob_entry=tkinter.Entry(create_new_acc,width=30,fg='Black',font=("Times New
Roman",12))
dob_entry.insert(12,"YYYY/MM/DD")
dob_entry.place(x=300,y=170)
email_entry=tkinter.Entry(create_new_acc,width=30,fg='Black',font=("Times
New Roman",12))
email_entry.place(x=300,y=200)
mob_no_entry=tkinter.Entry(create_new_acc,width=30,fg='Black',font=("Times
New Roman",12))
mob_no_entry.place(x=300,y=230)
pass_entry=tkinter.Entry(create_new_acc,width=30,fg='Black',font=("Times New
Roman",12))
pass_entry.place(x=300,y=260)
confirm_pass_entry=tkinter.Entry(create_new_acc,width=30,fg='Black',font=("Tim
es New Roman",12))
confirm_pass_entry.place(x=300,y=290)
# insterting picture
canvas=tkinter.Canvas(create_new_acc,width=0,height=0)
canvas.place(x=0,y=0)
img=ImageTk.PhotoImage(Image.open("arrow3.png"))
canvas.create_image(00,0,image=img)
label = tkinter.Label(create_new_acc,image=img)
label.image =img # keep a reference
#button
b1=tkinter.Button(create_new_acc,text="Create
account",bg='green',fg='white',font=("arial",14),activebackground='light green',
command=partial(create_acc_fnc,acc_no_entry,name_entry,dob_entry,email_ent
ry,mob_no_entry,
pass_entry,confirm_pass_entry)).place(x=320,y=330)
b2=tkinter.Button(create_new_acc,image=img,text="pic",font=("arial",14),bd=0,co
mmand=create_new_acc.destroy).place(x=30,y=20)
###****************************************************************
****************
### 7. main_window main function of the program executes just after running the
### program, it opens login window which allows further operation to take place
###****************************************************************
****************
def main_window():
global mainwindow #DECLARING GLOBAL
mainwindow=tkinter.Tk()
# add widgets here
# label widget
lbl=tkinter.Label(mainwindow, text="Laxmi Cheat Fund" , fg='Black',
font=("Times New Roman", 32,"bold"))
lbl.place(x=220, y=25)
#inserting entry
mob_entry=tkinter.Entry(mainwindow,fg='black',font=("Times New Roman",12))
mob_entry.insert(10,"Mobile Number")
mob_entry.place(x=300,y=120)
# insterting picture
canvas=tkinter.Canvas(mainwindow,width=800,height=5)
canvas.place(x=120,y=270)
img=ImageTk.PhotoImage(Image.open("line1.png"))
canvas.create_image(200,10,image=img)
# intsert button
b1=tkinter.Button(mainwindow,text="Login",bg="sky
blue",font=("arial",14),fg="white",activebackground="Light blue",
command=partial(login_fnc,mob_entry,pass_entry))
b1.place(x=345,y=220)
mainwindow.mainloop()
###****************************************************************
***********
### 1. connector_function connects mysql with python
###****************************************************************
***********
def connector_function():
connect1=mysql.connector.connect(host="localhost",user="root",passwd='raaj007
0',database="banking_management_system")
return connect1
connect1 = connector_function()
if connect1.is_connected()==False:
print("error")
cursor1=connect1.cursor()
cursor2=connect1.cursor()
cursor2.execute("select* from bank_statement")
data_bank_statement=cursor2.fetchall()
cursor3=connect1.cursor()
cursor3.execute("select* from transaction order by date_time desc")
transaction=cursor3.fetchall()
main_window()
connect1.close()
INPUT AND OUTPUT SCREEN
Login Window:
On Selecting Profile:
On Selecting Transfer Money:
2. Fault
Fault is a condition that causes to fail in performing its required function. A fault is
a basic reason for software malfunction and is synonymous with the commonly
used term Bug.
3. Failure
Failure is the inability of a system or component to perform a required function
according to its specifications. A software failure occurs if the behavior of the
software is the different from the specified behavior. Failure may be caused due to
functional or performance reasons.
a. Unit Testing
The term unit testing comprises the sets of tests performed by an individual
programmer prior to integration of the unit into a larger system.
A program unit is usually small enough that the programmer who developed it can
test it in great detail, and certainly in greater detail than will be possible when the
unit is integrated into an evolving software product. In the unit testing the programs
are tested separately, independent of each other. Since the check is done at the
program level, it is also called program teasing.
b. Module Testing
A module and encapsulates related component. So can be tested without other
system module.
c. Subsystem Testing
Subsystem testing may be independently design and implemented common
problems are sub-system interface mistake in this checking we concentrate on it.
There are four categories of tests that a programmer will typically perform on a
program unit.
1) Functional test
2) Performance test
3) Stress test
4) Structure test
1) Functional Test
Functional test cases involve exercising the code with Nominal input values for
which expected results are known; as well as boundary values (minimum values,
maximum values and values on and just outside the functional boundaries) and
special values.
2) Performance Test
Performance testing determines the amount of execution time spent in various parts
of the unit, program throughput, response time, and device utilization by the
program unit. A certain amount of avoid expending too much effort on fine-tuning
of a program unit that contributes little to the overall performance of the entire
system. Performance testing is most productive at the subsystem and system levels.
3) Stress Test
Stress test are those designed to intentionally break the unit. A great deal can be
learned about the strengths and limitations of a program by examining the manner
in which a program unit breaks.
4) Structure Test
Structure tests are concerned with exercising the internal logic of a program and
traversing particular execution paths. Some authors refer collectively to functional
performance and stress testing as “black box” testing. While structure testing is
referred to as “white box” or “glass box” testing. The major activities in structural
testing are deciding which path to exercise, deriving test date to exercise those
paths, determining the test coverage criterion to be used, executing the test, and
measuring the test coverage achieved when the test cases are exercised.
DEBUGGING
Defect testing is intended to find areas where the program does not confirm to its
specifications. Tests are designed to reveal the presence of defect in the system.
When defect have been found in the program. There must be discovered and
removed. This is called “Debugging”.
CONCLUSION
It was a wonderful and learning experience for me while working on this
project. This project took me through the various phases of project
development and gave me real insight into the world of computer science.
The joy of work and the thrill involved while tackling the various
problems and challenges gave me a feel of developer’s industry.
REFERENCES
BOOK: Computer science with python class 12 by Sumita Arora
WEBSITES: www.wikipedia.com
www.geeksforgeeks.org
www.javatpoint.com
www.gist.github.com
www.stackoverflow.com