Bonafide Certificate: School Management System
Bonafide Certificate: School Management System
Bonafide Certificate: School Management System
A PROJECT REPORT
Submitted by
UDHAYA KUMAR.E Register NO.:B9S10136
VEERA MUTHU.B Register NO.:B9S10137
APRIL-2022
BONAFIDE CERTIFICATE
Date:
………………………………..
Dr.S.Sivakumar,B.E.,M.S., Ph.D.,
Priniciple of
C.P.A College,
Bodinayakanur-625513.
COUNTER SIGNED
………………………………………….
Mr. K.Madasamy
Head&Associate Professor,
Department of Computer Science,
C.P.A College,
Bodinayakanur-625513.
We convey our heartfelt thanks to all the faculty members of the Computer Science
Department for their help and useful suggestions throughout the project work.
It is also our duty to express our thanks to all who have directly and indirectly helped us
in completing this project work.
Above all we must thank our parents and almighty God,with their grace anything would
have been possible for us.
UDHAYA KUMAR.E
VERRA MUTHU.B
CONTENTS
Chapter 8 CONCLUSION 46
BIBLOGRAPHY 47
1.1 Abstract
This project work automates school management system. In the system two applications are
developed, Windows based (thick client) and Web based (thin client).
The windows application takes most of the activities such as offline student registering,
transcript and report card generation and producing the timetable.
In the high school considered for the project there are ten subjects for both grade nine and
grade ten.
CHAPTER 1
INTRODUCTION
With Posting of internal assessment report through postal method, this may not reach on
time, lot of paper work, manual interaction is more, may lose of data, time consuming, all these
can be avoided with the proposed automated smart system.
Objective of the proposed system to eliminate the possibility of human error, data is secured,
and attendance awareness among the students, backup of total information is done.
Auto detailed information of marks, attendance is sent to Parent/Guardian through email and
through the SMS every month.
Even if parents want to know performance of student they can SMS and get reports through
SMS.
The parents can request for the report by sending SMS at any time (round the clock) and get
performance of their children. The proposed can be used in such an application.
This project implements automated SMS Response system using global system for mobile
application (GSM) modem. Existing System are like using RFID is harder tounderstand, it can be
less reliable, RFID tags takes more memory than barcode labels and more than one tag can
respond at same time, and expense is one of the most significant disadvantages of RFID.
Other important thing is if we implement with RFID tags, we need to provide separate RFID
tag to each and every individual student, which will increase system cost.
1.2 MODULE
Hear are the school management system project potential modules . To start the project
development , you have to know first the modules that should exist in a school management
system.
Each of the modules was based on the activities in school they will be automated to
reduce the task of faculties and staff . Here is the list of modules for the school management
system project ..
1.2.1 MODULES
1. STUDENT
Student Information
Fees report
2. ADMIN
• Login
• Student Profile
• Fees Report
• Logout
A student information system is a web based platform that helps school take
student data online for easier management and better clarity.
Fees Report
A fee collection is a payment period during which fees defined by the institution is
collected from students.
It also automates entries into the school accounts that help in reducing errors and
eliminating duplicate data entries.
1.2.2 Admin
Login:
Student Profile:
Fees Report:
CHAPTER-2
SYSTEM SPECIFICATION
2.1Technologies Used:
• Operating Systems: Windows 7
• Front End: PHP, HTML
• RDBMS(Back end) : MySQL Server
Hardware is the collection of physical elements that constitutes a computer system. Computer
hardware refers to the physical parts or components of a computer such as monitor, keyboard, computer data
storage etc.
Brand : Lenovo
HDD : 500 GB
• Python is designed to be highly readable. It uses English keywords frequently where as other
languages use punctuation, and it has fewer syntactical constructions then other language.
• Python is designed to be readable, and hence reusable and maintainable much more so then
traditional scripting language.
In addition python has deep support for more advanced software reuse mechanisms, such as object-
oriented (oo)and function programming
Embedded C
Embedded C is a set of language extensions for the C Programming language by the C
Standards committee to address commonality issues that exist between C extensions for different
embedded systems. Historically, embedded C programming requires nonstandard extensions to the C
language in order to support exotic features such as fixed-point arithmetic, multiple distinct memory
banks, and basic I/O operations.
PHP (Pre-processor Hypertext) & MySQL (My Structured Query Language)
PHP is a High level programming language installed on a web server which receives inputs
from user via internet and processes these inputs to produce dynamic outputs. A PHP can access
databases which are installed on server. It can able to receive inputs (Serial number, ID number etc.) from
clients and get the entire information associated with it and sent it back to the client. It also validates the
information before processing the same. MySQL is a language used to control the functioning of a
database. It supports several data operations such as storing new data, updating, deleting, retrieving etc. It
requires a User Name and password for the authorization to access the database.
.NET Framework (.NET)
.NET Framework (.NET) means it is a software development framework from Microsoft. It
provides a controlled programming environment where software can be developed, installed and
executed on Windows-based operating systems.
Features
Interoperability:
This allows for .NET-developed programs to access functionalities in programs developed
outside .NET
Common language infrastructure specifications (CLI) allow for the exchange of data types between two
programs developed in different languages. Security: Programs developed in .NET are based on a
common security model.
2.4SOFTWARE DESCRIPTION:
INTRODUCTION TO MySQL
What is a Database?
A database is a separate application that stores a collection of data. Each database has
one or more distinct APIs for creating, accessing, managing, searching and replicating the data
it holds.
Other kinds of data stores can also be used, such as files on the file system or large hash
tables in memory but data fetching and writing would not be so fast and easy with those types
of systems.
Nowadays, we use relational database management systems (RDBMS) to store and
manage huge volume of data. This is called relational database because all the data is stored into
different tables and relations are established using primary keys or other keys known as Foreign
Keys.
RDBMS Terminology
Before we proceed to explain the MySQL database system, let us revise a few definitions
related to the database.
• Database − A database is a collection of tables, with related data.
• Table − A table is a matrix with data. A table in a database looks like a simple
spreadsheet.
• Column − One column (data element) contains data of one and the same kind, for
example the column postcode.
• Row − A row (= tuple, entry or record) is a group of related data, for example the data
of one subscription.
• Redundancy − Storing data twice, redundantly to make the system faster.
• Primary Key − A primary key is unique. A key value cannot occur twice in one table.
With a key, you can only find one row.
• Foreign Key − A foreign key is the linking pin between two tables.
• Compound Key − A compound key (composite key) is a key that consists of multiple
columns, because one column is not sufficiently unique.
• Index − An index in a database resembles an index at the back of a book.
• Referential Integrity − Referential Integrity makes sure that a foreign key value
always points to an existing row.
MySQL Database
MySQL is a fast, easy-to-use RDBMS being used for many small and big businesses.
MySQL is developed, marketed and supported by MySQL AB, which is a Swedish company.
MySQL is becoming so popular because of many good reasons −
• MySQL is released under an open-source license. So you have nothing to pay to use it.
• MySQL is a very powerful program in its own right. It handles a large subset of the
functionality of the most expensive and powerful database packages.
• MySQL uses a standard form of the well-known SQL data language.
• MySQL works on many operating systems and with many languages including PHP,
PERL, C, C++, JAVA, etc.
• MySQL works very quickly and works well even with large data sets.
• MySQL is very friendly to PHP, the most appreciated language for web development.
• MySQL supports large databases, up to 50 million rows or more in a table. The default
file size limit for a table is 4GB, but you can increase this (if your operating system can
handle it) to a theoretical limit of 8 million terabytes (TB).
• MySQL is customizable. The open-source GPL license allows programmers to modify
the MySQL software to fit their own specific environments.
Database Tables
The data in RDBMS is stored in database objects called tables. A table is a collection of
related data entries and it consists of columns and rows.
Look at the "Customers" table:
Example:
SELECT * FROM Customers;
Every table is broken up into smaller entities called fields. The fields in the Customers
table consist of CustomerID, CustomerName, ContactName, Address, City, Postal Code and
Country. A field is a column in a table that is designed to maintain specific information about
every record in the table.
A record, also called a row, is each individual entry that exists in a table. For example, there are
91 records in the above Customers table. A record is a horizontal entity in a table.
A column is a vertical entity in a table that contains all information associated with a specific
field in a table.
• A database most often contains one or more tables. Each table is identified
by a name (e.g. "Customers" or "Orders"). Tables contain records (rows)
with data.
• In this tutorial we will use the well-known North wind sample database
(included in MS Access and MS SQL Server).
• Below is a selection from the "Customers" table.
SQL Statements
Most of the actions you need to perform on a database are done with SQL statements.
The following SQL statement selects all the records in the "Customers" table:
Example:
SELECT * FROM Customers;
ABOUT PHP
<?php
echo "Hi, I'm a PHP script!";
?>
</body>
</html>
What can PHP do?
With PHP we can do anything. PHP is mainly focused on server-side scripting, so you can do
anything any other CGI program can do, such as collect form data, generate dynamic page
content, or send and receive cookies. But PHP can do much more.
There are three main areas where PHP scripts are used.
Server-side scripting. This is the most traditional and main target field for PHP. You need three
things to make this work: the PHP parser (CGI or server module), a web server and a web
browser. You need to run the web server, with a connected PHP installation. You can access the
PHP program output with a web browser, viewing the PHP page through the server. All these can
run on your home machine if you are just experimenting with PHP programming. See
the installation instructions section for more information.
Command line scripting. You can make a PHP script to run it without any server or browser.
You only need the PHP parser to use it this way. This type of usage is ideal for scripts regularly
executed using cron (on *nix or Linux) or Task Scheduler (on Windows). These scripts can also
be used for simple text processing tasks. See the section about Command line usage of PHP for
more information.
Writing desktop applications. PHP is probably not the very best language to create a desktop
application with a graphical user interface, but if you know PHP very well, and would like to use
some advanced PHP features in your client-side applications you can also use PHP-GTK to write
such programs. You also have the ability to write cross-platform applications this way. PHP-GTK
is an extension to PHP, not available in the main distribution. If you are interested in PHP-GTK,
visit » its own website.
CHAPTER-3
SYSTEM ANALYSIS
System analysis is a process of collecting and interpreting facts, identifying the problems,
and decomposition of a system into its components.System analysis is conducted for the purpose
of studying a system or its parts in order to identify its objectives. It is a problem solving
technique that improves the system and ensures that all the components of the system work
efficiently to accomplish their purpose.Analysis specifies what the system should do.
The essential purpose of this phase is to find the need and to define the problems that
need to be solved. This chapter gives a brief discussion about the detailed study of the proposed
system.
• Tests of Feasibility
• Operational Feasibility
• Technical Feasibility
• Economic Feasibility
• Operational Feasibility
The proposed system should use the internet level then the different types of end users are
involved in the system, so it solves the user’s needs and the organization needs.
And it supports the all users environment Includes people- oriented and social issues: internal
issues, such as manpower problems, labor objections, manager resistance, and organizational
conflicts and polices; also External issues, including social acceptability,legal aspects and
government regulations.
• Technical Feasibility
Technical feasibility is the need of hardware and software, which are needed to implement
the proposed system. Technical requirements are to be fulfilled to make the proposed system to
work better. This should be necessarily predetermined so as to make the system more competent.
• Economical Feasibility
Economic feasibility is the most frequently used method for evaluating the effectiveness
of the proposed system, more commonly used as a cost/benefit analysis. This procedure is to
determine the benefit and savings that are expected from the proposed system and compare them
with the cost. Cost estimate for a system we consider several elements. Hardware, Personnel,
Facility, Operation, supply cost etc.
CHAPTER 4
SYSTEM DESIGN
SYSTEM DESIGN
Software design is a process through which requirements are translated into a
representation of software. In this phase the software development process, the software’s overall
structure and its nuances are defined.
A software development model is created. The logical system of the product is
developed in this phase. It is the place where quality is fostered. It identifies the software
components, specifies relationshipsamong components define programs structure and provides a
blueprint for implementation.
Fig 4.1shows the architecture diagram that is common for any web application. Any application
is divided into three main parts, which are as follows:
• Presentation Layer
• Middleware-Business Logic Components
• Database Layer
Presentation Layer forms the user interface of the application. Presentation Layer must be
developed in such a way that it can be changed without doing any changes to the business or
database layer. The presentation layer must be independent of the database and business layers.
Also the presentation layer should be made in such a way that changing the presentation to the
user will take less time and effort.
Business logic layer contains the logic of the application. Like the database layer this
layer not exposed to the users directly but a user interface is provided to do so. The middleware
forms the heart of any application.
It includes the business logic components and the software needed to deploy the system.
Database acts as the data processing unit of system. It holds all the application data in the form
of tables, which are modified through the source code present within the business logic.
The database layer contains the tables, views and stored procedures which deal with the
database. Usually this layer is created before making the other layers. Database layer is also the
most important layer in the application architecture that’s why most of the time is spent is
making the database layer solid so, the pillars of the application are strong and scalable.
INPUT DESIGN:
Input design is the method by which valid data are accepted from the user. The valid data turn is
stored as operational data in the database. Incorrect input data are the most common cause of
errors in the data processing. The input design is carried out in such a way that the input screens
are user friendly. The goals of designing input design are to make input data entry as easy and
error free. Input screen takes care to filter the valid data from being becoming an operational data
at data entry phase.
This is achieved by providing proper checks and validation procedures and certain features to
users. Input design is the part of the overall system design that careful attention and is the most
expensive phase. It is the point of most contact for the users with the system and so it proves to
errors.
OBJECTIVES OF INPUT DESIGN:
• Produce close effective method input
• High level accuracy
• Free of ambiguity
OUTPUT DESIGN:
The output design defines the output requires and the format in which it is to be
produced. Care must be given to present the right information. The outputs generated can be
classified into three main categories:
• Screen output
• Output to be stored as files in storage media
• Hardcopy to the output
The screen output displays the generated output on the screen. The results of most of the
queries are displayed on the screen. The provision of generated output to be stored in the file is
for future reference and to take hard copies of the same and it is used to provide the information
to the management and wheneversituation demands.
The output is the most important and direct source of information to the user.Efficient,
output design should improve the systems relationship with the user and helps in decision
making. A major form of output is a hard copy from the printer. Printouts should be designed
around the output requirement to the user. The output standards and design should be clear. The
output generated should be reliable and which proves the efficiency of the system we developed.
Fig. Registration
Fig. Login
Fig . Report
CHAPTER 5
SYSTEM TESTING
• Software Testing
As the number of possible tests for even simple software components is practically
infinite, all software testing uses some strategy to select tests that are feasible for the available
time and resources. As a result, software testing typicallyattempts to execute a program or
application with the intent of finding software bugs (errors or other defects). The job of testing is
an iterative process as when one bug is fixed, it can illuminate other, deeper bugs, or can even
create new ones.
Software testing can provide objective, independent information about the quality of
software and risk of its failure to users or sponsors.
Software testing can be conducted as soon as executable software (even if partially
complete) exists. The overall approach to software development often determines when and how
testing is conducted. For example, in a phased process, most testing occurs after system
requirements have been defined and then implemented in testable programs. In contrast, under an
agile approach, requirements, programming, and testing are often done concurrently.(Source :
https://en.wikipedia.org/wiki/Software_testing)
• Testing Techniques
Black box testing methods focuses on the functional requirements of the software
by conduction black box testing using the methods Equivalence Partitioning
Boundary value Analysis and Cause-Effect-Graphing techniques.
The tolerance of the system for the data rates and data volumes.
5.3 Testing Strategies
A strategy for software testing must accommodate low-level tests that are necessary to
verify that a small source code segment has been correctly implemented as well as high against
customer requirements.
Verification and Validation
Verification is a fundamental concept in the software design. Verification refers to the set
of activities that ensure that software correctly implements a specific function. Validation refers
to a different set of activities that ensures that software that has been build is a traceable to
customers. Validation is nothing but the process of using software in live environment in order
to find errors.
Verification is typically done in two steps:
Verification of the requirements:Verification that he software requirement definition satisfies
the customer needs.
Verification of the design:Verification that the design satisfies the requirements definition.
Verification and validation encompass a wide array of software quality assurances (SQL)
activities that include formal technical reuse quality and configuration audits, performance
monitoring, simulation, feasible study. Software reviews are one of the most important SQA
(Software Quality Assurance) activities.Reviews serve as a filter for the software process.It
consists of the following :
• Code Testing
• Specification Testing
• Unit Testing
• Integration Testing
• System Testing
• Output Testing
• User Acceptance Testing
Code Testing
Testing the logic of the program is called the code testing. Every path through the
program is tested and checked whether the logic is working properly or not. This project was
logically performing well.
Specification Testing
Specification testing means checking the software it is as per the specification given this
project has been tested for its specification such as what the particular module or program should
do and how it should perform under various conditions.
Unit Testing
Unit testing focuses verification on the smaller unit of software design such as form. This
is known as form testing. The testing is done individually on each form. Using the unit test
plan, prepared in design phase of the system development as a guide, important control paths are
tested to uncover within the boundary of the module. In this step, the module is working
satisfactorily as a regard to the expected output from the module.
Integration testing
Data can be lost across an interface, one module can have an adverse effect on another
sub function, when combined, may not produce the desired major function. Integration testing is
a systematic technique for construction the program structure while at the same time conducting
test to uncover errors associated with the interface. All the modules are combined in the testing
step. Then the entire program is as a whole.
Different integrated test plans like top down integration and bottom up integration are tested and
different errors found in the system are corrected using them. Finally, all the combined are
performed well.
Validation Testing
The following tests were conducted to test the validity of the software. The validation
succeeds when the software functions in a manner that can be reasonably expected by the
customer. The development software undergone the following types of validation testing and
was succeeded.
• Alpha Testing
• Beta Testing
System Testing
Testing the entire system as a whole and checking for its correctness is system testing.
The system is listed for dispensaries between the system and its original objectives. This project
was effective and efficient.
5.4 Output Testing
After performing system testing, the next step is output testing of the proposed system,
since no system could be useful if it does not procedure the desired output in the specified
format. The outputs generated are displayed by the system under consideration or testing by
asking the users about the format required by them, here the output format is considered in two
ways, one is on the screen and other is the printed form.
User acceptance Testing
User acceptance of a system is the key factor for the success of any system. The system
consideration was tested for user acceptance by constantly keeping in touch with the perspective
system users at the time of developing and making changes whenever required. The following
are the testing points.
• Input screen design
• Output screen design
• Menu-driven system
Implementation is the process of bringing the developed system into operational use and
turning it over to the user. The implementation of computer based system requires that be
prepared and that the system and its elements be tested in planned and structured manner.
CHAPTER-6
SAMPLE CODE
Login.python
from tkinter import*
import tkinter.messagebox
import os
from tkinter import ttk
import random
import time
import datetime
def main():
root = Tk()
app = Window_1(root)
root.mainloop()
class Window_1:
def __init__(self, master):
self.master = master
self.master.title("School Management System")
self.master.geometry('1350x750')
self.master.config(bg="green")
self.Frame = Frame(self.master, bg="green")
self.Frame.pack()
self.Username = StringVar()
self.Password = StringVar()
self.Lbl_Title = Label(self.Frame, text = 'Login Menu', font = ('arial',55,'bold'), bg =
'green', fg = 'Black')
self.Lbl_Title.grid(row = 0, column = 0, columnspan =3, pady = 40)
self.Login_Frame_1 = LabelFrame(self.Frame, width = 1350, height = 600, relief =
'ridge', bg = 'green', bd = 15,
font = ('arial',20,'bold'))
self.Login_Frame_1.grid(row = 1, column =0)
self.Login_Frame_2 = LabelFrame(self.Frame, width = 1000, height = 600, relief =
'ridge',bg = 'green', bd = 15,
font = ('arial',20,'bold'))
self.Login_Frame_2.grid(row = 2, column = 0)
#===================================================LABEL
and
ENTRIES========================================================
===============
self.Label_Username = Label(self.Login_Frame_1, text = 'Username', font =
('arial',20,'bold'), bg = 'green', bd = 20)
self.Label_Username.grid(row = 0, column = 0)
self.text_Username = Entry(self.Login_Frame_1, font = ('arial',20,'bold'),
textvariable = self.Username)
self.text_Username.grid(row = 0, column = 1, padx = 50)
self.Label_Password = Label(self.Login_Frame_1, text = 'Password', font =
('arial',20,'bold'), bg = 'green', bd = 20)
self.Label_Password.grid(row = 1, column = 0)
self.text_Password = Entry(self.Login_Frame_1, font = ('arial',20,'bold'), show = '*',
textvariable = self.Password)
self.text_Password.grid(row = 1, column = 1)
#=============================================================B
UTTONS========================================================
===============
self.btnLogin = Button(self.Login_Frame_2, text = 'Login', width = 10, font =
('airia',15,'bold'), command = self.Login)
self.btnLogin.grid(row = 3, column = 0, padx = 8, pady = 20)
self.btnReset = Button(self.Login_Frame_2, text = 'Reset', width = 10, font =
('airia',15,'bold'), command = self.Reset)
self.btnReset.grid(row = 3, column = 1, padx = 8, pady = 20)
self.btnExit = Button(self.Login_Frame_2, text = 'Exit', width = 10, font =
('airia',15,'bold'), command = self.Exit)
self.btnExit.grid(row = 3, column = 2, padx = 8, pady = 20)
def Login(self):
u = (self.Username.get())
p = (self.Password.get())
if (u == str('arun') and p == str('12345')):
self.__menu__()
else:
tkinter.messagebox.askyesno("Login","Error : Wrong Password")
self.Username.set("")
self.Password.set("")
def Reset(self):
self.Username.set("")
self.Password.set("")
self.text_Username.focus()
def Exit(self):
self.Exit = tkinter.messagebox.askokcancel("Login System", "Confirm if you want
to Exit")
if self.Exit > 0:
self.master.destroy()
return
def __menu__(self):
filename = 'Menu.py'
os.system(filename)
os.system('notepad'+filename)
'''def new_window(self):
self.new_Window = Toplevel(self.master)
self.app = Window_2(self.new_Window)'''
class Window_2:
def __init__(self, master):
self.master = master
self.master.title("School Managment System")
self.master.geometry('1350x750')
self.master.config(bg="green")
self.Frame = Frame(self.master, bg="green")
self.Frame.pack()
if __name__ == '__main__':
main()
Login- Menu
from tkinter import*
import random
import os
def __information__():
filename = 'Std_info_FrontEnd.py'
os.system(filename)
os.system('notepad'+filename)
def __FeeReport__():
filename = 'Fee_Frontend.py'
os.system(filename)
os.system('notepad'+filename)
def menu():
root = Tk()
root.title('Menu')
root.geometry('1350x750')
#========================================================FRAMES=====
==============================================================
Frame_1 = LabelFrame(root, font = ('arial',17,'bold'), width = 1000, height = 100, bg =
'lightblue', relief = 'ridge', bd = 10)
Frame_1.grid(row = 1, column = 0, padx = 280)
Frame_2 = LabelFrame(root, font = ('arial',17,'bold'), width = 1000, height = 100, bg =
'lightblue', relief = 'ridge', bd = 10)
Frame_2.grid(row = 2, column = 0, padx = 130, pady = 7)
#========================================================LABELS=====
==============================================================
Label_1 = Label(Frame_1, text = 'STUDENT PROFILE', font = ('arial',25,'bold'), bg =
'lightblue')
Label_1.grid(row = 0, column = 0, padx = 50, pady = 5)
Label_2 = Label(Frame_2, text = 'FEE REPORT', font = ('arial',25,'bold'), bg = 'lightblue')
Label_2.grid(row = 0, column = 0, padx = 100, pady = 5)
#========================================================BUTTONS====
===============================================================
Button_1 = Button(Frame_1, text = 'VIEW', font = ('arial',16,'bold'), width = 8, command =
__information__)
Button_1.grid(row = 0, column = 3, padx = 50)
Button_2 = Button(Frame_2, text = 'VIEW', font = ('arial',16,'bold'), width = 8, command =
__FeeReport__)
Button_2.grid(row = 0, column = 3, padx = 50)
root.mainloop()
if __name__ == '__main__':
menu()
Student_Frontend.python
from tkinter import*
import tkinter.messagebox
import random
import Std_info_BackEnd
from tkinter import ttk
class Std_info():
def __init__(self, master):
self.master = master
self.master.title('School Management System/Student Information')
self.master.geometry('1350x750')
self.master.config(bg = 'lightblue')
def information():
#========================================================Variables=====
================================================================
self.name = StringVar()
self.fname = StringVar()
self.mname = StringVar()
self.address = StringVar()
self.mobno = StringVar()
self.email = StringVar()
self.dob = StringVar()
self.gender = StringVar()
#==========================================================Functions===
=================================================================
def StudentRec(event):
try:
global selected_tuple
index = self.listbox.curselection()[0]
selected_tuple = self.listbox.get(index)
self.Entry_name.delete(0, END)
self.Entry_name.insert(END, selected_tuple[1])
self.Entry_fname.delete(0, END)
self.Entry_fname.insert(END, selected_tuple[2])
self.Entry_mname.delete(0, END)
self.Entry_mname.insert(END, selected_tuple[3])
self.Entry_address.delete(0, END)
self.Entry_address.insert(END, selected_tuple[4])
self.Entry_mobno.delete(0, END)
self.Entry_mobno.insert(END, selected_tuple[5])
self.Entry_emailID.delete(0, END)
self.Entry_emailID.insert(END, selected_tuple[6])
self.Entry_dob.delete(0, END)
self.Entry_dob.insert(END, selected_tuple[7])
self.Entry_gender.delete(0, END)
self.Entry_gender.insert(END, selected_tuple[8])
except IndexError:
pass
def Add():
if(len(self.name.get()) != 0):
Std_info_BackEnd.insert(self.name.get(), self.fname.get(), self.mname.get(),
self.address.get(), self.mobno.get(), self.email.get(), self.dob.get(), \
self.gender.get())
self.listbox.delete(0, END)
self.listbox.insert(END, (self.name.get(), self.fname.get(), self.mname.get(),
self.address.get(), self.mobno.get(), self.email.get(), self.dob.get(), \
self.gender.get()))
def Display():
self.listbox.delete(0, END)
for row in Std_info_BackEnd.view():
self.listbox.insert(END, row, str(' '))
def Exit():
Exit = tkinter.messagebox.askyesno("Login System", "Confirm if you want to
Exit")
if Exit > 0:
self.master.destroy()
return
def Reset():
self.name.set('')
self.fname.set('')
self.mname.set('')
self.address.set('')
self.mobno.set('')
self.email.set('')
self.dob.set('')
self.gender.set('')
self.listbox.delete(0, END)
def Delete():
if(len(self.name.get()) != 0):
Std_info_BackEnd.delete(selected_tuple[0])
Reset()
Display()
def Search():
self.listbox.delete(0, END)
for row in Std_info_BackEnd.search(self.name.get(), self.fname.get(),
self.mname.get(), self.address.get(), self.mobno.get(), self.email.get(),
self.dob.get(),self.gender.get()):
self.listbox.insert(END, row, str(' '))
def Update():
if(len(self.name.get()) != 0):
Std_info_BackEnd.delete(selected_tuple[0])
if(len(self.name.get()) != 0):
Std_info_BackEnd.insert(self.name.get(), self.fname.get(), self.mname.get(),
self.address.get(), self.mobno.get(), self.email.get(), self.dob.get(), \
self.gender.get())
self.listbox.delete(0, END)
self.listbox.insert(END, (self.name.get(), self.fname.get(), self.mname.get(),
self.address.get(), self.mobno.get(), self.email.get(), self.dob.get(), \
self.gender.get()))
#============================================================Frames===
==================================================================
#========================================================Labels of
Frame_1========================================================
self.Label_name = Label(self.Frame_1, text = 'Name', font = ('arial',20,'bold'), bg =
'lightblue')
self.Label_name.grid(row = 0, column = 0, sticky = W, padx = 20, pady = 10)
self.Label_fname = Label(self.Frame_1, text = 'Father Name', font =
('arial',20,'bold'), bg = 'lightblue')
self.Label_fname.grid(row = 1, column = 0, sticky = W, padx = 20)
self.Label_mname = Label(self.Frame_1, text = 'Mother Name', font =
('arial',20,'bold'), bg = 'lightblue')
self.Label_mname.grid(row = 2, column = 0, sticky = W, padx = 20)
self.Label_address = Label(self.Frame_1, text = 'Address', font = ('arial',20,'bold'),
bg = 'lightblue')
self.Label_address.grid(row = 3, column = 0, sticky = W, padx = 20)
self.Label_mobno = Label(self.Frame_1, text = 'Mobile Number', font =
('arial',20,'bold'), bg = 'lightblue')
self.Label_mobno.grid(row = 4, column = 0, sticky = W, padx = 20)
self.Label_emailID = Label(self.Frame_1, text = 'Email ID', font = ('arial',20,'bold'),
bg = 'lightblue')
self.Label_emailID.grid(row = 5, column = 0, sticky = W, padx = 20)
self.Label_dob = Label(self.Frame_1, text = 'Date of Birth', font = ('arial',20,'bold'),
bg = 'lightblue')
self.Label_dob.grid(row = 6, column = 0, sticky = W, padx = 20)
self.Label_gender = Label(self.Frame_1, text = 'Gender', font = ('arial',20,'bold'),
bg = 'lightblue')
self.Label_gender.grid(row = 7, column = 0, sticky = W, padx = 20, pady = 10)
#========================================================Entries of
Frame_1========================================================
self.Entry_name = Entry(self.Frame_1, font = ('arial',17,'bold'), textvariable =
self.name)
self.Entry_name.grid(row = 0, column = 1, padx = 10, pady = 5)
self.Entry_fname = Entry(self.Frame_1, font = ('arial',17,'bold'), textvariable =
self.fname)
self.Entry_fname.grid(row = 1, column = 1, padx = 10, pady = 5)
self.Entry_mname = Entry(self.Frame_1, font = ('arial',17,'bold'), textvariable =
self.mname)
self.Entry_mname.grid(row = 2, column = 1, padx = 10, pady = 5)
self.Entry_address = Entry(self.Frame_1, font = ('arial',17,'bold'), textvariable =
self.address)
self.Entry_address.grid(row = 3, column = 1, padx = 10, pady = 5)
self.Entry_mobno = Entry(self.Frame_1, font = ('arial',17,'bold'), textvariable =
self.mobno)
self.Entry_mobno.grid(row = 4, column = 1, padx = 10, pady = 5)
self.Entry_emailID = Entry(self.Frame_1, font = ('arial',17,'bold'), textvariable =
self.email)
self.Entry_emailID.grid(row = 5, column = 1, padx = 10, pady = 5)
self.Entry_dob = Entry(self.Frame_1, font = ('arial',17,'bold'), textvariable =
self.dob)
self.Entry_dob.grid(row = 6, column = 1, padx = 10, pady = 5)
self.Entry_gender = ttk.Combobox(self.Frame_1, values = ('
','Male','Female','Others'),\
font = ('arial',17,'bold'), textvariable = self.gender, width = 19)
self.Entry_gender.grid(row = 7, column = 1, padx = 10, pady = 5)
#========================================================Buttons of
self.Frame_3=========================================================
self.btnSave = Button(self.Frame_3, text = 'SAVE', font = ('arial',17,'bold'), width =
8, command = Add)
self.btnSave.grid(row = 0, column = 0, padx = 10, pady = 10)
self.btnDisplay = Button(self.Frame_3, text = 'DISPLAY', font = ('arial',17,'bold'),
width = 8, command = Display)
self.btnDisplay.grid(row = 0, column = 1, padx = 10, pady = 10)
self.btnReset = Button(self.Frame_3, text = 'RESET', font = ('arial',17,'bold'), width
= 8, command = Reset)
self.btnReset.grid(row = 0, column = 2, padx = 10, pady = 10)
self.btnUpdate = Button(self.Frame_3, text = 'UPDATE', font = ('arial',17,'bold'),
width = 8, command = Update)
self.btnUpdate.grid(row = 0, column = 3, padx = 10, pady = 10)
self.btnDelete = Button(self.Frame_3, text = 'DELETE', font = ('arial',17,'bold'),
width = 8, command = Delete)
self.btnDelete.grid(row = 0, column = 4, padx = 10, pady = 10)
self.btnSearch = Button(self.Frame_3, text = 'SEARCH', font = ('arial',17,'bold'),
width = 8, command = Search )
self.btnSearch.grid(row = 0, column = 5, padx = 10, pady = 10)
self.btnExit = Button(self.Frame_3, text = 'EXIT', font = ('arial',17,'bold'), width =
8, command = Exit)
self.btnExit.grid(row = 0, column = 6, padx = 10, pady = 10)
information()
root = Tk()
obj = Std_info(root)
root.mainloop()
Student Backend.python
import sqlite3
def connect():
conn = sqlite3.connect("student.db")
cur = conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS student (id INTEGER
PRIMARY KEY, name text, fname text, mname text, \
address text, mobno integer,email text, dob integer, gender text)")
conn.commit()
conn.close()
def insert(name = " ", fname = " ", mname = " ", address = " ", mobno = " ", email
= " ", dob = " ", gender = " "):
conn = sqlite3.connect("student.db")
cur = conn.cursor()
cur.execute("INSERT INTO student VALUES (NULL,?,?,?,?,?,?,?,?)", (name,
fname, mname, address , mobno, email, dob, gender))
conn.commit()
conn.close()
def view():
conn = sqlite3.connect("student.db")
cur = conn.cursor()
cur.execute("SELECT * FROM student")
rows = cur.fetchall()
return rows
conn.close()
def delete(id):
conn = sqlite3.connect("student.db")
cur = conn.cursor()
cur.execute("DELETE FROM student WHERE id = ?", (id,))
conn.commit()
conn.close()
def update(id,name = " ", fname = " ", mname = " ", address = " ", mobno = " ",
email = " ", dob = " ", gender = " "):
conn = sqlite3.connect("student.db")
cur = conn.cursor()
cur.execute("UPDATE student SET name = ? OR fname = ? OR mname = ?
OR address = ? OR mobno = ? OR email = ? OR dob = ? OR gender = ?", \
(name, fname, mname, address , mobno, email, dob, gender))
conn.commit()
conn.close()
def search(name = " ", fname = " ", mname = " ", address = " ", mobno = " ", email
= " ", dob = " ", gender = " "):
conn = sqlite3.connect("student.db")
cur = conn.cursor()
cur.execute("SELECT * FROM student WHERE name = ? OR fname = ? OR
mname = ? OR address = ? OR mobno = ? OR email = ? OR dob = ? OR gender
= ?", (name, fname, mname, address , mobno, email, dob, gender))
rows = cur.fetchall()
return rows
conn.close()
connect()
Fees Frontend.python
from tkinter import*
from tkinter import ttk
import tkinter.messagebox
import datetime
import Fee_Backend
class Fee():
def __init__(self, master):
self.master = master
self.master.title('School Management System/Fee Report')
self.master.geometry('1350x750')
self.master.config(bg='lightblue')
#
==================================================Variables=======
==========================================
self.recpt = StringVar()
self.name = StringVar()
self.admsn = StringVar()
self.date = StringVar()
self.branch = StringVar()
self.sem = StringVar()
self.total = DoubleVar()
self.paid = DoubleVar()
self.due = DoubleVar()
#
==================================================Functions======
===========================================
def Tuple(event):
try:
global st
index = self.list.curselection()[0]
st = self.list.get(index)
self.recpt_entry.delete(0, END)
self.recpt_entry.insert(END, st[1])
self.name_entry.delete(0, END)
self.name_entry.insert(END, st[2])
self.admsn_entry.delete(0, END)
self.admsn_entry.insert(END, st[3])
self.Date_entry.delete(0, END)
self.Date_entry.insert(END, st[4])
self.branch_entry.delete(0, END)
self.branch_entry.insert(END, st[5])
self.sem_entry.delete(0, END)
self.sem_entry.insert(END, st[6])
self.total_entry.delete(0, END)
self.total_entry.insert(END, st[7])
self.paid_entry.delete(0, END)
self.paid_entry.insert(END, st[8])
self.due_entry.delete(0, END)
self.due_entry.insert(END, st[9])
except IndexError:
pass
def Insert():
if (len(self.admsn.get()) != 0):
Fee_Backend.insert(self.recpt.get(), self.name.get(), self.admsn.get(),
self.date.get(),
self.branch.get(), self.sem.get(), self.total.get(), self.paid.get(),
self.due.get())
self.list.delete(0, END)
self.list.insert(END, (self.recpt.get(), self.name.get(), self.admsn.get(),
self.date.get(),
self.branch.get(), self.sem.get(), self.total.get(), self.paid.get(),
self.due.get()))
def View():
self.list.delete(0, END)
for row in Fee_Backend.view():
self.list.insert(END, row, str(' '))
def Reset():
self.recpt.set('')
self.name.set('')
self.admsn.set('')
#self.date.set('')
self.branch.set('')
self.sem.set('')
self.paid.set('')
self.due.set('')
self.Display.delete('1.0', END)
self.list.delete(0, END)
def Delete():
Fee_Backend.delete(st[0])
Reset()
View()
def Receipt():
self.Display.delete('1.0', END)
self.Display.insert(END, '\t\tRECEIPT' + '\n\n')
self.Display.insert(
END, '\tReceipt No.\t :' + self.recpt.get() + '\n')
self.Display.insert(END, '\tStudent Name :' +
self.name.get() + '\n')
self.Display.insert(END, '\tAdmission No.\t:' +
self.admsn.get() + '\n')
self.Display.insert(
END, '\tDate\t :' + self.date.get() + '\n')
self.Display.insert(
END, '\tBranch\t :' + self.branch.get() + '\n')
self.Display.insert(
END, '\tSemester \t :' + self.sem.get() + '\n\n')
x1 = (self.var_1.get())
x2 = (self.paid.get())
x3 = (x1 - x2)
self.Display.insert(END, '\tTotal Amount :' + str(x1) + '\n')
self.Display.insert(END, '\tPaid Amount :' + str(x2) + '\n')
self.Display.insert(END, '\tBalance\t :' + str(x3) + '\n')
self.due.set(x3)
def Search():
self.list.delete(10, END)
for row in Fee_Backend.search(self.recpt.get(), self.name.get(), self.admsn.get(),
self.date.get(),
self.branch.get(), self.sem.get(), self.total.get(), self.paid.get(),
self.due.get()):
self.list.insert(END, row, str('100'))
def Update():
Fee_Backend.delete(st[0])
Insert()
def Exit():
Exit = tkinter.messagebox.askyesno(
'Attention', 'Confirm, if you want to Exit')
if Exit > 0:
root.destroy()
return
#
==================================================Frames========
===========================================
Main_Frame = Frame(self.master, bg='lightblue')
Main_Frame.grid()
Title_Frame = LabelFrame(
Main_Frame, width=1350, height=100, bg='lightblue', relief='ridge', bd=15)
Title_Frame.pack(side=TOP)
self.lblTitle = Label(Title_Frame, font=('arial', 40, 'bold'), text='FEE REPORT',
bg='lightblue', padx=13)
self.lblTitle.grid(padx=400)
Data_Frame = Frame(Main_Frame, width=1350, height=350,
bg='lightblue', relief='ridge', bd=15)
Data_Frame.pack(side=TOP, padx=15)
Frame_1 = LabelFrame(Data_Frame, width=850, height=350, bg='Navajo white',
relief='ridge', bd=8,
text='Informations', font=('arial', 15, 'bold'))
Frame_1.pack(side=LEFT, padx=10)
Frame_2 = LabelFrame(Data_Frame, width=495, height=350, bg='Navajo white',
relief='ridge', bd=8,
text='Fee Receipt', font=('arial', 15, 'bold'))
Frame_2.pack(side=RIGHT, padx=10)
List_Frame = Frame(Main_Frame, width=1350, height=150,
bg='Navajo white', relief='ridge', bd=15)
List_Frame.pack(side=TOP, padx=15)
Button_Frame = Frame(Main_Frame, width=1350, height=80,
bg='Navajo white', relief='ridge', bd=15)
Button_Frame.pack(side=TOP)
#
===================================================Labels========
========================================
self.recpt_label = Label(Frame_1, text='Receipt No. : ', font=(
'arial', 14, 'bold'), bg='Navajo white')
self.recpt_label.grid(row=0, column=0, padx=15, sticky=W)
self.name_label = Label(Frame_1, text='Student Name : ', font=(
'arial', 14, 'bold'), bg='Navajo white')
self.name_label.grid(row=1, column=0, padx=15, sticky=W)
self.admsn_label = Label(Frame_1, text='Admission No. : ', font=(
'arial', 14, 'bold'), bg='Navajo white')
self.admsn_label.grid(row=2, column=0, padx=15, sticky=W)
self.Date_label = Label(Frame_1, text='Date : ', font=(
'arial', 14, 'bold'), bg='Navajo white')
self.Date_label.grid(row=3, column=0, padx=15, sticky=W)
self.branch_label = Label(Frame_1, text='Branch : ', font=(
'arial', 14, 'bold'), bg='Navajo white')
self.branch_label.grid(row=4, column=0, padx=15, sticky=W)
self.sem_label = Label(Frame_1, text='Semester : ', font=(
'arial', 14, 'bold'), bg='Navajo white')
self.sem_label.grid(row=5, column=0, padx=15, sticky=W)
self.total_label = Label(Frame_1, text='TOTAL AMOUNT : ', font=(
'arial', 14, 'bold'), bg='Navajo white')
self.total_label.grid(row=2, column=2, padx=5, sticky=W)
self.paid_label = Label(Frame_1, text='PAID AMOUNT : ', font=(
'arial', 14, 'bold'), bg='Navajo white')
self.paid_label.grid(row=3, column=2, padx=5, sticky=W)
self.due_label = Label(Frame_1, text='BALANCE : ', font=(
'arial', 14, 'bold'), bg='Navajo white')
self.due_label.grid(row=4, column=2, padx=5, sticky=W)
#
==================================================Entries========
=========================================
self.var_1 = DoubleVar(Frame_1, value='15000')
d1 = datetime.date.today()
self.date.set(d1)
self.recpt_entry = Entry(Frame_1, font=(
'arial', 14), textvariable=self.recpt)
self.recpt_entry.grid(row=0, column=1, padx=15, pady=5)
self.name_entry = Entry(Frame_1, font=(
'arial', 14), textvariable=self.name)
self.name_entry.grid(row=1, column=1, padx=15, pady=5)
self.admsn_entry = Entry(Frame_1, font=(
'arial', 14), textvariable=self.admsn)
self.admsn_entry.grid(row=2, column=1, padx=15, pady=5)
self.Date_entry = Entry(Frame_1, font=(
'arial', 14), textvariable=self.date)
self.Date_entry.grid(row=3, column=1, padx=15, pady=5)
self.branch_entry = ttk.Combobox(Frame_1, values=(' ', 'CSE', 'IT', 'IS', 'CE'),
font=('arial', 14), width=19, textvariable=self.branch)
self.branch_entry.grid(row=4, column=1, padx=15, pady=5)
self.sem_entry = ttk.Combobox(Frame_1, values=(' ', 'FIRST', 'SECOND',
'THIRD'), font=('arial', 14), width=19,
textvariable=self.sem)
self.sem_entry.grid(row=5, column=1, padx=15, pady=5)
self.total_entry = Entry(Frame_1, font=(
'arial', 14), width=10, textvariable=self.var_1, state='readonly')
self.total_entry.grid(row=2, column=3, padx=8, pady=5)
self.paid_entry = Entry(Frame_1, font=(
'arial', 14), width=10, textvariable=self.paid)
self.paid_entry.grid(row=3, column=3, pady=5)
self.due_entry = Entry(Frame_1, font=(
'arial', 14), width=10, textvariable=self.due)
self.due_entry.grid(row=4, column=3, pady=7)
#
==================================================Frame_2=======
==========================================
self.Display = Text(Frame_2, width=42, height=12,
font=('arial', 14, 'bold'))
self.Display.grid(row=0, column=0, padx=3)
# =============================================List box and
scrollbar===========================================
sb = Scrollbar(List_Frame)
sb.grid(row=0, column=1, sticky='ns')
self.list = Listbox(List_Frame, font=(
'arial', 13, 'bold'), width=140, height=8)
self.list.bind('<<ListboxSelect>>', Tuple)
self.list.grid(row=0, column=0)
sb.config(command=self.list.yview)
#
==================================================Buttons========
=========================================
btnSave = Button(Button_Frame, text='SAVE', font=(
'arial', 14, 'bold'), width=10, command=Insert)
btnSave.grid(row=0, column=0, padx=5, pady=5)
btnDisplay = Button(Button_Frame, text='DISPLAY', font=(
'arial', 14, 'bold'), width=10, command=View)
btnDisplay.grid(row=0, column=1, padx=5, pady=5)
btnReset = Button(Button_Frame, text='RESET', font=(
'arial', 14, 'bold'), width=10, command=Reset)
btnReset.grid(row=0, column=2, padx=5, pady=5)
btnReset = Button(Button_Frame, text='UPDATE', font=(
'arial', 14, 'bold'), width=10, command=Update)
btnReset.grid(row=0, column=3, padx=5, pady=5)
btnSearch = Button(Button_Frame, text='SEARCH', font=(
'arial', 14, 'bold'), width=10, command=Search)
btnSearch.grid(row=0, column=4, padx=5, pady=5)
btnDelete = Button(Button_Frame, text='DELETE', font=(
'arial', 14, 'bold'), width=10, command=Delete)
btnDelete.grid(row=0, column=5, padx=5, pady=5)
btnReceipt = Button(Button_Frame, text='RECEIPT', font=(
'arial', 14, 'bold'), width=10, command=Receipt)
btnReceipt.grid(row=0, column=6, padx=5, pady=5)
btnExit = Button(Button_Frame, text='EXIT', font=(
'arial', 14, 'bold'), width=10, command=Exit)
btnExit.grid(row=0, column=7, padx=5, pady=5)
root = Tk()
obj = Fee(root)
root.mainloop()
Fees Backend.python
import sqlite3
def connect():
con = sqlite3.connect('fee.db')
cur = con.cursor()
cur.execute('CREATE TABLE IF NOT EXISTS fee(id INTEGER PRIMARY
KEY, recpt integer, name text, admsn text, date integer, \
branch text, sem text, total integer, paid integer, due integer)')
con.commit()
con.close()
def insert(recpt = ' ', name = ' ', admsn = ' ', date = ' ', branch = ' ', sem = ' ', total = '
', paid = ' ', due = ' '):
con = sqlite3.connect('fee.db')
cur = con.cursor()
cur.execute('INSERT INTO fee VALUES (NULL,?,?,?,?,?,?,?,?,?)',
(recpt,name,admsn,date,branch,sem,total,paid,due))
con.commit()
con.close()
def view():
con = sqlite3.connect('fee.db')
cur = con.cursor()
cur.execute('SELECT * FROM fee')
row = cur.fetchall()
return row
con.commit()
def delete(id):
con = sqlite3.connect('fee.db')
cur = con.cursor()
cur.execute('DELETE FROM fee WHERE id = ?',(id,))
con.commit()
con.close()
def update(id,recpt = ' ', name = ' ', admsn = ' ', date = ' ', branch = ' ', sem = ' ', total
= ' ', paid = ' ', due = ' '):
con = sqlite3.connect('fee.db')
cur = con.cursor()
cur.execute('UPDATE fee SET recpt = ? OR name = ? OR admsn = ? OR date
= ? OR branch = ? OR sem = ? OR total = ? OR \
paid = ? OR due = ?',
(recpt,name,admsn,date,branch,sem,total,paid,due))
con.commit()
con.close()
def search(recpt = ' ', name = ' ', admsn = ' ', date = ' ', branch = ' ', sem = ' ', total = '
', paid = ' ', due = ' '):
con = sqlite3.connect('fee.db')
cur = con.cursor()
cur.execute('SELECT * FROM fee WHERE recpt = ? OR name = ? OR
admsn = ? OR date = ? OR branch = ? OR sem = ? OR total = ? OR paid = ? OR
due = ?',(recpt,name,admsn,date,branch,sem,total,paid,due))
row = cur.fetchall()
return row
con.commit()
connect()
CHAPTER-7
SNAPSHOT
After successful registration .The students can then login into their accounts with the id
and
password they choose during registration. The above page shows login page.
This provides the Status of the leave application requested by the student in order to their
roll numbers.
The students have the option to change their password.They need their old
password in order to change the password.
CHAPTER-8
CONCLUSION
School Management System is very useful for any institution to maintain their leave
records of their students. This system not only maintains the leave details of the student, but, it
also maintains the applications of the students. The head of the department may accept or reject
the applications requested by the student.This system has been successfully implemented and all
the modules were tested with relevant test data. In future, any modification may be easily
adopted as per the needs of the institution. This software is easy to use, reliable and robust.
BIBLOGRAPHY
• PHP book by Vasvani (TMH publications).
• Beginning PHP5 by WROX.
• www.google.com
• www.wikipedia.com
• www.w3schools.com
• Informatics practices by SumitaArora.
• Head First PHP &MySQ by Lynn Beighley and Michael
Morrison(O’Reilly)