Professional Documents
Culture Documents
Mini Project
Mini Project
VELLORE-02
Submitted by
DHANVANDHINI S
GAYATHRI R
KOMATHI R
RAMYA M
ROSHINI G
IN
i
THANTHAI PERIYAR GOVERNMENT INSTITUTE OF TECHNOLOGY
VELLORE-02
BONAFIDE CERTIFICATE
Guided by,
ii
ACKNOWLEDGEMENT
The satisfaction that accompanies that the successful completion of any task would be
incomplete without the mention of people whose ceaseless cooperation made it possible,
whose constant guidance and encouragement crown all efforts with success.
We give all honour and praise to GOD ALMIGHTY who gave as wisdom and guided us
during the entire course of our project.
We also express our gratitude and thanks all other faculty members of the Department
of Computer Science and Engineering, Thanthai Periyar Government Institute of
Technology, Vellore, for their quick help and expert opinions for completing this project.
DHANVANDHINI S [513120104301]
GAYATHRI R [513120104303]
KOMATHI R [513120104306]
RAMYA M [513120104310]
ROSHINI G [513120104703]
iii
TABLE OF CONTENTS
ABSTRACT 1
1 INTRODUCTION 2
2 METHODOLOGY 3
3 BACKGROUND 6
4 SYSTEM ANALYSIS 7
4.1USER REQUIREMENTS
6.1UML DIAGRAMS
7 CODING 13
8 OUTPUT SCREENSHOT 55
iv
ABSTRACT
The Student Management System Using Python Programming aims at maintaining the
several documents of the students studying in an institution. The various details of the students
relating to their personal information, tuition fees, library related information and information
regarding their semester marks, are efficiently stored, organized and accessed through the
respective Databases, thereby reducing the chances of discrepancies in the stored data. The
project is implemented through Python Programming, by writing the source code in a Code
Editor such as Visual Studio Code and the code gets automatically executed in a Runtime
Environment.
KEY WORDS: Student Management System, Python Programming, Visual Studio Code.
1
CHAPTER 1
INTRODUCTION
The Student Management System leads to the solution to digitize the day-to-day
operations of school, colleges and universities. This tool helps to gather college operations data
and to analyze them. In this project, the data entered by the user are getting instantly stored in the
database thus helping to ease out the cumbersome job of keeping track of the documents of the
students. This system will help in maintaining the record of each student in respective
department such as student profile, fee receipt, library management and marksheet data.
2
CHAPTER 2
METHODOLOGY
The functioning of the project takes place by following the procedure given bellow.
Once the student Menu file is clicked, there appears a Menu containing 4 switches along
with their respective functionality. When the “View” button of STUDENT PROFILE is clicked,
it redirects to the Student Information Window. In that window there are mainly two tabs, one is
STUDENT INFORMATION and the other is STUDENT DATABASE. There are 6 switches
along with their respective functions. The 6 switches are – SAVE, DISPLAY, RESET,
UPDATE, DELETE and EXIT. In STUDENT INFORMATION tab there are 8 fields – Name,
Father’s Name, Mother’s Name, Address, Mobile Number, Email Address, Date of Birth and
Gender. This is like a form. Here, the user enters the values for the respective fields. After
entering all the field values one has to click “SAVE”, then all of these records will get stored in a
database. Now, if one wants to see the details of the students which are entered through
STUDENT INFORMATION form, “DISPLAY” switch needed to be clicked and the details will
be displayed in the STUDENT DATABASE tab. If any of the student details needs to be
modified, then it can be done with the help of the “UPDATE” switch. After entering the
modified values on pressing the “UPDATE” switch, the updated values will get stored in the
database and will get displayed on clicking the “DISPLAY” switch. The “RESET” switch is like
an eraser, which helps to rectify any details which have been entered wrongly. The “DELETE”
switch is used to delete the record of any student, which are no longer in use or have been
wrongly entered in the database and lastly the “EXIT" switch is used to close the Student
Information window.
When the “View” button of FEE REPORT, on the Menu, is clicked, it redirects to the
FEE REPORT Window. In that window there are mainly two tabs, one is INFORMATION and
the other is FEE RECEIPT. There are 6 switches along with their respective functions. The 7
switches are – SAVE, DISPLAY, RESET, UPDATE, DELETE, RECEIPT and EXIT. In
INFORMATION tab there are 9 fields – Receipt Number, Student’s Name, Admission Number,
Date, Branch, Semester, Total Amount, Paid Amount and Balance. This is like a form. The
RECEIPT tab is for displaying the Fee Receipt. Here, the user performs various operations in the
form by using the respective switches. On clicking the “DISPLAY” switch, the details of the
3
Fees get displayed and on clicking the “RECEIPT” button, the Fee Receipt of a particular student
gets displayed. The other switches such as SAVE, DISPLAY, RESET, UPDATE, DELETE and
EXIT perform their usual tasks.
When the “View” button of LIBRARY SYSTEM is clicked, it redirects to the Library
Management System Window. In that window there are mainly two tabs, one is LIBRARY
MEMBERSHIP INFO and the other is BOOK DETAILS. There are 6 switches along with their
respective functions. The 6 switches are – SAVE, DISPLAY, RESET, UPDATE, DELETE and
EXIT. In LIBRARY MEMBERSHIP INFORMATION tab there are 7 fields – Member type,
Reference No., First Name, Last Name, Address, Post Code, Mobile No., Book Id, Book Title,
Author, Date Borrowed, Date Due and Days in Loan This is like a form. In BOOK DETAILS
tab, there are 15 books and the books should be select from the book list. Here, the user enters
the values for the respective fields. After entering all the field values one has to click “SAVE”
and then all of these records will get stored in a database. Now, if one wants to see the details of
the student’s borrowed book which are entered through LIBRARY MEMBERSHIP INFO form,
“DISPLAY” switch needed to be clicked and the details will be displayed in the SCHOOL,
COLLEGE LIBRARY DATABASE tab. If any of the student’s library related details needs to
be modified, then it can be done with the help of the “UPDATE” switch. After entering the
modified values on pressing the “UPDATE” switch, the updated values will get stored in the
database and will get displayed on clicking the “DISPLAY” switch. The “RESET” switch is like
an eraser, which helps to rectify any details which have been entered wrongly. The “DELETE”
switch is used to delete the record of any student’s library related details, which are no longer in
use or have been wrongly entered in the database and lastly the “EXIT" switch is used to close
the Student Information window.
When the “View” button of MARKSHEET is clicked, it redirects to the Search page. On
that page there are two features available one is "SEARCH" another one is "CREATE NEW". If
any data is already been stored then, by clicking on "SEARCH" switch the user can get those
record and if the user wants to enter new data then, one has to click "CREATE NEW". When the
“CREATE NEW” switch is clicked, it redirects to the Student Details window. In Student
Details window there are mainly two tabs, one is STUDENT DETAILS and the other is
GRADES POINT OBTAINED. There are 5 switches along with their respective functions. The 5
switches are – COMPUTE, SAVE, RESET, UPDATE and EXIT. In STUDENT DETAILS tab
4
there are 8 fields – Name, Father’s Name, Mother’s Name, School Name, Roll No , Email
Address, Date of Birth and Gender. This is like a form. In GRADE POINT OBTAINED tab, the
marks obtained by the student in the mentioned subjects are entered. The passing marks and total
marks are set by default. Here, the user enters the values for the respective fields. After entering
all the field values one has to click “COMPUTE” and the grand total, percentage and CGPA are
calculated automatically. Then, the status of the results are shown i.e. whether the student is pass
or fail and all of these records will get stored in a database, for that one has to click "SAVE". If
any of the student details needs to be modified, then it can be done with the help of the
“UPDATE” switch. After entering the modified values on pressing the “UPDATE” switch, the
updated values will get stored in the database. The “RESET” switch is like an eraser, which
helps to rectify any details which have been entered wrongly and lastly “EXIT" switch is used to
close the Student Information window.
5
CHAPTER 3
BACKGROUND
Today in student details are entered manually. The student details in separate records are
tedious task. Referring to all these records and updating is needed. There is a chance for more
manual errors.
3.1 PROBLEMS IN EXISTING SYSTEM:
The development of the new system contains the following activities, which try to automate the
entire process keeping in view of the database integration approach.
The system makes the overall project management much easier and flexible.
Various classes have been used to provide file upload and mail features.
There is no risk of data mismanagement at any level while the project development is
under process.
It provides high level of security using different protocols like https etc.
6
CHAPTER 4
SYSTEM ANALYSIS
The following requirements are raised during the analysis of the needs of the users:
A Person Should be able to login to the system through the first page of the Application.
The Administrator can create users as per user requirement.
Admin can upload the data for a particular Student. On successful completion of upload,
user (Student/Parent/Faculty) can view reports.
A general user will have access to see the status of particular Student id number.
Student (user) can use all the facilities, same as which are provided to him in the college.
Student can see attendance, notices, grades, report and other facilities in updated manner.
There will be a separate page for every student as his account in which he can get notices,
attendance, grades, assignments etc.
Parent can just view the record of student with the username and password provided.
Faculty can give the attendances and notices for the students.
The administrator verifies all these reports and generates them for users to view them.
After analyzing the requirements of the task to be performed, the next step is to analyze the
problem and understand its context. The first activity in the phase is studying the existing system
and other is to understand the requirements and domain of the new system. Both the activities are
equally important, but the first activity serves as a basis of giving the functional specifications
and then successful design of the proposed system. Understanding the properties and
requirements of a new system is more difficult and
7
CHAPTER 5
Disc Space : 40 GB
PC Used : IBM Compatible
Processor : Pentium 3
Memory : 512 MB RAM
File System : 32 Bit
SOFTWARE SPECIFICATION:
8
CHAPTER 6
UML provides use case diagram notation to illustrate the names of use case and author
relationship between them. Here the actors involved in this system are customer, supplier etc.
UML provides use case diagram notation to illustrate the names of use case and author
relationship between them. Use case diagram and case relationship are secondary in use case
work use case text document.
A class diagram in the unified modeling language (UML) is a type of static structure
diagram that describes the structure of a system by showing the system’s classes, their attributes,
and the relationships between the classes. It is represented using a rectangle with three
9
compartments. Top compartment have the class name, middle compartment the attributes and the
bottom compartment with operations.
SEQUENECE DIAGRAM
A sequence diagram in Unified Modeling Language (UML) is a kind of interaction
diagram that shows how processes operate with one another and in what order. It is a construct of
a Message Sequence Chart. There are two dimensions.
10
COLLABORATION DIAGRAM
ACTIVITY DIAGRAM
Activity diagrams are graphical representations of workflows of stepwise activities and actions
with support for choice, iteration and concurrency. In the Unified Modelling Language, activity
diagrams can be used to describe the business and operational step-by-step workflows of
components in a system. An activity diagram shows the overall flow of control.
11
DEPLOYMENT DIAGRAM
COMPONENT DIAGRAM
The component diagram’s main purpose is to show the structural relationship between
the components of a system. It is represented by a boxed figure. Dependencies are represented by
a communication association.
12
CHAPTER 7
CODING
13
import random
Label_2.grid(row = 0, column = 0, padx = import Marksheet_Backend
100, pady = 5) import tkinter.messagebox
Label_3 = Label(Frame_3, text = from tkinter import ttk
'LIBRARY SYSTEM', font = ('arial',25,'bold'), def marksheet():
bg = 'navajo white') root = Tk()
Label_3.grid(row = 0, column = 0, padx = root.title('Marksheet')
60, pady = 5) root.geometry('1350x750')
Label_4 = Label(Frame_4, text = root.config(bg = 'Navajo white')
'MARKSHEET', font = ('arial',25,'bold'), bg = #==========Variables==
'navajo white') name = StringVar()
Label_4.grid(row = 0, column = 0, padx = roll = StringVar()
101, pady = 5) fname = StringVar()
=======BUTTONS=== mname = StringVar()
Button_1 = Button(Frame_1, text = 'VIEW', DOB = StringVar()
font = ('arial',16,'bold'), width = 8, command = gender = StringVar()
__information__) scl = StringVar()
Button_1.grid(row = 0, column = 3, padx = 50) email = StringVar()
Button_2 = Button(Frame_2, text = 'VIEW', m1 = DoubleVar()
font = ('arial',16,'bold'), width = 8, command = m2 = DoubleVar()
__FeeReport__) m3 = DoubleVar()
Button_2.grid(row = 0, column = 3, padx = 50) m4 = DoubleVar()
Button_3 = Button(Frame_3, text = 'VIEW', m5 = DoubleVar()
font = ('arial',16,'bold'), width = 8, command = gt = DoubleVar()
__Library__) per = DoubleVar()
Button_3.grid(row = 0, column = 3, padx = 50) cgpa = DoubleVar()
Button_4 = Button(Frame_4, text = 'VIEW', grade = StringVar()
font = ('arial',16,'bold'), width = 8, command = div = StringVar()
__marksheet__) result = StringVar()
Button_4.grid(row = 0, column = 3, padx = 50) ====================Functions=======
root.mainloop() def Add():
if __name__ == '__main__': if (len(roll.get()) != 0):
menu() Marksheet_Backend.insert(name.get(),roll.get(),
from tkinter import * fname.get(),mname.get(),DOB.get(),gender.get()
14
scl.get(),email.get(),m1.get(),m2.get(),m3.get(), if x4 > 100:
m4.get(),m5.get(), \ tkinter.messagebox.askokcancel('Attention','Plea
gt.get(),per.get(),cgpa.get(),grade.get(),div.get(), se enter Correct Marks')
result.get()) return
def Update(): ifx5>100:
if (len(roll.get()) != 0): tkinter.messagebox.askokcancel('Attention','Plea
Marksheet_Backend.update(name.get(),roll.get() se enter Correct Marks')
,fname.get(),mname.get(),DOB.get(),gender.get( return
), \ tot = x1+x2+x3+x4+x5
scl.get(),email.get(),m1.get(),m2.get(),m3.get(), gt.set(tot)
m4.get(),m5.get(), \ Per = ((x1+x2+x3+x4+x5) * 100)/500
gt.get(),per.get(),cgpa.get(),grade.get(),div.get(), per.set(Per)
result.get() cg = (((x1+x2+x3+x4+x5) * 100)/500) / 9.5
def Exit() cgpa.set(round(cg,1))
Exit=tkinter.messagebox.askyesno('Marksheet',' if cg > 10:
Confirm if you want to Exit') cgpa.set(10)
if Exit > 0: if (((x1+x2+x3+x4+x5) * 100)/500) <= 40:
root.destroy() grd = 'G'
return elif (((x1+x2+x3+x4+x5) * 100)/500) <= 50:
def Compute(): grd = 'F'
x1 = (m1.get()); x2 = (m2.get()); elif (((x1+x2+x3+x4+x5) * 100)/500) <= 60:
x3 = (m3.get()); x4 = (m4.get()); x5 = grd = 'E'
(m5.get()) elif (((x1+x2+x3+x4+x5) * 100)/500) <= 70:
ifx1>100: grd = 'D'
tkinter.messagebox.askokcancel('Attention','Plea elif (((x1+x2+x3+x4+x5) * 100)/500) <= 80:
se enter Correct Marks') return grd = 'C'
ifx2>100: elif (((x1+x2+x3+x4+x5) * 100)/500) <= 90:
tkinter.messagebox.askokcancel('Attention','Plea grd = 'B'
se enter Correct Marks') else:
return grd = 'A'
ifx3>100: grade.set(grd)
tkinter.messagebox.askokcancel('Attention','Plea count = 0
se enter Correct Marks') if x1 < 33:
return count = count + 1
15
if x2 < 33: gt.set(' ')
count = count + 1 per.set(' ')
if x3 < 33: cgpa.set(' ')
count = count + 1 grade.set(' ')
if x4 < 33: div.set(' ')
count = count + 1 result.set(' ')
if x5 < 33: #================Frame_1==========
count = count + 1 Frame_1 = LabelFrame(root, width =
if (count == 0): 1200, height = 400, font = ('arial',20,'bold'), bg =
result.set('PASS') 'Navajo white', bd = 10,
elif (count == 1 or count == 2 ): text = 'Student Details', relief = 'ridge')
result.set('SUPPLY') Frame_1.grid(row = 1, column = 0, pady =
else: 20, padx = 20)
result.set('FAIL') #======Labels and Entries for Frame_1=====
if Per <= 45 and result != "FAIL": Label_Name = Label(Frame_1, text =
div.set('THIRD') 'Name', font = ('arial',15,'bold'), bg = 'Navajo
elif Per <= 60 and result != "FAIL": white')
div.set('SECOND') Label_Name.grid(row = 0, column = 0,
elif Per <= 100: padx = 80)
div.set('FIRST') Entry_Name = Entry(Frame_1, font =
def Reset(): ('arial',15), width = 25, textvariable = name)
name.set(' ') Entry_Name.grid(row = 0, column = 1,
roll.set(' ') padx = 5, pady = 5)
fname.set(' ') Label_Roll_no = Label(Frame_1, text =
mname.set(' ') 'Roll Number', font = ('arial',15,'bold'), bg =
DOB.set(' ') 'Navajo white')
gender.set(' ') Label_Roll_no.grid(row = 0, column = 3,
scl.set(' ') padx = 80)
email.set(' ') Entry_Roll_no = Entry(Frame_1, font =
m1.set(' ') ('arial',15), width = 25, textvariable = roll)
m2.set(' ') Entry_Roll_no.grid(row = 0, column = 4,
m3.set(' ') padx = 40)
m4.set(' ')
m5.set(' ')
16
Label_Father_Name = Label(Frame_1, text Entry_Gender = ttk.Combobox(Frame_1,
= 'Father Name', font = ('arial',15,'bold'), bg = values = (' ','Male','Female','Others'), font =
'Navajo white') ('arial',15), width = 23, textvariable = gender)
Label_Father_Name.grid(row = 1, column = Entry_Gender.grid(row = 2, column = 4,
0, padx = 80) padx = 5, pady = 5)
Entry_Father_Name = Entry(Frame_1, font Label_School = Label(Frame_1, text =
= ('arial',15), width = 25, textvariable = fname) 'School Name', font = ('arial',15,'bold'), bg =
Entry_Father_Name.grid(row = 1, column = 'Navajo white')
1, padx = 5, pady = 10) Label_School.grid(row = 3, column = 0,
Label_Mother_Name = Label(Frame_1, text padx = 80)
= 'Mother Name', font = ('arial',15,'bold'), bg = Entry_School = Entry(Frame_1, font =
'Navajo white') ('arial',15), width = 25, textvariable = scl)
Label_Mother_Name.grid(row = 1, column Entry_School.grid(row = 3, column = 1,
= 3, padx = 80) padx = 5, pady = 5)
Entry_Mother_Name = Entry(Frame_1, font Label_Email = Label(Frame_1, text =
= ('arial',15), width = 25, textvariable = mname) 'Email ID', font = ('arial',15,'bold'), bg = 'Navajo
Entry_Mother_Name.grid(row = 1, column white')
= 4, padx = 5) Label_Email.grid(row = 3, column = 3,
Label_DOB = Label(Frame_1, text = 'Date padx = 80)
of Birth', font = ('arial',15,'bold'), bg = 'Navajo Entry_Email = Entry(Frame_1, font =
white') ('arial',15), width = 25, textvariable = email)
Label_DOB.grid(row = 2, column = 0, padx Entry_Email.grid(row = 3, column = 4, padx =
= 80) 5, pady = 5)
Entry_DOB = Entry(Frame_1, font = #================Frame_2==========
('arial',15), width = 25, textvariable = DOB) Frame_2 = LabelFrame(root, width = 1200,
Entry_DOB.grid(row = 2, column = 1, padx height = 400, font = ('arial',20,'bold'), bg =
= 5, pady = 5) 'Navajo white', bd = 10 \
Label_Gender = Label(Frame_1, text = , text = 'Grades Point
'Gender', font = ('arial',15,'bold'), bg = 'Navajo Obtained', relief = 'ridge')
white') Frame_2.grid(row = 3, column = 0)
Label_Gender.grid(row = 2, column = 3, #========Labels of Frame_2===========
padx = 80) Label_Subject = Label(Frame_2, text =
'SUBJECT', font = ('arial',16,'bold'), bg =
'Navajo white')
17
Label_Subject.grid(row = 3, column = 0, Label_5 = Label(Frame_2, text =
padx = 50, pady = 10) 'ENGLISH', font = ('arial',14), bg = 'Navajo
Label_obt_Marks = Label(Frame_2, text = white')
'MARKS OBTAINED', font = ('arial',16,'bold'), Label_5.grid(row = 8, column = 0)
bg = 'Navajo white') Label_6 = Label(Frame_2, text = 'GRAND
Label_obt_Marks.grid(row = 3, column = 1, TOTAL', font = ('arial',16), bg = 'Navajo white')
padx = 20) Label_6.grid(row = 9, column = 0)
Label_Subject = Label(Frame_2, text = Label_7 = Label(Frame_2, text =
'PASSING MARKS', font = ('arial',16,'bold'), bg 'PERCENTAGE', font = ('arial',16,'bold'), bg =
= 'Navajo white') 'Navajo white')
Label_Subject.grid(row = 3, column = 2, Label_7.grid(row = 10, column = 0)
padx = 20) Label_8 = Label(Frame_2, text = 'CGPA',
Label_obt_Marks = Label(Frame_2, text = font = ('arial',16,'bold'), bg = 'Navajo white')
'TOTAL MARKS', font = ('arial',16,'bold'), bg = Label_8.grid(row = 10, column = 2)
'Navajo white') Label_9 = Label(Frame_2, text = 'GRADE',
Label_obt_Marks.grid(row = 3, column = 3, font = ('arial',16,'bold'), bg = 'Navajo white')
padx = 20) Label_9.grid(row = 10, column = 4)
Label_1 = Label(Frame_2, text = Label_10 = Label(Frame_2, text =
'MATHEMATICS', font = ('arial',14), bg = 'DIVISION', font = ('arial',16,'bold'), bg =
'Navajo white') 'Navajo white')
Label_1.grid(row = 4, column = 0) Label_10.grid(row = 11, column = 0)
Label_2 = Label(Frame_2, text = Label_10 = Label(Frame_2, text =
'PHYSICS', font = ('arial',14), bg = 'Navajo 'RESULT', font = ('arial',16,'bold'), bg = 'Navajo
white') white')
Label_2.grid(row = 5, column = 0) Label_10.grid(row = 11, column = 2
Label_3 = Label(Frame_2, text = #=========Entries of Frame_2=========
'CHEMISTRY', font = ('arial',14), bg = 'Navajo var_1 = StringVar(Frame_2, value = '33')
white') var_2 = StringVar(Frame_2, value = '100')
Label_3.grid(row = 6, column = 0) var_3 = StringVar(Frame_2, value = '500')
Label_4 = Label(Frame_2, text = 'HINDI', Entry__1 = Entry(Frame_2, font =
font = ('arial',14), bg = 'Navajo white') ('arial',16), width = 5, textvariable = m1)
Label_4.grid(row = 7, column = 0) Entry__1.grid(row = 4, column = 1)
Entry__2 = Entry(Frame_2, font =
('arial',16), width = 5, textvariable = m2)
18
Entry__2.grid(row = 5, column = 1) Entry__11 = Entry(Frame_2, font =
Entry__3 = Entry(Frame_2, font = ('arial',14,'bold'), width = 7, textvariable = result,
('arial',16), width = 5, textvariable = m3) state = 'readonly')
Entry__3.grid(row = 6, column = 1) Entry__11.grid(row = 11, column = 3, padx
Entry__4 = Entry(Frame_2, font = = 20, pady = 8)
('arial',16), width = 5, textvariable = m4) Entry_1_2 = Entry(Frame_2, textvariable =
Entry__4.grid(row = 7, column = 1) var_1, font = ('arial',16), width = 5, state =
Entry__5 = Entry(Frame_2, font = 'readonly')
('arial',16), width = 5, textvariable = m5) Entry_1_2.grid(row = 4, column = 2, pady = 5)
Entry__5.grid(row = 8, column = 1) Entry_1_3 = Entry(Frame_2, textvariable =
Entry__6 = Entry(Frame_2, font = var_2, font = ('arial',16), width = 5, state =
('arial',14), width = 5, textvariable = gt, state = 'readonly')
'readonly') Entry_1_3.grid(row = 4, column = 3)
Entry__6.grid(row = 9, column = 1, pady = 8) Entry_2_2 = Entry(Frame_2, textvariable =
Entry__7 = Entry(Frame_2, font = var_1, font = ('arial',16), width = 5, state =
('arial',14,'bold'), width = 5, textvariable = per, 'readonly')
state = 'readonly') Entry_2_2.grid(row = 5, column = 2, pady = 5)
Entry__7.grid(row = 10, column = 1, pady = 8) Entry_2_3 = Entry(Frame_2, textvariable =
Entry__8 = Entry(Frame_2, font = var_2, font = ('arial',16), width = 5, state =
('arial',14,'bold'), width = 5, textvariable = cgpa, 'readonly')
state = 'readonly') Entry_2_3.grid(row = 5, column = 3)
Entry__8.grid(row = 10, column = 3, pady = 8) Entry_3_2 = Entry(Frame_2, textvariable =
Entry__9 = Entry(Frame_2, font = var_1, font = ('arial',16), width = 5, state =
('arial',14,'bold'), width = 5, textvariable = grade, 'readonly')
state = 'readonly') Entry_3_2.grid(row = 6, column = 2, pady = 5)
Entry__9.grid(row = 10, column = 5, padx = Entry_3_3 = Entry(Frame_2, textvariable =
20, pady = 8) var_2, font = ('arial',16), width = 5, state =
Entry__10 = Entry(Frame_2, font = 'readonly')
('arial',14,'bold'), width = 8, textvariable = div, Entry_3_3.grid(row = 6, column = 3)
state = 'readonly') Entry_4_2 = Entry(Frame_2, textvariable =
Entry__10.grid(row = 11, column = 1, padx var_1, font = ('arial',16), width = 5, state =
= 20, pady = 8) 'readonly')
Entry_4_2.grid(row = 7, column = 2, pady = 5)
19
Entry_4_3 = Entry(Frame_2, textvariable = Btn_Cancel = Button(Frame_2, text =
var_2, font = ('arial',16), width = 5, state = 'RESET', font = ('arial',12,'bold'), width = 10,
'readonly') command = Reset)
Entry_4_3.grid(row = 7, column = 3) Btn_Cancel.grid(row = 7, column = 4, padx
Entry_5_2 = Entry(Frame_2, textvariable = = 50, pady = 6)
var_1, font = ('arial',16), width = 5, state = Btn_Exit = Button(Frame_2, text = 'EXIT',
'readonly') font = ('arial',12,'bold'), width = 10, command =
Entry_5_2.grid(row = 8, column = 2, pady = 5) Exit)
Entry_5_3 = Entry(Frame_2, textvariable = Btn_Exit.grid(row = 8, column = 4, padx =
var_2, font = ('arial',16), width = 5, state = 50, pady = 6)
'readonly') root.mainloop()
Entry_5_3.grid(row = 8, column = 3) def search_result_marksheet(row):
Entry_6_3 = Entry(Frame_2, textvariable = root = Tk()
var_3, font = ('arial',16), width = 5, state = root.title('Marksheet')
'readonly') root.geometry('1350x750')
Entry_6_3.grid(row = 9, column = 3) root.config(bg = 'Navajo white')
#================Buttons============ #===============Functions========
Btn_Compute = Button(Frame_2, text = def Compute():
'COMPUTE', font = ('arial',12,'bold'), width = x1 = (m1.get()); x2 = (m2.get());
10, command = Compute) x3 = (m3.get()); x4 = (m4.get()); x5 =
Btn_Compute.grid(row = 4, column = 4, (m5.get())
padx = 50, pady = 6) tot = x1+x2+x3+x4+x5
Btn_Save = Button(Frame_2, text = 'SAVE', gt.set(tot)
font = ('arial',12,'bold'), width = 10, command = Per = ((x1+x2+x3+x4+x5) * 100)/500
Add) per.set(Per)
Btn_Save.grid(row = 5, column = 4, padx = cg = (((x1+x2+x3+x4+x5) * 100)/500) / 9.5
50, pady = 6) cgpa.set(round(cg,1))
Btn_Update = Button(Frame_2, text = if (((x1+x2+x3+x4+x5) * 100)/500) <= 40:
'UPDATE', font = ('arial',12,'bold'), width = 10, grd = 'G'
command = Update) elif (((x1+x2+x3+x4+x5) * 100)/500) <= 50:
Btn_Update.grid(row = 6, column = 4, padx grd = 'F'
= 50, pady = 6) elif (((x1+x2+x3+x4+x5) * 100)/500) <= 60:
grd = 'E'
elif (((x1+x2+x3+x4+x5) * 100)/500) <= 70:
20
grd = 'D' Frame_1 = LabelFrame(root, width = 1200,
elif (((x1+x2+x3+x4+x5) * 100)/500) <= 80: height = 400, font = ('arial',20,'bold'), bg =
grd = 'C' 'Navajo white', bd = 10, \
elif (((x1+x2+x3+x4+x5) * 100)/500) <= 90: text = 'Student Details', relief = 'ridge')
grd = 'B' Frame_1.grid(row = 1, column = 0, pady = 20,
else: padx = 20)
grd = 'A' name= tringVar(Frame_1,value=row[0][1])
grade.set(grd) roll = StringVar(Frame_1,value=row[0][2])
count = 0 fname= tringVar(Frame_1,value=row[0][3])
if x1 < 33: mname=StringVar(Frame_1,value=row[0][4])
count = count + 1 DOB=StringVar(Frame_1,value=row[0][5])
if x2 < 33: gender=StringVar(Frame_1,value=row[0][6])
count = count + 1 scl = StringVar(Frame_1,value=row[0][7])
if x3 < 33: email=StringVar(Frame_1,value=row[0][8])
count = count + 1 #====Labels and Entries for Frame_1======
if x4 < 33: Label_Name = Label(Frame_1, text =
count = count + 1 'Name', font = ('arial',15,'bold'), bg = 'Navajo
if x5 < 33: white')
count = count + 1 Label_Name.grid(row = 0, column = 0,
if (count == 0): padx = 80)
result.set('PASS') Entry_Name = Entry(Frame_1, font =
elif (count == 1 or count == 2 ): ('arial',15), width = 25, textvariable = name)
result.set('SUPPLY') Entry_Name.grid(row = 0, column = 1,
else: padx = 5, pady = 5)
result.set('FAIL') Label_Roll_no = Label(Frame_1, text =
if Per <= 45 and result != "FAIL": 'Roll Number', font = ('arial',15,'bold'), bg =
div.set('THIRD') 'Navajo white')
elif Per <= 60 and result != "FAIL": Label_Roll_no.grid(row = 0, column = 3,
div.set('SECOND') padx = 80)
elif Per <= 100: Entry_Roll_no = Entry(Frame_1, font =
div.set('FIRST') ('arial',15), width = 25, textvariable = roll)
========Frame_1=== Entry_Roll_no.grid(row = 0, column = 4,
padx = 40)
21
Label_Father_Name = Label(Frame_1, text Entry_Gender.grid(row = 2, column = 4,
= 'Father Name', font = ('arial',15,'bold'), bg = padx = 5, pady = 5)
'Navajo white') Label_School = Label(Frame_1, text =
Label_Father_Name.grid(row = 1, column = 'School Name', font = ('arial',15,'bold'), bg =
0, padx = 80) 'Navajo white')
Entry_Father_Name = Entry(Frame_1, font Label_School.grid(row = 3, column = 0,
= ('arial',15), width = 25, textvariable = fname) padx = 80)
Entry_Father_Name.grid(row = 1, column = Entry_School = Entry(Frame_1, font =
1, padx = 5, pady = 10) ('arial',15), width = 25, textvariable = scl)
Label_Mother_Name = Label(Frame_1, text Entry_School.grid(row = 3, column = 1,
= 'Mother Name', font = ('arial',15,'bold'), bg = padx = 5, pady = 5)
'Navajo white') Label_Email = Label(Frame_1, text =
Label_Mother_Name.grid(row = 1, column 'Email ID', font = ('arial',15,'bold'), bg = 'Navajo
= 3, padx = 80) white')
Entry_Mother_Name = Entry(Frame_1, font Label_Email.grid(row = 3, column = 3,
= ('arial',15), width = 25, textvariable = mname) padx = 80)
Entry_Mother_Name.grid(row = 1, column Entry_Email = Entry(Frame_1, font =
= 4, padx = 5) ('arial',15), width = 25, textvariable = email)
Label_DOB = Label(Frame_1, text = 'Date Entry_Email.grid(row = 3, column = 4,
of Birth', font = ('arial',15,'bold'), bg = 'Navajo padx = 5, pady = 5)
white') #=================Frame_2=========
Label_DOB.grid(row = 2, column = 0, padx Frame_2 = LabelFrame(root, width = 1200,
= 80) height = 400, font = ('arial',20,'bold'), bg =
Entry_DOB = Entry(Frame_1, font = 'Navajo white', bd = 10 \
('arial',15), width = 25, textvariable = DOB) , text = 'Grades Point
Entry_DOB.grid(row = 2, column = 1, padx Obtained', relief = 'ridge')
= 5, pady = 5) Frame_2.grid(row = 3, column = 0)
Label_Gender = Label(Frame_1, text = m1 = DoubleVar(Frame_2,row[0][9])
'Gender', font = ('arial',15,'bold'), bg = 'Navajo m2 = DoubleVar(Frame_2,row[0][10])
white') m3 = DoubleVar(Frame_2,row[0][11])
Label_Gender.grid(row = 2, column = 3, m4 = DoubleVar(Frame_2,row[0][12])
padx = 80) m5 = DoubleVar(Frame_2,row[0][13])
Entry_Gender = Entry(Frame_1, font = gt = DoubleVar(Frame_2,row[0][14])
('arial',15), width = 25, textvariable = gender) per = DoubleVar(Frame_2,row[0][15])
22
cgpa = DoubleVar(Frame_2,row[0][16]) Label_3 = Label(Frame_2, text =
grade = StringVar(Frame_2,row[0][17]) 'CHEMISTRY', font = ('arial',14), bg = 'Navajo
div = StringVar(Frame_2,row[0][18]) white')
result = StringVar(Frame_2,row[0][19]) Label_3.grid(row = 6, column = 0)
#========Labels of Frame_2======== Label_4 = Label(Frame_2, text = 'HINDI',
Label_Subject = Label(Frame_2, text = font = ('arial',14), bg = 'Navajo white')
'SUBJECT', font = ('arial',16,'bold'), bg = Label_4.grid(row = 7, column = 0)
'Navajo white') Label_5 = Label(Frame_2, text =
Label_Subject.grid(row = 3, column = 0, 'ENGLISH', font = ('arial',14), bg = 'Navajo
padx = 50, pady = 10) white')
Label_obt_Marks = Label(Frame_2, text = Label_5.grid(row = 8, column = 0)
'MARKS OBTAINED', font = ('arial',16,'bold'), Label_6 = Label(Frame_2, text = 'GRAND
bg = 'Navajo white') TOTAL', font = ('arial',16), bg = 'Navajo white')
Label_obt_Marks.grid(row = 3, column = 1, Label_6.grid(row = 9, column = 0)
padx = 20) Label_7 = Label(Frame_2, text =
Label_Subject = Label(Frame_2, text = 'PERCENTAGE', font = ('arial',16,'bold'), bg =
'PASSING MARKS', font = ('arial',16,'bold'), bg 'Navajo white')
= 'Navajo white') Label_7.grid(row = 10, column = 0)
Label_Subject.grid(row = 3, column = 2, Label_8 = Label(Frame_2, text = 'CGPA',
padx = 20) font = ('arial',16,'bold'), bg = 'Navajo white')
Label_obt_Marks = Label(Frame_2, text = Label_8.grid(row = 10, column = 2)
'TOTAL MARKS', font = ('arial',16,'bold'), bg = Label_9 = Label(Frame_2, text = 'GRADE',
'Navajo white') font = ('arial',16,'bold'), bg = 'Navajo white')
Label_obt_Marks.grid(row = 3, column = 3, Label_9.grid(row = 10, column = 4)
padx = 20) Label_10 = Label(Frame_2, text =
Label_1 = Label(Frame_2, text = 'DIVISION', font = ('arial',16,'bold'), bg =
'MATHEMATICS', font = ('arial',14), bg = 'Navajo white')
'Navajo white') Label_10.grid(row = 11, column = 0)
Label_1.grid(row = 4, column = 0) Label_10 = Label(Frame_2, text =
Label_2 = Label(Frame_2, text = 'RESULT', font = ('arial',16,'bold'), bg = 'Navajo
'PHYSICS', font = ('arial',14), bg = 'Navajo white')
white') Label_10.grid(row = 11, column = 2)
Label_2.grid(row = 5, column = 0) #=======Entries of Frame_2=========
var_1 = StringVar(Frame_2, value = '33')
23
var_2 = StringVar(Frame_2, value = '100') Entry__11 = Entry(Frame_2, font =
var_3 = StringVar(Frame_2, value = '500') ('arial',14,'bold'), width = 7, textvariable = result)
Entry__1 = Entry(Frame_2, font = Entry__11.grid(row = 11, column = 3, padx
('arial',16), width = 5, textvariable = m1) = 20, pady = 8)
Entry__1.grid(row = 4, column = 1) Entry_1_2 = Entry(Frame_2, textvariable =
Entry__2 = Entry(Frame_2, font = var_1, font = ('arial',16), width = 5)
('arial',16), width = 5, textvariable = m2) Entry_1_2.grid(row = 4, column = 2, pady = 5)
Entry__2.grid(row = 5, column = 1) Entry_1_3 = Entry(Frame_2, textvariable =
Entry__3 = Entry(Frame_2, font = var_2, font = ('arial',16), width = 5)
('arial',16), width = 5, textvariable = m3) Entry_1_3.grid(row = 4, column = 3)
Entry__3.grid(row = 6, column = 1) Entry_2_2 = Entry(Frame_2, textvariable =
Entry__4 = Entry(Frame_2, font = var_1, font = ('arial',16), width = 5)
('arial',16), width = 5, textvariable = m4) Entry_2_2.grid(row = 5, column = 2, pady =
Entry__4.grid(row = 7, column = 1) 5)
Entry__5 = Entry(Frame_2, font = Entry_2_3 = Entry(Frame_2, textvariable =
('arial',16), width = 5, textvariable = m5) var_2, font = ('arial',16), width = 5)
Entry__5.grid(row = 8, column = 1) Entry_2_3.grid(row = 5, column = 3)
Entry__6 = Entry(Frame_2, font = Entry_3_2 = Entry(Frame_2, textvariable =
('arial',14), width = 5, textvariable = gt) var_1, font = ('arial',16), width = 5)
Entry__6.grid(row = 9, column = 1, pady = 8) Entry_3_2.grid(row = 6, column = 2, pady =
Entry__7 = Entry(Frame_2, font = 5)
('arial',14,'bold'), width = 5, textvariable = per) Entry_3_3 = Entry(Frame_2, textvariable =
Entry__7.grid(row = 10, column = 1, pady = 8) var_2, font = ('arial',16), width = 5)
Entry__8 = Entry(Frame_2, font = Entry_3_3.grid(row = 6, column = 3)
('arial',14,'bold'), width = 5, textvariable = cgpa) Entry_4_2 = Entry(Frame_2, textvariable =
Entry__8.grid(row = 10, column = 3, pady = 8) var_1, font = ('arial',16), width = 5)
Entry__9 = Entry(Frame_2, font = Entry_4_2.grid(row = 7, column = 2, pady =
('arial',14,'bold'), width = 5, textvariable = grade) 5)
Entry__9.grid(row = 10, column = 5, padx = Entry_4_3 = Entry(Frame_2, textvariable =
20, pady = 8) var_2, font = ('arial',16), width = 5)
Entry__10 = Entry(Frame_2, font = Entry_4_3.grid(row = 7, column = 3)
('arial',14,'bold'), width = 8, textvariable = div) Entry_5_2 = Entry(Frame_2, textvariable =
Entry__10.grid(row = 11, column = 1, padx var_1, font = ('arial',16), width = 5)
= 20, pady = 8)
24
Entry_5_2.grid(row = 8, column = 2, pady = self.branch = StringVar()
5) self.sem = StringVar()
Entry_5_3 = Entry(Frame_2, textvariable = self.total = DoubleVar()
var_2, font = ('arial',16), width = 5) self.paid = DoubleVar()
Entry_5_3.grid(row = 8, column = 3) self.due = DoubleVar()
Entry_6_3 = Entry(Frame_2, textvariable = =============Functions=============
var_3, font = ('arial',16), width = 5) def Tuple(event):
Entry_6_3.grid(row = 9, column = 3) try:
#====================Buttons======== global st
Btn_Exit = Button(Frame_2, text = 'EXIT', index = self.list.curselection()[0]
font = ('arial',12,'bold'), width = 10, command = st = self.list.get(index)
root.destroy) self.recpt_entry.delete(0, END)
Btn_Exit.grid(row = 8, column = 4, padx = self.recpt_entry.insert(END, st[1])
50, pady = 6) self.name_entry.delete(0, END)
root.mainloop() self.name_entry.insert(END, st[2])
if __name__ == '__main__': self.admsn_entry.delete(0, END)
marksheet() self.admsn_entry.insert(END, st[3])
FEE STRUCTURAL: self.Date_entry.delete(0, END)
from tkinter import* self.Date_entry.insert(END, st[4])
from tkinter import ttk self.branch_entry.delete(0, END)
import tkinter.messagebox self.branch_entry.insert(END, st[5])
import datetime self.sem_entry.delete(0, END)
import Fee_Backend self.sem_entry.insert(END, st[6])
class Fee(): self.total_entry.delete(0, END)
def __init__(self, master): self.total_entry.insert(END, st[7])
self.master = master self.paid_entry.delete(0, END)
self.master.title('Fee Report') self.paid_entry.insert(END, st[8])
self.master.geometry('1350x750') self.due_entry.delete(0, END)
self.master.config(bg='Navajowhite') self.due_entry.insert(END, st[9])
#=================Variables========= except IndexError:
self.recpt = StringVar() pass
self.name = StringVar() def Insert():
self.admsn = StringVar() if (len(self.admsn.get()) != 0):
self.date = StringVar()
25
Fee_Backend.insert(self.recpt.get(), self.Display.insert(
self.name.get(), self.admsn.get(), self.date.get(), END, '\tReceipt No.\t :' +
self.branch.get(), self.recpt.get() + '\n')
self.sem.get(), self.total.get(), self.paid.get(), self.Display.insert(END, '\tStudent Name
self.due.get()) :' +
self.list.delete(0, END) self.name.get() + '\n')
self.list.insert(END, (self.recpt.get(), self.Display.insert(END, '\tAdmission
self.name.get(), self.admsn.get(), self.date.get(), No.\t:' +
self.branch.get(), self.admsn.get() + '\n')
self.sem.get(), self.total.get(), self.paid.get(), self.Display.insert(
self.due.get())) END, '\tDate\t :' + self.date.get()
def View(): + '\n')
self.list.delete(0, END) self.Display.insert(
for row in Fee_Backend.view(): END, '\tBranch\t :' +
self.list.insert(END, row, str(' ')) self.branch.get() + '\n')
def Reset(): self.Display.insert(
self.recpt.set(' ') END, '\tSemester \t :' +
self.name.set(' ') self.sem.get() + '\n\n')
self.admsn.set(' ') x1 = (self.var_1.get())
#self.date.set(' ') x2 = (self.paid.get())
self.branch.set(' ') x3 = (x1 - x2)
self.sem.set(' ') self.Display.insert(END, '\tTotal Amount
self.paid.set(' ') :' + str(x1) + '\n')
self.due.set(' ') self.Display.insert(END, '\tPaid Amount
self.Display.delete('1.0', END) :' + str(x2) + '\n')
self.list.delete(0, END) self.Display.insert(END, '\tBalance\t
def Delete(): :' + str(x3) + '\n')
Fee_Backend.delete(st[0]) self.due.set(x3)
Reset() def Search():
View() self.list.delete(0, END)
def Receipt(): for row in
self.Display.delete('1.0', END) Fee_Backend.search(self.recpt.get(),
self.Display.insert(END, '\t\tRECEIPT' + self.name.get(), self.admsn.get(), self.date.get(),
'\n\n')
26
self.branch.get(), text='Informations',
self.sem.get(), self.total.get(), self.paid.get(), font=('arial', 15, 'bold'))
self.due.get()): Frame_1.pack(side=LEFT, padx=10)
self.list.insert(END, row, str(' ')) Frame_2 = LabelFrame(Data_Frame,
def Update(): width=495, height=350, bg='Navajo white',
Fee_Backend.delete(st[0]) relief='ridge', bd=8,
Insert() text='Fee Receipt',
def Exit(): font=('arial', 15, 'bold'))
Exit = tkinter.messagebox.askyesno( Frame_2.pack(side=RIGHT, padx=10)
'Attention', 'Confirm, if you want to List_Frame = Frame(Main_Frame,
Exit') width=1350, height=150,
if Exit > 0: bg='Navajo white',
root.destroy() relief='ridge', bd=15)
return List_Frame.pack(side=TOP, padx=15)
=====================Frames======= Button_Frame = Frame(Main_Frame,
Main_Frame = Frame(self.master, width=1350, height=80,
bg='Navajo white') bg='Navajo white',
Main_Frame.grid() relief='ridge', bd=15)
Title_Frame = LabelFrame( Button_Frame.pack(side=TOP)
Main_Frame, width=1350, height=100, ===================Labe============
bg='Navajo white', relief='ridge', bd=15) self.recpt_label = Label(Frame_1,
Title_Frame.pack(side=TOP) text='Receipt No. : ', font=(
self.lblTitle = Label(Title_Frame, 'arial', 14, 'bold'), bg='Navajo white')
font=('arial', 40, 'bold'), text='FEE REPORT', self.recpt_label.grid(row=0, column=0,
bg='navajowhite', padx=13) padx=15, sticky=W)
self.lblTitle.grid(padx=400) self.name_label = Label(Frame_1,
Data_Frame = Frame(Main_Frame, text='Student Name : ', font=(
width=1350, height=350, 'arial', 14, 'bold'), bg='Navajo white')
bg='Navajo white', self.name_label.grid(row=1, column=0,
relief='ridge', bd=15) padx=15, sticky=W)
Data_Frame.pack(side=TOP, padx=15) self.admsn_label = Label(Frame_1,
Frame_1 = LabelFrame(Data_Frame, text='Admission No. : ', font=(
width=850, height=350, bg='Navajo white', 'arial', 14, 'bold'), bg='Navajo white')
relief='ridge', bd=8,
27
self.admsn_label.grid(row=2, column=0, self.var_1 = DoubleVar(Frame_1,
padx=15, sticky=W) value='36265')
self.Date_label = Label(Frame_1, d1 = datetime.date.today()
text='Date : ', font=( self.date.set(d1)
'arial', 14, 'bold'), bg='Navajo white') self.recpt_entry = Entry(Frame_1, font=(
self.Date_label.grid(row=3, column=0, 'arial', 14), textvariable=self.recpt)
padx=15, sticky=W) self.recpt_entry.grid(row=0, column=1,
self.branch_label = Label(Frame_1, padx=15, pady=5)
text='Branch : ', font=( self.name_entry = Entry(Frame_1, font=(
'arial', 14, 'bold'), bg='Navajo white') 'arial', 14), textvariable=self.name)
self.branch_label.grid(row=4, column=0, self.name_entry.grid(row=1, column=1,
padx=15, sticky=W) padx=15, pady=5)
self.admsn_entry = Entry(Frame_1, font=(
self.sem_label = Label(Frame_1, 'arial', 14), textvariable=self.admsn)
text='Semester : ', font=( self.admsn_entry.grid(row=2, column=1,
'arial', 14, 'bold'), bg='Navajo white') padx=15, pady=5)
self.sem_label.grid(row=5, column=0, self.Date_entry = Entry(Frame_1, font=(
padx=15, sticky=W) 'arial', 14), textvariable=self.date)
self.total_label = Label(Frame_1, self.Date_entry.grid(row=3, column=1,
text='TOTAL AMOUNT : ', font=( padx=15, pady=5)
'arial', 14, 'bold'), bg='Navajo white') self.branch_entry =
self.total_label.grid(row=2, column=2, ttk.Combobox(Frame_1, values=(' ', 'CSE', 'IT',
padx=5, sticky=W) 'ETC/ET&T', 'Mechanical', 'Civil', 'EE', 'EEE'),
self.paid_label = Label(Frame_1, font=('arial', 14),
text='PAID AMOUNT : ', font=( width=19, textvariable=self.branch)
'arial', 14, 'bold'), bg='Navajo white') self.branch_entry.grid(row=4, column=1,
self.paid_label.grid(row=3, column=2, padx=15, pady=5)
padx=5, sticky=W)
self.due_label = Label(Frame_1, self.sem_entry = ttk.Combobox(Frame_1,
text='BALANCE : ', font=( values=(' ', 'FIRST', 'SECOND', 'THIRD',
'arial', 14, 'bold'), bg='Navajo white') 'FOURTH', 'FIFTH', 'SIXTH',
self.due_label.grid(row=4, column=2, 'SEVENTH',
padx=5, sticky=W) 'EIGHTH'), font=('arial', 14), width=19,
===========Entries================== textvariable=self.sem)
28
self.sem_entry.grid(row=5, column=1, 'arial', 14, 'bold'), width=10,
padx=15, pady=5) command=Insert)
self.total_entry = Entry(Frame_1, font=( btnSave.grid(row=0, column=0, padx=5,
'arial', 14), width=10, pady=5)
textvariable=self.var_1, state='readonly') btnDisplay = Button(Button_Frame,
self.total_entry.grid(row=2, column=3, text='DISPLAY', font=(
padx=8, pady=5) 'arial', 14, 'bold'), width=10,
self.paid_entry = Entry(Frame_1, font=( command=View)
'arial', 14), width=10, btnDisplay.grid(row=0, column=1, padx=5,
textvariable=self.paid) pady=5)
self.paid_entry.grid(row=3, column=3, btnReset = Button(Button_Frame,
pady=5) text='RESET', font=(
self.due_entry = Entry(Frame_1, font=( 'arial', 14, 'bold'), width=10,
'arial', 14), width=10, command=Reset)
textvariable=self.due) btnReset.grid(row=0, column=2, padx=5,
self.due_entry.grid(row=4, column=3, pady=5)
pady=7) btnReset = Button(Button_Frame,
===============Frame_2============ text='UPDATE', font=(
self.Display = Text(Frame_2, width=42, 'arial', 14, 'bold'), width=10,
height=12, command=Update)
font=('arial', 14, 'bold')) btnReset.grid(row=0, column=3, padx=5,
self.Display.grid(row=0, column=0, pady=5)
padx=3) btnSearch = Button(Button_Frame,
#======List box and scrollbar======== text='SEARCH', font=(
sb = Scrollbar(List_Frame) 'arial', 14, 'bold'), width=10,
sb.grid(row=0, column=1, sticky='ns') command=Search)
self.list = Listbox(List_Frame, font=( btnSearch.grid(row=0, column=4, padx=5,
'arial', 13, 'bold'), width=140, height=8) pady=5)
self.list.bind('<<ListboxSelect>>', Tuple) btnDelete = Button(Button_Frame,
self.list.grid(row=0, column=0) text='DELETE', font=(
sb.config(command=self.list.yview) 'arial', 14, 'bold'), width=10,
=======Buttons============== command=Delete)
btnSave = Button(Button_Frame, btnDelete.grid(row=0, column=5, padx=5,
text='SAVE', font=( pady=5)
29
btnReceipt = Button(Button_Frame, self.address = StringVar()
text='RECEIPT', font=( self.post = StringVar()
'arial', 14, 'bold'), width=10, self.mobno = StringVar()
command=Receipt) self.ID = StringVar()
btnReceipt.grid(row=0, column=6, padx=5, self.title = StringVar()
pady=5) self.author = StringVar()
btnExit = Button(Button_Frame, self.borrow = StringVar()
text='EXIT', font=( self.due = StringVar()
'arial', 14, 'bold'), width=10, self.loan = StringVar()
command=Exit) self.yop = StringVar()
btnExit.grid(row=0, column=7, padx=5, self.edsn = StringVar()
pady=5) #==================Functions========
root = Tk() def BookRec(event):
obj = Fee(root) try:
root.mainloop() global selected_tuple
LIBRARY STURCTURE: index = self.Listbox_2.curselection()[0]
from tkinter import* selected_tuple = self.Listbox_2.get(index)
from tkinter import ttk self.Entry_0.delete(0, END)
import random self.Entry_0.insert(END, selected_tuple[1])
from datetime import datetime self.Entry_1.delete(0, END)
import tkinter.messagebox self.Entry_1.insert(END,
import Library_Backend selected_tuple[2])
class Library: self.Entry_2.delete(0, END)
def __init__(self, root): self.Entry_2.insert(END,
self.root = root selected_tuple[3])
self.root.title('Library Management self.Entry_3.delete(0, END)
System') self.Entry_3.insert(END,
self.root.geometry('1350x750') selected_tuple[4])
self.root.config(bg = 'navajowhite') self.Entry_4.delete(0, END)
#===================Variables======== self.Entry_4.insert(END,
self.Mtype = StringVar() selected_tuple[5])
self.refno = StringVar() self.Entry_5.delete(0, END)
self.fname = StringVar() self.Entry_5.insert(END,
self.surname = StringVar() selected_tuple[6])
30
self.Entry_6.delete(0, END) , self.loan.get())
self.Entry_6.insert(END, self.Listbox_2.delete(0, END)
selected_tuple[7]) self.Listbox_2.insert(END ,
self.Entry_7.delete(0, END) (self.Mtype.get(), self.refno.get(),
self.Entry_7.insert(END, self.fname.get(), self.surname.get()\
selected_tuple[8]) ,
self.Entry_8.delete(0, END) self.address.get(), self.post.get(),
self.Entry_8.insert(END, self.mobno.get(), self.ID.get()\
selected_tuple[9]) ,
self.Entry_9.delete(0, END) self.title.get(), self.author.get(),
self.Entry_9.insert(END, self.borrow.get(), self.due.get()\
selected_tuple[10]) ,
self.Entry_10.delete(0, END) self.loan.get()))
self.Entry_10.insert(END, def Display():
selected_tuple[11]) self.Listbox_2.delete(0, END)
self.Entry_11.delete(0, END) for row in Library_Backend.view():
self.Entry_11.insert(END, self.Listbox_2.insert(END,
selected_tuple[12]) row, str(' '))
self.Entry_12.delete(0, END)
self.Entry_12.insert(END, def Exit():
selected_tuple[13]) Exit =
except IndexError: tkinter.messagebox.askyesno('Library
pass Management System','Confirm if you want to
def Insert(): Exit')
if(len(self.refno.get()) != 0): if Exit > 0:
Library_Backend.insert(self.M root.destroy()
type.get(), self.refno.get(), self.fname.get(), return
self.surname.get()\ def Reset():
, self.Mtype.set('')
self.address.get(), self.post.get(), self.refno.set('')
self.mobno.get(), self.ID.get()\ self.fname.set('')
, self.title.get(), self.surname.set('')
self.author.get(), self.borrow.get(), self.address.set('')
self.due.get()\ self.post.set('')
31
self.mobno.set('') def Search():
self.ID.set('') self.Listbox_2.delete(0, END)
self.title.set('') for row in
self.author.set('') Library_Backend.search(self.Mtype.get(),
self.borrow.set('') self.refno.get(), self.fname.get(),
self.due.set('') self.surname.get()\
self.loan.set('') ,
self.Display.delete('1.0',END) self.address.get(), self.post.get(),
self.Listbox_2.delete(0, END) self.mobno.get(), self.ID.get()\
def Delete(): , self.title.get(),
Library_Backend.delete(selected_tuple[0]) self.author.get(), self.borrow.get(),
Reset() self.due.get()\
Display() , self.loan.get()):
def Update(): self.Listbox_2.insert(END,
Library_Backend.delete(selected_tuple[0]) row, str(' '))
Library_Backend.insert(self.Mtype.get(), def Details():
self.refno.get(), self.fname.get(), self.Display.delete('1.0',END)
self.surname.get()\ , self.Display.insert(END, 'Book ID:
self.address.get(), self.post.get(), ' + self.ID.get() + '\n')
self.mobno.get(), self.ID.get()\ self.Display.insert(END, 'Title: ' +
, self.title.get(), self.title.get() + '\n')
self.author.get(), self.borrow.get(), self.Display.insert(END, 'Author: '
self.due.get()\ + self.author.get() + '\n')
, self.loan.get()) self.Display.insert(END, 'Edition: '
self.Listbox_2.delete(0, END) + self.edsn.get() + '\n')
self.Listbox_2.insert(END,(self.Mtype.get(), self.Display.insert(END, 'Year of
self.refno.get(), self.fname.get(), Publision: \t' + self.yop.get() + '\n')
self.surname.get()\ self.Display.insert(END, 'Date
, self.address.get(), Borrowed: ' + self.borrow.get() + '\n')
self.post.get(), self.mobno.get(), self.ID.get()\ self.Display.insert(END, 'Date
, self.title.get(), Due:' + self.due.get() + '\n')
self.author.get(), self.borrow.get(), self.Display.insert(END, 'Days in
self.due.get()\ Loan: ' + self.loan.get() + '\n'
, self.loan.get())) ================Frames============
32
Main_Frame = Frame(self.root, bg = text = "Book Details:", padx
'navajowhite') = 20, font = ('arial',15,'bold'))
Main_Frame.grid() Frame_2.pack(side = RIGHT)
Title_Frame_1 = Frame(Main_Frame, #=======Labels==============
width = 1350, bg = 'navajowhite', relief = self.Label_1 = Label(Frame_1, text = 'Member
RIDGE, bd = 15, padx = 20) type', font = ('arial',13,'bold'), pady = 2, \
Title_Frame_1.pack(side = TOP) bg = 'navajowhite' )
self.lblTitle = Label(Title_Frame_1, self.Label_1.grid(row = 0, column = 0,
font = ('arial',40,'bold'), text = '\tLibrary sticky = W)
Management System\t', \ self.Label_2 = Label(Frame_1, text =
bg = 'navajowhite', padx = 13) 'Reference No.', font = ('arial',13,'bold'), pady =
self.lblTitle.grid() 2, \ bg = 'navajowhite' )
self.Label_2.grid(row = 1, column = 0,
Button_Frame = Frame(Main_Frame, sticky = W)
width = 1350, height = 50, relief = RIDGE, bd = self.Label_3 = Label(Frame_1, text =
10, bg = 'navajowhite') 'First Name', font = ('arial',13,'bold'), pady = 2, \
Button_Frame.pack(side = BOTTOM) bg = 'navajowhite' )
Detail_Frame = Frame(Main_Frame, self.Label_3.grid(row = 2, column = 0,
width = 1350, height = 100, relief = RIDGE, bd sticky = W)
= 10, bg = 'navajowhite') self.Label_4 = Label(Frame_1, text =
Detail_Frame.pack(side = BOTTOM) 'Surname', font = ('arial',13,'bold'), pady = 2, \
Data_Frame = Frame(Main_Frame, bg = 'navajowhite' )
width = 1350, height = 400, relief = RIDGE, bd self.Label_4.grid(row = 3, column = 0,
= 15, bg = 'navajowhite') sticky = W)
Data_Frame.pack(side = BOTTOM) self.Label_5 = Label(Frame_1, text =
Frame_1 = LabelFrame(Data_Frame, 'Address', font = ('arial',13,'bold'), pady = 2, \
width = 800, height = 400, relief = RIDGE, bd = bg = 'navajowhite' )
10, bg = 'navajowhite', \ self.Label_5.grid(row = 4, column = 0,
text = "Library Membership sticky = W)
Info:", padx = 20, font = ('arial',15,'bold')) self.Label_6 = Label(Frame_1, text =
Frame_1.pack(side = LEFT, padx = 3) 'Post Code', font = ('arial',13,'bold'), pady = 2, \
Frame_2 = LabelFrame(Data_Frame, bg = 'navajowhite' )
width = 550, height = 400, relief = RIDGE, bd = self.Label_6.grid(row = 5, column = 0,
10, bg = 'navajowhite', \ sticky = W)
33
self.Label_7 = Label(Frame_1, text = bg = 'navajowhite' )
'Mobile No.', font = ('arial',13,'bold'), pady = 2, \ self.Label_13.grid(row = 5, column = 2,
bg = 'navajowhite' ) sticky = W)
self.Label_7.grid(row = 6, column = 0, #=========Entries=============
sticky = W) self.Entry_0 = ttk.Combobox(Frame_1,
self.Label_8 = Label(Frame_1, text = values = (' ','Student','Faculty','Staff Member'), \
'Book ID', font = ('arial',13,'bold'), pady = 2, \ font =
bg = 'navajowhite' ) ('arial',13,'bold'), width = 23, textvariable =
self.Label_8.grid(row = 0, column = 2, self.Mtype )
sticky = W) self.Entry_0.grid(row = 0, column = 1)
self.Label_9 = Label(Frame_1, text = self.Entry_1 = Entry(Frame_1, font =
'Book Title', font = ('arial',13,'bold'), pady = 2, \ ('arial',13,'bold'), width = 25, textvariable =
bg = 'navajowhite' ) self.refno )
self.Label_9.grid(row = 1, column = 2, self.Entry_1.grid(row = 1, column = 1,
sticky = W) padx = 15)
self.Label_10 = Label(Frame_1, text = self.Entry_2 = Entry(Frame_1, font =
'Author', font = ('arial',13,'bold'), pady = 2, \ ('arial',13,'bold'), width = 25, textvariable =
bg = 'navajowhite' ) self.fname)
self.Label_10.grid(row = 2, column = 2, self.Entry_2.grid(row = 2, column = 1,
sticky = W) padx = 15)
self.Label_11 = Label(Frame_1, text = self.Entry_3 = Entry(Frame_1, font =
'Date Borrowed', font = ('arial',13,'bold'), pady = ('arial',13,'bold'), width = 25, textvariable =
2, \ self.surname)
bg = 'navajowhite' ) self.Entry_3.grid(row = 3, column = 1,
self.Label_11.grid(row = 3, column = 2, padx = 15)
sticky = W) self.Entry_4 = Entry(Frame_1, font =
self.Label_13 = Label(Frame_1, text = ('arial',13,'bold'), width = 25, textvariable =
'Date Due', font = ('arial',13,'bold'), pady = 2, \ self.address)
bg = 'navajowhite' ) self.Entry_4.grid(row = 4, column = 1,
self.Label_13.grid(row = 4, column = 2, padx = 15)
sticky = W) self.Entry_5 = Entry(Frame_1, font =
self.Label_13 = Label(Frame_1, text = ('arial',13,'bold'), width = 25, textvariable =
'Days in Loan', font = ('arial',13,'bold'), pady = 2, self.post)
\
34
self.Entry_5.grid(row = 5, column = 1, self.Entry_12 = Entry(Frame_1, font =
padx = 15) ('arial',13,'bold'), width = 25, textvariable =
self.Entry_6 = Entry(Frame_1, font = self.loan)
('arial',13,'bold'), width = 25, textvariable = self.Entry_12.grid(row = 5, column = 4,
self.mobno) padx = 15)
self.Entry_6.grid(row = 6, column = 1, #==========Widgets===============
padx = 15) self.Display = Text(Frame_2, font =
self.Entry_7 = Entry(Frame_1, font = ('arial',13,'bold'), width = 28, height = 11)
('arial',13,'bold'), width = 25, textvariable = self.Display.grid(row = 0, column = 2)
self.ID) List_of_Books = [' C',' C++',' Java','
self.Entry_7.grid(row = 0, column = 4, Python',' PHP',' Java Script',' My SQL',' Data
padx = 15) Structure',' Linux',\
self.Entry_8 = Entry(Frame_1, font = ' Operating System',' Web
('arial',13,'bold'), width = 25, textvariable = Developement',' Data Science',' Algorithms','
self.title) Android', \' VB.net']
self.Entry_8.grid(row = 1, column = 4, #======Function for Books Details=====
padx = 15) def SelectedBook(event):
self.Entry_9 = Entry(Frame_1, font = value=str(self.Listbox_1.get(self.Listbox_1.curs
('arial',13,'bold'), width = 25, textvariable = election()))
self.author) v = value
self.Entry_9.grid(row = 2, column = 4, if (v == ' C'):
padx = 15) self.ID.set('ISBN 525341')
self.Entry_10 = Entry(Frame_1, font = self.title.set('Programming using C')
('arial',13,'bold'), width = 25, textvariable = self.author.set('Yashwant Kanetkar')
self.borrow) self.yop.set('2019')
self.Entry_10.grid(row = 3, column = 4, self.edsn.set('5th')
padx = 15) import datetime
self.Entry_11 = Entry(Frame_1, font = d1 = datetime.date.today()
('arial',13,'bold'), width = 25, textvariable = d2 = datetime.timedelta(days = 14)
self.due) d3 = (d1 + d2)
self.Entry_11.grid(row = 4, column = 4, self.borrow.set(d1)
padx = 15) self.loan.set('14')
self.due.set(d3)
Details()
35
elif (v == ' C++'): import datetime
self.ID.set('ISBN 345687') d1 = datetime.date.today()
self.title.set('Programming using C++') d2 = datetime.timedelta(days = 13)
self.author.set('Yashwant Kanetkar') d3 = (d1 + d2)
self.yop.set('2019') self.borrow.set(d1)
self.edsn.set('4th') self.loan.set('13')
import datetime self.due.set(d3)
d1 = datetime.date.today() Details()
d2 = datetime.timedelta(days = 10) elif (v == ' PHP'):
d3 = (d1 + d2) self.ID.set('ISBN 735893')
self.borrow.set(d1) self.title.set('PHP Programming')
self.loan.set('10') self.author.set('Alan Forbes')
self.due.set(d3) self.yop.set('2019')
Details() self.edsn.set('5th')
elif (v == ' Java'): import datetime
self.ID.set('ISBN 643842') d1 = datetime.date.today()
self.title.set('Java Programming') d2 = datetime.timedelta(days = 15)
self.author.set('Joshua Bloch') d3 = (d1 + d2)
self.yop.set('2019') self.borrow.set(d1)
self.edsn.set('7th') self.loan.set('15')
import datetime self.due.set(d3)
d1 = datetime.date.today() Details()
d2 = datetime.timedelta(days = 13) elif (v == ' Java Script'):
d3 = (d1 + d2) self.ID.set('ISBN 643842')
self.borrow.set(d1) self.title.set('JavScript Programming')
self.loan.set('13') self.author.set('Jon Duckett.')
self.due.set(d3) self.yop.set('2019')
Details() self.edsn.set('4th')
elif (v == ' Python'): import datetime
self.ID.set('ISBN 564524') d1 = datetime.date.today()
self.title.set('Python Programming') d2 = datetime.timedelta(days = 13)
self.author.set('John Zelle') d3 = (d1 + d2)
self.yop.set('2019') self.borrow.set(d1)
self.edsn.set('3rd') self.loan.set('13')
36
self.due.set(d3) self.author.set('SOYINKA')
Details() self.yop.set('2019')
elif (v == ' My SQL'): self.edsn.set('1st')
self.ID.set('ISBN 649635') import datetime
self.title.set('My SQL Programming') d1 = datetime.date.today()
self.author.set('Groff James') d2 = datetime.timedelta(days = 6)
self.yop.set('2019') d3 = (d1 + d2)
self.edsn.set('3rd') self.borrow.set(d1)
import datetime self.loan.set('6')
d1 = datetime.date.today() self.due.set(d3)
d2 = datetime.timedelta(days = 20) Details()
d3 = (d1 + d2) elif (v == ' Operating System'):
self.borrow.set(d1) self.ID.set('ISBN 536453')
self.loan.set('20') self.title.set('OS Concepts ')
self.due.set(d3) self.author.set('Silberschatz Abraham')
Details() self.yop.set('2019')
elif (v == ' Data Structure'): self.edsn.set('4th')
self.ID.set('ISBN 531588') import datetime
self.title.set('Data Structure') d1 = datetime.date.today()
self.author.set('Karumanchi d2 = datetime.timedelta(days = 12)
Narasimha') d3 = (d1 + d2)
self.yop.set('2019') self.borrow.set(d1)
self.edsn.set('5th') self.loan.set('12')
import datetime self.due.set(d3)
d1 = datetime.date.today() Details()
d2 = datetime.timedelta(days = 11) elif (v == ' Web Developement'):
d3 = (d1 + d2) self.ID.set('ISBN 543548')
self.borrow.set(d1) self.title.set('Web Developement ')
self.loan.set('11') self.author.set('Paul McFedries')
self.due.set(d3) self.yop.set('2019')
Details() self.edsn.set('3rd')
elif (v == ' Linux'): import datetime
self.ID.set('ISBN 356853') d1 = datetime.date.today()
self.title.set('Linux Administration') d2 = datetime.timedelta(days = 15)
37
d3 = (d1 + d2) elif (v == ' Android'):
self.borrow.set(d1) self.ID.set('ISBN 356452')
self.loan.set('15') self.title.set('Android Programming')
self.due.set(d3) self.author.set('Harwani B. M')
Details() self.yop.set('2019')
elif (v == ' Data Science'): self.edsn.set('4th')
self.ID.set('ISBN 835764') import datetime
self.title.set('Data Science Concept ') d1 = datetime.date.today()
self.author.set('David Stephenson') d2 = datetime.timedelta(days = 9)
self.yop.set('2019') d3 = (d1 + d2)
self.edsn.set('3rd') self.borrow.set(d1)
import datetime self.loan.set('9')
d1 = datetime.date.today() self.due.set(d3)
d2 = datetime.timedelta(days = 15) Details()
d3 = (d1 + d2) =====List Box and Scroll Bar=====
self.borrow.set(d1) sb_1 = Scrollbar(Frame_2)
self.loan.set('15') sb_1.grid(row =0, column = 1, sticky = 'ns')
self.due.set(d3) self.Listbox_1 = Listbox(Frame_2, font
Details() = ('arial',13,'bold'), width = 20, height = 10)
elif (v == ' Algorithms'): self.Listbox_1.bind('<<ListboxSelect>>',
self.ID.set('ISBN 535674') SelectedBook)
self.title.set('Basics of Algorithm ') self.Listbox_1.grid(row = 0, column = 0)
self.author.set('Karumanchi sb_1.config(command = self.Listbox_1.yview)
Narasimha') sb_2 = Scrollbar(Detail_Frame)
self.yop.set('2019') sb_2.grid(row = 1, column = 1, sticky = 'ns')
self.edsn.set('7th') self.Listbox_2 = Listbox(Detail_Frame,
import datetime font = ('arial',13,'bold'), width = 144, height =
d1 = datetime.date.today() 11)
d2 = datetime.timedelta(days = 10) self.Listbox_2.bind('<<ListboxSelect>>',
d3 = (d1 + d2) BookRec)
self.borrow.set(d1) self.Listbox_2.grid(row = 1, column = 0)
self.loan.set('10') sb_2.config(command = self.Listbox_2.yview)
self.due.set(d3) for items in List_of_Books:
Details() self.Listbox_1.insert(END, items)
38
#=======Buttons========== Button_7.grid(row = 0, column = 6,
Button_1 = Button(Button_Frame, text padx = 8)
= 'SAVE', font = ('arial',15,'bold'), width = 10, if __name__ == '__main__':
command = Insert) root = Tk()
Button_1.grid(row = 0, column = 0, applicaton = Library(root)
padx = 8, pady = 5) root.mainloop()
Button_2 = Button(Button_Frame, text MARKSHEET:
= 'DISPLAY', font = ('arial',15,'bold'), width = from tkinter import *
10, command = Display) import random
Button_2.grid(row = 0, column = 1, import Marksheet_Backend
padx = 8) import tkinter.messagebox
Button_3 = Button(Button_Frame, text from tkinter import ttk
= 'RESET', font = ('arial',15,'bold'), width = 10, def marksheet():
command = Reset) root = Tk()
Button_3.grid(row = 0, column = 2, root.title('Marksheet')
padx = 8) root.geometry('1350x750')
Button_4 = Button(Button_Frame, text root.config(bg='Navajowhite')
= 'UPDATE', font = ('arial',15,'bold'), width = #===================Variables========
10, command = Update) name = StringVar()
Button_4.grid(row = 0, column = 3, roll = StringVar()
padx = 8) fname = StringVar()
Button_5 = Button(Button_Frame, text mname = StringVar()
= 'SEARCH', font = ('arial',15,'bold'), width = DOB = StringVar()
10, command = Search) gender = StringVar()
Button_5.grid(row = 0, column = 4, scl = StringVar()
padx = 8) email = StringVar()
Button_6 = Button(Button_Frame, text m1 = DoubleVar()
= 'DELETE', font = ('arial',15,'bold'), width = 10, m2 = DoubleVar()
command = Delete) m3 = DoubleVar()
Button_6.grid(row = 0, column = 5, m4 = DoubleVar()
padx = 8) m5 = DoubleVar()
Button_7 = Button(Button_Frame, text gt = DoubleVar()
= 'EXIT', font = ('arial',15,'bold'), width = 10, per = DoubleVar()
command = Exit) cgpa = DoubleVar()
39
grade = StringVar() ifx1>100:
div = StringVar() tkinter.messagebox.askokcancel('Attention','Plea
result = StringVar() se enter Correct Marks')
#=========Functions================ return
def Add(): ifx2>100:
if (len(roll.get()) != 0): tkinter.messagebox.askokcancel('Attention','Plea
Marksheet_Backend.insert(name.get(),roll.get(), se enter Correct Marks')
fname.get(),mname.get(),DOB.get(),gender.get() return
, ifx3>100:
scl.get(),email.get(),m1.get(),m2.get(),m3.get(), tkinter.messagebox.askokcancel('Attention','Plea
m4.get(),m5.get(), se enter Correct Marks')
gt.get(),per.get(),cgpa.get(),grade.get(),div.get(), return
result.get()) if x4 > 100:
tkinter.messagebox.askokcancel('At
def Update(): tention','Please enter Correct Marks')
if (len(roll.get()) != 0): return
Marksheet_Backend.update(name.get(),roll.get() ifx5>100:
,fname.get(),mname.get(),DOB.get(),gender.get( tkinter.messagebox.askokcancel('Attention','Plea
), se enter Correct Marks')
scl.get(),email.get(),m1.get(),m2.get(),m3.get(), return
m4.get(),m5.get(), \ tot = x1+x2+x3+x4+x5
gt.get(),per.get(),cgpa.get(),grade.get(),div.get(), gt.set(tot)
result.get() Per = ((x1+x2+x3+x4+x5) * 100)/500
def Exit(): per.set(Per)
Exit = cg = (((x1+x2+x3+x4+x5) * 100)/500) / 9.5
tkinter.messagebox.askyesno('Marksheet','Confir cgpa.set(round(cg,1))
m if you want to Exit') if cg > 10:
if Exit > 0: cgpa.set(10)
root.destroy() if (((x1+x2+x3+x4+x5) * 100)/500) <= 40:
return grd = 'G'
def Compute(): elif (((x1+x2+x3+x4+x5) * 100)/500) <= 50:
x1 = (m1.get()); x2 = (m2.get()); grd = 'F'
x3 = (m3.get()); x4 = (m4.get()); x5 = elif (((x1+x2+x3+x4+x5) * 100)/500) <= 60:
(m5.get()) grd = 'E'
40
elif (((x1+x2+x3+x4+x5) * 100)/500) <= 70: roll.set(' ')
grd = 'D' fname.set(' ')
elif (((x1+x2+x3+x4+x5) * 100)/500) <= 80: mname.set(' ')
grd = 'C' DOB.set(' ')
elif (((x1+x2+x3+x4+x5) * 100)/500) <= 90: gender.set(' ')
grd = 'B' scl.set(' ')
else: email.set(' ')
grd = 'A' m1.set(' ')
grade.set(grd) m2.set(' ')
count = 0 m3.set(' ')
if x1 < 33: m4.set(' ')
count = count + 1 m5.set(' ')
if x2 < 33: gt.set(' ')
count = count + 1 per.set(' ')
if x3 < 33: cgpa.set(' ')
count = count + 1 grade.set(' ')
if x4 < 33: div.set(' ')
count = count + 1 result.set(' ')
if x5 < 33: =================Frame_1==========
count = count + 1 Frame_1 = LabelFrame(root, width =
if (count == 0): 1200, height = 400, font = ('arial',20,'bold'), bg =
result.set('PASS') 'Navajo white', bd = 10, \
elif (count == 1 or count == 2 ): text = 'Student Details', relief =
result.set('SUPPLY') 'ridge')
else: Frame_1.grid(row = 1, column = 0, pady =
result.set('FAIL') 20, padx = 20)
if Per <= 45 and result != "FAIL": #====Labels and Entries for Frame_1====
div.set('THIRD') Label_Name = Label(Frame_1, text =
elif Per <= 60 and result != "FAIL": 'Name', font = ('arial',15,'bold'), bg = 'Navajo
div.set('SECOND') white')
elif Per <= 100: Label_Name.grid(row = 0, column = 0,
div.set('FIRST') padx = 80)
def Reset(): Entry_Name = Entry(Frame_1, font =
name.set(' ') ('arial',15), width = 25, textvariable = name)
41
Entry_Name.grid(row = 0, column = 1, Entry_DOB = Entry(Frame_1, font =
padx = 5, pady = 5) ('arial',15), width = 25, textvariable = DOB)
Label_Roll_no = Label(Frame_1, text = Entry_DOB.grid(row = 2, column = 1, padx
'Roll Number', font = ('arial',15,'bold'), bg = = 5, pady = 5)
'Navajo white') Label_Gender = Label(Frame_1, text =
Label_Roll_no.grid(row = 0, column = 3, 'Gender', font = ('arial',15,'bold'), bg = 'Navajo
padx = 80) white')
Entry_Roll_no = Entry(Frame_1, font = Label_Gender.grid(row = 2, column = 3,
('arial',15), width = 25, textvariable = roll) padx = 80)
Entry_Roll_no.grid(row = 0, column = 4, Entry_Gender = ttk.Combobox(Frame_1,
padx = 40) values = (' ','Male','Female','Others'), font =
Label_Father_Name = Label(Frame_1, text ('arial',15), width = 23, textvariable = gender)
= 'Father Name', font = ('arial',15,'bold'), bg = Entry_Gender.grid(row = 2, column = 4,
'Navajo white') padx = 5, pady = 5)
Label_Father_Name.grid(row = 1, column = Label_School = Label(Frame_1, text =
0, padx = 80) 'School Name', font = ('arial',15,'bold'), bg =
Entry_Father_Name = Entry(Frame_1, font 'Navajo white')
= ('arial',15), width = 25, textvariable = fname) Label_School.grid(row = 3, column = 0,
Entry_Father_Name.grid(row = 1, column = padx = 80)
1, padx = 5, pady = 10) Entry_School = Entry(Frame_1, font =
Label_Mother_Name = Label(Frame_1, text ('arial',15), width = 25, textvariable = scl)
= 'Mother Name', font = ('arial',15,'bold'), bg = Entry_School.grid(row = 3, column = 1,
'Navajo white') padx = 5, pady = 5)
Label_Mother_Name.grid(row = 1, column Label_Email = Label(Frame_1, text =
= 3, padx = 80) 'Email ID', font = ('arial',15,'bold'), bg = 'Navajo
Entry_Mother_Name = Entry(Frame_1, font white')
= ('arial',15), width = 25, textvariable = mname) Label_Email.grid(row = 3, column = 3,
Entry_Mother_Name.grid(row = 1, column padx = 80)
= 4, padx = 5) Entry_Email = Entry(Frame_1, font =
Label_DOB = Label(Frame_1, text = 'Date ('arial',15), width = 25, textvariable = email)
of Birth', font = ('arial',15,'bold'), bg = 'Navajo Entry_Email.grid(row = 3, column = 4,
white') padx = 5, pady = 5)
Label_DOB.grid(row = 2, column = 0, padx #============Frame_2=============
= 80)
42
Frame_2 = LabelFrame(root, width = 1200, Label_2.grid(row = 5, column = 0)
height = 400, font = ('arial',20,'bold'), bg = Label_3 = Label(Frame_2, text =
'Navajo white', bd = 10 \ 'CHEMISTRY', font = ('arial',14), bg = 'Navajo
, text = 'Grades Point white')
Obtained', relief = 'ridge') Label_3.grid(row = 6, column = 0)
Frame_2.grid(row = 3, column = 0) Label_4 = Label(Frame_2, text = 'HINDI',
======Labels of Frame_2=========== font = ('arial',14), bg = 'Navajo white')
Label_Subject = Label(Frame_2, text = Label_4.grid(row = 7, column = 0)
'SUBJECT', font = ('arial',16,'bold'), bg = Label_5 = Label(Frame_2, text =
'Navajo white') 'ENGLISH', font = ('arial',14), bg = 'Navajo
Label_Subject.grid(row = 3, column = 0, white')
padx = 50, pady = 10) Label_5.grid(row = 8, column = 0)
Label_obt_Marks = Label(Frame_2, text = Label_6 = Label(Frame_2, text = 'GRAND
'MARKS OBTAINED', font = ('arial',16,'bold'), TOTAL', font = ('arial',16), bg = 'Navajo white')
bg = 'Navajo white') Label_6.grid(row = 9, column = 0)
Label_obt_Marks.grid(row = 3, column = 1, Label_7 = Label(Frame_2, text =
padx = 20) 'PERCENTAGE', font = ('arial',16,'bold'), bg =
Label_Subject = Label(Frame_2, text = 'Navajo white')
'PASSING MARKS', font = ('arial',16,'bold'), bg Label_7.grid(row = 10, column = 0)
= 'Navajo white') Label_8 = Label(Frame_2, text = 'CGPA',
Label_Subject.grid(row = 3, column = 2, font = ('arial',16,'bold'), bg = 'Navajo white')
padx = 20) Label_8.grid(row = 10, column = 2)
Label_obt_Marks = Label(Frame_2, text = Label_9 = Label(Frame_2, text = 'GRADE',
'TOTAL MARKS', font = ('arial',16,'bold'), bg = font = ('arial',16,'bold'), bg = 'Navajo white')
'Navajo white') Label_9.grid(row = 10, column = 4)
Label_obt_Marks.grid(row = 3, column = 3, Label_10 = Label(Frame_2, text =
padx = 20) 'DIVISION', font = ('arial',16,'bold'), bg =
Label_1 = Label(Frame_2, text = 'Navajo white')
'MATHEMATICS', font = ('arial',14), bg = Label_10.grid(row = 11, column = 0)
'Navajo white') Label_10 = Label(Frame_2, text =
Label_1.grid(row = 4, column = 0) 'RESULT', font = ('arial',16,'bold'), bg = 'Navajo
Label_2 = Label(Frame_2, text = white')
'PHYSICS', font = ('arial',14), bg = 'Navajo Label_10.grid(row = 11, column = 2)
white') ==========Entries of Frame_2==========
43
var_1 = StringVar(Frame_2, value = '33') Entry__9.grid(row = 10, column = 5, padx =
var_2 = StringVar(Frame_2, value = '100') 20, pady = 8)
var_3 = StringVar(Frame_2, value = '500') Entry__10 = Entry(Frame_2, font =
Entry__1 = Entry(Frame_2, font = ('arial',14,'bold'), width = 8, textvariable = div,
('arial',16), width = 5, textvariable = m1) state = 'readonly')
Entry__1.grid(row = 4, column = 1) Entry__10.grid(row = 11, column = 1, padx
Entry__2 = Entry(Frame_2, font = = 20, pady = 8)
('arial',16), width = 5, textvariable = m2) Entry__11 = Entry(Frame_2, font =
Entry__2.grid(row = 5, column = 1) ('arial',14,'bold'), width = 7, textvariable = result,
Entry__3 = Entry(Frame_2, font = state = 'readonly')
('arial',16), width = 5, textvariable = m3) Entry__11.grid(row = 11, column = 3, padx
Entry__3.grid(row = 6, column = 1) = 20, pady = 8)
Entry__4 = Entry(Frame_2, font = Entry_1_2 = Entry(Frame_2, textvariable =
('arial',16), width = 5, textvariable = m4) var_1, font = ('arial',16), width = 5, state =
Entry__4.grid(row = 7, column = 1) 'readonly')
Entry__5 = Entry(Frame_2, font = Entry_1_2.grid(row = 4, column = 2, pady = 5)
('arial',16), width = 5, textvariable = m5) Entry_1_3 = Entry(Frame_2, textvariable =
Entry__5.grid(row = 8, column = 1) var_2, font = ('arial',16), width = 5, state =
Entry__6 = Entry(Frame_2, font = 'readonly')
('arial',14), width = 5, textvariable = gt, state = Entry_1_3.grid(row = 4, column = 3)
'readonly') Entry_2_2 = Entry(Frame_2, textvariable =
Entry__6.grid(row = 9, column = 1, pady = 8) var_1, font = ('arial',16), width = 5, state =
Entry__7 = Entry(Frame_2, font = 'readonly')
('arial',14,'bold'), width = 5, textvariable = per, Entry_2_2.grid(row = 5, column = 2, pady = 5)
state = 'readonly') Entry_2_3 = Entry(Frame_2, textvariable =
Entry__7.grid(row = 10, column = 1, pady = 8) var_2, font = ('arial',16), width = 5, state =
Entry__8 = Entry(Frame_2, font = 'readonly')
('arial',14,'bold'), width = 5, textvariable = cgpa, Entry_2_3.grid(row = 5, column = 3)
state = 'readonly') Entry_3_2 = Entry(Frame_2, textvariable =
Entry__8.grid(row = 10, column = 3, pady = 8) var_1, font = ('arial',16), width = 5, state =
Entry__9 = Entry(Frame_2, font = 'readonly')
('arial',14,'bold'), width = 5, textvariable = grade, Entry_3_2.grid(row = 6, column = 2, pady = 5)
state = 'readonly')
44
Entry_3_3 = Entry(Frame_2, textvariable = Btn_Save.grid(row = 5, column = 4, padx =
var_2, font = ('arial',16), width = 5, state = 50, pady = 6)
'readonly') Btn_Update = Button(Frame_2, text =
Entry_3_3.grid(row = 6, column = 3) 'UPDATE', font = ('arial',12,'bold'), width = 10,
Entry_4_2 = Entry(Frame_2, textvariable = command = Update)
var_1, font = ('arial',16), width = 5, state = Btn_Update.grid(row = 6, column = 4, padx
'readonly') = 50, pady = 6)
Entry_4_2.grid(row = 7, column = 2, pady = 5) Btn_Cancel = Button(Frame_2, text =
Entry_4_3 = Entry(Frame_2, textvariable = 'RESET', font = ('arial',12,'bold'), width = 10,
var_2, font = ('arial',16), width = 5, state = command = Reset)
'readonly') Btn_Cancel.grid(row = 7, column = 4, padx
Entry_4_3.grid(row = 7, column = 3) = 50, pady = 6)
Entry_5_2 = Entry(Frame_2, textvariable = Btn_Exit = Button(Frame_2, text = 'EXIT',
var_1, font = ('arial',16), width = 5, state = font = ('arial',12,'bold'), width = 10, command =
'readonly') Exit)
Entry_5_2.grid(row = 8, column = 2, pady = 5) Btn_Exit.grid(row = 8, column = 4, padx =
Entry_5_3 = Entry(Frame_2, textvariable = 50, pady = 6)
var_2, font = ('arial',16), width = 5, state = root.mainloop()
'readonly') ef search_result_marksheet(row):
Entry_5_3.grid(row = 8, column = 3) root = Tk()
Entry_6_3 = Entry(Frame_2, textvariable = root.title('Marksheet')
var_3, font = ('arial',16), width = 5, state = root.geometry('1350x750')
'readonly') root.config(bg = 'Navajo white')
Entry_6_3.grid(row = 9, column = 3) #===================Functions======
#=======Buttons================== def Compute():
Btn_Compute = Button(Frame_2, text = x1 = (m1.get()); x2 = (m2.get());
'COMPUTE', font = ('arial',12,'bold'), width = x3 = (m3.get()); x4 = (m4.get()); x5 =
10, command = Compute) (m5.get())
Btn_Compute.grid(row = 4, column = 4, tot = x1+x2+x3+x4+x5
padx = 50, pady = 6) gt.set(tot)
Btn_Save = Button(Frame_2, text = 'SAVE', Per = ((x1+x2+x3+x4+x5) * 100)/500
font = ('arial',12,'bold'), width = 10, command = per.set(Per)
Add) cg = (((x1+x2+x3+x4+x5) * 100)/500) / 9.5
cgpa.set(round(cg,1))
45
if (((x1+x2+x3+x4+x5) * 100)/500) <= 40: elif Per <= 60 and result != "FAIL":
grd = 'G' div.set('SECOND')
elif (((x1+x2+x3+x4+x5) * 100)/500) <= 50: elif Per <= 100:
grd = 'F' div.set('FIRST')
elif (((x1+x2+x3+x4+x5) * 100)/500) <= 60: #========Frame_1===========
grd = 'E' Frame_1 = LabelFrame(root, width =
elif (((x1+x2+x3+x4+x5) * 100)/500) <= 70: 1200, height = 400, font = ('arial',20,'bold'), bg =
grd = 'D' 'Navajo white', bd = 10, \
elif (((x1+x2+x3+x4+x5) * 100)/500) <= 80: text = 'Student Details', relief = 'ridge')
grd = 'C' Frame_1.grid(row = 1, column = 0, pady =
elif (((x1+x2+x3+x4+x5) * 100)/500) <= 90: 20, padx = 20)
grd = 'B' Name= StringVar(Frame_1,value=row[0]
else: [1])
grd = 'A' roll = StringVar(Frame_1,value=row[0][2])
grade.set(grd) fname = StringVar(Frame_1,value=row[0]
count = 0 [3])
if x1 < 33: mname = StringVar(Frame_1,value=row[0]
count = count + 1 [4])
if x2 < 33: DOB = StringVar(Frame_1,value=row[0]
count = count + 1 [5])
if x3 < 33: gender = StringVar(Frame_1,value=row[0]
count = count + 1 [6])
if x4 < 33: scl = StringVar(Frame_1,value=row[0][7])
count = count + 1 email = StringVar(Frame_1,value=row[0]
if x5 < 33: [8])
count = count + 1 #===Labels and Entries for Frame_1===
if (count == 0): Label_Name = Label(Frame_1, text =
result.set('PASS') 'Name', font = ('arial',15,'bold'), bg = 'Navajo
elif (count == 1 or count == 2 ): white')
result.set('SUPPLY') Label_Name.grid(row = 0, column = 0,
else: padx = 80)
result.set('FAIL') Entry_Name = Entry(Frame_1, font =
if Per <= 45 and result != "FAIL": ('arial',15), width = 25, textvariable = name)
div.set('THIRD')
46
Entry_Name.grid(row = 0, column = 1, Entry_DOB = Entry(Frame_1, font =
padx = 5, pady = 5) ('arial',15), width = 25, textvariable = DOB)
Label_Roll_no = Label(Frame_1, text = Entry_DOB.grid(row = 2, column = 1, padx
'Roll Number', font = ('arial',15,'bold'), bg = = 5, pady = 5)
'Navajo white') Label_Gender = Label(Frame_1, text =
Label_Roll_no.grid(row = 0, column = 3, 'Gender', font = ('arial',15,'bold'), bg = 'Navajo
padx = 80) white')
Entry_Roll_no = Entry(Frame_1, font = Label_Gender.grid(row = 2, column = 3,
('arial',15), width = 25, textvariable = roll) padx = 80)
Entry_Roll_no.grid(row = 0, column = 4, Entry_Gender = Entry(Frame_1, font =
padx = 40) ('arial',15), width = 25, textvariable = gender)
Label_Father_Name = Label(Frame_1, text Entry_Gender.grid(row = 2, column = 4,
= 'Father Name', font = ('arial',15,'bold'), bg = padx = 5, pady = 5)
'Navajo white') Label_School = Label(Frame_1, text =
Label_Father_Name.grid(row = 1, column = 'School Name', font = ('arial',15,'bold'), bg =
0, padx = 80) 'Navajo white')
Entry_Father_Name = Entry(Frame_1, font Label_School.grid(row = 3, column = 0,
= ('arial',15), width = 25, textvariable = fname) padx = 80)
Entry_Father_Name.grid(row = 1, column = Entry_School = Entry(Frame_1, font =
1, padx = 5, pady = 10) ('arial',15), width = 25, textvariable = scl)
Label_Mother_Name = Label(Frame_1, text Entry_School.grid(row = 3, column = 1,
= 'Mother Name', font = ('arial',15,'bold'), bg = padx = 5, pady = 5)
'Navajo white') Label_Email = Label(Frame_1, text = 'Email
Label_Mother_Name.grid(row = 1, column ID', font = ('arial',15,'bold'), bg = 'Navajo white')
= 3, padx = 80) Label_Email.grid(row = 3, column = 3,
Entry_Mother_Name = Entry(Frame_1, font padx = 80)
= ('arial',15), width = 25, textvariable = mname) Entry_Email = Entry(Frame_1, font =
Entry_Mother_Name.grid(row = 1, column ('arial',15), width = 25, textvariable = email)
= 4, padx = 5) Entry_Email.grid(row = 3, column = 4,
Label_DOB = Label(Frame_1, text = 'Date padx = 5, pady = 5)
of Birth', font = ('arial',15,'bold'), bg = 'Navajo #============Frame_2===============
white') Frame_2 = LabelFrame(root, width = 1200,
Label_DOB.grid(row = 2, column = 0, padx height = 400, font = ('arial',20,'bold'), bg =
= 80) 'Navajo white', bd = 10 \
47
, text = 'Grades Point Label_obt_Marks.grid(row = 3, column = 3,
Obtained', relief = 'ridge') padx = 20)
Frame_2.grid(row = 3, column = 0) Label_1 = Label(Frame_2, text =
m1 = DoubleVar(Frame_2,row[0][9]) 'MATHEMATICS', font = ('arial',14), bg =
m2 = DoubleVar(Frame_2,row[0][10]) 'Navajo white')
m3 = DoubleVar(Frame_2,row[0][11]) Label_1.grid(row = 4, column = 0)
m4 = DoubleVar(Frame_2,row[0][12]) Label_2 = Label(Frame_2, text =
m5 = DoubleVar(Frame_2,row[0][13]) 'PHYSICS', font = ('arial',14), bg = 'Navajo
gt = DoubleVar(Frame_2,row[0][14]) white')
per = DoubleVar(Frame_2,row[0][15]) Label_2.grid(row = 5, column = 0)
cgpa = DoubleVar(Frame_2,row[0][16]) Label_3 = Label(Frame_2, text =
grade = StringVar(Frame_2,row[0][17]) 'CHEMISTRY', font = ('arial',14), bg = 'Navajo
div = StringVar(Frame_2,row[0][18]) white')
result = StringVar(Frame_2,row[0][19]) Label_3.grid(row = 6, column = 0)
#======Labels of Frame_2======== Label_4 = Label(Frame_2, text = 'HINDI',
Label_Subject = Label(Frame_2, text = font = ('arial',14), bg = 'Navajo white')
'SUBJECT', font = ('arial',16,'bold'), bg = Label_4.grid(row = 7, column = 0)
'Navajo white') Label_5 = Label(Frame_2, text =
Label_Subject.grid(row = 3, column = 0, 'ENGLISH', font = ('arial',14), bg = 'Navajo
padx = 50, pady = 10) white')
Label_obt_Marks = Label(Frame_2, text = Label_5.grid(row = 8, column = 0)
'MARKS OBTAINED', font = ('arial',16,'bold'), Label_6 = Label(Frame_2, text = 'GRAND
bg = 'Navajo white') TOTAL', font = ('arial',16), bg = 'Navajo white')
Label_obt_Marks.grid(row = 3, column = 1, Label_6.grid(row = 9, column = 0)
padx = 20) Label_7 = Label(Frame_2, text =
Label_Subject = Label(Frame_2, text = 'PERCENTAGE', font = ('arial',16,'bold'), bg =
'PASSING MARKS', font = ('arial',16,'bold'), bg 'Navajo white')
= 'Navajo white') Label_7.grid(row = 10, column = 0)
Label_Subject.grid(row = 3, column = 2, Label_8 = Label(Frame_2, text = 'CGPA',
padx = 20) font = ('arial',16,'bold'), bg = 'Navajo white')
Label_obt_Marks = Label(Frame_2, text = Label_8.grid(row = 10, column = 2)
'TOTAL MARKS', font = ('arial',16,'bold'), bg = Label_9 = Label(Frame_2, text = 'GRADE',
'Navajo white') font = ('arial',16,'bold'), bg = 'Navajo white')
Label_9.grid(row = 10, column = 4)
48
Label_10 = Label(Frame_2, text = Entry__8 = Entry(Frame_2, font =
'DIVISION', font = ('arial',16,'bold'), bg = ('arial',14,'bold'), width = 5, textvariable = cgpa)
'Navajo white') Entry__8.grid(row = 10, column = 3, pady = 8)
Label_10.grid(row = 11, column = 0) Entry__9 = Entry(Frame_2, font =
Label_10 = Label(Frame_2, text = ('arial',14,'bold'), width = 5, textvariable = grade)
'RESULT', font = ('arial',16,'bold'), bg = 'Navajo Entry__9.grid(row = 10, column = 5, padx =
white') 20, pady = 8)
Label_10.grid(row = 11, column = 2) Entry__10 = Entry(Frame_2, font =
#=====Entries of Frame_2======== ('arial',14,'bold'), width = 8, textvariable = div)
var_1 = StringVar(Frame_2, value = '33') Entry__10.grid(row = 11, column = 1, padx
var_2 = StringVar(Frame_2, value = '100') = 20, pady = 8)
var_3 = StringVar(Frame_2, value = '500') Entry__11 = Entry(Frame_2, font =
Entry__1 = Entry(Frame_2, font = ('arial',14,'bold'), width = 7, textvariable = result)
('arial',16), width = 5, textvariable = m1) Entry__11.grid(row = 11, column = 3, padx
Entry__1.grid(row = 4, column = 1) = 20, pady = 8
Entry__2 = Entry(Frame_2, font = Entry_1_2 = Entry(Frame_2, textvariable =
('arial',16), width = 5, textvariable = m2) var_1, font = ('arial',16), width = 5)
Entry__2.grid(row = 5, column = 1) Entry_1_2.grid(row = 4, column = 2, pady = 5)
Entry__3 = Entry(Frame_2, font = Entry_1_3 = Entry(Frame_2, textvariable =
('arial',16), width = 5, textvariable = m3) var_2, font = ('arial',16), width = 5)
Entry__3.grid(row = 6, column = 1) Entry_1_3.grid(row = 4, column = 3)
Entry__4 = Entry(Frame_2, font = Entry_2_2 = Entry(Frame_2, textvariable =
('arial',16), width = 5, textvariable = m4) var_1, font = ('arial',16), width = 5)
Entry__4.grid(row = 7, column = 1) Entry_2_2.grid(row = 5, column = 2, pady = 5)
Entry__5 = Entry(Frame_2, font = Entry_2_3 = Entry(Frame_2, textvariable =
('arial',16), width = 5, textvariable = m5) var_2, font = ('arial',16), width = 5)
Entry__5.grid(row = 8, column = 1) Entry_2_3.grid(row = 5, column = 3)
Entry__6 = Entry(Frame_2, font = Entry_3_2 = Entry(Frame_2, textvariable =
('arial',14), width = 5, textvariable = gt) var_1, font = ('arial',16), width = 5)
Entry__6.grid(row = 9, column = 1, pady = 8) Entry_3_2.grid(row = 6, column = 2, pady = 5)
Entry__7 = Entry(Frame_2, font = Entry_3_3 = Entry(Frame_2, textvariable =
('arial',14,'bold'), width = 5, textvariable = per) var_2, font = ('arial',16), width = 5)
Entry__7.grid(row = 10, column = 1, pady = 8) Entry_3_3.grid(row = 6, column = 3)
49
Entry_4_2 = Entry(Frame_2, textvariable = self.master.geometry('1350x750')
var_1, font = ('arial',16), width = 5) self.master.config(bg = 'navajowhite'
Entry_4_2.grid(row = 7, column = 2, pady = 5) def information():
Entry_4_3 = Entry(Frame_2, textvariable = #========================Variables===
var_2, font = ('arial',16), width = 5) self.name = StringVar()
Entry_4_3.grid(row = 7, column = 3) self.fname = StringVar()
Entry_5_2 = Entry(Frame_2, textvariable = self.mname = StringVar()
var_1, font = ('arial',16), width = 5) self.address = StringVar()
Entry_5_2.grid(row = 8, column = 2, pady = 5) self.mobno = StringVar()
Entry_5_3 = Entry(Frame_2, textvariable = self.email = StringVar()
var_2, font = ('arial',16), width = 5) self.dob = StringVar()
Entry_5_3.grid(row = 8, column = 3) self.genderStringV
Entry_6_3 = Entry(Frame_2, textvariable = #=======Functions=============
var_3, font = ('arial',16), width = 5) def StudentRec(event):
Entry_6_3.grid(row = 9, column = 3) try:
#===========Buttons========== global selected_tuple
Btn_Exit = Button(Frame_2, text = 'EXIT', index = self.listbox.curselection()[0]
font = ('arial',12,'bold'), width = 10, command = selected_tuple = self.listbox.get(index)
root.destroy) self.Entry_name.delete(0, END)
Btn_Exit.grid(row = 8, column = 4, padx = self.Entry_name.insert(END, selected_tuple[1])
50, pady = 6 self.Entry_fname.delete(0, END)
root.mainloop( self.Entry_fname.insert(END, selected_tuple[2])
if __name__ == '__main__': self.Entry_mname.delete(0, END)
marksheet( self.Entry_mname.insert(END,
STUDENT INFORMATION: selected_tuple[3])
from tkinter import* self.Entry_address.delete(0, END)
import tkinter.messagebox self.Entry_address.insert(END,
import random selected_tuple[4])
import Std_info_BackEnd self.Entry_mobno.delete(0, END)
from tkinter import ttk self.Entry_mobno.insert(END,
class Std_info(): selected_tuple[5])
def __init__(self, master): self.Entry_emailID.delete(0, END)
self.master = master self.Entry_emailID.insert(END,
self.master.title('Student Information') selected_tuple[6])
50
self.Entry_dob.delete(0, END) Exit =
self.Entry_dob.insert(END, selected_tuple[7]) tkinter.messagebox.askyesno("Login System",
self.Entry_gender.delete(0, END) "Confirm if you want to Exit")
self.Entry_gender.insert(END, if Exit > 0:
selected_tuple[8]) self.master.destroy()
except IndexError: return
pass def Reset():
def Add(): self.name.set('')
if(len(self.name.get()) != 0): self.fname.set('')
Std_info_BackEnd.insert(self self.mname.set('')
.name.get(), self.fname.get(), self.mname.get(), self.address.set('')
self.address.get(), self.mobno.get(), self.mobno.set('')
self.email.get(), self.dob.get(), \ self.email.set('')
self.gender.get self.dob.set('')
()) self.gender.set('')
self.listbox.delete(0, END) self.listbox.delete(0, END)
self.listbox.insert(END, def Delete():
(self.name.get(), self.fname.get(), if(len(self.name.get()) != 0):
self.mname.get(), self.address.get(), Std_info_BackEnd.delete(sel
self.mobno.get(), self.email.get(), ected_tuple[0])
self.dob.get(), \ Reset()
self.gender.get Display()
())) def Search():
def Display(): self.listbox.delete(0, END)
self.listbox.delete(0, END) for row in
for row in Std_info_BackEnd.search(self.name.get(),
Std_info_BackEnd.view(): self.fname.get(), self.mname.get(),
self.listbox.insert(END, self.address.get(), self.mobno.get(),
row, str(' ')) self.email.get(), self.dob.get(),self.gender.get()):
self.listbox.insert(END,
row, str(' '))
def Exit(): def Update():
if(len(self.name.get()) != 0):
51
Std_info_BackEnd.delete(sel relief = 'ridge', bd =
ected_tuple[0]) 10, bg = 'navajowhite', text = 'STUDENT
if(len(self.name.get()) != 0): DATABASE')
Std_info_BackEnd.insert(self self.Frame_2.grid(row = 1, column
.name.get(), self.fname.get(), self.mname.get(), = 1, padx = 5)
self.address.get(), self.mobno.get(), self.Frame_3 =
self.email.get(), self.dob.get(), \ LabelFrame(self.master, width = 1200, height =
self.gender.get 100, font = ('arial',10,'bold'), \
() self.listbox.delete(0, END) bg = 'navajowhite',
self.listbox.insert(END, relief = 'ridge', bd = 13)
(self.name.get(), self.fname.get(), self.Frame_3.grid(row = 2, column
self.mname.get(), self.address.get(), = 0, pady = 10)
self.mobno.get(), self.email.get(), self.dob.get(), #=========Labels of Frame_1==========
self.gender.get())) self.Label_name = Label(self.Frame_1, text =
======Frames============ 'Name', font = ('arial',20,'bold'), bg =
self.Main_Frame = 'navajowhite')
LabelFrame(self.master, width = 1300, height = self.Label_name.grid(row = 0,
500, font = ('arial',20,'bold'), \ column = 0, sticky = W, padx = 20, pady = 10)
bg = self.Label_fname =
'navajowhite',bd = 15, relief = 'ridge') Label(self.Frame_1, text = 'Father Name', font =
self.Main_Frame.grid(row = 0, ('arial',20,'bold'), bg = 'navajowhite')
column = 0, padx = 10, pady = 20) self.Label_fname.grid(row = 1,
self.Frame_1 = column = 0, sticky = W, padx = 20)
LabelFrame(self.Main_Frame, width = 600, self.Label_mname =
height = 400, font = ('arial',15,'bold'), \ Label(self.Frame_1, text = 'Mother Name', font
relief = 'ridge', bd = = ('arial',20,'bold'), bg = 'navajowhite')
10, bg = 'navajowhite', text = 'STUDENT self.Label_mname.grid(row = 2,
INFORMATION ') column = 0, sticky = W, padx = 20)
self.Frame_1.grid(row = 1, column self.Label_address =
= 0, padx = 10) Label(self.Frame_1, text = 'Address', font =
self.Frame_2 = ('arial',20,'bold'), bg = 'navajowhite')
LabelFrame(self.Main_Frame, width = 750, self.Label_address.grid(row = 3,
height = 400, font = ('arial',15,'bold'), \ column = 0, sticky = W, padx = 20)
52
self.Label_mobno = self.Entry_mname.grid(row = 2,
Label(self.Frame_1, text = 'Mobile Number', column = 1, padx = 10, pady = 5)
font = ('arial',20,'bold'), bg = 'navajowhite') self.Entry_address =
self.Label_mobno.grid(row = 4, Entry(self.Frame_1, font = ('arial',17,'bold'),
column = 0, sticky = W, padx = 20) textvariable = self.address)
self.Label_emailID = self.Entry_address.grid(row = 3,
Label(self.Frame_1, text = 'Email ID', font = column = 1, padx = 10, pady = 5)
('arial',20,'bold'), bg = 'navajowhite') self.Entry_mobno =
self.Label_emailID.grid(row = 5, Entry(self.Frame_1, font = ('arial',17,'bold'),
column = 0, sticky = W, padx = 20) textvariable = self.mobno)
self.Label_dob = self.Entry_mobno.grid(row = 4,
Label(self.Frame_1, text = 'Date of Birth', font = column = 1, padx = 10, pady = 5)
('arial',20,'bold'), bg = 'navajowhite') self.Entry_emailID =
self.Label_dob.grid(row = 6, Entry(self.Frame_1, font = ('arial',17,'bold'),
column = 0, sticky = W, padx = 20) textvariable = self.email)
self.Label_gender = self.Entry_emailID.grid(row = 5,
Label(self.Frame_1, text = 'Gender', font = column = 1, padx = 10, pady = 5)
('arial',20,'bold'), bg = 'navajowhite') self.Entry_dob =
self.Label_gender.grid(row = 7, Entry(self.Frame_1, font = ('arial',17,'bold'),
column = 0, sticky = W, padx = 20, pady = 10) textvariable = self.dob)
====Entries of Frame_1================ self.Entry_dob.grid(row = 6,
self.Entry_name = column = 1, padx = 10, pady = 5)
Entry(self.Frame_1, font = ('arial',17,'bold'), self.Entry_gender =
textvariable = self.name) ttk.Combobox(self.Frame_1, values = ('
self.Entry_name.grid(row = 0, ','Male','Female','Others'),\
column = 1, padx = 10, pady = 5) font =
self.Entry_fname = ('arial',17,'bold'), textvariable = self.gender,
Entry(self.Frame_1, font = ('arial',17,'bold'), width = 19)
textvariable = self.fname) self.Entry_gender.grid(row = 7,
self.Entry_fname.grid(row = 1, column = 1, padx = 10, pady = 5)
column = 1, padx = 10, pady = 5) #=======Buttons of self.Frame_3========
self.Entry_mname = self.btnSave =
Entry(self.Frame_1, font = ('arial',17,'bold'), Button(self.Frame_3, text = 'SAVE', font =
textvariable = self.mname) ('arial',17,'bold'), width = 8, command = Add)
53
self.btnSave.grid(row = 0, column self.btnSearch.grid(row = 0,
= 0, padx = 10, pady = 10) column = 5, padx = 10, pady = 10)
self.btnDisplay = self.btnExit = Button(self.Frame_3,
Button(self.Frame_3, text = 'DISPLAY', font = text = 'EXIT', font = ('arial',17,'bold'), width = 8,
('arial',17,'bold'), width = 8, command = command = Exit)
Display) self.btnExit.grid(row = 0, column =
self.btnDisplay.grid(row = 0, 6, padx = 10, pady = 10)
column = 1, padx = 10, pady = 10) #========List Box and self.scrollbar==
self.btnReset = self.scrollbar = Scrollbar(self.Frame_2)
Button(self.Frame_3, text = 'RESET', font = self.scrollbar.grid(row = 0, column = 1,
('arial',17,'bold'), width = 8, command = Reset) sticky = 'ns')
self.btnReset.grid(row = 0, column self.listbox = Listbox(self.Frame_2,
= 2, padx = 10, pady = 10) width = 75, height = 20 , font = ('arial',12,'bold'))
self.btnUpdate = self.listbox.bind('<<ListboxSelect>
Button(self.Frame_3, text = 'UPDATE', font = >', StudentRec)
('arial',17,'bold'), width = 8, command = Update) self.listbox.grid(row = 0, column =
self.btnUpdate.grid(row = 0, 0)
column = 3, padx = 10, pady = 10) self.scrollbar.config(command =
self.btnDelete = self.listbox.yview)
Button(self.Frame_3, text = 'DELETE', font = information()
('arial',17,'bold'), width = 8, command = Delete) root = Tk()
self.btnDelete.grid(row = 0, column obj = Std_info(root)
= 4, padx = 10, pady = 10) root.mainloop()
self.btnSearch =
Button(self.Frame_3, text = 'SEARCH', font =
('arial',17,'bold'), width = 8, command = Search )
54
CHAPTER 8
OUTPUT SCREENSHOT
55
56
CHAPTER 9
57