Bonafide Certificate: School Management System

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 47

SCHOOL MANAGEMENT SYSTEM

A PROJECT REPORT
Submitted by
UDHAYA KUMAR.E Register NO.:B9S10136
VEERA MUTHU.B Register NO.:B9S10137

In partial fulfillment for the award of degree


of
BACHELOR OF COMPUTER SCIENCE
in
Madurai Kamaraj University

Under the guidance of


Miss. M.Sc., PGDCA., M.S., M. Phil

CARDAMOM PLANTERS’ ASSOCIATION COLLEGE


DEPARTMENT OF COMPUTER SCIENCE
BODINAYAKANUR-625513

APRIL-2022

BONAFIDE CERTIFICATE

Certified that this project entitled“SCHOOL MANAGEMENT SYSTEM”is a bonafied


work of Mr.E.UDHAYA KUMAR (B9S10136) and Ms.B.VEERA MUTHU (B9S10137),
who carried out of the work under my supervision, for the partial fulfillment of the
requirements for the award of the degree of bachelor of Computer Science of Madurai
Kamaraj University, Madurai during December 2021 to April 2022.
Place:Bodinayakanur.

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.

Submitted for the viva-voice examination held on …………….............

Internal Examiner External Examiner


ACKNOWLEDGEMENT
We thank Cardamom Planters’ Association College, Bodinayakanur for having given us
an opportunity to do this course.Our sincere thanks to Principal(in-charge)Dr.
M.Manoharanfor his wholehearted support in completing our project work.
Our profound thanks to Dr.S.Sivakumar. B.E.,. M.S., Ph.D., Head of the Department of
Computer Science, Cardamom Planters’ Association College, Bodinayakanur, for his
encouragement in completing this project in time.
We express our sincere thanks to ourguideMr.K.Madasamy. M.Sc., PGDCA.,M.S.,M.Phil
Head&.Associate Professor in Computer Science,Cardamom Planters’ Association
College.His constant source of inspiration and support encouraged us in the successful
completion of this project work in time.

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

S.NO TITLE PAGE NO

Chapter 1 INTRODUCTION 1-3


1.1 Abstract 1
1.2 Modules Description 2

Chapter 2 SYSTEM SPECIFICATION 4-21


2.1Technologies Used
2.2 Hardware Specification 4
2.3 Software Specification 5
2.4 Software Description 6

Chapter 3 SYSTEM ANALYSIS 22-23


3.1 Existing System 22
3.2 Proposed System 23
3.3 Feasibility Analysis

Chapter 4 SYSTEM DESIGN 24-25


4.1 Architectural Design 24
4.2 Data Flow Diagram 25

Chapter 5 SYSTEM TESTING 26-30


5.1 Type of Testing 26
5.2 System Testing 27
5.3 System Implementation 28

Chapter 6 SAMPLE CODE 31-42

Chapter 7 SCREEN SHOTS 43-45

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

1.2.1 MODULE DESCRIPTION


Student Information
A student information management system is a data management software
helps educational institutions digitize and efficiently manage student information.

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.

A fee management software is a task management system that automates fee


collection and receipt generation.

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

2.2 Hardware Requirements:

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

Model Number : E14-25

Processor : AMD A6-7350B


RAM : 4 GB

HDD : 500 GB

Operation System : Window 10-64 Bit

Screen Size : 14 Inches

2.3 Software Implementation:


• Python is a high-level, interpreted, interactive and object scripting language.

• 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.

A Relational Database Management System (RDBMS) is a software that −


• Enables you to implement a database with tables, columns and indexes.
• Guarantees the Referential Integrity between rows of various tables.
• Updates the indexes automatically.
• Interprets an SQL query and combines information from various tables.

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 is a server-side scripting language designed for development but also used as


a general-purpose programming language. Originally created by RasmusLerdorf in 1994, the
PHP implementations now produced by The PHP Group. PHP originally stood for Personal
Home Page, but it now stands for the recursive acronym PHP: Hypertext Preprocessor. PHP
code may be embedded into HTML code, or it can be used in combination with various web
template systems, web content management systems, and web frameworks. PHP code is usually
processed by a PHP interpreter implemented as a module in the web server or as a Common
Gateway Interface (CGI) executable. The web server combines the results of the interpreted and
executed PHP code, which may be any type of data, including images, with the generated web
page. PHP code may also be executed with a command-line interface(CLI) and can be used to
implement standalone graphical applications.

The standard PHP interpreter, powered by the Zend Engine, is free software released


under the PHP License. PHP has been widely ported and can be deployed on most web servers
on almost every operating system and platform, free of charge.
Sample PHP Code :
<!DOCTYPE HTML>
<html>
    <head>
        <title>Example</title>
    </head>
    <body>

        <?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.

Advantages of PHP over Other Languages


If you're familiar with other server-side languages like ASP.NET or JSP, you might be wondering
what makes PHP so special. There are several advantages why one should choose PHP over
other languages. Here are some of them:
Easy to learn: PHP is easy to learn and use. For beginner programmers who just started out in
web development, PHP is often considered as the best and preferable choice of scripting
language to learn.
Open source: PHP is an open-source project — the language is developed and maintained by a
worldwide community of developers who make its source code
freely available to download and use. There are no costs associated with using PHP for
individual or commercial projects, including future updates.
Portability: PHP runs on various platforms such as Microsoft Windows, Linux, Mac OS, etc.
and it is compatible with almost all servers used today such Apache, IIS, etc.
Fast Performance: Scripts written in PHP usually execute faster than those written in other
scripting languages like ASP.NET or JSP.
Vast Community: Since PHP is supported by the worldwide community, finding help or
documentation for PHP online is extremely easy.
Standard PHP Syntax:
A PHP script starts with the <?php and ends with the ?> tag.
Every PHP statement end with a semicolon (;) — this tells the PHP engine that the end of the
current statement has been reached.
Embedding PHP within HTML
PHP files are plain text files with .php extension. Inside a PHP file you can write HTML like you
do in regular HTML pages as well as embed PHP codes for server side execution.
PHP Comments
A comment is simply text that is ignored by the PHP engine. The purpose of comments is to
make the code more readable. It may help other developer (or you in the future when you edit the
source code) to understand what you were trying to do with the PHP.PHP support single-line as
well as multi-line comments. To write a single-line comment either start the line with either two
slashes (//) or a hash symbol (#). However to write multi-line comments, start the comment with
a slash followed by an asterisk (/*) and end the comment with an asterisk followed by a slash
(*/), like this:

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.

3.1 EXISTING SYSTEM


The existing system is manual system. Needs to be converted into automated
System.Risk of mismanagement of data.Less Security. No proper coordination between different
Application and Users. Fewer Users-Friendly. Accuracy not guaranteed. Not in reach of distant
users. Communication between users through phone or manually.
In Existing System, Every college follows manual procedure. Student has to manually
submit their leave letter to HOD. After the approval of HOD the leave letter is send to particular
staff in office . Staff in office will manually maintain the record of leave for each student in a
leave register. At the end of each month particular staff in office will calculate leaves of every
student which is a time taking process and there is a chance of losing records.

3.2 PROPOSED SYSTEM


The development of the new system contains the following activities, which try to
automate the entire process keeping in view of the database integration approach.
User friendliness is provided in the application with various controls. The system makes
the overall project management much easier and flexible. There is no risk of data
mismanagement at any level while the project development is under process. It provides high
level of security with different level of authentication. Users from any part of the world can
make use of the system. New system will process accurate results. New system will be much
better in performance as compared to existing one.
The proposed system automates the existing system. It decreases the paper work and
easier record maintenance by having a Database for leave maintenance. Chances of losing data
are not possible.
The School Management System reduces the over work and time duration. It provides an
easy, maintained and systematic environment for the higher panel (principal) for the approval .
This application is an online application which makes more flexible to access information.
3.3 FEASIBILITY ANALYSIS
The feasibility study includes the complete initial analysis of all tasks related to the proposed
system. Therefore the study must be conducted in the manner that will reflect the economic as
well as technical feasibility of the system proposal. Feasibility and risk analysis are related in
many ways. If project risk is great, the feasibility of producing quality software is reduced.
During product engineering, however, we concentrate our attention on four primary areas of
interest. Measure of how beneficial of practical the development of an information system will
be to an organization.
• Feasibility Analysis

• Process by which feasibility is measured


• Continuing process of feasibility assessment

• 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.

4.1 ARCHITECTURAL DESIGN


Architectural design represents the structure of data and program components that are
required to build a computer-based system. It considers the architectural style that the system
will take, the structure and properties of the components that comprise the system, and
interrelationships that occur among all architectural components of system.

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

SEVERAL STAGES OF INPUT DESIGN:


• Data recording
• Data verification
• Data correction
• Transmitting data to the system
The input design involves in converting the originated inputs into a system based format.
The aim of input design is to make the data entry easier, logical error free. It helps to filter errors
in the input data or otherwise it would enter into the database. It involves procedures for
capturing data, over passing them verifying it and then passing them on to the further processing.
After choosing the input medium, attention is given to the careful design of the input stages for
error handling and validation procedure.

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.

4.2 FLOW CHART

Fig. Registration

Fig. Login

Fig. Leave Application

Fig. Leave Status/Leave History

Fig. Leave Sanction by Admin

Fig . Report
CHAPTER 5
SYSTEM TESTING
• Software Testing

Software testing is an investigation conducted to provide the stakeholders


(Users/developers) with information about the quality of the software product or service under
test. Software testing can also provide an objective, independent view of the software to allow
the business to appreciate and understand the risks of software implementation. Test techniques
include the process of executing a program or application with the intent of finding software
bugs (errors or other defects), and verifying that the software product is fit for use.
Software testing involves the execution of a software component or system component to
evaluate one or more properties of interest. In general, these properties indicate the extent to
which the component or system under test
• meets the requirements that guided its design and development,
• responds correctly to all kinds of inputs,
• performs its functions within an acceptable time,
• is sufficiently usable,
• can be installed and run in its intended environments, and
• achieves the general result its stakeholder’s desire.

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

• White Box Testing


White box testing is a test case design method that uses the control structure of
the procedural design to derive test cases. After performing white box testing it
was identified that

• The Leave Recording System (LRS) software guarantees


that all independent path within the modules have been
exercised at least one.
• It has been exercised all logical decision on their true and
false sides.
• It was tested to execute all loops at their boundaries and
within their Operational bounds.
• It was tested for the internal data structures to ensure their
validity.
• Control Structure testing
The following tests were conducted and it was noted that the Module Verification
Strategy is performing well.
• Basic path Testing
• Condition Testing
• Data Flow Testing
• Loop Testing

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.

Functional validity of LRS checked.


Checked the isolation of the boundaries of a class.

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')

title_Frame = LabelFrame(root, font = ('arial',50,'bold'), width = 1000, height = 100, bg =


'lightblue', relief = 'raise', bd = 13)
title_Frame.grid(row = 0, column = 0, pady = 50)

title_Label = Label(title_Frame, text = 'School Management System', font =


('arial',30,'bold'), bg = 'lightblue')
title_Label.grid(row = 0, column = 0, padx = 150)

#========================================================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===
==================================================================

self.Main_Frame = LabelFrame(self.master, width = 1300, height = 500, font =


('arial',20,'bold'), \
bg = 'lightblue',bd = 15, relief = 'ridge')
self.Main_Frame.grid(row = 0, column = 0, padx = 10, pady = 20)

self.Frame_1 = LabelFrame(self.Main_Frame, width = 600, height = 400, font =


('arial',15,'bold'), \
relief = 'ridge', bd = 10, bg = 'lightblue', text = 'STUDENT
INFORMATION ')
self.Frame_1.grid(row = 1, column = 0, padx = 10)

self.Frame_2 = LabelFrame(self.Main_Frame, width = 750, height = 400, font =


('arial',15,'bold'), \
relief = 'ridge', bd = 10, bg = 'lightblue', text = 'STUDENT
DATABASE')
self.Frame_2.grid(row = 1, column = 1, padx = 5)
self.Frame_3 = LabelFrame(self.master, width = 1200, height = 100, font =
('arial',10,'bold'), \
bg = 'lightblue', relief = 'ridge', bd = 13)
self.Frame_3.grid(row = 2, column = 0, pady = 10)

#========================================================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)

#===============================================List Box and


self.scrollbar========================================================
self.scrollbar = Scrollbar(self.Frame_2)
self.scrollbar.grid(row = 0, column = 1, sticky = 'ns')

self.listbox = Listbox(self.Frame_2, width = 75, height = 20 , font =


('arial',12,'bold'))
self.listbox.bind('<<ListboxSelect>>', StudentRec)
self.listbox.grid(row = 0, column = 0)
self.scrollbar.config(command = self.listbox.yview)

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

This is the homepage/ index page of the site.

This is the registration page where students can register .

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.

After logging in the student home page is opened as shown above.


Student can make request for their to get it approved from the respective staffs.

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.

After successful operation a password change notification is displayed to the user.


The above page is the administrator login page. It requires the administrator
username and password.

This is the homepage of administrator.


This module will allow the staff to Approve / Reject the leave request submitted by the
student.
Admin can view the leave history of the student with respect to their year level in school.
Admin can get an date-wise, month-wise report of the leave request.
The administrator can view report of any of the students from here with respect to their
leave date.

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)

You might also like