Sample Project Report
Sample Project Report
System
By Using Python and
Tkinter
Library
A PROJECT REPORT
Submitted By
Lakhan Mahato
At
Ardent ComputechPvt. Ltd.
(ISO9001:2015)
SDF Building, Module #132, Ground Floor, Salt Lake City, GP Block, Sector V, Kolkata,
West Bengal 700091
DECLEARATION
DATE:-
Guide / Supervisor
ACKNOWLEDGEMENT
Success of any project depends largely on the
encouragement and guidelines of many others. I take
this sincere opportunity to express my gratitude to the
people who have been instrumental in the successful
completion of this project work.
1. Abstract 5
2. Introduction 6
3. Problem Definition 7
4. Project Goal 7
5. Methodology 8-12
6. Project Objective 12
7. Project Architecture(Workflow) 13
8. Project Implementation 14
12. Summary 24
13. Bibliography 25
ABSTRACT
Our project Banking Management system includes
‘computerized the process. Our software has the facility
to give a unique id for every user & admin and stores
the details of every number. The data can be retrieved
easily. The interface is very User-friendly. The data are
well protected using OTP verification for personal use
and makes the data processing very fast.
INTRODUCTION
This project is aimed to automate the banking management
system. This project is developed mainly to administrate and
user records. The purpose of the project entitled as to
computerize the Front Office Management of user and
administrate records in banking to develop software which
is user friendly, simple, fast and cost-effective. Traditionally,
it was done manually. The main function of the system is to
register and store user and administrate details, retrieve
and these details as and when required, and also to
manipulate these details meaningfully. Banking
management system is an environment where some of the
process of the user in the administrator is managed. It is
done through the automated computerized method.
Conventionally this system is done using papers, file and
binders. This system saves the time of the user and of the
administrator. It includes process like registration of the
user’s details and administrator’s details, assigning the
department based on their account and maintenance of the
record. This system reduces the cost and workforce required
for this job. As the system is online the information is
globally present to everyone. This makes the system easy to
handle and feasible for finding the omission with updating at
the same time. As for the existing system, they use to
maintain their record manually which makes it vulnerable to
security. If filed a query to search or update in a manual
system, it will take a lot of time to process the query and
make a report which is a tedious job. As the system used in
the bank is outdated as it requires paper, files and the
binders, which will require the human workforce to maintain
them. To get registered in the bank, a user in this system
one should come to the admin. Get the forms from the
counter while standing in the queue which consumes a lot of
the user’s time as well as of management team. As the
number of the user increases in the bank manually
managing the strength becomes a hectic job for the
administrator. This computerized system storeall the data in
the database which makes it easy to fetch and update
whenever needed.
PROBLEM DEFINITION
Using manual system to manage the users which are
records all information. The record in the have a
possibility missing or destroy when happen any accident.
So through this you can correct all the information of
weather user and admin’s together and keep it in one
place. user and admin’s data is collected through many
applications of modern age but these have not come in
the market so I made it as my goal so that user and
admin data can be easily saved through the application.
This will allow you to get new user & admin and their
updates and delete them and you will be able to see the
data of all the user’s at once and you will have no
difficulty in finding the users if you want. It will also be
very helpful for the admin to keep the data of all the
user.
PROJECT GOAL
The goal is to collect the data of any user or admin’s
together and find them easily so that the data of the
user admin’s is never lost. Here you can add new users
or admin’s, update their details and delete them. After
all the data is filled and submitted, the user & admin's
data is saved in a database which can be found
someday. The system will be used in bank to get the
information from the user or admin’s and then storing
that data for future usage.
METHODOLOGY
This project methodology is needed to make sure the
project that consists of software development will be
developed systematically in order to acquire a better
result. The overall of the project methodology is shown
as figure below.
Literature review :-
The project begins with literature review where the
overview of the project needs to be known. The
literature review is done by finding out numbers of
lectures student and class provided, involved for Faculty
of Electronics and Computer Engineering (FKEKK), how
many class and how many lecturers contribute to this
faculty. All this information needto be known in order to
provide information inside the software that is useful in
arranging the database.
Database design :-
Database is required to improve the functionality of this
project. Therefore, the first stage of software
development is to create the database. Database is a
body of information made up of related pieces of data
organized so that they can be easily been manipulated
by the computer. As for the software development, it is
important to have database as all the information
needed can be saved for future used.
Creation of suitable Graphic user interface (GUI) :-
GUI is a way to interact with a computer using pictures
and other visual elements displayed on a computer
screen. The pictures and buttons used to control many
Internet sites are an example of a GUI. GUI is important
to make the user easy to understand what they need to
do in order to use the software GUI must be user friendly
and easy to be understood. In order to make the GUI
function, Microsoft Visual Studio coding must be inserted
to make the software work properly.
Software testing :-
Software testing is the process used to measure the
quality of developed computer software to determine
that the software meets its required results. This testing
process of executing a program is intended of finding
errors.
Requirement plan phase :-
Before developing the system, either small or large
system the proper planning needs to be put in the first
place. This is to make sure that all the activities that will
execute and overall development are under control. The
purpose of planning is to prepare the workflow for
project management start from early stages of project
development until end of development. The developer
need to mention that it is very important to divide the
project into subtasks to make sure about time
estimation and to identify source requirement to
complete this Banking Information System project.
Database design :-
To design database, it considers and concerns in many
aspects. The specification will be determined by what is
the data need to be stored in database. In database
design, each step of the process needs to be done very
carefully for avoiding any unexpected errors. The errors
might occur in database, it can give complex problem for
the system. These databases are designed by using
Microsoft Access 2003. For Student Information System
database, there are seven tables involved such as
student, lecturer, activity, position, and class, list of
student and list of lecturer.
Interface design :-
The purpose of interface design is to determine how the
layout of the system and to make sure that this layout
suitable with user requirement. The good designing can
attract the users and supposedly not confused the users
with each functions of the system. For instance, the
developer also needs to concern about user-friendly
interface during designing phase. Through this system,
there are some elements, which been used to design the
interface.
Coding design :-
This coding designing showed how programming
language would be implemented. It also will explain the
purpose for each coding development. SQL statement is
used in order to make sure that interfaces can be
connected with database.
RAD (Rapid Application Design) Methodology :-
This Banking Information System development used RAD
(Rapid Application Design) methodology. This
methodology method follows the System Development
Life Cycle (SDLC) that in a sequential and structured
away. RAD is a methodology for compressing the
analysis, design, build, and test phases into a series of
short, iterative development cycles. This has a number of
distinct advantages over the traditional sequential
development model. Iteration allows for effectiveness
and self-correction. Studies have shown that human
beings almost never perform a complex task correctly
the first time. However, people are extremely good at
making an adequate beginning and then making many
small refinements and improvements. RAD projects are
typically operated with small-integrated teams
comprised of developers, end users, and IT technical
resources. Small teams, combined with short, iterative
development cycles optimize speed, unity of vision and
purpose, effective informal communication and simple
project management.
Banking Management System use case diagram for admin roles
PROJECT OBJECTIVE
The main objective of our project is to successfully
complete the Banking Management System and whether
users and admin’s are being helped through this should
be well noticed.
PROJECT
ARCHITECTURE(WORKFLOW)
This is the detailed work architecture where we are
showing the process of Banking Management System.
PROJECT IMPLEMENTATION
INFORMATION
DATA INFORMATION
SYSTEM
Information system
Information systems contain information about important
people, places and things within the organization or in
the environment surrounding it. Information is a data
that have been designed into a form that is meaningful
and useful to human beings. Data, in contrast, are
streams of raw facts re-presenting events occurring in
organizations or the physical environment before they
have been organized into a form that people can
understand and use.
STEP-BY-STEP WORKING
Transaction
PROJECT LIMITATIONS
1. http://practice.geeksforgeeks.org
2. www.tutorialpoint.com
3. http://stackoverflow.com
PROJECT CODE
def homePage():
def adminLogin():
window.destroy()
from AdminLogin import adminLogin
adminLogin()
def userLogin():
window.destroy()
from UserLogin import userLogin
userLogin()
window = Tk()
window.geometry("1000x650+200+30")
window.maxsize(1000,650)
window.minsize(1000,650)
#Gitaram logo
'''
logo = PhotoImage(file = "4.png")
logo = Label(image = logo)
logo.place(x = 0, y = 18)
'''
logo = Image.open("1.png")
rLogo = logo.resize((140,106))
oLogo = ImageTk.PhotoImage(rLogo)
#Create Image
img = Image.open("5.png")
rImg = img.resize((1000,550))
oImg = ImageTk.PhotoImage(rImg)
window.mainloop()
if __name__ == '__main__':
homePage()
#-----------------------------------------------------------------------------
-----------------------------------
from tkinter import *
from tkinter import ttk
from PIL import Image, ImageTk
import sqlite3
from MsgBox import msgBox
def adminInterface(adminId):
db = sqlite3.connect("BankDB.db")
cr = db.cursor()
def home():
fRemoveUser.place_forget()
fTransaction.place_forget()
fFindUser.place_forget()
fViewAllUser.place_forget()
fUpdateUser.place_forget()
fUpdateUserNext.place_forget()
fAccount.place_forget()
fSelect.place_forget()
fNext.pack_forget()
def addUser():
from UserRegistration import userRegistration
userRegistration()
def removeUser():
home()
fRemoveUser.place(x = 250, y = 176)
def close():
home()
def delete():
db = sqlite3.connect("BankDB.db")
cr = db.cursor()
lvAccountNo = eAccountNo.get()
cr.execute("select accountNo from user
where accountNo = ?", (lvAccountNo,))
try:
acc = cr.fetchone()[0][0] # if arrise error
then account no is not exist
concenmentMsg = Toplevel()
concenmentMsg.title("Warning !!!")
concenmentMsg.config(background="red")
concenmentMsg.geometry("150x120+550+300")
concenmentMsg.minsize(250,120)
concenmentMsg.maxsize(250,120)
lSurity = Label(concenmentMsg, text =
"Are you sure ?",bg = "red", fg = "white", font =
("times new roman", 20, "bold"))
lSurity.pack(pady = 10)
def yes():
concenmentMsg.destroy()
cr.execute("delete from user where
accountNo = ?", (lvAccountNo,))
db.commit()
msgBox("Account No. is Deleted
successfully",450,1)
def no():
concenmentMsg.destroy()
frame = Frame(concenmentMsg, bg =
"red", width = 300, height = 50)
frame.pack()
bYes = Button(frame, text = "Yes", width
= 5, bg = "cyan", font = ("times new roman", 15,
"bold"), command = yes)
bYes.pack(side = "left", pady = 10,
padx=10, fill = X)
bNo = Button(frame, text = "No", width =
5, bg = "cyan", font = ("times new roman", 15,
"bold"), command = no)
bNo.pack(side = "left",pady = 10,
padx=10, fill = Y)
except:
msgBox("Account No. is not
exist !!!",350,1)
#gvAccountNo = StringVar()
lAccountNo = Label(fRemoveUser, text =
"Account No", bg = "beige", fg = "blue", font =
("times new roman", 20, "bold"))
lAccountNo.place(x = 100, y = 50)
eAccountNo = Entry(fRemoveUser, font =
("times new roman", 20, "bold"), border = 2)
eAccountNo.place(x = 300, y = 50)
def updateUser():
home()
fUpdateUserNext.place_forget()
fUpdateUser.place(x = 250, y = 150)
fAccount.place(x = 0, y = 0)
def accNext():
try:
cr.execute("select accountNo from user
where accountNo = ?",(eAccountNo.get(),))
accountUpdate = cr.fetchall()[0][0]
fAccount.place_forget()
fSelect.place(x = 0, y = 0)
except:
msgBox("Invalid Account No",350,1)
# create checkbox
vName = IntVar(fSelect)
cName = Checkbutton(fSelect, text = "Name",
variable = vName, font = ("times new roman", 15,
"bold"), bg = "beige", fg = "blue")
cName.place(x = 150, y = 100)
vGuardianName = IntVar(fSelect)
cGuardianName = Checkbutton(fSelect, text =
"Guardian Name", variable = vGuardianName, font
= ("times new roman", 15, "bold"), fg = "blue", bg =
"beige")
cGuardianName.place(x = 150, y = 150)
vAddress = IntVar(fSelect)
cAddress = Checkbutton(fSelect, text =
"Address", variable = vAddress, font = ("times new
roman", 15, "bold"), fg = "blue", bg = "beige")
cAddress.place(x = 150, y = 200)
vCity = IntVar(fSelect)
cCity = Checkbutton(fSelect, text = "City",
variable = vCity, font = ("times new roman", 15,
"bold"), fg = "blue", bg = "beige")
cCity.place(x = 150, y = 250)
vState = IntVar(fSelect)
cState = Checkbutton(fSelect, text = "State",
variable = vState, font = ("times new roman", 15,
"bold"), fg = "blue", bg = "beige")
cState.place(x = 150, y = 300)
vPin = IntVar(fSelect)
cPin = Checkbutton(fSelect, text = "Pin No",
variable = vPin, font = ("times new roman", 15,
"bold"), fg = "blue", bg = "beige")
cPin.place(x = 400, y = 100)
vCountry = IntVar(fSelect)
cCountry = Checkbutton(fSelect, text =
"Country", variable = vCountry, font = ("times new
roman", 15, "bold"), fg = "blue", bg = "beige")
cCountry.place(x = 400, y = 150)
vBranch = IntVar(fSelect)
cBranch = Checkbutton(fSelect, text =
"Branch", variable = vBranch, font = ("times new
roman", 15, "bold"), fg = "blue", bg = "beige")
cBranch.place(x = 400, y = 200)
vMobile = IntVar(fSelect)
cMobile = Checkbutton(fSelect, text = "Mobile
No", variable = vMobile, font = ("times new roman",
15, "bold"), fg = "blue", bg = "beige")
cMobile.place(x = 400, y = 250)
vEmail = IntVar(fSelect)
cEmail = Checkbutton(fSelect, text = "Email
Id", variable = vEmail, font = ("times new roman",
15, "bold"), fg = "blue", bg = "beige")
cEmail.place(x = 400, y = 300)
def next():
fSelect.place_forget()
fUpdateUserNext.place(x = 250, y = 150)
fNext.pack()
labels = []
entrys = []
entrys.append(Entry(fNext, font =
("times new roman", 15, "bold"), textvar = s[r]))
entrys[r].place(x = xEntry, y = yAx)
yAx += 30
r += 1
def UpdatePlaceForget():
r=0
for i in selected:
if selected[i]:
labels[r].place_forget()
entrys[r].place_forget()
r += 1
def updateCheck():
r=0
blankEntry = False
for i in selected:
if selected[i]:
if entrys[r].get() == "":
blankEntry = True
r += 1
if blankEntry:
msgBox("Please fill all the Box",350,1)
else:
updateDb()
def updateDb():
fNext.pack_forget()
UpdatePlaceForget()
bUpdate.pack_forget()
r=0
for i in selected:
if selected[i]:
print(s[r].get(), "s")
r += 1
r=0
for i in selected:
if selected[i]:
cr.execute(f"update user set
{tableAttributes[r]} = ? where accountNo = ?",
(s[r].get(),eAccountNo.get()))
r += 1
db.commit()
msgBox("Account is Updated
successfully",400,1)
home()
bUpdate = Button(fNext, text = "Update",
bg = "blue", fg = "white", width = 12, font = ("times
new roman", 15, "bold"), command = updateCheck)
bUpdate.place(x = 270, y = 400)
lvAccountNo = cr.fetchall()
if lvAccountNo == []:
msgBox("Account No is not exists",400,1)
else:
cr.execute("select * from user where
accountNo = ?", (eFindUser.get(),))
userDetails = cr.fetchall()[0]
listUserDetails.delete(0,"end")
j=0
for i in userDetails:
listUserDetails.insert(j+1,
str(userFields[j]) + " : " + str(i))
j = j+1
eFindUser = Entry(fFindUser, font = ("times
new roman", 20, "bold"), width = 28)
def click(event):
eFindUser.config(state = NORMAL)
eFindUser.delete(0,"end")
def transaction():
'''
eFindUser.place_forget()
bSearch.place_forget()
listUserDetails.place_forget() = fFindUser
fFindUser.place_forget()'''
home()
def getBalance(event):
try:
eBalance.destroy()
except:
print("not bal")
cr.execute("select openingBalance from user
where accountNo = ?", (eAccountNo.get(),))
'''def clear():
gvAccountNo.set("")
gvAmount.set("")'''
def deposit():
cr.execute("select openingBalance from user
where accountNo = ?", (eAccountNo.get(),))
bal = int(cr.fetchall()[0][0])
accountNo = eAccountNo.get()
amount = eAmount.get()
if amount == "" or accountNo == "":
msgBox("Please enter Account No and
amount",460,1)
else:
amount = str(bal+int(amount))
concenmentMsg = Toplevel()
concenmentMsg.title("Warning !!!")
concenmentMsg.config(background="red")
concenmentMsg.geometry("150x120+550+300")
concenmentMsg.minsize(250,120)
concenmentMsg.maxsize(250,120)
lSurity = Label(concenmentMsg, text =
"Are you sure ?",bg = "red", fg = "white", font =
("times new roman", 20, "bold"))
lSurity.pack(pady = 10)
def yes():
concenmentMsg.destroy()
cr.execute("update user set
openingBalance = ? where accountNo = ?",
(amount, accountNo))
db.commit()
msgBox(f"Deposite is successfull",
400,1)
#clear()
def no():
concenmentMsg.destroy()
frame = Frame(concenmentMsg, bg =
"red", width = 300, height = 50)
frame.pack()
bYes = Button(frame, text = "Yes", width
= 5, bg = "cyan", font = ("times new roman", 15,
"bold"), command = yes)
bYes.pack(side = "left", pady = 10,
padx=10, fill = X)
bNo = Button(frame, text = "No", width =
5, bg = "cyan", font = ("times new roman", 15,
"bold"), command = no)
bNo.pack(side = "left",pady = 10,
padx=10, fill = Y)
def withdraw():
cr.execute("select openingBalance from user
where accountNo = ?", (eAccountNo.get(),))
bal = int(cr.fetchall()[0][0])
accountNo = eAccountNo.get()
amount = int(eAmount.get())
if amount == "" or accountNo == "":
msgBox("Please enter Account No and
amount",460,1)
else:
if bal < amount:
msgBox("Account have not enough
amount",400,1)
else:
amount = str(bal-amount)
concenmentMsg = Toplevel()
concenmentMsg.title("Warning !!!")
concenmentMsg.config(background="red")
concenmentMsg.geometry("150x120+550+300")
concenmentMsg.minsize(250,120)
concenmentMsg.maxsize(250,120)
lSurity = Label(concenmentMsg, text =
"Are you sure ?",bg = "red", fg = "white", font =
("times new roman", 20, "bold"))
#msg.place(x = 30, y = 10)
lSurity.pack(pady = 10)
def yes():
concenmentMsg.destroy()
cr.execute("update user set
openingBalance = ? where accountNo = ?", (amount
,accountNo))
db.commit()
msgBox("Withdraw is
successfull",400,1)
#clear()
def no():
concenmentMsg.destroy()
frame = Frame(concenmentMsg, bg =
"red", width = 300, height = 50)
frame.pack()
bYes = Button(frame, text = "Yes",
width = 5, bg = "cyan", font = ("times new roman",
15, "bold"), command = yes)
bYes.pack(side = "left", pady = 10,
padx=10, fill = X)
bNo = Button(frame, text = "No", width
= 5, bg = "cyan", font = ("times new roman", 15,
"bold"), command = no)
bNo.pack(side = "left",pady = 10,
padx=10, fill = Y)
def viewAllUser():
home() #fFindUser.place_forget()
fViewAllUser.place(x = 250, y = 176)
# style treeview
style = ttk.Style()
style.theme_use('clam')
'''
style.configure("t.Treeview", font = ("times
new roman", 50))
style.configure("t.Treeview.Heading", font =
("times new roman", 20, "bold"))'''
tViewAllUser = ttk.Treeview(fViewAllUser,
column = ("Account No", "Name", "Address"), show
= "headings", height = 18)#height means how
many record
vScrollbar = Scrollbar(fViewAllUser)
vScrollbar.pack(side = RIGHT, fill = Y)
tViewAllUser.tag_configure('odd',
background='#E8E8E8')
tViewAllUser.tag_configure('even',
background='#DFDFDF')
for i in allUser:
tViewAllUser.insert("", "end", values = (i[0],
i[1], i[2]))
tViewAllUser.pack()
vScrollbar.config(command =
tViewAllUser.yview)
tViewAllUser.config(yscrollcommand =
vScrollbar.set)
def logOut():
window.destroy()
from HomePage import homePage
homePage() #import Banking Home Page
window = Tk()
window.geometry("1000x650+200+30")
window.config(background = "ivory")# 102762
window.title("Admin")
logo = Image.open("1.png")
rLogo = logo.resize((130,106))
oLogo = ImageTk.PhotoImage(rLogo)
# Home page
hLogo =
ImageTk.PhotoImage(Image.open("1.png").resize((5
00,500)))
window.mainloop()
'''
if __name__ == '__main__':
adminInterface("b")
'''
#-----------------------------------------------------------------------
-----------------------------
def adminLogin():
def logIn():
db = sqlite3.connect("BankDB.db")
cr = db.cursor()
lvAdminId = gvAdminId.get()
lvPassword = gvPassword.get()
cr.execute("select password from admin where
adminId = ? and password = ?",
(lvAdminId,lvPassword))
password = str(cr.fetchall())
if password[3:-4] == lvPassword and lvAdminId
!= "" and lvPassword != "":
window.destroy()
db.close()
from AdminInterface import adminInterface
adminInterface(lvAdminId) #change the
place of image at going > adminInterface > logout
> homepage
else:
from MsgBox import msgBox
msgBox("Invalid Admin Id or
Password",450,1)
def newAcc():
from AdminRegistration import
adminRegistration
adminRegistration()
window = Tk()
window.title("Admin Login")
window.geometry("540x450+400+125")
window.maxsize(540,450)
window.minsize(540,450)
window.mainloop()
#adminLogin()
#-----------------------------------------------------------------------
--------------------------------
def adminRegistration():
window = Tk()
window.geometry("1300x600+30+35")
window.title("Admin Registration")
#All Labels
eConfromPassword = Entry(fWindow, bg =
"ivory", border = 3, font = ("times new roman", 17,
"bold"))
eConfromPassword.place(x = 970, y = 432)
'''
user(name text, address text, city text, state text,
zip text, country text,
dob text pan text, aadhar text, email text,
mobile text, account text, branch text, balance
text,
window.destroy()
db.commit()
db.close()
else:
from MsgBox import msgBox
msgBox("New Password and Confrom
Password must be same",650,1)
#-----------------------------------------------------------------------
--------------------------------
import sqlite3
from turtle import home
from MsgBox import msgBox
from tkinter import *
from HomePage import homePage
db = sqlite3.connect("BankDb.db")
cr = db.cursor()
eConfromPassword = Entry(fCreatePassword,
font = ("times new roman", 20))
eConfromPassword.place(x = 245, y = 220)
def create():
newPass = eNewPassword.get()
conPass = eConfromPassword.get()
id = eid.get()
if id != "":
if newPass != "" and conPass != "":
if newPass == conPass:
upper = any(i.isupper() for i in
newPass)
lower = any(i.islower() for i in
newPass)
numeric = any(i.isnumeric() for i in
newPass)
if newPass.isalnum() == False and
upper and lower and numeric and len(newPass) >=
6:
if candidate == "User Id":
cr.execute("select accountNo
from user where userId = ?",(id,))
if cr.fetchall() == []:
cr.execute("update user set
userId = ? where accountNo = ?",(id,uniqueId))
cr.execute("update user set
password = ? where accountNo = ?",
(newPass,uniqueId))
db.commit()
t.destroy()
msgBox('''Your Id and
Password is
created successfully now you
can login using your id and
password''',400,1,200)
homePage()
else:
msgBox("User Id is
exist",300,1)
'''elif candidate == "Admin Id":
cr.execute("select adminId from
admin where adminId = ?",(id,))
if cr.fetchall() == []:
pass
else:
msgBox("Admin Id is
exist",300,1)'''
else:
msgBox("Weak password",300,1)
else:
msgBox('''New Password and
Confrom
Password must be same''',400,1,150)
else:
msgBox('''New password or Confrom
Password can not be Blank''',400,1,150)
else:
msgBox("User Id can not be blank",350,1)
t.mainloop()
#-----------------------------------------------------------------------
--------------------------------
from tkinter import *
import sqlite3
db = sqlite3.connect("BankDB.db")
cr = db.cursor()
try:
cr.execute("create table user(name text,
guardianName text, relationWithGuardian text, dob
text, gender text,maritalStatus text, caste text,
religion text, address text, city text, state text, pin
text, country text,annualIncome text, occupation
text, branchName text,openingBalance text,
accountNo text primary key, accountType
text,customerId text, mobileNo text, emailId text,
panNo text, aadharNo text, userId text, password
text)")
except:
pass
try:
cr.execute("create table admin(name text, dob
text, gender text, caste text, religion text, address
text, city text, state text, pin text, country text,
branchName text, mobileNo text, emailId text,
panNo text, aadharNo text, adminId text primary
key, password text)")
except:
pass
db.commit()
'''
def submit():
lvAdminId = gvAdminId.get()
lvPassword = gvPassword.get()
lvConfrom = gvConfrom.get()
if lvPassword == lvConfrom:
cr.execute("insert into admin(adminId,
password) values (?,?)", (lvAdminId, lvPassword))
db.commit()
window.destroy()
else:
print("Password and confrom password must
be same")
print(lvPassword, "and", lvConfrom, "is not
same")
'''
window = Tk()
window.title("DataBase Design")
window.geometry("640x330+400+125")
window.config(background = "ivory")
'''
fWindow = Frame (window, background = "ivory",
width = 640, height = 330)
fWindow.place(x = 0, y = 0)
gvAdminId = StringVar()
gvPassword = StringVar()
gvConfrom = StringVar()
window.mainloop()
#-----------------------------------------------------------------------
--------------------------------
from re import A
from tkinter import *
def no():
global concenment
msgBox.destroy()
concenment = False
def yes():
global concenment
msgBox.destroy()
concenment = True
if noArg == 1:
ok = Button(msgBox, text = "OK", width = 5,
bg = "cyan", fg = "black", font = ("times new
roman", 15, "bold"), command = lambda :
msgBox.destroy())
ok.pack()
else:
frame = Frame(msgBox, bg = "red", width =
300, height = 50)
frame.pack()
bYes = Button(frame, text = "Yes", width = 5,
bg = "cyan", font = ("times new roman", 15, "bold"),
command = yes)
bYes.pack(side = "left", pady = 10, padx=10,
fill = X)
bNo = Button(frame, text = "No", width = 5, bg
= "cyan", font = ("times new roman", 15, "bold"),
command = no)
bNo.pack(side = "left",pady = 10, padx=10, fill
= Y)
msgBox.mainloop()
try:
return concenment
except:
pass
#-----------------------------------------------------------------------
--------------------------------
import sqlite3
from tkinter import *
from MsgBox import msgBox
from Otp import otp
from tkcalendar import DateEntry
def newUser():
db = sqlite3.connect("BankDB.db")
cr = db.cursor()
window = Tk()
window.title("New User")
window.geometry("560x470+390+125")
window.minsize(560,470)
window.maxsize(560,470)
def next():
cr.execute("select name, accountNo, dob,
emailId, mobileNo from user where accountNo = ?",
(eAccountNo.get(),))
userData = cr.fetchall()
window.destroy()
otp(userData[0][3], userData[0][1])
else:
msgBox("Incorrect User's Details", 400,
1)
else:
msgBox("Invalid Account NO", 300, 1)
window.mainloop()
#newUser()
#-----------------------------------------------------------------------
--------------------------------
from tkinter import *
import random
import smtplib
from MsgBox import msgBox
from CreatePassword import createPassword
otpWindow = Tk()
otpWindow.geometry("450x450+390+125")
otpWindow.minsize(450,450)
otpWindow.maxsize(450,450)
otpWindow.title("OTP")
otpWindow.config(background="beige")
def sendOtp():
try:
global otp
otp = "".join([str(random.randint(0,9)) for i
in range(8)])
server =
smtplib.SMTP("smtp.gmail.com",587)
server.starttls()
server.login("[email protected]",
"pverdkqiumtyiwhb")
subject = "OTP"
body = "Welcome to SR Bank \nYour OTP for
is "+str(otp)
msg = "Subject: {}\n\n{}".format(subject,
body)
server.sendmail("[email protected]",
emailId, msg)
except:
msgBox("Check your internet connection",
400, 1)
def submit():
global authorize
global tried
if otp == eOtp.get():
otpWindow.destroy()
createPassword(accountNo, "User Id")
else:
try:
tried += 1
except:
tried = 1
if tried == 3:
otpWindow.destroy()
msgBox("You are not eligible",350,1)
if tried != 3:
msgBox("Invalid OTP", 300, 1)
otpWindow.mainloop()
#otp("[email protected]")
#-----------------------------------------------------------------------
--------------------------------
def userInterface(accountNo):
db = sqlite3.connect("BankDB.db")
cr = db.cursor()
#Fetching data from database
cr.execute("select name, address, city, state, pin,
country,dob, panNo, aadharNo, emailId, mobileNo,
accountNo, branchName, openingBalance from user
where accountNo = ?",(accountNo,))
'''
1. cr returns that is [('name', 'branch',
'balance')]
2. store it in crReturn = cr.fetchall()
3. data = crReturn[0] that is ('name', 'branch',
'balance')
4. data[0] that is name
'''
crReturn = cr.fetchall()
data = crReturn[0]
def profile():
fSummery.place_forget()
fProfile.place(x = 250, y = 151)
def nextProfile():
fProfile.place_forget()
sProfile.place(x = 250, y = 151)
def previousProfile():
sProfile.place_forget()
fProfile.place(x = 250, y = 151)
def logOut():
window.destroy()
from HomePage import homePage
homePage()
'''
from MsgBox import msgBox
sure = msgBox("Are you sure to logout",400,2)
if sure == True:
window.destroy()
from HomePage import homePage
homePage()'''
window = Tk()
window.geometry("1000x652+200+30")
window.maxsize(1000,652)
window.minsize(1000,652)
window.title("User Interface")
fWindow = Frame(window, width = 1000, height
= 650, bg = "ivory")
fWindow.pack()
#insert image
img = Image.open("1.png")
rImg = img.resize((130,106))
logoImg = ImageTk.PhotoImage(rImg)
logo = Label(fTop, image = logoImg, bg = "blue")
logo.place(x = 0, y = 0)
lBankName = Label(fTop,text = "SR Bank",fg =
"white", bg = "blue", font = ("times new roman", 40,
"bold"))
lBankName.place(x = 135, y = 18)
# Home page
hLogo =
ImageTk.PhotoImage(Image.open("1.png").resize((5
00,500)))
# welcome user
fWelcome = Frame(fTop, height = 100, width =
350, bg = "blue")
fWelcome.place(x = 650, y = 0)
lWelcome = Label(fWelcome, text = "Welcome",
bg = "blue", fg = "white", font = ("times new
roman", 20, "bold"))
lWelcome.place(relx=.5, rely=.3,anchor=
CENTER)
lUserName = Label(fWelcome, text = data[0], bg
= "blue", fg = "white", font = ("times new roman",
20, "bold"))
lUserName.place(relx = .5, rely = .7, anchor =
CENTER)
window.mainloop()
#userInterface(1)
#-----------------------------------------------------------------------
--------------------------------
import sqlite3
from tkinter import *
from MsgBox import msgBox
from UserInterface import userInterface
from Otp import otp
from NewUser import newUser
def userLogin():
db = sqlite3.connect("BankDB.db")
cr = db.cursor()
def submit():
cr.execute("select accountNo from user where
userId = ? and password = ?",(eUserId.get(),
ePassword.get()))
def newAcc():
window.destroy()
newUser()
def forgetPassword():
window.destroy()
newUser()
window = Tk()
window.title("User Login")
window.geometry("540x450+400+125")
window.maxsize(540, 450)
window.minsize(540, 450)
window.mainloop()
#userLogin()
#-----------------------------------------------------------------------
--------------------------------
from msilib.schema import ComboBox
from tkinter import *
from tkinter import ttk
from tkcalendar import DateEntry
import sqlite3
from MsgBox import msgBox
def userRegistration():
# create list for add in Dob value
dd = [str(i) for i in range(1,32)]
mm = [str(i) for i in range(1,13)]
yy = [str(i) for i in range(2022,1900,-1)]
db = sqlite3.connect("BankDb.db")
cr = db.cursor()
window = Tk()
window.geometry("1300x680+30+5")
window.title("Open New User's Account")
#All Labels
eRelationWithGuardian =
ttk.Combobox(fWindow, width = 17, values =
["Father", "Mother", "Uncle", "Aunt", "Brother"], font
= ("times new roman", 17, "bold"))
eRelationWithGuardian.place(x = 350, y =
168)
eDob = DateEntry(fWindow, width=19, font =
("times new roman", 17))
eDob.place(x = 350, y = 212)
def submit():
if eName.get() == "" or
eGuardianName.get() == "" or
eRelationWithGuardian.get() == "" or eDob.get()
== "" or eGender.get() == "" or
eMaritalStatus.get() == "" or eCaste.get() == "" or
eReligion.get() == "" or eAddress.get() == "" or
eCity.get() == "" or eState.get() == "" or
ePin.get() == "" or eCountry.get() == "" or
eAnnualIncome.get() == "" or eOccupation.get()
== "" or eBranchName.get() == "" or
eOpeningBalance.get() == "" or eAccountNo.get()
== "" or eAccountType.get() == "" or
eCustomerId.get() == "" or eMobileNo.get() == ""
or eEmailId.get() == "" or ePanNo.get() == "":
msgBox("Fill all the entries",300,1)
else:
cr.execute("select accountNo from user
where accountNo = ?", (eAccountNo.get(),))
acc = str(cr.fetchall())
print(acc[3:-4])
if acc[3:-4] == eAccountNo.get():
#userRegistration()
-----------------------------------------------
XXX--------------------------------------------------
Thank You