You are on page 1of 61

THANTHAI PERIYAR GOVERNMENT INSTITUTE OF TECHNOLOGY

VELLORE-02

MINI PROJECT REPORT

STUDENT MANAGEMENT SYSTEM

Submitted by

DHANVANDHINI S

GAYATHRI R

KOMATHI R

RAMYA M

ROSHINI G

In partial fulfillment for the award of degree of


BACHELOR OF ENGINEERING

IN

COMPUTER SCIENCE AND ENGINEERING


ANNA UNIVERSITY,
CHENNAI-600025

i
THANTHAI PERIYAR GOVERNMENT INSTITUTE OF TECHNOLOGY
VELLORE-02

BONAFIDE CERTIFICATE

This is to certify that the mini project report entitled STUDENT


MANAGEMENT SYSTEM is a bonafide record of the project work done by
DHANVANDHINI S [513120104301], GAYATHRI R [513120104303],
KOMATHI R [513120104306], RAMYA M [513120104310], ROSHINI G
[513120104703] during the academic year 2022-2023 towards the partial
fulfillment of the requirement of the award of BE Degree in COMPUTER
SCIENCE AND ENGINEERING of Anna University, Chennai -600025.

Guided by,

Mrs.A.ELAVARASI Dr.RAHILA BILAL


Assistant professor (Ad hoc) Head of the Department /CSE
Department of CSE. TPGIT, Vellore-02
TPGIT, Vellore-02

Internal Examiner External Examiner

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 express our heartfelt gratitude towards Dr.M.Arularasu, Principal, Thanthai


Periyar Government Institute of Technology, Vellore for granting us permission to work
on this project.

We express our heartfelt gratitude towards Dr.Rahila Bilal, Head of the


Department /CSE, Thanthai Periyar Government Institute of Technology, Vellore for
granting us permission to work on this project.
We wish to place on record our sincere thanks to our Project Coordinator
Prof.N.Jagadeeswari, Assistant Professor/ CSE, TPGIT, Vellore, for her thoughtful
comments and help.

We wish to place on record our sincere thanks to our Project Guide


Mrs.A.Elavarasi, Assistant Professor(Ad hoc)/ CSE, TPGIT, Vellore, for her thoughtful
comments and help.

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

CHAPTER CONTENTS PAGE NO

ABSTRACT 1

1 INTRODUCTION 2

2 METHODOLOGY 3

3 BACKGROUND 6

3.1 PROBLEMS IN EXISTING SYSTEM

3.2 SOLUTION TO THESE PROBLEMS

4 SYSTEM ANALYSIS 7

4.1USER REQUIREMENTS

5 HARDWARE & SOFTWARE USED 8

6 TOOLS AND TECHNOLOGY USED 9

6.1UML DIAGRAMS

7 CODING 13

8 OUTPUT SCREENSHOT 55

9 CONCLUSION AND FUTURE WORK 57

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:

 It was limited to a single system.


 It was less user-friendly.
 It have a lots of manual work (Manual system does not mean that we are working with
pen and paper, it also include working on spread sheets and other simple software's)
 It requires more no of employees need to work.
 It was time consuming process.
 The present system was very less secure.
 It is unable to generate different kinds of report.

3.2 SOLUTION TO THESE PROBLEMS:

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.

 User friendliness is provided in the application with various controls.

 The system makes the overall project management much easier and flexible.

 It can be accessed over the Internet.

 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

4.1 USER REQUIREMENTS:

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

HARDWARE & SOFTWARE USED:


HARDWARE SPECIFICATION (MINIMUM):

Disc Space : 40 GB
PC Used : IBM Compatible
Processor : Pentium 3
Memory : 512 MB RAM
File System : 32 Bit

SOFTWARE SPECIFICATION:

Operating System (Server Side) : Windows XP.


Operating System (Client Side) : Windows XP.
Client End Language : HTML
Local Validation : python
Server Side Language : python
Database : My sql
Web Server : XAMPP server
Web Browser : Internet Explorer 8

8
CHAPTER 6

TOOLS AND TECHNOLOGY USED

6.1 UML DIAGRAMS

UML USECASE DIAGRAM

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.

UML CLASS DIAGRAM

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.

1. Veritcal dimension-represent time.

2. Horizontal dimension-represent different objects.

10
COLLABORATION DIAGRAM

A collaboration diagrams describes the interactions of two or more things in the


system that perform a behaviour that is more than any one of the things can do alone. For
instance, a car can be broken down into several thousand individual parts.

Collaboration diagrams show the same information as a sequence diagrams but


may be more difficult to read. In order to show time ordering, you must indicate a sequence
number and describe the message.

A collaboration diagram emphasizes the organization of objects, whereas a


sequence diagram emphasizes the time ordering of messages. A communication diagram will
show a path to indicate how one object is linked to another.

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

Deployment diagram shows the assignment of concrete software artifact to


computational nodes. It shows the deployment of software elements to the physical elements.
Deployment diagram are useful to communicate or deployment architecture.

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

MENU title_Label = Label(title_Frame, text =


'MENU', font = ('arial',30,'bold'), bg = 'navajo
from tkinter import*
white') title_Label.grid(row = 0, column = 0,
import random
padx = 150)
import os
#=======================FRAMES===
def __marksheet__():
Frame_1 = LabelFrame(root, font =
filename = 'Search_Page.py'
('arial',17,'bold'), width = 1000, height = 100, bg
os.system(filename)
= 'navajo white', relief = 'ridge', bd = 10)
os.system('notepad'+filename)
Frame_1.grid(row = 1, column = 0, padx = 280)
def __Library__():
Frame_2 = LabelFrame(root, font =
filename = 'Library_Frontend.py'
('arial',17,'bold'), width = 1000, height = 100, bg
os.system(filename)
= 'navajo white', relief = 'ridge', bd = 10)
os.system('notepad'+filename)
Frame_2.grid(row = 2, column = 0, padx =
def __information__():
130, pady = 7)
filename = 'Std_info_FrontEnd.py'
Frame_3 = LabelFrame(root, font =
os.system(filename)
('arial',17,'bold'), width = 1000, height = 100, bg
os.system('notepad'+filename)
= 'navajo white', relief = 'ridge', bd = 10)
def __FeeReport__():
Frame_3.grid(row = 3, column = 0, pady = 7)
filename = 'Fee_Frontend.py'
Frame_4 = LabelFrame(root, font =
os.system(filename)
('arial',17,'bold'), width = 1000, height = 100, bg
os.system('notepad'+filename)
= 'navajo white', relief = 'ridge', bd = 10)
def menu():
Frame_4.grid(row = 4, column = 0, pady = 7)
root = Tk()
#===========LABELS====
root.title('Menu')
Label_1 = Label(Frame_1, text =
root.geometry('1350x750')
'STUDENT PROFILE', font = ('arial',25,'bold'),
root.config(bg = 'navajo white')
bg = 'navajo white') Label_1.grid(row = 0,
title_Frame = LabelFrame(root, font =
column = 0, padx = 50, pady = 5)
('arial',50,'bold'), width = 1000, height = 100, bg
Label_2 = Label(Frame_2, text = 'FEE
= 'navajo white', relief = 'raise', bd =
REPORT', font = ('arial',25,'bold'), bg = 'navajo
13)title_Frame.grid(row = 0, column = 0, pady =
white')
50)

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

CONCLUSION AND FUTURE WORK

Student Management System can be used by educational institutions to


maintain their student records easily. Achieving this objective is difficult using the
manual system as the information is scattered, can be redundant, and collecting
relevant information may be very time-consuming. All these problems are solved
by this project.

This system helps in maintaining the information of pupils of the


organization. It can be easily accessed by the manager and kept safe for a long
period of time without any changes.

More functionality can be added depending upon user requirements and


specification. Such as login function, student are access the our details , student are
our internal marks, etc in future work.

57

You might also like