Download as pdf or txt
Download as pdf or txt
You are on page 1of 51

lOMoARcPSD|20590863

GA - 22 - "Student Management System (SMS) is a solution


tool that is designed to track,
Minor Project (Rajiv Gandhi Proudyogiki Vishwavidyalaya)

Studocu is not sponsored or endorsed by any college or university


Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)
lOMoARcPSD|20590863

A MINOR PROJECT REPORT


ON

STUDENT MANAGEMENT SYSTEM


MCA (306)
Submitted in the partial fulfillment
For the award of degree in

MASTER OF COMPUTER APPLICATION


TO
LAKSHMI NARAYAN COLLEGE OF TECHNOLOGY BHOPAL

Submitted by Under the guidance of


JYOTI KUMARI - 0103CA201061 Prof. ROHIT SINGH
GEETANJALI - 0103CA201051
PINKY RAGHUVANSHI - 0103CA201095
NAMIRA SAYYED - 0103CA201085

MASTER OF COMPUTER APPLICATION


LAKSHMI NARAIN COLLEGE OF TECHNOLOGY (MCA)
BHOPAL

JULY-DECEMBER,2021

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

CONTENTS

CHAPTER 1: INTRODUCTION OF PROJECT……………………………………………………………………………………………………………3-6

1.1. Objective……………………………………………………………….……..….4
1.2. Introduction…………………………………………………………….………5
1.3. Scope…………………………………………………………………….…………6

CHAPTER 2: HARDWARE & SOFTWARE REQUIREMENT…………….………………………………………………………………………..7-8

2.1. Hardware Requirement……………………………………………….…………..7


2.2.Software Requirement……………………………………………….…..………...8

CHAPTER 3: TECHNICAL DESCRIPTION………….…………………………………………………………………………………………….…..…9-10

3.1. Front End Description…………………………………………………............10

3.2 Back End Description……………………………………………………………….10

CHAPTER 4: SOFTWARE ANALYSIS & DESIGN……………………………………………………………………………………….………….11-18

4.1. Software Analysis……………………………………………………………...…..12

4.1.1. Software Development Life cycle…………………………….…12


4.1.2. Description of Used Model……………....………………………..13

4.2. Software Design……………………………………………..………………………15

4.2.1. Data Flow Diagram………………………………………………………15


4.2.1.1. Zero (0) Level Diagram………….………………………..………..16
4.2.1.2. One (1) Level Diagram……………………………………………...18
4.2.1.3. Two (2) Level Diagram…………………………………….………..18
4.2.2. ER DIAGRAM......……….………………………………………………….17

CHAPTER 5: DEVELOPMENT OF PROJECT…………………………………………………………………………………………….…..………19-34

5.1. Source Code………………………………………………………………….….….20-33


5.2. Snapshots of Output…………………………………………….…….………..34-35

CHAPTER 6: TESTING……………………………………..………………………………………………………………………………….…...…....36-39

CHAPTER 7: BENEFITS……………………………………………………………………………………………………………………………………..40-41

CHAPTER 8: LIMITATIONS…………………………………………………………………………………………………………………………….…42-43

CHAPTER 9: FUTURE ENHANCEMENT………………………………………...………………………………………………………….……….44-45

CHAPTER 10: CONCLUSION……………………………………………………...………………………………………………………………..……46-47

CHAPTER 11: REFERENCES………………………………………………………...………………………………………………………………..….48-49


Page | 1

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

ABSTRACT

Our project Student Management system includes registration of students, storing their
details into the system i.e. computerized the process. Our software has the facility to give a
unique id for every student and stores the details of every student. It includes a search
facility also –search by name, contact and roll number .The data can be retrieved easily. The
interface is very User-friendly. The data are well protected for personal use and makes the
data processing very fast.

Page | 2

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

CHAPTER 1

INTRODUCTION

Page | 3

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

1.1 OBJECTIVE

Student Management System is software which is helpful for college as well as the school
authorities. In the current system all the activities are done manually. It is very time
consuming and costly. Our Student Management System deals with the various activities
related to managing student records. Our Objective is computerizing the process of student
records management.

Page | 4

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

1.2 INTRODUCTION

This project is aimed to automate the student management system. This project is
developed mainly to administrate student records.
The purpose of the project entitled as STUDENT MANAGEMENT SYSTEM is to computerize
the Front Office Management of student records in colleges, schools and
coaching’s, to develop software which is user friendly, simple, fast, and cost – effective.
Traditionally, it was done manually.
The main function of the system is to register and store student details, retrieve these
details as and when required, and also to manipulate these details meaningfully.

Page | 5

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

1.3 SCOPE

The proposed software product is the Student Management System. The system will be
used in any School, College and coaching institute to get the information from the student
and the storing that data for future usage.
The current system in use is a paper-based system. It is too slow and cannot provide
updated lists of students within a reasonable timeframe. The intentions of the system are
to reduce over-time pay and increase the productivity. Requirements statements in this
document are both functional and non-functional.

Page | 6

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

CHAPTER 2
HARDWARE & SOFTWARE
REQUIREMENT

Page | 7

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

SYSTEM REQUIREMENT

2.1 HARDWARE REQUIREMENT

 Pentium IV processor or higher


 128 MB RAM(or above)
 40 GB or more HARDDISK
 Mouse/Keyboard

2.2 SOFTWARE REQUIREMENT

 OS-Windows 7/8/10
 Python Interpreter
 Pycharm IDE or VS code
 Xampp (For Mysql) or Mysql Workbench

Page | 8

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

CHAPTER 3

TECHNICAL DESCRIPTION

Page | 9

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

3.1 FRONT END DESCRIPTION


LANGUAGE :- Python
Python is a general-purpose interpreted, interactive, object-oriented, and high-level
programming language. It was created by Guido van Rossum during 1985- 1990.It
was mainly developed for emphasis on code readability, and its syntax allows
programmers to express concept in fewer lines of code.

Python is a programming language that lets you work quickly and integrate systems
more efficiently.

Python is dynamically-typed and garbage-collected. It supports


multiple programming paradigms, including structured object-oriented and functional
programming. It is often described as a "batteries included" language due to its
comprehensive standard library.

TKINTER
Tkinter is a Python binding to the Tk GUI toolkit. It is the standard Python interface
to the Tk GUI toolkit, and is Python's de facto standard GUI. Tkinter is included with
standard GNU/Linux, Microsoft Window and mac OS X installs of Python.
The name Tkinter comes from Tk interface. Tkinter was written by Fredrik Lundh.

3.2 BACK END DESCRIPTION


MYSQL
MySQL is a relational database management system based on SQL – Structured
Query Language. ... The most common use for mySQL however, is for the purpose
of a web database. It can be used to store anything from a single record of
information to an entire inventory of available products for an online store.

 MySQL was first released in 1995


 MySQL is developed, distributed, and supported by Oracle Corporation
 MySQL is named after co-founder Monty Widenius's daughter: My

Page | 10

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

CHAPTER 4
SOFTWARE ANALYSIS &
DESIGN

Page | 11

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

4.1 SOFTWARE ANALYSIS

4.1.1 Software Development Life Cycle

Requirements

Design

Implementation

Fig. SDLC
Verification

Maintenance

Fig :- SDLC

Page | 12

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

4.1.2 DESCRIPTION OF USED MODEL


The Waterfall Model

The Waterfall model is a sequential software development process, in which progress is


seen as flowing steadily downwards (like a waterfall) through the phases of Conception,
Initiation, Analysis, Design (validation), Construction, Testing and Maintenance.

To follow the waterfall model, one proceeds from one phase to the next in a sequential
manner. For example, one first completes requirements specification, which after sign-off
is considered "set in stone." When the requirements are fully completed, one proceeds to
design. The software in question is designed and a blueprint is drawn for implementers
(coders) to follow — this design should be a plan for implementing the requirements given.
When the design is fully completed, an implementation of that design is made by coders.
Towards the later stages of this implementation phase, separate software components
produced are combined to introduce new functionality and reduced risk through the
removal of errors.

Thus the waterfall model maintains that one should move to a phase only when it’s
proceeding phase is completed and perfected. However, there are various modified
waterfall models (including Royce's final model) that may include slight or major variations
upon this process .Time spent early in the software production cycle can lead to greater
economy at later stages. It has been shown that a bug found in the early stages (such as
requirements specification or design) is cheaper in terms of money, effort and time, to fix
than the same bug found later on in the process. To take an extreme example, if a program
design turns out to be impossible to implement, it is easier to fix the design at the design
stage than to realize months later, when program components are being integrated, that all
the work done so far has to be scrapped because of a broken design.

This is the central idea behind the waterfall model - time spent early on making sure that
requirements and design are absolutely correct will save you much time and effort later.
Thus, the thinking of those who follow the waterfall process goes, one should make sure
that each phase is 100% complete and absolutely correct before proceeding to the next
phase of program creation. Program requirements should be set in stone before design is
started (otherwise work put into a design based on incorrect requirements is wasted).

Page | 13

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

The program's design should be perfect before people begin work on implementing the
design (otherwise they are implementing the wrong design and their work is wasted), etc.

A further argument for the waterfall model is that it places emphasis on documentation
(such as requirements documents and design documents) as well as source code. In less
designed and documented methodologies, should team members leave, much knowledge
is lost and may be difficult for a project to recover from. Should a fully working design
document be present (as is the intent of Big Design Up Front and the waterfall model) new
team members or even entirely new teams should be able to familiarize themselves by
reading the documents.

Basic principles of the waterfall model are:

Project is divided into sequential phases, with some overlap and splash back acceptable
between phases.

Emphasis is on planning, time schedules, target dates, budgets and implementation of an


entire system at one time.

Tight control is maintained over the life of the project through the use of extensive written
documentation, as well as through formal reviews and approval/signoff by the user and
information technology management occurring at the end of most phases before beginning
the next phase.

Page | 14

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

4.2 SOFTWARE DESIGN


4.2.1 Data Flow Diagram
The DFD takes an input – process – output view of a system. That is, data objects flow into
the software, are transformed by the processing elements, and resultant data objects flow
out of the software. Data objects are represented by labeled arrows and transformations
are represented by circles. The DFD is represented by in a hierarchical fashion. The first DFD
represents the system as a whole. Subsequent data flow diagrams provide increasing
details with each subsequent level.

The data flow diagram enables the software engineer to develop models of the information
domain and functional domain at the same time. As the DFD refined in to levels of greater
detail, the analyst perform an implicit functional decomposition of the system. Also DFD
refinement results in a corresponding refinement of data as it moves through the processes
that embody the application.

Page | 15

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

4.2.1.1 Zero (0) Level Diagram

Level-0

Admin Manage Student

FIG : - Zero (0) Level Diagram

Page | 16

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

4.2.2 ER DIAGRAM

Std.
Class Division
Address Email Id Name

Roll no
Teacher

Manages Student Mob. No.


Admin

Gender

Department

Std. Id
Course

Semester

Year

Fig. ER DIAGRAM

Page | 17

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

USE CASE DIAGRAM

ADD STUDENT RECORD

UPDATE STUDENT
RECORD

DELETE STUDENT
RECORD

ADMIN SYSTEM
SEARCH RECORD

USE CASE DIAGRAM BETWEEN ADMIN and SYSTEM

Page | 18

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

CHAPTER 5
DEVELOPMENT

Page | 19

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

5.1 SOURCE CODE

Page | 20

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

SOURCE CODE

from tkinter import *


from tkinter import ttk
from tkinter.font import Font
from PIL import Image,ImageTk #pip install pillow
import mysql.connector
from tkinter import messagebox
from tkinter import filedialog
import os

class Student:
def __init__(self,root):
self.root=root
self.root.geometry("1530x760+0+0")
self.root.title("student management system")

#variables
self.var_dep=StringVar()
self.var_course=StringVar()
self.var_year=StringVar()
self.var_semester=StringVar()
self.va_std_id=StringVar()
self.var_std_name=StringVar()
self.var_div=StringVar()
self.var_roll=StringVar()
self.var_gender=StringVar()
self.var_dob=StringVar()
self.var_email=StringVar()
self.var_phone=StringVar()
self.var_address=StringVar()
self.var_teacher=StringVar()

#1st image...............
img=Image.open(r"F:\STUDENT MANAGEMENT SYSTEM\pic\image2.jpeg")
img=img.resize((683,160),Image.ANTIALIAS)
self.photoimg=ImageTk.PhotoImage(img)

self.btn_1=Button(self.root,command=self.open_img,image=self.photoimg,cursor="hand2")

self.btn_1.place(x=0,y=0,width=683,height=160)

Page | 21

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

#2nd image....................
img_2=Image.open(r"D:\STUDENT MANAGEMENT SYSTEM\pic\ggg.png")
img_2=img_2.resize((683,160),Image.ANTIALIAS)
self.photoimg_2=ImageTk.PhotoImage(img_2)

self.btn_2=Button(self.root,command=self.open_img_2,image=self.photoimg_2,cursor="hand2")
self.btn_2.place(x=683,y=0,width=683,height=160)

#bg img
img_3=Image.open(r"F:\STUDENT MANAGEMENT SYSTEM\pic\rrr.jpg")
img_3=img_3.resize((1366,608),Image.ANTIALIAS)
self.photoimg_3=ImageTk.PhotoImage(img_3)

bg_lbl=Label(self.root,image=self.photoimg_3,bd=2,relief=RIDGE)
bg_lbl.place(x=0,y=160,width=1366,height=608)

lbl_title=Label(bg_lbl,text="STUDENT MANAGEMENT SYSTEM SOFTWARE",font=("times new


roman",30,"bold"),fg="blue",bg="white")
lbl_title.place(x=0,y=0,width=1366,height=40)

##################### Exit button.....................................#

btn_exit=Button(lbl_title,text="Exit",command=self.exit_screen,font=("arial",12,"bold"),width=70,bg="red",fg="black")
btn_exit.place(x=1250,y=0,width=70,height=35)

#............................manage Frame.................................#
manage_frame=Frame(bg_lbl,bd=2,relief=RIDGE,bg="white")
manage_frame.place(x=13,y=45,width=1335,height=500)

################################ left frame #################################

DataLeftFrame=LabelFrame(manage_frame,bd=4,relief=RIDGE,padx=2,text="Student Information",font=("times new


roman",14,"bold"),fg="red",bg="white")

DataLeftFrame.place(x=5,y=0,width=600,height=486)

#leftframe img

img_4=Image.open(r"F:\STUDENT MANAGEMENT SYSTEM\pic\img1.jpg")

img_4=img_4.resize((650,100),Image.ANTIALIAS)

self.photoimg_4=ImageTk.PhotoImage(img_4)

my_img=Label(DataLeftFrame,image=self.photoimg_4,bd=2,relief=RIDGE)

Page | 22

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

my_img.place(x=0,y=0,width=590,height=130)

#current course labelframe information


std_lbl_info_Frame=LabelFrame(DataLeftFrame,bd=4,relief=RIDGE,padx=2,text="Current Course Information",font=("times
new roman",12,"bold"),fg="green",bg="white")
std_lbl_info_Frame.place(x=0,y=100,width=590,height=115)

#Labels and combobox current course

#Department
lbl_dep=Label(std_lbl_info_Frame,text="Department:",font=("arial",12,"bold",),bg="white")
lbl_dep.grid(row=0,column=0,padx=2,pady=10,sticky=W)

combo_dep=ttk.Combobox(std_lbl_info_Frame,textvariable=self.var_dep,font=("arial",10,"bold"),width=17,state="readonly")
combo_dep["value"]=("Select Department","Computer Science","IT","Art","Science","Biology")
combo_dep.current(0)
combo_dep.grid(row=0,column=1,padx=2,pady=10,sticky=W)

#Course
course_std=Label(std_lbl_info_Frame,text="Courses:",font=("arial",12,"bold",),bg="white")
course_std.grid(row=0,column=2,padx=2,pady=10,sticky=W)

com_txtcourse_std=ttk.Combobox(std_lbl_info_Frame,textvariable=self.var_course,font=("arial",10,"bold"),width=17,state="re
adonly")
com_txtcourse_std['value']=("Select Course","MCA","BCA","BE","B.Sc","B.A","B.com")
com_txtcourse_std.current(0)
com_txtcourse_std.grid(row=0,column=3,padx=2,pady=10,sticky=W)

#year ………………………………………………………..
current_year=Label(std_lbl_info_Frame,text="Year:",font=("arial",12,"bold",),bg="white")
current_year.grid(row=1,column=0,padx=2,pady=10,sticky=W)

com_txt_current_year=ttk.Combobox(std_lbl_info_Frame,textvariable=self.var_year,font=("arial",10,"bold"),width=17,state="re
adonly")
com_txt_current_year['value']=("Select Year","2019-2020","2020-2021","2021-2022","2022-2023","2023-2024")
com_txt_current_year.current(0)
com_txt_current_year.grid(row=1,column=1,padx=2,pady=10,sticky=W)

#semester

lebel_sem=Label(std_lbl_info_Frame,text="Semester:",font=("arial",12,"bold",),bg="white")
lebel_sem.grid(row=1,column=2,padx=2,pady=10,sticky=W)

Page | 23

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

comsem=ttk.Combobox(std_lbl_info_Frame,textvariable=self.var_semester,font=("arial",10,"bold"),width=17,state="readonly")

comsem['value']=("Select Semester","5th-sem","4th-sem","3ird-sem","2nd-sem","1st-sem")
comsem.current(0)
comsem.grid(row=1,column=3,padx=2,pady=10,sticky=W)

#student class label frame information


std_lbl_class_Frame=LabelFrame(DataLeftFrame,bd=4,relief=RIDGE,padx=2,text="Class Course Information",font=("times
new roman",12,"bold"),fg="green",bg="white")
std_lbl_class_Frame.place(x=0,y=215,width=590,height=205)

#Labels , entry and combobox class course information

#student id
lbl_id=Label(std_lbl_class_Frame,text="StudentID No:",font=("arial",12,"bold",),bg="white")
lbl_id.grid(row=0,column=0,padx=2,pady=5,sticky=W)

id_entery=ttk.Entry(std_lbl_class_Frame,textvariable=self.va_std_id,font=("arial",10,"bold"),width=20)
id_entery.grid(row=0,column=1,sticky=W,padx=2,pady=5)

#student name
lbl_name=Label(std_lbl_class_Frame,text="Student Name:",font=("arial",12,"bold",),bg="white")
lbl_name.grid(row=0,column=2,padx=2,pady=5,sticky=W)

text_name=ttk.Entry(std_lbl_class_Frame,textvariable=self.var_std_name,font=("arial",10,"bold"),width=20)
text_name.grid(row=0,column=3,sticky=W,padx=2,pady=5)

#class Division
lbl_div=Label(std_lbl_class_Frame,text="Class Division:",font=("arial",12,"bold",),bg="white")
lbl_div.grid(row=1,column=0,padx=2,pady=3,sticky=W)

com_div=ttk.Combobox(std_lbl_class_Frame,textvariable=self.var_div,font=("arial",10,"bold"),width=17,state="readonly")
com_div['value']=("Select Division","A","B","C","D")
com_div.current(0)
com_div.grid(row=1,column=1,padx=2,pady=3,sticky=W)

#roll no.
lbl_roll=Label(std_lbl_class_Frame,text="Roll No:",font=("arial",12,"bold",),bg="white")
lbl_roll.grid(row=1,column=2,padx=2,pady=5,sticky=W)

text_roll=ttk.Entry(std_lbl_class_Frame,textvariable=self.var_roll,font=("arial",10,"bold"),width=20)
text_roll.grid(row=1,column=3,sticky=W,padx=2,pady=5)

#gender
lbl_gen=Label(std_lbl_class_Frame,text="Gender:",font=("arial",12,"bold",),bg="white")

lbl_gen.grid(row=2,column=0,padx=2,pady=3,sticky=W)

Page | 24

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

com_gen=ttk.Combobox(std_lbl_class_Frame,textvariable=self.var_gender,font=("arial",10,"bold"),width=17,state="readonly")

com_gen['value']=("Select Gender","Male","Female","others")

com_gen.current(0)
com_gen.grid(row=2,column=1,padx=2,pady=3,sticky=W)

#dob
lbl_dob=Label(std_lbl_class_Frame,text="DOB:",font=("arial",12,"bold",),bg="white")
lbl_dob.grid(row=2,column=2,padx=2,pady=5,sticky=W)

text_std_dob=ttk.Entry(std_lbl_class_Frame,textvariable=self.var_dob,font=("arial",10,"bold"),width=20)
text_std_dob.grid(row=2,column=3,sticky=W,padx=2,pady=5)

#email
lbl_eml=Label(std_lbl_class_Frame,text="Email:",font=("arial",12,"bold",),bg="white")
lbl_eml.grid(row=3,column=0,padx=2,pady=5,sticky=W)

text_std_eml=ttk.Entry(std_lbl_class_Frame,textvariable=self.var_email,font=("arial",10,"bold"),width=20)
text_std_eml.grid(row=3,column=1,sticky=W,padx=2,pady=5)

#mobile no
lbl_mob=Label(std_lbl_class_Frame,text="Mobile No:",font=("arial",12,"bold",),bg="white")
lbl_mob.grid(row=3,column=2,padx=2,pady=5,sticky=W)

text_std_mob=ttk.Entry(std_lbl_class_Frame,textvariable=self.var_phone,font=("arial",10,"bold"),width=20)
text_std_mob.grid(row=3,column=3,sticky=W,padx=2,pady=5)

#address
lbl_add=Label(std_lbl_class_Frame,text="Address:",font=("arial",12,"bold",),bg="white")
lbl_add.grid(row=4,column=0,padx=2,pady=5,sticky=W)

text_std_add=ttk.Entry(std_lbl_class_Frame,textvariable=self.var_address,font=("arial",10,"bold"),width=20)

text_std_add.grid(row=4,column=1,sticky=W,padx=2,pady=5)

# teacher

lbl_add=Label(std_lbl_class_Frame,text="Teacher:",font=("arial",12,"bold",),bg="white")

lbl_add.grid(row=4,column=2,padx=2,pady=5,sticky=W)

Page | 25

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

com_gen=ttk.Combobox(std_lbl_class_Frame,textvariable=self.var_teacher,font=("arial",10,"bold"),width=17,state="readonly")

com_gen['value']=("Select teacher","Mukesh Kumar","Ranjan Gupta","Rajpal Singh","Kusum Gupta","Priya Kumari")


com_gen.current(0)
com_gen.grid(row=4,column=3,padx=2,pady=3,sticky=W)

##################### button Frame #########################

btn_frame=Frame(DataLeftFrame,bd=2,relief=RIDGE,bg="white")
btn_frame.place(x=0,y=422,width=590,height=34)

#save
btn_save=Button(btn_frame,text="Save",command=self.add_data,font=("arial",11,"bold"),width=15,bg="blue",fg="white")
btn_save.grid(row=0,column=0,padx=1)

#update

btn_update=Button(btn_frame,text="Update",command=self.update_data,font=("arial",11,"bold"),width=15,bg="blue",fg="whi
te")
btn_update.grid(row=0,column=1,padx=1)

#delete

btn_delete=Button(btn_frame,text="Delete",command=self.delete_data,font=("arial",11,"bold"),width=15,bg="blue",fg="white
")
btn_delete.grid(row=0,column=2,padx=1)

#add new/reset
btn_add=Button(btn_frame,text="Reset",command=self.reset_data,font=("arial",11,"bold"),width=15,bg="blue",fg="white")
btn_add.grid(row=0,column=3,padx=1)

########## right frame ##################################

DataRightFrame=LabelFrame(manage_frame,bd=4,relief=RIDGE,padx=2,text="Student Records",font=("times new


roman",14,"bold"),fg="red",bg="white")

DataRightFrame.place(x=610,y=0,width=715,height=486)

# img1

Page | 26

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

img_5=Image.open(r"F:\STUDENT MANAGEMENT SYSTEM\pic\leftframe.jpeg")

img_5=img_5.resize((700,140),Image.ANTIALIAS)

self.photoimg_5=ImageTk.PhotoImage(img_5)

my_img=Label(DataRightFrame,image=self.photoimg_5,bd=2,relief=RIDGE)
my_img.place(x=0,y=0,width=705,height=130)

#search frame
Search_Frame=LabelFrame(manage_frame,bd=4,relief=RIDGE,padx=2,text="Search Student Records",font=("times new
roman",12,"bold"),fg="green",bg="white")
Search_Frame.place(x=615,y=155,width=705,height=60)

search_by=Label(Search_Frame,font=("arial",11,"bold"),text="Search By:",fg="red",bg="white")
search_by.grid(row=0,column=0,sticky=W,padx=2,pady=2)

### search combo box ............

self.var_com_search=StringVar()
com_txt_search=ttk.Combobox(Search_Frame,textvariable=self.var_com_search,
font=("arial",10,"bold"),width=17,state="readonly")
com_txt_search['value']=("Select Option","Roll","Phone","Student_id","Name")
com_txt_search.current(0)
com_txt_search.grid(row=0,column=1,padx=2,pady=3,sticky=W)

self.var_search=StringVar()
text_search=ttk.Entry(Search_Frame,textvariable=self.var_search,font=("arial",10,"bold"),width=20)
text_search.grid(row=0,column=2,sticky=W,padx=5)

######### search button.................

btn_search=Button(Search_Frame,command=self.search_data,text="Search",font=("arial",11,"bold"),width=15,bg="blue",fg="w
hite")
btn_search.grid(row=0,column=3,padx=3,pady=1)

############# show all button...................

btn_search=Button(Search_Frame,command=self.fetch_data,text="Show
all",font=("arial",11,"bold"),width=15,bg="blue",fg="white")
btn_search.grid(row=0,column=4,padx=3,pady=1)

################################ Student table records and scroll bar ##############################

table_frame=Frame(DataRightFrame,bd=4,relief=RIDGE)
table_frame.place(x=0,y=190,width=705,height=268)

scroll_x=ttk.Scrollbar(table_frame,orient=HORIZONTAL)
scroll_y=ttk.Scrollbar(table_frame,orient=VERTICAL)
Page | 27

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

self.student_table=ttk.Treeview(table_frame,column=("dep","course","year","sem","id","name","div","roll","gender","dob","em
ail","phone","address","teacher"),xscrollcommand=scroll_x.set,yscrollcommand=scroll_y.set)

scroll_x.pack(side=BOTTOM,fill=X)
scroll_y.pack(side=RIGHT,fill=Y)

scroll_x.config(command=self.student_table.xview)
scroll_y.config(command=self.student_table.yview)

self.student_table.heading("dep",text="Department")
self.student_table.heading("course",text="Course")
self.student_table.heading("year",text="Year")
self.student_table.heading("sem",text="Semester")
self.student_table.heading("id",text="Student ID")
self.student_table.heading("name",text="Student Name")
self.student_table.heading("div",text="Class Div")
self.student_table.heading("roll",text="Roll No")
self.student_table.heading("gender",text="Gender")
self.student_table.heading("dob",text="DOB")
self.student_table.heading("email",text="Email")
self.student_table.heading("phone",text="Phone No")
self.student_table.heading("address",text="Address")
self.student_table.heading("teacher",text="Teacher")

self.student_table["show"]="headings"

self.student_table.column("dep",width=100)
self.student_table.column("course",width=100)
self.student_table.column("year",width=100)
self.student_table.column("sem",width=100)
self.student_table.column("id",width=100)
self.student_table.column("name",width=100)
self.student_table.column("div",width=100)
self.student_table.column("roll",width=100)
self.student_table.column("gender",width=100)
self.student_table.column("dob",width=100)
self.student_table.column("email",width=100)
self.student_table.column("phone",width=100)
self.student_table.column("address",width=100)
self.student_table.column("teacher",width=100)

self.student_table.pack(fill=BOTH,expand=1)
self.student_table.bind("<ButtonRelease>",self.get_cursor)
self.fetch_data()

Page | 28

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

########## save data............................... data base ..........................

def add_data(self):
if(self.var_dep.get()==""or self.var_email.get()==""or self.va_std_id.get()==""):
messagebox.showerror("Error","All Fields Are required")
else:
try:
conn=mysql.connector.connect(host="localhost",username="root",password="root123",database="studentdatabase")
my_cursur=conn.cursor()
my_cursur.execute("insert into student values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",(
self.var_dep.get(),
self.var_course.get(),
self.var_year.get(),
self.var_semester.get(),
self.va_std_id.get(),
self.var_std_name.get(),
self.var_div.get(),
self.var_roll.get(),
self.var_gender.get(),
self.var_dob.get(),
self.var_email.get(),
self.var_phone.get(),
self.var_address.get(),
self.var_teacher.get()

))

conn.commit()
self.fetch_data()
conn.close()
messagebox.showinfo("Success","Student has been added!",parent=self.root)
except Exception as es:
messagebox.showerror("Error",f"Due To:{str(es)}",parent=self.root)

# fetch function

def fetch_data(self):
conn=mysql.connector.connect(host="localhost",username="root",password="root123",database="studentdatabase")
my_cursur=conn.cursor()
my_cursur.execute("select * from student")
data=my_cursur.fetchall()
if len(data)!=0:
self.student_table.delete(*self.student_table.get_children())
for i in data:
self.student_table.insert("",END,values=i)
conn.commit()
conn.close()

# get cursor

def get_cursor(self,event=""):
cursor_row=self.student_table.focus()
Page | 29

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

content=self.student_table.item(cursor_row)
data=content["values"]

self.var_dep.set(data[0])
self.var_course.set(data[1])
self.var_year.set(data[2])
self.var_semester.set(data[3])
self.va_std_id.set(data[4])
self.var_std_name.set(data[5])
self.var_div.set(data[6])
self.var_roll.set(data[7])
self.var_gender.set(data[8])
self.var_dob.set(data[9])
self.var_email.set(data[10])
self.var_phone.set(data[11])
self.var_address.set(data[12])
self.var_teacher.set(data[13])

################ Update data..........................

def update_data(self):
if(self.var_dep.get()=="" or self.var_email.get()=="" or self.va_std_id.get()==""):
messagebox.showerror("Error","All Fields Are required")
else:
try:
update=messagebox.askyesno("Update","Are you sure update this student data",parent=self.root)
if update>0:
conn=mysql.connector.connect(host="localhost",username="root",password="root123",database="studentdatabase")
my_cursur=conn.cursor()
my_cursur.execute("update student set
Dep=%s,Course=%s,Year=%s,Semester=%s,Name=%s,Division=%s,Roll=%s,Gender=%s,Dob=%s,Email=%s,Phone=%s,Address=%s,
Teacher=%s where Student_id=%s",(
self.var_dep.get(),
self.var_course.get(),
self.var_year.get(),
self.var_semester.get(),

self.var_std_name.get(),
self.var_div.get(),
self.var_roll.get(),
self.var_gender.get(),
self.var_dob.get(),
self.var_email.get(),
self.var_phone.get(),
self.var_address.get(),
self.var_teacher.get(),
self.va_std_id.get()

))

else:
if not update:
return
Page | 30

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

conn.commit()
self.fetch_data()
conn.close()

messagebox.showinfo("Success","Student successfully updated",parent=self.root)


except Exception as es:
messagebox.showerror("Error",f"Due To:{str(es)}",parent=self.root)

############# delete data ....................................

def delete_data(self):
if self.va_std_id.get()=="":

messagebox.showerror("Error","All Fields Are required")

else:

try:

Delete=messagebox.askyesno("Delete","Are you sure delete this student")

if Delete>0:

conn=mysql.connector.connect(host="localhost",username="root",password="root123",database="studentdatabase")

my_cursur=conn.cursor()

sql="delete from student where Student_id=%s"

value=(self.va_std_id.get(),)

my_cursur.execute(sql,value)

else:

if not Delete:

return

conn.commit()

self.fetch_data()

conn.close()

messagebox.showinfo("Delete","Your Student has been Deleted",parent=self.root)

except Exception as es:

messagebox.showerror("Error",f"Due To:{str(es)}",parent=self.root)
Page | 31

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

############## reset data ......................................

def reset_data(self):
self.var_dep.set("Select Department")
self.var_course.set("Select Course")
self.var_year.set("Select Year")
self.var_semester.set("Select Semester")
self.va_std_id.set("")
self.var_std_name.set("")
self.var_div.set("Select Division")
self.var_roll.set("")
self.var_gender.set("")
self.var_dob.set("")
self.var_email.set("")
self.var_phone.set("")
self.var_address.set("")
self.var_teacher.set("")

######### search data................

def search_data(self):
if self.var_com_search.get()=="" or self.var_search.get()=="":
messagebox.showerror("Error","Pease Select Option")
else:
try:
conn=mysql.connector.connect(host="localhost",username="root",password="root123",database="studentdatabase")
my_cursur=conn.cursor()
my_cursur.execute("select * from student where " +str(self.var_com_search.get())+" LIKE
'%"+str(self.var_search.get())+"%'")
rows=my_cursur.fetchall()
if len(rows)!=0:
self.student_table.delete(*self.student_table.get_children())
for i in rows:
self.student_table.insert("",END,values=i)
conn.commit()
conn.close()
except Exception as es:
messagebox.showerror("Error",f"Due To:{str(es)}",parent=self.root)

################ Open Image ...............

def open_img(self):
fln=filedialog.askopenfilename(initialdir=os.getcwd(),title="Open Images",filetypes=(("JPG File","*.jpg"),("PNG
File","*.png"),("ALL Files","*.*")))
img=Image.open(fln)
img_browse=img.resize((683,160),Image.ANTIALIAS)

Page | 32

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

self.photoimg_browse=ImageTk.PhotoImage(img_browse)
self.btn_1.config(image=self.photoimg_browse)

############## Open Image ...................

def open_img_2(self):
fln=filedialog.askopenfilename(initialdir=os.getcwd(),title="Open Images",filetypes=(("JPG File","*.jpg"),("PNG
File","*.png"),("ALL Files","*.*")))
img_2=Image.open(fln)
img_browse_2=img_2.resize((683,160),Image.ANTIALIAS)
self.photoimg_browse_2=ImageTk.PhotoImage(img_browse_2)
self.btn_2.config(image=self.photoimg_browse_2)

############ exit button...................

def exit_screen(self):

root.destroy()

if __name__ =="__main__":

root=Tk()

obj=Student(root)

root.mainloop()

Page | 33

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

5.2 SNAPSHOTS

Page | 34

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

Page | 35

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

CHAPTER 6
TESTING

Page | 36

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

6.1 TESTING
Testing is more than just debugging. The purpose of testing can be quality assurance,
verification and validation, or reliability estimation. Correctness testing and reliability
testing are two major areas of testing. Software testing is a trade-off between budget, time
and quality.

Software Testing
Software Testing is the process of executing a program or system with the intent of finding
errors. Or, it involves any activity aimed at evaluating an attribute or capability of a
program or system and determining that it meet sits required results. Software is not unlike
other physical processes where inputs are received and outputs are produced. Where
software differs is in the manner in which it fails. Unlike most physical systems, most of the
defects in software are design errors, not manufacturing defects.

To improve quality
As computers and software are used in critical applications, the outcome of a bug can be
severe. Bugs can cause huge losses.

For Verification & Validation (V&V)


Another important purpose of testing is verification and validation (V&V). It is heavily used
as a tool in the V&V process. Testers can make claims based on interpretations of the
testing results, which either the product works under certain situations, or it does not work.

Software Testing Types

Black-box testing
The black-box approach is a testing method in which test data are derived from the
specified function requirements without regard to the final program structure. It is also
termed data-driven, input/output driven or requirements-based testing. A testing method
Emphasized on executing the functions and examination of their input and output data.

White-box testing
Contrary to black-box testing, software is viewed as a white-box, or glass-box in white-box
testing, as the structure and flow of the software under test are visible to the tester.

Page | 37

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

This testing is based on knowledge of the internal logic of an application’s code. Testing
plans are made according to the details of the software implementation, such as
programming language, logic, and styles. Test cases are derived from the program
structure. White-box testing is also called glass-box testing, logic-driven testing or design-
based testing.

Unit testing
This involves testing of individual software components or modules. Typically done by the
programmer and not by testers, as it requires detailed knowledge of the internal program
design and code.

System testing
Entire system is tested as per the requirements. Black-box type testing that is based on
overall requirements specifications, covers all combined parts of a system.

End-to-end testing
Similar to system testing, involves testing of a complete application environment in a
situation that mimics real-world use, such as interacting with a database, using network
communications, or interacting with other hardware, applications, or systems if
appropriate.

Usability testing
User-friendliness check. Application flow is tested, Can new user understand the application
easily, Proper help documented whenever user stuck at any point. Basically system
navigation is checked in this testing.

Install/uninstall testing
Tested for full, partial, or upgrade install/uninstall processes on different operating systems
under different hardware, software environment.

Recovery testing
Testing how well a system recovers from crashes, hardware failures, or other catastrophic
problems.

Security testing
Can system be penetrated by any hacking way. Testing how well the system protects
against unauthorized internal or external access. Checked if system, database is safe from
external attacks.

Page | 38

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

Compatibility testing
Compatibility Testing is a type of Software testing to check whether your software is
capable of running on different hardware, operating systems, applications, network
environments or Mobile devices.
Compatibility Testing is a type of Non-functional testing.

Comparison testing
Comparison testing refers to a type of testing where the strength and weakness of the
currently developed software produced is compared with already existing software
products in the market.

Alpha testing
Alpha testing is a type of testing that is done on an application towards the end of a
development process when the product is almost in a usable state.

Beta testing
Beta testing is one of the final steps in your software development lifecycle (SDLC) before a
product goes live.

Page | 39

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

CHAPTER 7
BENEFITS

Page | 40

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

7.1 BENEFITS

 Software provides easy management of student records.


 Software has very user friendly interface which is very easy to handle and
understand.
 Software provides security to private data by hiding them.
 Software uses very less memory and takes less time to startup.

Page | 41

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

CHAPTER 8
LIMITATIONS

Page | 42

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

8.1 LIMITATIONS
 Software is limited to Desktop only.
 System requires python interpreter installed on the system.
 All options of student management are not included in current version.
 Security options provide only low level security against beginner attackers.
 GUI is in English only.

Page | 43

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

CHAPTER 9
FUTURE ENHANCEMENT

Page | 44

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

9.1 FUTURE ENHANCEMENT

 This Software can be made for all OS


 Higher Security features can be included in this software.
 Program scheduling can also be included in this software.
 This software can be developed to use as tutorial to teach basic concepts of
OS to new users.
 This system can be implemented with OS to reduce overhead of installing and
running interface of each and every tool at different place.
 Automatic Shutdown through SMS service can be implemented in this.

Page | 45

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

CHAPTER 10
CONCLUSION

Page | 46

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

10.1 CONCLUSION
The project entitled “Student Management System” is developed using Python Tkinter as
front end and MYSQL database in back end to computerize the process of management of
student records. This project covers only the basic features required.

Page | 47

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

CHAPTER 11
REFERENCES

Page | 48

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)


lOMoARcPSD|20590863

11.1 REFERENCES
 https://www.geeksforgeeks.org/python-gui-tkinter/
 https://www.javatpoint.com/python-tkinter
 https://www.python.org/
 https://www.tutorialspoint.com/python/python_gui_programming.htm
 Wikipedia

Page | 49

Downloaded by Somnath Rajput (rajputsomnath3@gmail.com)

You might also like