College Management Trs

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

INDEX

COLLEGE MANAGEMENT SYSTEM

ABSTRACT
Chapter 1- INTRODUCTION
1.1 GENERAL
1.2 OBJECTIVE
1.3 WHAT’S INCLUDED
1.4 SMS GATWAY
1.5 EXISTING SYSTEM
1.6 PROPOSED SYSTEM
1.7 LITERATURE SURVEY

Chapter 2- PROPOSED SYSTEM METHODOLOGY

2.1 PROPOSED SYSTEM BLOCK DIAGRAM

Chapter 3- DOMAIN EXPLAINATION


3.1 DATABASE MANAGEMENT SYSTEM
3.2 CHARACTERISTICS
3.3 BASIC TERMINOLOGIES

Chapter 4- TECHNOLOGIES USED


4.1 BACK_END TECHNOLOGIES
4.1.1 PYTHON
4.1.2 PYCHARM
4.1.3 SQLITE 3 DATABASE
4.1.4 DJANGO FRAMEWORK
4.2 FRONT_END TECHNOLOIES
4.2.1 HTML
4.2.2 CSS
4.2.3 BOOTSTRAP

Chapter 5- SOFTWARE REQUIREMENT SPECIFICATIONS


5.1 INTRODUCTION
5.1.1 HARDWARE REQUIREMENTS
5.1.1 SOFTWARE REQUIREMENTS

Chapter 6- SYSTEM DESIGN


6.1- DESIGN METHODOLOGY
6.2- ENTITY RELATIONSHIP DIAGRAM
6.3- FLOWCHART

Chapter 7- SOURCE CODE

Chapter 8- OUTPUT SCREEN

Chapter 9- CONCLUSION & REFERENCE


9.1 CONCLUSION
9.2 REFERENCE
COLLEGE
MANAGEMENT
SYSTEM
ABSTRACT

College management system is an integrated console based application that handles various academic
activities of a College. It is a mini python project that is used to keep and maintain the complete record of
Students. It was developed using Python Tkinter and used sqlite3.

A management system istheframeworkofpolicies,processesandproceduresusedbyan


organization (irrespective of the field)toensurethatitcanfulfillallthetasksrequiredtoachieve its
objectives. College Management System is also one among them and includes factors likeLogin
page, College search details, College Menu’s like Student information, Fee details, Marksheet
details, College Library
etc.Inourproposedapproach,wefocusonsendingthedetailsofStudentacademic marks such as
internal marks thathavebeenscored.UsinganSMSgateway,staffwillbeableto send the scored marks
ofallthestudentssimultaneouslytothemultipleusers.Asthenumbersof people using mobile
devicesareincreasingwitheverypassingday,companiesaremakinguseof SMSs to promote their
services and products and increase their sales. In the same way, SMS system for college provides
the updated marks of their children each time.
CHAPTERI

INTRODUCTION

1.1GENERAL
A student information system (SIS), student management system, school administration
software or student administration system is a management information system for education
establishments to manage student data. Student information systems provide capabilities for
results of student tests andother assessment scores; building student schedules; tracking student
details; and managing many other student-related data needs in a college. College Management
System deals with all kind ofstudentdetails,academicrelatedreports,collegedetails,library details
etc.Ittracksallthedetailsofastudentfromthedayone to the end of his course which can be used for
all reporting purpose, progress in the course, completed semesters years, coming semester year
curriculum details, exam details, project or any other assignment details, final exam result;

The College management system is an automated version of manual StudentManagement


System. Itcanhandlealldetailsaboutastudent.Thedetailsincludecollegedetails, subject details,
student personnel details, academic details, exam details etc... In case ofmanual system they need
a lot of time, manpower etc. Here almost all work is computerized. So the accuracy is
maintained. Maintaining backup is very easy. It can do within a few minutes. Our system has
two type of accessing modes, administrator and user.Studentmanagementsystemis managed by
an administrator. It is the job of the administrator to insert update and monitor the whole process.
When a user log in to the system. He would only viewdetailsofthestudent.He can't perform any
changes.
1.2 OBJECTIVE
❖ To obtain student information and marksheet details.
❖ All information regarding student fee and college library.

1.3WHAT’S INCLUDED
Login: This Login window prevent unauothrised access.

Menu: A Menu page which helps in easy access of other segmetns.

Student Profile: Over here we can see all the general informations related to students. Furthermore, we can
add, remove and update the informations.

Library Management System: In this window we can see all the issued book related details. It
additionally provides a book issue feature where we can check all the present books and issue them.

Marksheet: Over here we can search students mark sheet via roll number and also we can instantly add
new mark sheet too into the local database.

Student will beabletologinandchecktheirmarkswithrespecttotheirsubjects. Once all the updates are


completed, Admin will be sending the details of the student parent’s number.
1.4 SMSGATEWAY
An SMS gateway is a Web site that allows users to send SMS messages from a Web
browser to people within the cell served by that gateway. An SMSgatewaycanalsoserveasan
international gateway for users with roaming capability, allowing SMS communication away
from the home network. An SMS gateway allows a computer to send or receive Short
MessageService (SMS) transmissions to or from a telecommunications network. Most messages
are eventually routed into the mobile phone networks. Many SMS gateways support media
conversion from email and other formats.

1.5EXISTINGSYSTEM

Existing approaches focused on the campus system as .Campus is considered as anetwork


to distribute the information among students and lecturers where in all the faculty members,
students and parents are able to communicate with each other through a network system.
Existing systems used android application for student details maintenance, discussion forum,
notice board, attendance and report generation of student absence where parents were known
about the student absence during lectures.
1.6PROPOSEDSYSTEM

Proposed approach mainly focuses on the marks obtained by the students and sending
those marks to their individual parents through an SMS. An SMS Gateway technique is usedto
provide service where in all the parents are getting SMS regarding marks obtained after every
internal examination inthecollege.SMSGatewayhelpsparentstohaveupdatesoftheirchildren
performance throughout the year.

ADVANTAGES

➢ Neednottohaveanyinternetconnectionastheyaresendingdirectlytotheparents mobile.
➢ Parents can have update regarding performance of the student.

DISADVANTAGES

➢ Using a network system needs the access of internet compulsorily.


➢ Parents need to login every time for communicating.

APPLICATIONS:

➢ Schools and colleges database management.


➢ Any course/training institutes.
➢ SMS Gateway can be used for sales
1.7 LITERATURESURVEY

CollegeManagementSystem(CMS)providesasimpleinterfaceformaintenance of
studentinformation.Itcanbeusedbyeducationalinstitutesorcollegestomaintainthe
recordsofstudentseasily.Thecreationand management of accurate, up- to - date information
regarding a students’ academic career is critically important in the university as well as colleges.
Studentinformationsystemdealswithallkindofstudentdetails,academicrelatedreports,
collegedetails,coursedetails,curriculum,batchdetails,placementdetailsandotherresource related
details too.Itwillalsohavefacultydetails,batchexecutiondetails,students’detailsinall
aspects,thevariousacademicnotificationstothestaffandstudentsupdatedby thecollege
administration.It also facilitate us explorealltheactivitieshappeninginthecollege,
Differentreportsand Queries can be generated based on vast options related to students, batch,
course,faculty,exams, semesters, certification and even for the entire college.The
placementofficeris responsibleforupdatingtheplacementrelatedinformationlikeeligible
criteriaforaparticularcompany,arrivingdateforthecompanywhichiscomingfor
recruitment,thelistofstudentswhoareeligibleforattendingtherecruitmentprocess. E-
Library(alsoreferredtoasdigitallibrary)isaspeciallibrarywithafocusedcollectionof digital object.

This project is aimed at designing the software to manage the students' academic data
such astheirstatus(pass,fail,probation,dismiss)sothattheirGPAandCGPAcanbegenerated. This
information is useful for students to plan their academic performance in the nextsemester. The
system will also enable the Head of Programs, the Academic Advisors as well as other faculty's
management teams to easily simulate the students' study plan through user friendly menu driven
interest.
CHAPTER-II

PROPOSEDSYSTEMMETHODOLOGIES

2.1 PROPOSEDSYSTEMBLOCKDIAGRAM

ADMIN LOGIN MODULE

❖ Faculty Update
Admin will update or register the Faculty details who newly joined in the College. Admin has to
update the details like Faculty_ID i.e. respective identity number provided to the staff,
Faculty_Name i.e., respective name of the faculty, Subject the faculty is about to
teach/lecture, Semester and department which faculty is joining and lecturing.

❖ Student Update
Admin will update or register the Student details such as Name, respectedVTU_NOprovidedfrom
the university, Academic details like Semester, Subject, Department, Contact_No, etc
who’s newly joined.
❖ Student Updates to Parents
Admin will check all the marks and attendance details provided from the faculty with respect to
subject and student, later will send the marks and attendance of the respectivestudentto
the registered contact number in student registration page to provide the details to the
parents through the SMS gateway service.

FACULTY LOGIN MODULE

❖ Marks and Attendance Updates


Faculty has to log in using the registered ID given by the Admin where in all the other respective
details will be displayed automatically. Faculty is supposed to enter the internal &
externalmarksandattendancewithrespecttothestudentandthesubjectwhichFacultyis
teaching.

STUDENT LOGIN MODULE

❖ Checks Marks And Attendance


Anyregisteredstudentcanloginandchecktheirmarksandattendancepercentagewithrespecttothe subject by
providing the registered USN_NO.

Dataflow Diagram:

Once the Admin updates the Faculty andStudentsDetails,facultysubmitsthemarksand


attendance of the respective studentswhichisinturncheckedbytheAdminandSMSaresentto the
parents by the Gateway Services. Student can also login using USN No and check their updates.
Enter Admin Credentials

Inserts the values in Database

Stores the
Details in the Database
Retrieves the FacultyValues from the Database

Logs in and enters the details

Fetches the Registered Contact No from the Database

Fetches the Registered USNNo from the Database


PROCESS MODEL USED WITH JUSTIFICATION

SDLC (Spiral Model):

SDLC is nothing but Software Development Life Cycle. It is a standard which is used by software
industry to develop good software.

Stages in SDLC:
 Requirement Gathering
 Analysis
 Designing
 Coding
 Testing
 Maintenance
Requirements Gatheringstage:

The requirements gathering process takes as its input the goals identified in thehigh-level
requirements section of the project plan. Each goal will be refined intoa set of one or more
requirements.These requirements define the major functions of the intended application, define
operational data areas and reference data areas, and define the initial data entities.Major
functions include critical processes to be managed, as well as missioncritical inputs, outputs and
reports. A user class hierarchy is developed andassociated with these major functions, data
areas, and data entities.Each of these definitions is termed a Requirement. Requirements are
identified byunique requirement identifiers and, at minimum, contain a requirement title and
textual description.

These requirements are fully described in the primary deliverables for this stage:the
Requirements Document and the Requirements Traceability Matrix (RTM).The requirements
document contains complete descriptions of each requirement,including diagrams and references
to external documents as necessary. Note thatdetailed listings of database tables and fields are
not included in the requirementsdocument.
The title of each requirement is also placed into the first version of the RTM,along with the
title of each goal from the project plan. The purpose of the RTM isto show that the product
components developed during each stage of the softwaredevelopment lifecycle are formally
connected to the components developed inprior stages.
In the requirements stage, the RTM consists of a list of high-level requirements,or goals, by
title, with a listing of associated requirements for each goal, listed byrequirement title. In this
hierarchical listing, the RTM shows that eachrequirement developed during this stage is formally
linked to a specific productgoal. In this format, each requirement can be traced to a specific
product goal,hence the term requirements traceability.
The outputs of the requirements definition stage include the requirementsdocument, the
RTM, and an updated project plan.
 Feasibility study is all about identification of problems in a project.
 No. of staff required to handle a project is represented as Team Formation, in this case only
modules are individual tasks will be assigned to employees who are working for that project.
 Project Specifications are all about representing of various possible inputs submitting to the
server and corresponding outputs along with reports maintained by administrator
Analysis Stage:

The planning stage establishes a bird's eye view of the intended software product,and uses
this to establish the basic project structure, evaluate feasibility and risksassociated with the
project, and describe appropriate management and technicalapproaches.

The most critical section of the project plan is a listing of high-level productrequirements, also
referred to as goals. All of the software product requirementsto be developed during the
requirements definition stage flow from one or moreof these goals. The minimum information for
each goal consists of a title andtextual description, although additional information and references
to externaldocuments may be included.The outputs of the project planning stage are the
configuration management plan,the quality assurance plan, and the project plan and schedule,
with a detailedlisting of scheduled activities for the upcoming Requirements stage, and
highlevelestimates of effort for the out stages.

Designing Stage:

The design stage takes as its initial input the requirements identified in theapproved
requirements document. For each requirement, a set of one or moredesign elements will be
produced as a result of interviews, workshops, and/orprototype efforts.Design elements describe
the desired software features in detail, and generallyinclude functional hierarchy diagrams, screen
layout diagrams, tables of businessrules, business process diagrams, pseudo code, and a
complete entity-relationshipdiagram with a full data dictionary. These design elements are
intended todescribe the software in sufficient detail that skilled programmers may developthe
software with minimal additional input.

When the design document is finalized and accepted, the RTM is updated to showthat each
design element is formally associated with a specific requirement. Theoutputs of the design stage
are the design document, an updated RTM, and anupdated project plan.

Development (Coding) Stage:

The development stage takes as its primary input the design elements described inthe
approved design document. For each design element, a set of one or moresoftware artifacts will
be produced. Software artifacts include but are not limitedto menus, dialogs, data management
forms, data reporting formats, andspecialized procedures and functions. Appropriate test cases
will be developedfor each set of functionally related software artifacts, and an online help
systemwill be developed to guide users in their interactions with the software.

The RTM will be updated to show that each developed artifact is linked to aspecific design
element, and that each developed artifact has one or morecorresponding test case items. At this
point, the RTM is in its final configuration.The outputs of the development stage include a fully
functional set of softwarethat satisfies the requirements and design elements previously
documented, anonline help system that describes the operation of the software, an
implementationmap that identifies the primary code entry points for all major system functions,
atest plan that describes the test cases to be used to validate the correctness andcompleteness
of the software, an updated RTM, and an updated project plan.

Integration & Test Stage:

During the integration and test stage, the software artifacts, online help, and testdata are
migrated from the development environment to a separate testenvironment. At this point, all test
cases are run to verify the correctness andcompleteness of the software. Successful execution of
the test suite confirms arobust and complete migration capability.During this stage, reference data
is finalized for production use and productionusers are identified and linked to their appropriate
roles. The final reference data(or links to reference data source files) and production user list are
compiled intothe Production Initiation Plan.
The outputs of the integration and test stage include an integrated set of software,an online
help system, an implementation map, a production initiation plan thatdescribes reference data
and production users, an acceptance plan which containsthe final suite of test cases, and an
updated project plan.

 Installation & Acceptance Test:

During the installation and acceptance stage, the software artifacts, online help,and initial
production data are loaded onto the production server. At this point, alltest cases are run to verify
the correctness and completeness of the software.Successful execution of the test suite is a
prerequisite to acceptance of thesoftware by the customer.
After customer personnel have verified that the initial production data load iscorrect and the
test suite has been executed with satisfactory results, the customerformally accepts the delivery
of the software.
The primary outputs of the installation and acceptance stage include a productionapplication,
a completed acceptance test suite, and a memorandum of customeracceptance of the software.
Finally, the PDR enters the last of the actual labordata into the project schedule and locks the
project as a permanent project record.At this point the PDR "locks" the project by archiving all
software items, theimplementation map, the source code, and the documentation for future
reference.
Maintenance:
Outer rectangle represents maintenance of a project, Maintenance team will start with
requirement study, understanding of documentation later employees will be assigned work and
they will under go training on that particular assigned category.
For this life cycle there is no end, it will be continued so on like an umbrella (no ending point to
umbrella sticks).
SYSTEM ARCHITECTURE
Architecture flow:

Below architecture diagram represents mainly flow of requests from users to database through
servers. In this scenario overall system is designed in three tires separately using three layers
called presentation layer, business logic layer and data link layer. This project was developed
using 3-tire architecture.

Presentation
Layer

Request Response
Business
Logic Layer

Data Link
Layer

Data
Base
CHAPTERIII

DOMAINEXPLANATION

3.1 DATABASEMANAGEMENTSYSTEM

DatabaseManagementSystemorDBMSinshort referstothetechnologyof storing and


retrieving users’ data with utmost efficiency along with appropriate security measures. DBMS
allows its users to create their own databases as per their requirement. These databases are highly
configurable and offer a bunch of options.

Database is a collection of related data and data is a collection of facts and figures that
can be processed to produce information. Mostly data represents recordable facts.Data aids in
producing information, which is based on facts. For example, if we have data about marks
obtained by all students, we can then conclude about toppers and average marks. A database
management system stores data in such a way thatitbecomeseasiertoretrieve,manipulate,and
produce information
3.2 CHARACTERISTICS

Traditionally, data was organized in file formats.DBMSwasanewconceptthen,andall the


research was done to make it overcome the deficiencies in traditional style of data management.
A modern DBMS has the following characteristics:

❖ Real-world entity: A modern DBMS is more realistic and uses real-world entities to
design its architecture. It uses the behavior and attributes too. For example, a school
database may use students as an entity and their age as an attribute.

❖ Relation-based tables: DBMS allows entities and relations among them to form tables.
A user can understand the architecture of a database just by looking at the table names.

❖ Isolation of data and application:A database system is entirelydifferentthanitsdata. A


database is an active entity, whereas data is said to be passive, on which the database
works and organizes.DBMS also stores metadata, which is data about data, to ease its
own process.

❖ Lessredundancy: DBMS follows the rules of normalization, which splits arelation when
any of its attributes is having redundancy in values. Normalization is a mathematically
rich and scientific process that reduces data redundancy.

❖ Consistency: Consistency is a state where every relation in a database remainsconsistent.


There exist methods and techniques, which can detect attempt of leaving database in
inconsistent state. ADBMS can provide greater consistencyascompared
toearlierformsofdatastoring applications like file-processing systems.
❖ Query Language: DBMS is equipped with query language, which makes it more
efficient to retrieve and manipulate data.Ausercanapplyas manyand as different
filteringoptions as requiredtoretrievea set ofdata.Traditionallyitwasnotpossible where file-
processing system was used.

❖ ACID Properties: DBMSfollowstheconceptsofAtomicity,Consistency,Isolation,and


Durability (normally shortened as ACID).These concepts are applied on transactions,
which manipulate data in a database.ACIDpropertieshelpthedatabasestayhealthyin multi-
transactional environments and in case of failure.

❖ MultiuserandConcurrentAccess:DBMSsupports multi-user environment


andallowsthemtoaccessandmanipulatedatainparallel. Though there are restrictions
ontransactionswhenusersattempttohandlethesamedataitem,butusersare always unaware of
them.

❖ Multiple views:DBMS offers multiple views for different users.A user who is in the
Sales department will have a different view of database than a person working in the
Production department. This feature enables the users to have a concentrate view of the
database according to their requirements.

❖ Security:Featureslikemultiple views offersecuritytosome extentwhere users are


unabletoaccessdataofotherusersanddepartments. DBMSoffersmethodsto
imposeconstraints whileenteringdataintothedatabaseandretrievingthesameata
laterstage.DBMS offers many different levels of security features, which enables multiple
users to have different views with differentfeatures.Forexample,ausedinthe Sales
department cannot see the data that belongs to the Purchase department. Additionally, it
can also be managed how much data of the Sales department should be displayed to
theuser.SinceaDBMSisnotsavedonthediskastraditionalfilesystems,it
isveryhardformiscreantstobreakthecode.AtypicalDBMShasuserswithdifferent
rights and permissionswhouseitfor differentpurposes.Someusersretrievedataand some
back it up.

The users of a DBMS can be broadly categorized as follows:


A typical DBMS has users with differentrightsandpermissionswhouseitfordifferent purposes.
Some users retrieve data and some back it up.

Figure 4.1: DBMS Users.


❖ Administrators: Administrators maintain the DBMS and are responsible for
administrating the database.Theyareresponsibletolookafterits usageandby
whomitshouldbeused. Theycreateaccessprofilesforusersandapplylimitationsto maintain
isolation and force security. Administrators alsolook after DBMS resources like system
license, required tools, and other software and hardware related maintenance.
❖ Designers: Designers are the groupofpeoplewhoactuallyworkonthedesigningpartof the
database. They keep a close watch on what data should be kept and in what format. They
identify and design the whole set of entities, relations, constraints, and views.
❖ End Users: End users are those who actually reap the benefits of having a DBMS. End
users can range from simple viewers who pay attention to the logs or market rates to
sophisticated users such as business analysts.

3.3 BASIC TERMINOLOGIES

❖ Entity: An entity in an ER Model is a real-world entity having properties called


attributes.Everyattributeisdefinedbyitssetofvaluescalleddomain.Forexample,in
aschooldatabase,astudentisconsideredasanentity.Studenthasvariousattributes like name,
age, class, etc.
❖ Relationship: Thelogicalassociationamongentitiesiscalledrelationship.
Relationshipsaremappedwithentitiesinvariousways.Mappingcardinalities define the
number of association between two entities.
❖ Database Schema: A database schema is the skeleton structure that represents the logical
view of the entire database. It defines how the data is organized and how the relations
among them are associated.It formulatesalltheconstraintsthataretobeappliedonthe data.

❖ DatabaseInstance:Adatabaseinstanceisastateofoperationaldatabasewithdata
atanygiven time. It contains a snapshot of the database. Database instance tend to change
with time. A DBMS ensures that its every instance (state) is in a valid state, by diligently
following all the validations, constraints and conditions that the database designers have
imposed.

❖ Attributes:Entitiesarerepresentedbymeansoftheirpropertiescalledattributes.All
attributes have values. For example, a student entity may have name, class, and age as
attributes. There exists a domain orrangeofvaluesthatcanbeassignedtoattributes.For
example, a student's name cannot be a numeric value. Ithastobealphabetic.Astudent's age
cannot be negative, etc.

❖ Entity-SetandKeys:Keyisanattributeorcollectionofattributesthatuniquely
identifies an entity among entity set. For example, the roll_number of a student makes
him/her identifiable among students.
TECHNOLOGIES USED
CHAPTER IV

Technologies Used

4.1 Back-End Technologies

 Python : -
Python is an interpreted, object-oriented, high-level programming
language with dynamic semantics. Its high-level built in data
structures, combined with dynamic typing and dynamic binding, make
it very attractive for Rapid Application Development, as well as for use
as a scripting or glue language to connect existing components \\
together. Python's simple, easy to learn syntax emphasizes readability and therefore reduces the cost
of program maintenance. Python supports modules and packages, which encourages program
modularity and code reuse. The Python interpreter and the extensivestandard library are available in
source or binary form without charge for all major platforms,and can be freely distributed.Often,
programmers fall in love with Python because of the increased productivity it provides. Since there
is no compilation step, the edit-test-debug cycle is incredibly fast. Debugging Python programs is
easy: a bug or bad input will never cause a segmentation fault. Instead, when the interpreter
discovers an error, it raises an exception. When the program doesn't catch the exception, the
interpreter prints a stack trace. A source level debugger allows inspection of local and global
variables, evaluation of arbitrary expressions, setting breakpoints, stepping through the code a line at
a time, and so on. The debugger is written in Python itself, testifying to Python's introspective
power. On the other hand, often the quickes t way to debug program is to add a few print statements
to the source: the fast edit-test-debug cyclemakes this simple very attractive.
 Pycharm :-

PyCharm is the most popular IDE used for Python scripting language.This chapter will give you an
introduction to PyCharm and explains its features.PyCharm offers some of the best features to its
users and developers in the following aspects −

 Code completion and inspection.

 Advanced debugging.

 Support for web programming and frameworks such as


Django and Flask.

Features of PyCharm : -

Besides, a developer will find PyCharm comfortable to work with because of the features
mentioned below −

Code Completion :-

PyCharm enables smoother code completion whether it is for built in or for an external package.

SQLAlchemy as Debugger :-

You can set a breakpoint, pause in the debugger and can see the SQL representation of the user
expression for SQL Language code.

Git Visualization in Editor :-

When coding in Python, queries are normal for a developer. You can check the last commit
easily in PyCharm as it has the blue sections that can define the difference between the last
commit and the current one.

Package Management :-

All the installed packages are displayed with proper visual representation. This includes list of
installed packages and the ability to search and add new packages.
 Sqlite3 Database :-
Sqliteis a self-contained, high-reliability, embedded, full-featured, public-domain, SQL database
engine. It is the most used database engine in the world. It is an in-process library and its code is
publicly available. It is free for use for any purpose, commercial or private. It is basically an
embedded SQL database engine. Ordinary disk files can be easily read and write by SQLite
because it does not have any separate server like SQL. The SQLite database file format is cross-
platform so that anyone can easily copy a database between 32-bit and 64-bit systems.

Features of SQLite :-
 The transactions follow ACID
properties i.e. atomicity,
consistency, isolation, and
durability even after system crashes
and power failures.
 The configuration process is very
easy, no setup or administration needed.
 All the features of SQL areimplemented in it with some additional features like partial
indexes, indexes on expressions, JSON, and common table expressions.
 Sometimes it is faster than the direct file system I/O.
Applications of SQLite :-
 Due to its small code print and efficient usage of memory, it is the popular choice for the
database engine in cellphones, PDAs, MP3 players, set-top boxes, and other electronic
gadgets.
 It is used as an alternative for open to writing XML, JSON, CSV or some proprietary
format into disk files used by the application.
 As it has no complication for configuration and easily stores file in an ordinary disk file,
so it can be used as a database for small to medium sized websites.
 It is faster and accessible through a wide variety of third-party tools, so it has great
application in different software platforms.
 Django Framework :-Django is a Python-based web framework which allows you to quickly
create web application without all of the installation or dependency problems that you normally
will find with other frameworks.When you’re building a website, you always need a similar set
of components: a way to handle user authentication (signing up, signing in, signing out), a
management panel for your website, forms, a way to upload files, etc. Django gives you ready-
made components to use.

a) It’s very easy to switch database in Django framework.


b) It has built-in admin interface which makes easy to work with it.
c) Django is fully functional framework that requires nothing else.
d) It has thousands of additional packages available.
e) It is very scalable.
f) Popularity of Django
Django is used in many popular sites like as: Disqus, Instagram, Knight Foundation,
MacArthur Foundation, Mozilla, National Geographic etc. There are more than 5k
online sites based on the
Django framework.
( Source )
Sites like Hot
Frameworks assess the
popularity of a
framework by
counting the number of
GitHub projects and
StackOverflow
questions for each platform, here Django is in 6th position. Web frameworks often
refer to themselves as “opinionated” or “un-opinionated” based on opinions about the
right way to handle any particular task. Django is somewhat opinionated, hence
delivers the in both worlds( opinionated & un-opinionated ).

Features of Django :-
Versatility of Django :-
Django can build almost any type of website. It can also work with any client-side
framework and can deliver content in any format such as HTML, JSON, XML etc.
Some sites which can be built using Django are wikis, social networks, new sites etc.

Security :-
Since Django framework is made for making web development easy, it has been
engineered in such a way that it automatically do the right things to protect the
website. For example, In the Django framework instead of putting a password in
cookies, the hashed password is stored in it so that it can’t be fetched easily by

hackers.

Scalability :-
Django web nodes have no stored state, they scale horizontally – just fire up more of them
when you need them. Being able to do this is the essence of good scalability. Instagram and
Disqus are two Django based products that have millions of active users, this is taken as an
example of the scalability of Django.

Portability :-
All the codes of the Django framework are written in Python, which runs on many platforms. Which
leads to run Django too in many platforms such as Linux, Windows and Mac OS.

4.2Front-End Technologies :-

 HTML (Hypertext Markup Language) :-

Html stands for HyperText Markup Language. It is used to design web pages using a markup
language. HTML is the combination of Hypertext and Markup language. Hypertext defines the
link between the web pages. A markup language is used to define the text document within tag
which defines the structure of web pages. This language is used to annotate (make notes for the
computer) text so that a machine can
understand it and manipulate text
accordingly.

Most markup languages (e.g. HTML)


are human-readable. The language uses
tags to define what manipulation has to be
done on the text.

HTML is a markup language used by


the browser to manipulate text, images,
and other content, in order to display it in the required format. HTML was created by Tim
Berners-Lee in 1991. The first-ever version of HTML was HTML 1.0, but the first standard

version was HTML 2.0, published in 1999 .


Advantages:-
HTML is used to build websites.
It is supported by all browsers.
It can be integrated with other languages like CSS, PythonScript, etc.

Disadvantages :-
HTML can only create static web pages. For dynamic web pages, other languages have to be
used.
A large amount of code has to be written to create a simple web page.
The security feature is not good.
 CSS (Cascading Style Sheets) :-

CSS stands for Cascading Style Sheets. It is the language for describing the presentation of Web
pages, including colours, layout, and fonts, thus making our web pages presentable to the
users.CSS is designed to make style sheets for
the web. It is independent of HTML and can
be used with any XML-based markup
language. Now let’s try to break the
acronym:

 Cascading: Falling of Styles

 Style: Adding designs/Styling our


HTML tags

 Sheets: Writing our style in different documents

Why Use CSS? :--

CSS is used to define styles for your web pages, including the design, layout and variations in
display for different devices and screen sizes.

CSS Solved a Big Problem

HTML was NEVER intended to contain tags for formatting a web page!

HTML was created to describe the content of a web page, like:


<h1>This is a heading</h1>

<p>This is a paragraph.</p>

When tags like <font>, and color attributes were added to the HTML 3.2 specification, it started a
nightmare for web developers. Development of large websites, where fonts and color information were
added to every single page, became a long and expensive process.

To solve this problem, the World Wide Web Consortium (W3C) created CSS.CSS removed the
style formatting from the HTML page!

 Bootstrap :-

Bootstrap is the most popular CSS Framework for developing responsive and mobile-first
websites.Bootstrap 5 is the newest version of Bootstrap.

Bootstrap is an HTML, CSS & JS Library that focuses on simplifying the development of
informative web pages (as opposed to web apps). The primary purpose of adding it to a web project
is to apply Bootstrap's choices of color, size, font and
layout to that project. As such, the primary factor is
whether the developers in charge find those
choices to their liking. Once added to a project,
Bootstrap provides basic style definitions for
all HTML elements. The result is a uniform
appearance for prose, tables and form elements
across web browsers. In addition, developers can take
advantage of CSS classes defined in Bootstrap to further customize the appearance of their contents.
For example, Bootstrap has provisioned for light- and dark-colored tables, page headings, more
prominent pull quotes, and text with a highlight.

SOFTWARE REQUIREMENT
SPECIFICATION
CHAPTER V

 Software Requirement specification

5.1 Introduction -A complete understanding of software requirement is essential to the success of a


webdevelopment effort. No matter how well designed or well coded, a poorly analyzed and specific
program will disappoint user and bring grief to the developers

Table:1HardwareRequirements :-
SL Hardware MinimumSystemRequirement
01 Processor 2.4GHzProcessorspeed

02 Memory 4GBRAM

03 DiskSpace 256GB

Table: 2 Software Requirement :-

SL Software MinimumSystemRequirement
01 OperatingSystem Windows8,Windows10orMACOx10.8,10.9,or10.11,
LINUX
02 DatabaseManagement SQLLite3
System
03 RuntimeEnvironment PyCharm or VSCode

04 IDLE Python

 5.2 Overall Description- Software requirements specification establishes the basis for an
agreement between customers and contractors or suppliers on how the software product should
function (in a market-driven project, these roles may be played by the marketing and development
divisions). Software requirements specification is a rigorous assessment of requirements before the
more specific system design stages, and its goal is to reduce later redesign. It should also provide a
realistic basis for estimating product costs, risks, and schedules. [1] Used appropriately, software
requirements specifications can help prevent software project failure.
 5.3System Features & Feasibility Study :The notion of requirement smell has been
proposed to describe issues in requirement specification where the requirement is not necessarily
wrong but could be problematic.
 Examples of requirements smells are subjective language, ambiguous adverbs and
adjectives, superlatives and negative statements

 5.4 System models


 5.4.1-ScenariosTest scenarios is defined is any functionality that can be tested it is also called
test condition or test possibility as tester you should put your self in the end users shoes and figure
real world scenarios.

 5.4.2–Software development model :-The software development models are the


various processes or methodologies that are being selected for the development of the project
depending on the project’s aims and goals. There are many development life cycle models that
have been developed in order to achieve different required objectives. The models specify the
various stages of the process and the order in which they are carried out.
5.4.3-Model Description :- A use-case model is a model of how different types of users
interact with the system to solve a problem. As such, it describes the goals of theusers, the
interactions between the users and the system, and the required behavior of the system in satisfying
these goals.

5.4.3-Object Model An object model is a logical interface, software or system that is


modeled through the use of object-oriented techniques. It enables the creation of an architectural
software or system model prior to development or programming. An object model is part of the
object-oriented programming (OOP) lifecycle.

5.2 Non Functional Requirement in an SRS document (software requirements


specification) specify the quality attributes of a software system, such as responsiveness, usability, and
reliability.

As functional requirements indicate what a system must do, non-functional requirements support them and
determine how the system must perform.

These features are usually expressed as constraints or criteria that define a level of freedom for developers
or users.
Although non-functional requirements may seem a bit subtler, they are still as important as functional
features, epics, and user stories.

5.2.1 -Performance Requirements


The system must be interactive and the delays involved must be less . ...
Safety. Information transmission should be securely transmitted to server without any changes in
information.

5.2.2- Security / Safety Requirements Nonfunctional Requirements (NFRs)


define system attributes such as security, reliability, performance,
maintainability, scalability, and usability. They serve as constraints or
restrictions on the design of the system across the different backlogs. ... They
ensure the usability and effectiveness of the entire system.

Chapter IV- System Design


6.1 Design Methodology-Design methodology is the broader study of method in design: the study of
the principles, practices and procedures of designing.

6.2 Entity Relationship Diagram –


6.3 Flowcharts :-
6.4 DFD:-
6.5 UML Diagram:-
SOURCE CODE
FOR
COLLEGE MANAGEMENT
SYSTEM
CHAPTER 7

SOURCE CODE
Page_Login.py
from tkinter import*
import tkinter.messagebox
import os

def main():
root = Tk()
app = Screen_Window_1(root)

class Screen_Window_1:
def __init__(self, master):
self.master = master
self.master.title("Login Window")
self.master.geometry('1350x750')
self.master.config(bg = 'lightskyblue')
self.Frame = Frame(self.master, bg = 'lightskyblue')
self.Frame.pack()

self.u_name = StringVar() # x = StringVar() Holds a


string; default value is " "
self.u_password = StringVar()

self.Lbl_Title_Login = Label(self.Frame, text ='Login Menu', font = ('arial', 55,


'bold'), bg ='lightskyblue', fg ='Black')
self.Lbl_Title_Login.grid(row = 0, column = 0, columnspan =3, pady = 40)

self.Log_Frame_1 = LabelFrame(self.Frame, width = 1350, height = 600, relief ='ridge',


bg ='lightskyblue', bd = 15,
font = ('arial',20,'bold'))
self.Log_Frame_1.grid(row = 1, column =0)
self.Log_Frame_2 = LabelFrame(self.Frame, width = 1000, height = 600, relief ='ridge',
bg ='lightskyblue', bd = 15,
font = ('arial',20,'bold'))
self.Log_Frame_2.grid(row = 2, column = 0)

#===================================================LABEL and
ENTRIES=======================================================================
self.lbl_uname = Label(self.Log_Frame_1, text ='Username', font = ('arial', 20,
'bold'), bg ='lightskyblue', bd = 20)
self.lbl_uname.grid(row = 0, column = 0)
self.txt_uname = Entry(self.Log_Frame_1, font = ('arial', 20, 'bold'), textvariable =
self.u_name)
self.txt_uname.grid(row = 0, column = 1, padx = 50)

self.lbl_pass = Label(self.Log_Frame_1, text ='Password', font = ('arial', 20,


'bold'), bg ='lightskyblue', bd = 20)
self.lbl_pass.grid(row = 1, column = 0)
self.txt_pass = Entry(self.Log_Frame_1, font = ('arial', 20, 'bold'), show ='*',
textvariable = self.u_password)
self.txt_pass.grid(row = 1, column = 1)
#=============================================================BUTTONS=================
======================================================
self.login_button = Button(self.Log_Frame_2, text ='Login', width = 10, font =
('airia', 15, 'bold'), command = self.Login)
self.login_button.grid(row = 3, column = 0, padx = 8, pady = 20)

self.reset_button = Button(self.Log_Frame_2, text ='Reset', width = 10, font =


('airia', 15, 'bold'), command = self.Reset)
self.reset_button.grid(row = 3, column = 1, padx = 8, pady = 20)

self.exit_button = Button(self.Log_Frame_2, text ='Exit', width = 10, font = ('airia',


15, 'bold'), command = self.Exit)
self.exit_button.grid(row = 3, column = 2, padx = 8, pady = 20)

#======================================================Code for Login


Button==================================================================
def Login(self):
u = (self.u_name.get())
p = (self.u_password.get())

if (u == str('adones') and p == str(1)):


self.__menu__()
else:
tkinter.messagebox.askyesno("Login","Error : Wrong Password")
self.u_name.set("")
self.u_password.set("")
#self.text_Username.focus()

#======================================================Code for Reset


Button==================================================================
def Reset(self):
self.u_name.set("")
self.u_password.set("")
self.txt_uname.focus()

#======================================================Code for Exit


Button==================================================================

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 = 'College_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 Screen_Window_2:
def __init__(self, master):
self.master = master
self.master.title("Login Main Menu")
self.master.geometry('1350x750')
self.master.config(bg = 'sky blue')
self.Frame = Frame(self.master, bg = 'lightskyblue')
self.Frame.pack()

if __name__ == '__main__':
main()

College_Menu.py
from tkinter import*
import random
import os

def __marksheet__():
filename = 'College_Search_Page.py'
os.system(filename)
os.system('notepad'+filename)

def __Library__():
filename = 'College_Library_Frontend.py'
os.system(filename)
os.system('notepad'+filename)

def __information__():
filename = 'College_Std_info_FrontEnd.py'
os.system(filename)
os.system('notepad'+filename)

def __FeeReport__():
filename = 'College_Fee_Frontend.py'
os.system(filename)
os.system('notepad'+filename)

def menu():
root = Tk()
root.title('Menu')
root.geometry('1350x750')
root.config(bg = 'navajo white')

Menu_title_Frame = LabelFrame(root, font = ('arial',50,'bold'), width = 1000,


height = 100, bg = 'navajo white', relief = 'raise', bd = 13)
Menu_title_Frame.grid(row = 0, column = 0, pady = 50)

Menu_title_Label = Label(Menu_title_Frame, text = 'MENU', font =


('arial',30,'bold'), bg = 'navajo white')
Menu_title_Label.grid(row = 0, column = 0, padx = 150)

#========================================================FRAMES=======================
============================================
Menu_Frame_1 = LabelFrame(root, font = ('arial',17,'bold'), width = 1000, height =
100, bg = 'navajo white', relief = 'ridge', bd = 10)
Menu_Frame_1.grid(row = 1, column = 0, padx = 280)
Menu_Frame_2 = LabelFrame(root, font = ('arial',17,'bold'), width = 1000,
height = 100, bg = 'navajo white', relief = 'ridge', bd = 10)
Menu_Frame_2.grid(row = 2, column = 0, padx = 130, pady = 7)
Menu_Frame_3 = LabelFrame(root, font = ('arial',17,'bold'), width = 1000,
height = 100, bg = 'navajo white', relief = 'ridge', bd = 10)
Menu_Frame_3.grid(row = 3, column = 0, pady = 7)
Menu_Frame_4 = LabelFrame(root, font = ('arial',17,'bold'), width = 1000,
height = 100, bg = 'navajo white', relief = 'ridge', bd = 10)
Menu_Frame_4.grid(row = 4, column = 0, pady = 7)

#========================================================LABELS=======================
============================================
Label_1_STUDENTINFO = Label(Menu_Frame_1, text = 'STUDENT PROFILE', font =
('arial',25,'bold'), bg = 'navajo white')
Label_1_STUDENTINFO.grid(row = 0, column = 0, padx = 50, pady = 5)
Label_2_FEEREPORT = Label(Menu_Frame_2, text = 'FEE REPORT', font =
('arial',25,'bold'), bg = 'navajo white')
Label_2_FEEREPORT.grid(row = 0, column = 0, padx = 100, pady = 5)
Label_3_LIBRARYSYSTEM = Label(Menu_Frame_3, text = 'LIBRARY SYSTEM', font =
('arial',25,'bold'), bg = 'navajo white')
Label_3_LIBRARYSYSTEM.grid(row = 0, column = 0, padx = 60, pady = 5)
Label_4_MARKSHEET = Label(Menu_Frame_4, text = 'MARKSHEET', font =
('arial',25,'bold'), bg = 'navajo white')
Label_4_MARKSHEET.grid(row = 0, column = 0, padx = 101, pady = 5)

#========================================================BUTTONS======================
=============================================
Button_1_VIEWINFO = Button(Menu_Frame_1, text = 'VIEW', font = ('arial',16,'bold'),
width = 8, command = __information__)
Button_1_VIEWINFO.grid(row = 0, column = 3, padx = 50)
Button_2_VIEWREPORT = Button(Menu_Frame_2, text = 'VIEW', font =
('arial',16,'bold'), width = 8, command = __FeeReport__)
Button_2_VIEWREPORT.grid(row = 0, column = 3, padx = 50)
Button_3_VIEWLIBRARY = Button(Menu_Frame_3, text = 'VIEW', font =
('arial',16,'bold'), width = 8, command = __Library__)
Button_3_VIEWLIBRARY.grid(row = 0, column = 3, padx = 50)
Button_4_VIEWMARKSHEET = Button(Menu_Frame_4, text = 'VIEW', font =
('arial',16,'bold'), width = 8, command = __marksheet__)
Button_4_VIEWMARKSHEET.grid(row = 0, column = 3, padx = 50)

root.mainloop()

if __name__ == '__main__':
menu()
College_Search_Page.py
from tkinter import *
import random
import College_Marksheet_Backend
import College_Marksheet_Frontend
import tkinter.messagebox
import os

class Window_1():
def __init__(self, master):
self.master = master
self.master.title('Search Page')
self.master.geometry('1360x750')
self.master.config(bg = 'navajowhite')

self.roll = StringVar()
search_frame = LabelFrame(self.master, width = 1000, height = 100, font
= ('arial',30,'bold'), relief = 'ridge', bd = 15, bg = 'wheat')
search_frame.grid(row = 1, column = 0, padx = 200, pady = 200)

lbl_enterrollnumber = Label(search_frame, text = 'Enter Roll Number',


font = ('arial',25,'bold'), bg = 'wheat' )
lbl_enterrollnumber.grid(row = 0, column = 0, padx = 100, pady = 10)

txtsearch_entry = Entry(search_frame, font = ('arial',25,'bold'),


textvariable = self.roll)
txtsearch_entry.grid(row = 0, column = 1, padx = 30, pady = 20)

def Search():
if(len(self.roll.get()) != 0):
row =
College_Marksheet_Backend.search(int(self.roll.get()))
print(row)
College_Marksheet_Frontend.search_result_marksheet(row)
else:
tkinter.messagebox.askokcancel('Attention','Please enter
valid Roll No.')
return

def new():
filename = 'College_Marksheet_Frontend.py'
os.system(filename)
os.system('notepad'+filename)

button_search = Button(search_frame, text = 'SEARCH', width = 15, font =


('arial',15,'bold'), command=Search)
button_search.grid(row = 1, column = 0, padx = 50)
buttone_new = Button(search_frame, text = 'CREATE NEW', width = 15, font
= ('arial',15,'bold'), command=new)
buttone_new.grid(row = 1, column = 1, padx = 50, pady = 20 )

root = Tk()
root.title("Login Form")
Window_1(root)
root.mainloop()
College_Std_info_BackEnd.py
import sqlite3

def connect():
conn = sqlite3.connect("College_student.db")
cur = conn.cursor()

cur.execute("CREATE TABLE IF NOT EXISTS student (id INTEGER PRIMARY KEY, name
text, father_name text, mother_name text, \
address text, mobileno integer,email_address text, date_of_birth
integer, gender text)")

conn.commit()
conn.close()

def insert(name = " ", father_name =" ", mother_name =" ", address =" ", mobileno ="
", email_address =" ", date_of_birth =" ", gender =" "):
conn = sqlite3.connect("College_student.db")
cur = conn.cursor()

cur.execute("INSERT INTO student VALUES (NULL,?,?,?,?,?,?,?,?)", (name,


father_name, mother_name, address , mobileno, email_address, date_of_birth, gender))

conn.commit()
conn.close()

def view():
conn = sqlite3.connect("College_student.db")
cur = conn.cursor()

cur.execute("SELECT * FROM student")


rows = cur.fetchall()
return rows

conn.close()

def delete(id):
conn = sqlite3.connect("College_student.db")
cur = conn.cursor()

cur.execute("DELETE FROM student WHERE id = ?", (id,))

conn.commit()
conn.close()

def update(id, name = " ", father_name =" ", mother_name =" ", address =" ", mobileno
=" ", email_address =" ", date_of_birth =" ", gender =" "):
conn = sqlite3.connect("College_student.db")
cur = conn.cursor()

cur.execute("UPDATE student SET name = ? OR father_name = ? OR mother_name = ?


OR address = ? OR mobileno = ? OR email_address = ? OR date_of_birth = ? OR gender
= ?", \
(name, father_name, mother_name, address , mobileno, email_address,
date_of_birth, gender))
conn.commit()

College_Fee_BackEnd.py
import sqlite3

def connect():
con = sqlite3.connect('College_fee.db')
cur = con.cursor()

cur.execute('CREATE TABLE IF NOT EXISTS fee(id INTEGER PRIMARY KEY, receipts


integer, name text, admin text, date integer, \
branch text, semister text, total integer, paid integer, due
integer)')

con.commit()
con.close()

def insert(receipts =' ', name =' ', admin =' ', date =' ', branch =' ', semister ='
', total =' ', paid =' ', due =' '):
con = sqlite3.connect('College_fee.db')
cur = con.cursor()

cur.execute('INSERT INTO fee VALUES (NULL,?,?,?,?,?,?,?,?,?)', (receipts, name,


admin, date, branch, semister, total, paid, due))

con.commit()
con.close()

def view():
con = sqlite3.connect('College_fee.db')
cur = con.cursor()

cur.execute('SELECT * FROM fee')


row = cur.fetchall()
return row

con.commit()

def delete(id):
con = sqlite3.connect('College_fee.db')
cur = con.cursor()

cur.execute('DELETE FROM fee WHERE id = ?',(id,))

con.commit()
con.close()

def update(id, receipts =' ', name =' ', admin =' ', date =' ', branch =' ', semister
=' ', total =' ', paid =' ', due =' '):
con = sqlite3.connect('College_fee.db')
cur = con.cursor()

cur.execute('UPDATE fee SET receipts = ? OR name = ? OR admin = ? OR date = ?


OR branch = ? OR semister = ? OR total = ? OR \
paid = ? OR due = ?', (receipts, name, admin, date, branch,
semister, total, paid, due))

con.commit()
con.close()

def search(receipts =' ', name =' ', admin =' ', date =' ', branch =' ', semister ='
', total =' ', paid =' ', due =' '):
con = sqlite3.connect('College_fee.db')
cur = con.cursor()

cur.execute('SELECT * FROM fee WHERE receipts = ? OR name = ? OR admin = ? OR


date = ? OR branch = ? OR semister = ? OR \
total = ? OR paid = ? OR due = ?', (receipts, name, admin, date,
branch, semister, total, paid, due))
row = cur.fetchall()
return row

con.commit()

connect()

College_Fee_FrontEnd.py
from tkinter import*
from tkinter import ttk
import tkinter.messagebox
import datetime
import College_Fee_Backend

class college_fee():
def __init__(self, master):
self.master = master
self.master.title('Fee Report')
self.master.geometry('1350x750')
self.master.config(bg='Navajo white')

self.receipts = StringVar()
self.name = StringVar()
self.admin = StringVar()
self.date = StringVar()
self.branch = StringVar()
self.semister = StringVar()
self.total = DoubleVar()
self.paid = DoubleVar()
self.due = DoubleVar()

def Tuple(event):
try:
global studentInfo
index = self.list.curselection()[0]
studentInfo = self.list.get(index)

self.receipts_entry.delete(0, END)
self.receipts_entry.insert(END, studentInfo[1])
self.studentname_entry.delete(0, END)
self.studentname_entry.insert(END, studentInfo[2])
self.collegeAdmin_entry.delete(0, END),
bg='Navajo white', relief='ridge', bd=15)
College_List_Frame.pack(side=TOP, padx=15)

Btn_Frame = Frame(College_Main_Frame, width=1350, height=80,


bg='Navajo white', relief='ridge', bd=15)
Btn_Frame.pack(side=TOP)

self.receipts_lbl = Label(College_Frame_1, text='Receipt No. : ', font=(


'arial', 14, 'bold'), bg='Navajo white')
self.receipts_lbl.grid(row=0, column=0, padx=15, sticky=W)

self.studentName_lbl = Label(College_Frame_1, text='Student Name : ', font=(


'arial', 14, 'bold'), bg='Navajo white')
self.studentName_lbl.grid(row=1, column=0, padx=15, sticky=W)

self.collegeAdmin_lbl = Label(College_Frame_1, text='Admission No. : ', font=(


'arial', 14, 'bold'), bg='Navajo white')
self.collegeAdmin_lbl.grid(row=2, column=0, padx=15, sticky=W)

self.Date_lbl = Label(College_Frame_1, text='Date : ', font=(


'arial', 14, 'bold'), bg='Navajo white')
self.Date_lbl.grid(row=3, column=0, padx=15, sticky=W)

self.college_branch_lbl = Label(College_Frame_1, text='Branch : ', font=(


'arial', 14, 'bold'), bg='Navajo white')
self.college_branch_lbl.grid(row=4, column=0, padx=15, sticky=W)

self.semister_lbl = Label(College_Frame_1, text='Semester : ', font=(


'arial', 14, 'bold'), bg='Navajo white')
self.semister_lbl.grid(row=5, column=0, padx=15, sticky=W)

self.total_lbl = Label(College_Frame_1, text='TOTAL AMOUNT : ', font=(


'arial', 14, 'bold'), bg='Navajo white')
self.total_lbl.grid(row=2, column=2, padx=5, sticky=W)

self.paid_lbl = Label(College_Frame_1, text='PAID AMOUNT : ', font=(


'arial', 14, 'bold'), bg='Navajo white')
self.paid_lbl.grid(row=3, column=2, padx=5, sticky=W)

self.due_lbl = Label(College_Frame_1, text='BALANCE : ', font=(


'arial', 14, 'bold'), bg='Navajo white')
self.due_lbl.grid(row=4, column=2, padx=5, sticky=W)

self.var_1 = DoubleVar(College_Frame_1, value='36265')


d1 = datetime.date.today()
self.date.set(d1)

self.receipts_entry = Entry(College_Frame_1, font=(


'arial', 14), textvariable=self.receipts)
self.receipts_entry.grid(row=0, column=1, padx=15, pady=5)

self.studentname_entry = Entry(College_Frame_1, font=(


'arial', 14), textvariable=self.name)
self.studentname_entry.grid(row=1, column=1, padx=15, pady=5)

self.collegeAdmin_entry = Entry(College_Frame_1, font=(


'arial', 14), textvariable=self.admin)
self.collegeAdmin_entry.grid(row=2, column=1, padx=15, pady=5)
self.Date_entry = Entry(College_Frame_1, font=(
button_Delete.grid(row=0, column=5, padx=5, pady=5)

button_Receipt = Button(Btn_Frame, text='RECEIPT', font=(


'arial', 14, 'bold'), width=10, command=Receipt)
button_Receipt.grid(row=0, column=6, padx=5, pady=5)

button_Exit = Button(Btn_Frame, text='EXIT', font=(


'arial', 14, 'bold'), width=10, command=Exit)
button_Exit.grid(row=0, column=7, padx=5, pady=5)

root = Tk()
obj = college_fee(root)
root.mainloop()

College_Library_Backend.py
import sqlite3

def connect():
con = sqlite3.connect('College_library.db')
cur = con.cursor()

cur.execute('CREATE TABLE IF NOT EXISTS library(x INTEGER PRIMARY KEY, Mbtype


text, referenceno integer, firstname text, \
lastname text, address text, post integer, mobileno integer, ID
text, title text, author text, \
borrow integer, due integer, loan integer)')

con.commit()
con.close()

def insert(Mbtype =' ', referenceno =' ', firstname =' ', lastname =' ', address =' ',
post =' ', mobileno =' ', ID =' ', \
title = ' ', author = ' ', borrow = ' ', due = ' ', loan = ' '):
con = sqlite3.connect('College_library.db')
cur = con.cursor()

cur.execute('INSERT INTO library VALUES (NULL,?,?,?,?,?,?,?,?,?,?,?,?,?)',


(Mbtype, referenceno, firstname, lastname, address, post, \

mobileno, ID, title, author, borrow, due, loan))

con.commit()
con.close()

def view():
con = sqlite3.connect('College_library.db')
cur = con.cursor()

cur.execute('SELECT * FROM library')


row = cur.fetchall()
return row

con.close()
def delete(x):

College_Library_FrontEnd.py
from tkinter import*
from tkinter import ttk
import random
from datetime import datetime
import tkinter.messagebox
import College_Library_Backend

class Library:

def __init__(self, root):


self.root = root
self.root.title('Library Management System')
self.root.geometry('1350x750')
self.root.config(bg = 'navajowhite')

self.Mbtype = StringVar()
self.referenceno = StringVar()
self.firstname = StringVar()
self.lastname = StringVar()
self.address = StringVar()
self.post = StringVar()
self.mobileno = StringVar()
self.ID = StringVar()
self.title = StringVar()
self.author = StringVar()
self.borrow = StringVar()
self.due = StringVar()
self.loan = StringVar()
self.yr_of_pub = StringVar()
self.editions = StringVar()

def BookRec(event):
try:
global selected_tuple
index = self.List_bx_2.curselection()[0]
selected_tuple = self.List_bx_2.get(index)

self.txt_Entry_0.delete(0, END)
self.txt_Entry_0.insert(END, selected_tuple[1])
self.txt_Entry_1.delete(0, END)
self.txt_Entry_1.insert(END, selected_tuple[2])
self.txt_Entry_2.delete(0, END)
self.txt_Entry_2.insert(END, selected_tuple[3])
self.txt_Entry_3.delete(0, END)
self.txt_Entry_3.insert(END, selected_tuple[4])
self.txt_Entry_4.delete(0, END)
self.txt_Entry_4.insert(END, selected_tuple[5])
self.txt_Entry_5.delete(0, END)
self.txt_Entry_5.insert(END, selected_tuple[6])
self.txt_Entry_6.delete(0, END)
self.txt_Entry_6.insert(END, selected_tuple[7])
self.txt_Entry_7.delete(0, END)
self.txt_Entry_7.insert(END, selected_tuple[8])
self.txt_Entry_8.delete(0, END)
self.txt_Entry_8.insert(END, selected_tuple[9])
self.txt_Entry_9.delete(0, END)
self.txt_Entry_9.insert(END, selected_tuple[10])
self.txt_Entry_10.delete(0, END)
self.txt_Entry_10.insert(END, selected_tuple[11])
self.txt_Entry_11.delete(0, END)
self.txt_Entry_11.insert(END, selected_tuple[12])
self.txt_Entry_12.delete(0, END)
self.txt_Entry_12.insert(END, selected_tuple[13])

except IndexError:
pass
def Insert():
if(len(self.referenceno.get()) != 0):
College_Library_Backend.insert(self.Mbtype.get(),
self.referenceno.get(), self.firstname.get(), self.lastname.get() \
, self.address.get(),
self.post.get(), self.mobileno.get(), self.ID.get() \
, self.title.get(),
self.author.get(), self.borrow.get(), self.due.get() \
, self.loan.get())
self.List_bx_2.delete(0, END)
self.List_bx_2.insert(END, (self.Mbtype.get(), self.referenceno.get(),
self.firstname.get(), self.lastname.get()\
, self.address.get(),
self.post.get(), self.mobileno.get(), self.ID.get()\
, self.title.get(),
self.author.get(), self.borrow.get(), self.due.get()\
, self.loan.get()))

def Display():
self.List_bx_2.delete(0, END)
for row in College_Library_Backend.view():
self.List_bx_2.insert(END, row, str(' '))

def Exit():
Exit = tkinter.messagebox.askyesno('Library Management
System','Confirm if you want to Exit')
if Exit >0:
root.destroy()
return

def Reset():
self.Mbtype.set('')
self.referenceno.set('')
self.firstname.set('')
self.lastname.set('')
self.address.set('')
self.post.set('')
self.mobileno.set('')
self.ID.set('')
self.title.set('')
self.author.set('')
self.borrow.set('')
self.due.set('')
self.loan.set('')
self.Display_Layout.delete('1.0', END)
self.List_bx_2.delete(0, END)
def Delete():
College_Library_Backend.delete(selected_tuple[0])
Reset()
Display()

def Update():
College_Library_Backend.delete(selected_tuple[0])
College_Library_Backend.insert(self.Mbtype.get(),
self.referenceno.get(), self.firstname.get(), self.lastname.get() \
, self.address.get(),
self.post.get(), self.mobileno.get(), self.ID.get() \
, self.title.get(),
self.author.get(), self.borrow.get(), self.due.get() \
, self.loan.get())
self.List_bx_2.delete(0, END)
self.List_bx_2.insert(END, (self.Mbtype.get(), self.referenceno.get(),
self.firstname.get(), self.lastname.get()\
, self.address.get(),
self.post.get(), self.mobileno.get(), self.ID.get()\
, self.title.get(),
self.author.get(), self.borrow.get(), self.due.get()\
, self.loan.get()))

def Search():
self.List_bx_2.delete(0, END)
for row in College_Library_Backend.search(self.Mbtype.get(), self.referenceno.get(),
self.firstname.get(), self.lastname.get()\
, self.address.get(),
self.post.get(), self.mobileno.get(), self.ID.get()\
, self.title.get(),
self.author.get(), self.borrow.get(), self.due.get()\
, self.loan.get()):
self.List_bx_2.insert(END, row, str(' '))

def Details():
self.Display_Layout.delete('1.0', END)
self.Display_Layout.insert(END, 'Book ID: ' + self.ID.get() + '\n')
self.Display_Layout.insert(END, 'Title: ' + self.title.get() + '\n')
self.Display_Layout.insert(END, 'Author: ' + self.author.get() + '\n')
self.Display_Layout.insert(END, 'Edition: ' + self.editions.get() + '\n')
self.Display_Layout.insert(END, 'Year of Published: \t' + self.yr_of_pub.get() + '\n')
self.Display_Layout.insert(END, 'Date Borrowed: ' + self.borrow.get() + '\n')
self.Display_Layout.insert(END, 'Date Due:' + self.due.get() + '\n')
self.Display_Layout.insert(END, 'Days in Loan: ' + self.loan.get() + '\n')

Library_Main_Frame = Frame(self.root, bg = 'navajowhite')


Library_Main_Frame.grid()

Library_Title_Frame_1 = Frame(Library_Main_Frame, width = 1350, bg =


'navajowhite', relief = RIDGE, bd = 15, padx = 20)
Library_Title_Frame_1.pack(side = TOP)

self.Library_lblTitle = Label(Library_Title_Frame_1, font = ('arial', 40, 'bold'),


text ='\tLibrary Management System\t', \
bg = 'navajowhite', padx = 13)
self.Library_lblTitle.grid()

btn_Frame = Frame(Library_Main_Frame, width = 1350, height = 50, relief


= RIDGE, bd = 10, bg = 'navajowhite')
btn_Frame.pack(side = BOTTOM)

Library_Detail_Frame = Frame(Library_Main_Frame, width = 1350, height =


100, relief = RIDGE, bd = 10, bg = 'navajowhite')
Library_Detail_Frame.pack(side = BOTTOM)

Library_Data_Frame = Frame(Library_Main_Frame, width = 1350, height =


400, relief = RIDGE, bd = 15, bg = 'navajowhite')
Library_Data_Frame.pack(side = BOTTOM)

Library_Frame_1 = LabelFrame(Library_Data_Frame, width = 800, height =


400, relief = RIDGE, bd = 10, bg = 'navajowhite', \
text = "Library Membership Info:", padx = 20, font = ('arial',15,'bold'))
Library_Frame_1.pack(side = LEFT, padx = 3)

Library_Frame_2 = LabelFrame(Library_Data_Frame, width = 550, height =


400, relief = RIDGE, bd = 10, bg = 'navajowhite', \
text = "Book Details:", padx = 20, font = ('arial',15,'bold'))
Library_Frame_2.pack(side = RIGHT)

self.memLabel_1 = Label(Library_Frame_1, text ='Member type', font = ('arial', 13,


'bold'), pady = 2, \
bg = 'navajowhite')
self.memLabel_1.grid(row = 0, column = 0, sticky = W)
self.refLabel_2 = Label(Library_Frame_1, text ='Reference No.', font = ('arial', 13,
'bold'), pady = 2, \
bg = 'navajowhite')
self.refLabel_2.grid(row = 1, column = 0, sticky = W)
self.firstnameLabel_3 = Label(Library_Frame_1, text ='First Name', font = ('arial',
13, 'bold'), pady = 2, \
bg = 'navajowhite')
self.firstnameLabel_3.grid(row = 2, column = 0, sticky = W)
self.lastnameLabel_4 = Label(Library_Frame_1, text ='Last Name', font = ('arial', 13,
'bold'), pady = 2, \
bg = 'navajowhite')
self.lastnameLabel_4.grid(row = 3, column = 0, sticky = W)
self.addressLabel_5 = Label(Library_Frame_1, text ='Address', font = ('arial', 13,
'bold'), pady = 2, \
bg = 'navajowhite')
self.addressLabel_5.grid(row = 4, column = 0, sticky = W)
self.postcodeLabel_6 = Label(Library_Frame_1, text ='Post Code', font = ('arial', 13,
'bold'), pady = 2, \
bg = 'navajowhite')
self.postcodeLabel_6.grid(row = 5, column = 0, sticky = W)
self.mobilenoLabel_7 = Label(Library_Frame_1, text ='Mobile No.', font = ('arial', 13,
'bold'), pady = 2, \
bg = 'navajowhite')
self.mobilenoLabel_7.grid(row = 6, column = 0, sticky = W)
self.bookidLabel_8 = Label(Library_Frame_1, text ='Book ID', font = ('arial', 13,
'bold'), pady = 2, \
bg = 'navajowhite')
self.bookidLabel_8.grid(row = 0, column = 2, sticky = W)
self.booktitleLabel_9 = Label(Library_Frame_1, text ='Book Title', font = ('arial',
13, 'bold'), pady = 2, \
bg = 'navajowhite')
self.booktitleLabel_9.grid(row = 1, column = 2, sticky = W)
self.authorLabel_10 = Label(Library_Frame_1, text ='Author', font = ('arial', 13,
'bold'), pady = 2, \
bg = 'navajowhite')
self.authorLabel_10.grid(row = 2, column = 2, sticky = W)
self.dateborrowedLabel_11 = Label(Library_Frame_1, text ='Date Borrowed', font =
('arial', 13, 'bold'), pady = 2, \
bg = 'navajowhite')
self.dateborrowedLabel_11.grid(row = 3, column = 2, sticky = W)
self.dateLabel_13 = Label(Library_Frame_1, text ='Date Due', font = ('arial', 13,
'bold'), pady = 2, \
bg = 'navajowhite')
self.dateLabel_13.grid(row = 4, column = 2, sticky = W)
self.dateLabel_13 = Label(Library_Frame_1, text ='Days in Loan', font = ('arial', 13,
'bold'), pady = 2, \
bg = 'navajowhite')
self.dateLabel_13.grid(row = 5, column = 2, sticky = W)

self.txt_Entry_0 = ttk.Combobox(Library_Frame_1, values = (' ', 'Student', 'Faculty',


'Staff Member'), \
font = ('arial',13,'bold'), width = 23, textvariable = self.Mbtype)
self.txt_Entry_0.grid(row = 0, column = 1)
self.txt_Entry_1 = Entry(Library_Frame_1, font = ('arial', 13, 'bold'), width = 25,
textvariable = self.referenceno)
self.txt_Entry_1.grid(row = 1, column = 1, padx = 15)
self.txt_Entry_2 = Entry(Library_Frame_1, font = ('arial', 13, 'bold'), width = 25,
textvariable = self.firstname)
self.txt_Entry_2.grid(row = 2, column = 1, padx = 15)
self.txt_Entry_3 = Entry(Library_Frame_1, font = ('arial', 13, 'bold'), width = 25,
textvariable = self.lastname)
self.txt_Entry_3.grid(row = 3, column = 1, padx = 15)
self.txt_Entry_4 = Entry(Library_Frame_1, font = ('arial', 13, 'bold'), width = 25,
textvariable = self.address)
self.txt_Entry_4.grid(row = 4, column = 1, padx = 15)
self.txt_Entry_5 = Entry(Library_Frame_1, font = ('arial', 13, 'bold'), width = 25,
textvariable = self.post)
self.txt_Entry_5.grid(row = 5, column = 1, padx = 15)
self.txt_Entry_6 = Entry(Library_Frame_1, font = ('arial', 13, 'bold'), width = 25,
textvariable = self.mobileno)
self.txt_Entry_6.grid(row = 6, column = 1, padx = 15)
self.txt_Entry_7 = Entry(Library_Frame_1, font = ('arial', 13, 'bold'), width = 25,
textvariable = self.ID)
self.txt_Entry_7.grid(row = 0, column = 4, padx = 15)
self.txt_Entry_8 = Entry(Library_Frame_1, font = ('arial', 13, 'bold'), width = 25,
textvariable = self.title)
self.txt_Entry_8.grid(row = 1, column = 4, padx = 15)
self.txt_Entry_9 = Entry(Library_Frame_1, font = ('arial', 13, 'bold'), width = 25,
textvariable = self.author)
self.txt_Entry_9.grid(row = 2, column = 4, padx = 15)
self.txt_Entry_10 = Entry(Library_Frame_1, font = ('arial', 13, 'bold'), width = 25,
textvariable = self.borrow)
self.txt_Entry_10.grid(row = 3, column = 4, padx = 15)
self.txt_Entry_11 = Entry(Library_Frame_1, font = ('arial', 13, 'bold'), width = 25,
textvariable = self.due)
self.txt_Entry_11.grid(row = 4, column = 4, padx = 15)
self.txt_Entry_12 = Entry(Library_Frame_1, font = ('arial', 13, 'bold'), width = 25,
textvariable = self.loan)
self.txt_Entry_12.grid(row = 5, column = 4, padx = 15)

self.Display_Layout = Text(Library_Frame_2, font = ('arial', 13, 'bold'), width = 28,


height = 11)
self.Display_Layout.grid(row = 0, column = 2)

List_of_Books = [' C',' C++',' Python',' Python',' PHP',' Python


Script',' My SQL',' Data Structure',' Linux',\
' Operating System',' Web Developement',' Data Science',' Algorithms',' Android', \
' VB.net']

def SelectedBook(event):
value_List =
str(self.List_bx_1.get(self.List_bx_1.curselection()))
val = value_List

if (val == ' C'):


self.ID.set('ISBN 525341')
self.title.set('Programming using C')
self.author.set('Gail Guzon')
self.yr_of_pub.set('2019')
self.editions.set('5th')

import datetime

days1 = datetime.date.today()
days2 = datetime.timedelta(days = 14)
days3 = (days1 + days2)
self.borrow.set(days1)
self.loan.set('14')
self.due.set(days3)
Details()
elif (val == ' C++'):
self.ID.set('ISBN 345687')
self.title.set('Programming using C++')
self.author.set('Armel Maningo')
self.yr_of_pub.set('2019')
self.editions.set('4th')

import datetime

days1 = datetime.date.today()
days2 = datetime.timedelta(days = 10)
days3 = (days1 + days2)
self.borrow.set(days1)
self.loan.set('10')
self.due.set(days3)
Details()
elif (val == ' Python'):
self.ID.set('ISBN 643842')
self.title.set('Python Programming')
self.author.set('Romeo Tanate')
self.yr_of_pub.set('2019')
self.editions.set('7th')

import datetime

days1 = datetime.date.today()
days2 = datetime.timedelta(days = 13)
days3 = (days1 + days2)
self.borrow.set(days1)
self.loan.set('13')
self.due.set(days3)
Details()
elif (val == ' Python'):
self.ID.set('ISBN 564524')
self.title.set('Python Programming')
self.author.set('Gabriel Gestosani')
self.yr_of_pub.set('2019')
self.editions.set('3rd')

import datetime

days1 = datetime.date.today()
days2 = datetime.timedelta(days = 13)
days3 = (days1 + days2)
self.borrow.set(days1)
self.loan.set('13')
self.due.set(days3)
Details()
elif (val == ' PHP'):
self.ID.set('ISBN 735893')
self.title.set('PHP Programming')
self.author.set('Joken Villanueva')
self.yr_of_pub.set('2019')
self.editions.set('5th')

import datetime

days1 = datetime.date.today()
days2 = datetime.timedelta(days = 15)
days3 = (days1 + days2)
self.borrow.set(days1)
self.loan.set('15')
self.due.set(days3)
Details()
elif (val == ' Python Script'):
self.ID.set('ISBN 643842')
self.title.set('Python Script Programming')
self.author.set('Jude Suarez.')
self.yr_of_pub.set('2019')
self.editions.set('4th')

import datetime

days1 = datetime.date.today()
days2 = datetime.timedelta(days = 13)
days3 = (days1 + days2)
self.borrow.set(days1)
self.loan.set('13')
self.due.set(days3)
Details()
elif (val == ' My SQL'):
self.ID.set('ISBN 649635')
self.title.set('My SQL Programming')
self.author.set('Adones Evangelista')
self.yr_of_pub.set('2019')
self.editions.set('3rd')

import datetime

days1 = datetime.date.today()
days2 = datetime.timedelta(days = 20)
days3 = (days1 + days2)
self.borrow.set(days1)
self.loan.set('20')
self.due.set(days3)
Details()
elif (val == ' Data Structure'):
self.ID.set('ISBN 531588')
self.title.set('Data Structure')
self.author.set('Jennifer Juaniza')
self.yr_of_pub.set('2019')
self.editions.set('5th')

import datetime

days1 = datetime.date.today()
days2 = datetime.timedelta(days = 11)
days3 = (days1 + days2)
self.borrow.set(days1)
self.loan.set('11')
self.due.set(days3)
Details()
elif (val == ' Linux'):
self.ID.set('ISBN 356853')
self.title.set('Linux Administration')
self.author.set('ITSOURCECODE')
self.yr_of_pub.set('2019')
self.editions.set('1st')

import datetime

days1 = datetime.date.today()
days2 = datetime.timedelta(days = 6)
days3 = (days1 + days2)
self.borrow.set(days1)
self.loan.set('6')
self.due.set(days3)
Details()
elif (val == ' Operating System'):
self.ID.set('ISBN 536453')
self.title.set('OS Concepts ')
self.author.set('Marry Ann Goroy')
self.yr_of_pub.set('2019')
self.editions.set('4th')

import datetime

days1 = datetime.date.today()
days2 = datetime.timedelta(days = 12)
days3 = (days1 + days2)
self.borrow.set(days1)
self.loan.set('12')
self.due.set(days3)
Details()
elif (val == ' Web Developement'):
self.ID.set('ISBN 543548')
self.title.set('Web Developement ')
self.author.set('Jhazel Alarcon')
self.yr_of_pub.set('2019')
self.editions.set('3rd')

import datetime
days1 = datetime.date.today()
days2 = datetime.timedelta(days = 15)
days3 = (days1 + days2)
self.borrow.set(days1)
self.loan.set('15')
self.due.set(days3)
Details()
elif (val == ' Data Science'):
self.ID.set('ISBN 835764')
self.title.set('Data Science Concept ')
self.author.set('Ryan Manaay')
self.yr_of_pub.set('2019')
self.editions.set('3rd')

import datetime

days1 = datetime.date.today()
days2 = datetime.timedelta(days = 15)
days3 = (days1 + days2)
self.borrow.set(days1)
self.loan.set('15')
self.due.set(days3)
Details()
elif (val == ' Algorithms'):
self.ID.set('ISBN 535674')
self.title.set('Basics of Algorithm ')
self.author.set('Paul Angelo Niar')
self.yr_of_pub.set('2019')
self.editions.set('7th')

import datetime

days1 = datetime.date.today()
days2 = datetime.timedelta(days = 10)
days3 = (days1 + days2)
self.borrow.set(days1)
self.loan.set('10')
self.due.set(days3)
Details()
elif (val == ' Android'):
self.ID.set('ISBN 356452')
self.title.set('Android Programming')
self.author.set('Jomhel Dulla')
self.yr_of_pub.set('2019')
self.editions.set('4th')

import datetime

days1 = datetime.date.today()
days2 = datetime.timedelta(days = 9)
days3 = (days1 + days2)
self.borrow.set(days1)
self.loan.set('9')
self.due.set(days3)
Details()

sroll_b_1 = Scrollbar(Library_Frame_2)
sroll_b_1.grid(row =0, column = 1, sticky = 'ns')

self.List_bx_1 = Listbox(Library_Frame_2, font = ('arial', 13, 'bold'), width = 20,


height = 10)
self.List_bx_1.bind('<<ListboxSelect>>', SelectedBook)
self.List_bx_1.grid(row = 0, column = 0)
sroll_b_1.config(command = self.List_bx_1.yview)

scroll_b_2 = Scrollbar(Library_Detail_Frame)
scroll_b_2.grid(row = 1, column = 1, sticky = 'ns')

self.List_bx_2 = Listbox(Library_Detail_Frame, font = ('arial', 13, 'bold'), width =


144, height = 11)
self.List_bx_2.bind('<<ListboxSelect>>', BookRec)
self.List_bx_2.grid(row = 1, column = 0)
scroll_b_2.config(command = self.List_bx_2.yview)

for items in List_of_Books:


self.List_bx_1.insert(END, items)

btnsave_1 = Button(btn_Frame, text = 'SAVE', font = ('arial',15,'bold'),


width = 10, command = Insert)
btnsave_1.grid(row = 0, column = 0, padx = 8, pady = 5)
btndisplay_2 = Button(btn_Frame, text = 'DISPLAY', font =
('arial',15,'bold'), width = 10, command = Display)
btndisplay_2.grid(row = 0, column = 1, padx = 8)
btnreset_3 = Button(btn_Frame, text = 'RESET', font =
('arial',15,'bold'), width = 10, command = Reset)
btnreset_3.grid(row = 0, column = 2, padx = 8)
btnupdate_4 = Button(btn_Frame, text = 'UPDATE', font =
('arial',15,'bold'), width = 10, command = Update)
btnupdate_4.grid(row = 0, column = 3, padx = 8)
btnsearch_5 = Button(btn_Frame, text = 'SEARCH', font =
('arial',15,'bold'), width = 10, command = Search)
btnsearch_5.grid(row = 0, column = 4, padx = 8)
btndelete_6 = Button(btn_Frame, text = 'DELETE', font =
('arial',15,'bold'), width = 10, command = Delete)
btndelete_6.grid(row = 0, column = 5, padx = 8)
btnexit_7 = Button(btn_Frame, text = 'EXIT', font = ('arial',15,'bold'),
width = 10, command = Exit)
btnexit_7.grid(row = 0, column = 6, padx = 8)

if __name__ == '__main__':
root = Tk()
applicaton = Library(root)
root.mainloop()

College_Marksheet_Backend.py
from tkinter import*
import sqlite3

def connect():
con = sqlite3.connect('College_Marks.db')
cur = con.cursor()

cur.execute('CREATE TABLE IF NOT EXISTS Marks (id INTEGER PRIMARY KEY, name
text, roll integer, father_name text, mother_name \
text, date_of_birth integer, gender text, school text,
email_address text, marks1 integer, marks2 integer, marks3 integer, marks4 integer, \
marks5 integer, grand_tot integer, percentage integer, cgpa
integer, grade text, division text, result text)')

con.commit()
con.close()

def insert(name = ' ', roll = ' ', father_name =' ', mother_name =' ', date_of_birth
=' ', gender =' ', school =' ', email_address =' ', marks1 =' ', marks2 =' ', \
marks3 =' ', marks4 =' ', marks5 =' ', grand_tot =' ', percentage =' ',
cgpa =' ', grade =' ', division =' ', result =' '):
con = sqlite3.connect('College_Marks.db')
cur = con.cursor()

cur.execute('INSERT INTO Marks VALUES


(NULL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', (name, roll, father_name, mother_name,
date_of_birth, gender, \

school, email_address, marks1, marks2, marks3, marks4, marks5, grand_tot,


percentage, \

cgpa, grade, division, result))

con.commit()
con.close()

'''def view():
con = sqlite3.connect('College_Marks.db')
cur = con.cursor()

cur.execute('SELECT * FROM Marks')

con.commit()
con.close()

def delete(id):
con = sqlite3.connect('College_Marks.db')
cur = con.cursor()

cur.execute('DELETE FROM Marks WHERE id = ?)',(id,))

con.commit()
con.close()'''

def update(id, name = ' ', roll = ' ', father_name =' ', mother_name =' ',
date_of_birth =' ', gender =' ', school =' ', email_address =' ', marks1 =' ', marks2
=' ', \
marks3 =' ', marks4 =' ', marks5 =' ', grand_tot =' ', percentage =' ',
cgpa =' ', grade =' ', division =' ', result =' '):
con = sqlite3.connect('College_Marks.db')
cur = con.cursor()

cur.execute('UPDATE Marks SET name = ? OR roll = ? OR father_name = ? OR


mother_name = ? OR date_of_birth = ? OR gender = ? OR \
school = ? OR email_address = ? OR marks1 = ? OR marks2 = ? OR
marks3 = ? OR marks4 = ? OR marks5 = ? OR grand_tot = ? OR percentage = ? OR \
cgpa = ? OR grade = ? OR division = ? OR result = ?', (name,
roll, father_name, mother_name, date_of_birth, gender, school, email_address, marks1,
marks2, marks3, \
marks4, marks5,
grand_tot, percentage, cgpa, grade))

con.commit()
con.close()

def search(roll):
con = sqlite3.connect('College_Marks.db')
cur = con.cursor()

cur.execute('SELECT * FROM Marks WHERE roll = ?',(roll,))


row = cur.fetchall()
return row

connect()

College_Marksheet_FrontEnd.py
from tkinter import *
import random
import College_Marksheet_Backend
import tkinter.messagebox
from tkinter import ttk

def marking_sheet():
root = Tk()
root.title('Marksheet')
root.geometry('1350x750')
root.config(bg = 'Navajo white')

name = StringVar()
roll = StringVar()
father_name = StringVar()
mother_name = StringVar()
date_of_birth = StringVar()
gender = StringVar()
school = StringVar()
email_address = StringVar()
marks1 = DoubleVar()
marks2 = DoubleVar()
marks3 = DoubleVar()
marks4 = DoubleVar()
marks5 = DoubleVar()
grand_tot = DoubleVar()
percentage = DoubleVar()
cgpa = DoubleVar()
grade = StringVar()
division = StringVar()
result = StringVar()
def Add():
if (len(roll.get()) != 0):
College_Marksheet_Backend.insert(name.get(), roll.get(),
father_name.get(), mother_name.get(), date_of_birth.get(), gender.get(), \
school.get(),
email_address.get(), marks1.get(), marks2.get(), marks3.get(), marks4.get(),
marks5.get(), \
grand_tot.get(),
percentage.get(), cgpa.get(), grade.get(), division.get(), result.get())

def Update():
if (len(roll.get()) != 0):
College_Marksheet_Backend.update(name.get(), roll.get(),
father_name.get(), mother_name.get(), date_of_birth.get(), gender.get(), \
school.get(),
email_address.get(), marks1.get(), marks2.get(), marks3.get(), marks4.get(),
marks5.get(), \
grand_tot.get(),
percentage.get(), cgpa.get(), grade.get(), division.get(), result.get())

def Exit():
Exit = tkinter.messagebox.askyesno('Marksheet','Confirm if you want to
Exit')
if Exit >0:
root.destroy()
return

def Compute():
num1 = (marks1.get()); num2 = (marks2.get()); num3 =
(marks3.get()); num4 = (marks4.get()); num5 = (marks5.get())

if num1 >100:
tkinter.messagebox.askokcancel('Attention','Please enter Correct
Marks')
return
if num2 >100:
tkinter.messagebox.askokcancel('Attention','Please enter Correct
Marks')
return
if num3 >100:
tkinter.messagebox.askokcancel('Attention','Please enter Correct
Marks')
return
if num4 >100:
tkinter.messagebox.askokcancel('Attention','Please enter Correct
Marks')
return
if num5 >100:
tkinter.messagebox.askokcancel('Attention','Please enter Correct
Marks')
return

TOTAL = num1+num2+num3+num4+num5
grand_tot.set(TOTAL)

Percentage = ((num1 + num2 + num3 + num4 + num5) * 100) / 500


percentage.set(Percentage)
c_grades = (((num1+num2+num3+num4+num5) * 100)/500) / 9.5
cgpa.set(round(c_grades,1))

if c_grades >10:
cgpa.set(10)

if (((num1+num2+num3+num4+num5) * 100)/500) <= 40:


grades = 'G'
elif (((num1+num2+num3+num4+num5) * 100)/500) <= 50:
grades = 'F'
elif (((num1+num2+num3+num4+num5) * 100)/500) <= 60:
grades = 'E'
elif (((num1+num2+num3+num4+num5) * 100)/500) <= 70:
grades = 'D'
elif (((num1+num2+num3+num4+num5) * 100)/500) <= 80:
grades = 'C'
elif (((num1+num2+num3+num4+num5) * 100)/500) <= 90:
grades = 'B'
else:
grades = 'A'

grade.set(grades)

count = 0
if num1 <33:
count = count + 1
if num2 <33:
count = count + 1
if num3 <33:
count = count + 1
if num4 <33:
count = count + 1
if num5 <33:
count = count + 1

if (count == 0):
result.set('PASS')
elif (count == 1 or count == 2 ):
result.set('SUPPLY')
else:
result.set('FAIL')

if Percentage <= 45 and result != "FAIL":


division.set('THIRD')
elif Percentage <= 60 and result != "FAIL":
division.set('SECOND')
elif Percentage <= 100:
division.set('FIRST')

def Reset():
name.set(' ')
roll.set(' ')
father_name.set(' ')
mother_name.set(' ')
date_of_birth.set(' ')
gender.set(' ')
school.set(' ')
email_address.set(' ')
marks1.set(' ')
marks2.set(' ')
marks3.set(' ')
marks4.set(' ')
marks5.set(' ')
grand_tot.set(' ')
percentage.set(' ')
cgpa.set(' ')
grade.set(' ')
division.set(' ')
result.set(' ')

#========================================================Marks_Frame_1================
===============================================

Marks_Frame_1 = LabelFrame(root, width = 1200, height = 400, font =


('arial',20,'bold'), bg = 'Navajo white', bd = 10, \
text = 'Student Details', relief = 'ridge')
Marks_Frame_1.grid(row = 1, column = 0, pady = 20, padx = 20)

Name_lbl = Label(Marks_Frame_1, text = 'Name', font = ('arial',15,'bold'), bg =


'Navajo white')
Name_lbl.grid(row = 0, column = 0, padx = 80)
Name_TxtEntry = Entry(Marks_Frame_1, font = ('arial',15), width = 25,
textvariable = name)
Name_TxtEntry.grid(row = 0, column = 1, padx = 5, pady = 5)

RollNumber_lbl = Label(Marks_Frame_1, text = 'Roll Number', font =


('arial',15,'bold'), bg = 'Navajo white')
RollNumber_lbl.grid(row = 0, column = 3, padx = 80)
RollNumber_TxtEntry = Entry(Marks_Frame_1, font = ('arial',15), width = 25,
textvariable = roll)
RollNumber_TxtEntry.grid(row = 0, column = 4, padx = 40)

fname_lbl = Label(Marks_Frame_1, text = 'Father Name', font =


('arial',15,'bold'), bg = 'Navajo white')
fname_lbl.grid(row = 1, column = 0, padx = 80)
fname_txtEntry = Entry(Marks_Frame_1, font = ('arial',15), width = 25,
textvariable = father_name)
fname_txtEntry.grid(row = 1, column = 1, padx = 5, pady = 10)

mname_lbl = Label(Marks_Frame_1, text = 'Mother Name', font =


('arial',15,'bold'), bg = 'Navajo white')
mname_lbl.grid(row = 1, column = 3, padx = 80)
mname_txtEntry = Entry(Marks_Frame_1, font = ('arial',15), width = 25,
textvariable = mother_name)
mname_txtEntry.grid(row = 1, column = 4, padx = 5)

dateOFbirth_lbl = Label(Marks_Frame_1, text = 'Date of Birth', font =


('arial',15,'bold'), bg = 'Navajo white')
dateOFbirth_lbl.grid(row = 2, column = 0, padx = 80)
dateOFbirth_txtEntry = Entry(Marks_Frame_1, font = ('arial',15), width = 25,
textvariable = date_of_birth)
dateOFbirth_txtEntry.grid(row = 2, column = 1, padx = 5, pady = 5)

gender_lbl = Label(Marks_Frame_1, text = 'Gender', font = ('arial',15,'bold'),


bg = 'Navajo white')
gender_lbl.grid(row = 2, column = 3, padx = 80)
gender_txtEntry = ttk.Combobox(Marks_Frame_1, values = ('
','Male','Female','Others'), font = ('arial',15), width = 23, textvariable = gender)
gender_txtEntry.grid(row = 2, column = 4, padx = 5, pady = 5)
school_lbl = Label(Marks_Frame_1, text = 'School Name', font =
('arial',15,'bold'), bg = 'Navajo white')
school_lbl.grid(row = 3, column = 0, padx = 80)
school_txtEntry = Entry(Marks_Frame_1, font = ('arial',15), width = 25,
textvariable = school)
school_txtEntry.grid(row = 3, column = 1, padx = 5, pady = 5)

emailAddress_lbl = Label(Marks_Frame_1, text = 'Email ID', font =


('arial',15,'bold'), bg = 'Navajo white')
emailAddress_lbl.grid(row = 3, column = 3, padx = 80)
emailAddress_txtEntry = Entry(Marks_Frame_1, font = ('arial',15), width = 25,
textvariable = email_address)
emailAddress_txtEntry.grid(row = 3, column = 4, padx = 5, pady = 5)

Marks_Frame_2 = LabelFrame(root, width = 1200, height = 400, font =


('arial',20,'bold'), bg = 'Navajo white', bd = 10 \
, text = 'Grades Point Obtained', relief = 'ridge')
Marks_Frame_2.grid(row = 3, column = 0)

subject_lbl = Label(Marks_Frame_2, text = 'SUBJECT', font =


('arial',16,'bold'), bg = 'Navajo white')
subject_lbl.grid(row = 3, column = 0, padx = 50, pady = 10)

marks_obtained_lbl = Label(Marks_Frame_2, text = 'MARKS OBTAINED', font =


('arial',16,'bold'), bg = 'Navajo white')
marks_obtained_lbl.grid(row = 3, column = 1, padx = 20)

subject_lbl = Label(Marks_Frame_2, text = 'PASSING MARKS', font =


('arial',16,'bold'), bg = 'Navajo white')
subject_lbl.grid(row = 3, column = 2, padx = 20)

marks_obtained_lbl = Label(Marks_Frame_2, text = 'TOTAL MARKS', font =


('arial',16,'bold'), bg = 'Navajo white')
marks_obtained_lbl.grid(row = 3, column = 3, padx = 20)

MATHEMATICS_lbl1 = Label(Marks_Frame_2, text = 'MATHEMATICS', font =


('arial',14), bg = 'Navajo white')
MATHEMATICS_lbl1.grid(row = 4, column = 0)
PHYSICS_lbl2 = Label(Marks_Frame_2, text = 'PHYSICS', font = ('arial',14), bg =
'Navajo white')
PHYSICS_lbl2.grid(row = 5, column = 0)
CHEMISTRY_lbl3 = Label(Marks_Frame_2, text = 'CHEMISTRY', font = ('arial',14),
bg = 'Navajo white')
CHEMISTRY_lbl3.grid(row = 6, column = 0)
PROGRAMMING_lbl4 = Label(Marks_Frame_2, text = 'PROGRAMMING', font =
('arial',14), bg = 'Navajo white')
PROGRAMMING_lbl4.grid(row = 7, column = 0)
ENGLISH_lbl5 = Label(Marks_Frame_2, text = 'ENGLISH', font = ('arial',14), bg =
'Navajo white')
ENGLISH_lbl5.grid(row = 8, column = 0)
GRAND_TOTAL_lbl6 = Label(Marks_Frame_2, text = 'GRAND TOTAL', font =
('arial',16), bg = 'Navajo white')
GRAND_TOTAL_lbl6.grid(row = 9, column = 0)
PERCENTAGE_lbl7 = Label(Marks_Frame_2, text = 'PERCENTAGE', font =
('arial',16,'bold'), bg = 'Navajo white')
PERCENTAGE_lbl7.grid(row = 10, column = 0)
CGPA_lbl8 = Label(Marks_Frame_2, text = 'CGPA', font = ('arial',16,'bold'), bg
= 'Navajo white')
CGPA_lbl8.grid(row = 10, column = 2)
GRADE_lbl9 = Label(Marks_Frame_2, text = 'GRADE', font = ('arial',16,'bold'),
bg = 'Navajo white')
GRADE_lbl9.grid(row = 10, column = 4)
DIVISION_lbl10 = Label(Marks_Frame_2, text = 'DIVISION', font =
('arial',16,'bold'), bg = 'Navajo white')
DIVISION_lbl10.grid(row = 11, column = 0)
DIVISION_lbl10 = Label(Marks_Frame_2, text = 'RESULT', font =
('arial',16,'bold'), bg = 'Navajo white')
DIVISION_lbl10.grid(row = 11, column = 2)

variables_1 = StringVar(Marks_Frame_2, value = '33')


variables_2 = StringVar(Marks_Frame_2, value = '100')
variables_3 = StringVar(Marks_Frame_2, value = '500')

Text_Entry1 = Entry(Marks_Frame_2, font = ('arial',16), width = 5, textvariable


= marks1)
Text_Entry1.grid(row = 4, column = 1)
Text_Entry2 = Entry(Marks_Frame_2, font = ('arial',16), width = 5, textvariable
= marks2)
Text_Entry2.grid(row = 5, column = 1)
Text_Entry3 = Entry(Marks_Frame_2, font = ('arial',16), width = 5, textvariable
= marks3)
Text_Entry3.grid(row = 6, column = 1)
Text_Entry4 = Entry(Marks_Frame_2, font = ('arial',16), width = 5, textvariable
= marks4)
Text_Entry4.grid(row = 7, column = 1)
Text_Entry5 = Entry(Marks_Frame_2, font = ('arial',16), width = 5, textvariable
= marks5)
Text_Entry5.grid(row = 8, column = 1)
Text_Entry6 = Entry(Marks_Frame_2, font = ('arial',14), width = 5, textvariable
= grand_tot, state = 'readonly')
Text_Entry6.grid(row = 9, column = 1, pady = 8)
Text_Entry7 = Entry(Marks_Frame_2, font = ('arial',14,'bold'), width = 5,
textvariable = percentage, state = 'readonly')
Text_Entry7.grid(row = 10, column = 1, pady = 8)
Text_Entry8 = Entry(Marks_Frame_2, font = ('arial',14,'bold'), width = 5,
textvariable = cgpa, state = 'readonly')
Text_Entry8.grid(row = 10, column = 3, pady = 8)
Text_Entry9 = Entry(Marks_Frame_2, font = ('arial',14,'bold'), width = 5,
textvariable = grade, state = 'readonly')
Text_Entry9.grid(row = 10, column = 5, padx = 20, pady = 8)
Text_Entry10 = Entry(Marks_Frame_2, font = ('arial',14,'bold'), width = 8,
textvariable = division, state = 'readonly')
Text_Entry10.grid(row = 11, column = 1, padx = 20, pady = 8)
Text_Entry11 = Entry(Marks_Frame_2, font = ('arial',14,'bold'), width = 7,
textvariable = result, state = 'readonly')
Text_Entry11.grid(row = 11, column = 3, padx = 20, pady = 8)

Text_Entry_1_2 = Entry(Marks_Frame_2, textvariable = variables_1, font =


('arial',16), width = 5, state = 'readonly')
Text_Entry_1_2.grid(row = 4, column = 2, pady = 5)
Text_Entry_1_3 = Entry(Marks_Frame_2, textvariable = variables_2, font =
('arial',16), width = 5, state = 'readonly')
Text_Entry_1_3.grid(row = 4, column = 3)
Text_Entry_2_2 = Entry(Marks_Frame_2, textvariable = variables_1, font =
('arial',16), width = 5, state = 'readonly')
Text_Entry_2_2.grid(row = 5, column = 2, pady = 5)
Text_Entry_2_3 = Entry(Marks_Frame_2, textvariable = variables_2, font =
('arial',16), width = 5, state = 'readonly')
Text_Entry_2_3.grid(row = 5, column = 3)
Text_Entry_3_2 = Entry(Marks_Frame_2, textvariable = variables_1, font =
('arial',16), width = 5, state = 'readonly')
Text_Entry_3_2.grid(row = 6, column = 2, pady = 5)
Text_Entry_3_3 = Entry(Marks_Frame_2, textvariable = variables_2, font =
('arial',16), width = 5, state = 'readonly')
Text_Entry_3_3.grid(row = 6, column = 3)
Text_Entry_4_2 = Entry(Marks_Frame_2, textvariable = variables_1, font =
('arial',16), width = 5, state = 'readonly')
Text_Entry_4_2.grid(row = 7, column = 2, pady = 5)
Text_Entry_4_3 = Entry(Marks_Frame_2, textvariable = variables_2, font =
('arial',16), width = 5, state = 'readonly')
Text_Entry_4_3.grid(row = 7, column = 3)
Text_Entry_5_2 = Entry(Marks_Frame_2, textvariable = variables_1, font =
('arial',16), width = 5, state = 'readonly')
Text_Entry_5_2.grid(row = 8, column = 2, pady = 5)
Text_Entry_5_3 = Entry(Marks_Frame_2, textvariable = variables_2, font =
('arial',16), width = 5, state = 'readonly')
Text_Entry_5_3.grid(row = 8, column = 3)
Text_Entry_6_3 = Entry(Marks_Frame_2, textvariable = variables_3, font =
('arial',16), width = 5, state = 'readonly')
Text_Entry_6_3.grid(row = 9, column = 3)

Compute_button = Button(Marks_Frame_2, text = 'COMPUTE', font =


('arial',12,'bold'), width = 10, command = Compute)
Compute_button.grid(row = 4, column = 4, padx = 50, pady = 6)
Save_button = Button(Marks_Frame_2, text = 'SAVE', font = ('arial',12,'bold'),
width = 10, command = Add)
Save_button.grid(row = 5, column = 4, padx = 50, pady = 6)
Update_button = Button(Marks_Frame_2, text = 'UPDATE', font =
('arial',12,'bold'), width = 10, command = Update)
Update_button.grid(row = 6, column = 4, padx = 50, pady = 6)
Cancel_button = Button(Marks_Frame_2, text = 'RESET', font =
('arial',12,'bold'), width = 10, command = Reset)
Cancel_button.grid(row = 7, column = 4, padx = 50, pady = 6)
Exit_button = Button(Marks_Frame_2, text = 'EXIT', font = ('arial',12,'bold'),
width = 10, command = Exit)
Exit_button.grid(row = 8, column = 4, padx = 50, pady = 6)

root.mainloop()

def search_result_marksheet(row):
root = Tk()
root.title('Marksheet')
root.geometry('1350x750')
root.config(bg = 'Navajo white')

def Compute():
num1 = (marks1.get()); num2 = (marks2.get()); num3 =
(marks3.get()); num4 = (marks4.get()); num5 = (marks5.get())

TOTAL = num1+num2+num3+num4+num5
grand_tot.set(TOTAL)

Percentage = ((num1+num2+num3+num4+num5) * 100)/500


percentage.set(Percentage)

c_grades = (((num1+num2+num3+num4+num5) * 100)/500) / 9.5


cgpa.set(round(c_grades,1))

if (((num1+num2+num3+num4+num5) * 100)/500) <= 40:


grades = 'G'
elif (((num1+num2+num3+num4+num5) * 100)/500) <= 50:
grades = 'F'
elif (((num1+num2+num3+num4+num5) * 100)/500) <= 60:
grades = 'E'
elif (((num1+num2+num3+num4+num5) * 100)/500) <= 70:
grades = 'D'
elif (((num1+num2+num3+num4+num5) * 100)/500) <= 80:
grades = 'C'
elif (((num1+num2+num3+num4+num5) * 100)/500) <= 90:
grades = 'B'
else:
grades = 'A'

grade.set(grades)

count = 0
if num1 <33:
count = count + 1
if num2 <33:
count = count + 1
if num3 <33:
count = count + 1
if num4 <33:
count = count + 1
if num5 <33:
count = count + 1

if (count == 0):
result.set('PASS')
elif (count == 1 or count == 2 ):
result.set('SUPPLY')
else:
result.set('FAIL')

if Percentage <= 45 and result != "FAIL":


div.set('THIRD')
elif Percentage <= 60 and result != "FAIL":
div.set('SECOND')
elif Percentage <= 100:
div.set('FIRST')
Frame_1 = LabelFrame(root, width = 1200, height = 400, font =
('arial',20,'bold'), bg = 'Navajo white', bd = 10, \
text = 'Student Details', relief = 'ridge')
Frame_1.grid(row = 1, column = 0, pady = 20, padx = 20)

name = StringVar(Frame_1,value=row[0][1])
roll = StringVar(Frame_1,value=row[0][2])
father_name = StringVar(Frame_1,value=row[0][3])
mother_name = StringVar(Frame_1,value=row[0][4])
date_of_birth = StringVar(Frame_1,value=row[0][5])
gender = StringVar(Frame_1,value=row[0][6])
school = StringVar(Frame_1,value=row[0][7])
email_addres = StringVar(Frame_1,value=row[0][8])

lbl_name = Label(Frame_1, text = 'Name', font = ('arial',15,'bold'), bg =


'Navajo white')
lbl_name.grid(row = 0, column = 0, padx = 80)
Txt_Entry_Name = Entry(Frame_1, font = ('arial',15), width = 25, textvariable =
name)
Txt_Entry_Name.grid(row = 0, column = 1, padx = 5, pady = 5)

Lbl_Roll_no = Label(Frame_1, text = 'Roll Number', font = ('arial',15,'bold'),


bg = 'Navajo white')
Lbl_Roll_no.grid(row = 0, column = 3, padx = 80)
Txt_Entry_Roll_no = Entry(Frame_1, font = ('arial',15), width = 25,
textvariable = roll)
Txt_Entry_Roll_no.grid(row = 0, column = 4, padx = 40)

Llb_Father_Name = Label(Frame_1, text = 'Father Name', font =


('arial',15,'bold'), bg = 'Navajo white')
Llb_Father_Name.grid(row = 1, column = 0, padx = 80)
Txt_Entry_Father_Name = Entry(Frame_1, font = ('arial',15), width = 25,
textvariable = father_name)
Txt_Entry_Father_Name.grid(row = 1, column = 1, padx = 5, pady = 10)

Lbl_Mother_Name = Label(Frame_1, text = 'Mother Name', font =


('arial',15,'bold'), bg = 'Navajo white')
Lbl_Mother_Name.grid(row = 1, column = 3, padx = 80)
Txt_Entry_Mother_Name = Entry(Frame_1, font = ('arial',15), width = 25,
textvariable = mother_name)
Txt_Entry_Mother_Name.grid(row = 1, column = 4, padx = 5)

lbl_DateOFbirth = Label(Frame_1, text = 'Date of Birth', font =


('arial',15,'bold'), bg = 'Navajo white')
lbl_DateOFbirth.grid(row = 2, column = 0, padx = 80)
Txt_Entry_DateOFbirth = Entry(Frame_1, font = ('arial',15), width = 25,
textvariable = date_of_birth)
Txt_Entry_DateOFbirth.grid(row = 2, column = 1, padx = 5, pady = 5)

Lbl_Gender = Label(Frame_1, text = 'Gender', font = ('arial',15,'bold'), bg =


'Navajo white')
Lbl_Gender.grid(row = 2, column = 3, padx = 80)
TXt_Entry_Gender = Entry(Frame_1, font = ('arial',15), width = 25, textvariable
= gender)
TXt_Entry_Gender.grid(row = 2, column = 4, padx = 5, pady = 5)
Lbl_School = Label(Frame_1, text = 'School Name', font = ('arial',15,'bold'),
bg = 'Navajo white')
Lbl_School.grid(row = 3, column = 0, padx = 80)
Txt_Entry_School = Entry(Frame_1, font = ('arial',15), width = 25, textvariable
= school)
Txt_Entry_School.grid(row = 3, column = 1, padx = 5, pady = 5)

Lbl_EmailAddress = Label(Frame_1, text = 'Email Address', font =


('arial',15,'bold'), bg = 'Navajo white')
Lbl_EmailAddress.grid(row = 3, column = 3, padx = 80)
Txt_Entry_EmailAddress = Entry(Frame_1, font = ('arial',15), width = 25,
textvariable = email_addres)
Txt_Entry_EmailAddress.grid(row = 3, column = 4, padx = 5, pady = 5)

Frame_2 = LabelFrame(root, width = 1200, height = 400, font =


('arial',20,'bold'), bg = 'Navajo white', bd = 10 \
, text = 'Grades Point Obtained', relief = 'ridge')
Frame_2.grid(row = 3, column = 0)

marks1 = DoubleVar(Frame_2,row[0][9])
marks2 = DoubleVar(Frame_2,row[0][10])
marks3 = DoubleVar(Frame_2,row[0][11])
marks4 = DoubleVar(Frame_2,row[0][12])
marks5 = DoubleVar(Frame_2,row[0][13])
grand_tot = DoubleVar(Frame_2,row[0][14])
percentage = DoubleVar(Frame_2,row[0][15])
cgpa = DoubleVar(Frame_2,row[0][16])
grade = StringVar(Frame_2,row[0][17])
div = StringVar(Frame_2,row[0][18])
result = StringVar(Frame_2,row[0][19])

Lbl_Sub = Label(Frame_2, text = 'SUBJECT', font = ('arial',16,'bold'), bg =


'Navajo white')
Lbl_Sub.grid(row = 3, column = 0, padx = 50, pady = 10)

Lbl_obtained_Marks = Label(Frame_2, text = 'MARKS OBTAINED', font =


('arial',16,'bold'), bg = 'Navajo white')
Lbl_obtained_Marks.grid(row = 3, column = 1, padx = 20)

Lbl_Sub = Label(Frame_2, text = 'PASSING MARKS', font = ('arial',16,'bold'), bg


= 'Navajo white')
Lbl_Sub.grid(row = 3, column = 2, padx = 20)

Lbl_obtained_Marks = Label(Frame_2, text = 'TOTAL MARKS', font =


('arial',16,'bold'), bg = 'Navajo white')
Lbl_obtained_Marks.grid(row = 3, column = 3, padx = 20)

MATHEMATICS_lbl1 = Label(Frame_2, text = 'MATHEMATICS', font = ('arial',14), bg


= 'Navajo white')
MATHEMATICS_lbl1.grid(row = 4, column = 0)
PHYSICS_lbl2 = Label(Frame_2, text = 'PHYSICS', font = ('arial',14), bg =
'Navajo white')
PHYSICS_lbl2.grid(row = 5, column = 0)
CHEMISTRY_lbl3 = Label(Frame_2, text = 'CHEMISTRY', font = ('arial',14), bg =
'Navajo white')
CHEMISTRY_lbl3.grid(row = 6, column = 0)
PROGRAMMING_lbl4 = Label(Frame_2, text = 'PROGRAMMING', font = ('arial',14), bg
= 'Navajo white')
PROGRAMMING_lbl4.grid(row = 7, column = 0)
ENGLISH_lbl5 = Label(Frame_2, text = 'ENGLISH', font = ('arial',14), bg =
'Navajo white')
ENGLISH_lbl5.grid(row = 8, column = 0)
GRAND_TOTAL_lbl6 = Label(Frame_2, text = 'GRAND TOTAL', font = ('arial',16), bg
= 'Navajo white')
GRAND_TOTAL_lbl6.grid(row = 9, column = 0)
PERCENTAGE_lbl7 = Label(Frame_2, text = 'PERCENTAGE', font =
('arial',16,'bold'), bg = 'Navajo white')
PERCENTAGE_lbl7.grid(row = 10, column = 0)
CGPA_lbl8 = Label(Frame_2, text = 'CGPA', font = ('arial',16,'bold'), bg =
'Navajo white')
CGPA_lbl8.grid(row = 10, column = 2)
GRADE_lbbl9 = Label(Frame_2, text = 'GRADE', font = ('arial',16,'bold'), bg =
'Navajo white')
GRADE_lbbl9.grid(row = 10, column = 4)
DIVISIONRESULT_lbl10 = Label(Frame_2, text = 'DIVISION', font =
('arial',16,'bold'), bg = 'Navajo white')
DIVISIONRESULT_lbl10.grid(row = 11, column = 0)
DIVISIONRESULT_lbl10 = Label(Frame_2, text = 'RESULT', font =
('arial',16,'bold'), bg = 'Navajo white')
DIVISIONRESULT_lbl10.grid(row = 11, column = 2)

variables_1 = StringVar(Frame_2, value = '33')


variables_2 = StringVar(Frame_2, value = '100')
variables_3 = StringVar(Frame_2, value = '500')

Text_Entry1 = Entry(Frame_2, font = ('arial',16), width = 5, textvariable =


marks1)
Text_Entry1.grid(row = 4, column = 1)
Text_Entry2 = Entry(Frame_2, font = ('arial',16), width = 5, textvariable =
marks2)
Text_Entry2.grid(row = 5, column = 1)
Text_Entry3 = Entry(Frame_2, font = ('arial',16), width = 5, textvariable =
marks3)
Text_Entry3.grid(row = 6, column = 1)
Text_Entry4 = Entry(Frame_2, font = ('arial',16), width = 5, textvariable =
marks4)
Text_Entry4.grid(row = 7, column = 1)
Text_Entry5 = Entry(Frame_2, font = ('arial',16), width = 5, textvariable =
marks5)
Text_Entry5.grid(row = 8, column = 1)
Text_Entry6 = Entry(Frame_2, font = ('arial',14), width = 5, textvariable =
grand_tot)
Text_Entry6.grid(row = 9, column = 1, pady = 8)
Text_Entry7 = Entry(Frame_2, font = ('arial',14,'bold'), width = 5,
textvariable = percentage)
Text_Entry7.grid(row = 10, column = 1, pady = 8)
Text_Entry8 = Entry(Frame_2, font = ('arial',14,'bold'), width = 5,
textvariable = cgpa)
Text_Entry8.grid(row = 10, column = 3, pady = 8)
Text_Entry9 = Entry(Frame_2, font = ('arial',14,'bold'), width = 5,
textvariable = grade)
Text_Entry9.grid(row = 10, column = 5, padx = 20, pady = 8)
Text_Entry10 = Entry(Frame_2, font = ('arial',14,'bold'), width = 8,
textvariable = div)
Text_Entry10.grid(row = 11, column = 1, padx = 20, pady = 8)
Text_Entry11 = Entry(Frame_2, font = ('arial',14,'bold'), width = 7,
textvariable = result)
Text_Entry11.grid(row = 11, column = 3, padx = 20, pady = 8)

Text_Entry_1_2 = Entry(Frame_2, textvariable = variables_1, font =


('arial',16), width = 5)
Text_Entry_1_2.grid(row = 4, column = 2, pady = 5)
Text_Entry_1_3 = Entry(Frame_2, textvariable = variables_2, font =
('arial',16), width = 5)
Text_Entry_1_3.grid(row = 4, column = 3)
Text_Entry_2_2 = Entry(Frame_2, textvariable = variables_1, font =
('arial',16), width = 5)
Text_Entry_2_2.grid(row = 5, column = 2, pady = 5)
Text_Entry_2_3 = Entry(Frame_2, textvariable = variables_2, font =
('arial',16), width = 5)
Text_Entry_2_3.grid(row = 5, column = 3)
Text_Entry_3_2 = Entry(Frame_2, textvariable = variables_1, font =
('arial',16), width = 5)
Text_Entry_3_2.grid(row = 6, column = 2, pady = 5)
Text_Entry_3_3 = Entry(Frame_2, textvariable = variables_2, font =
('arial',16), width = 5)
Text_Entry_3_3.grid(row = 6, column = 3)
Text_Entry_4_2 = Entry(Frame_2, textvariable = variables_1, font =
('arial',16), width = 5)
Text_Entry_4_2.grid(row = 7, column = 2, pady = 5)
Text_Entry_4_3 = Entry(Frame_2, textvariable = variables_2, font =
('arial',16), width = 5)
Text_Entry_4_3.grid(row = 7, column = 3)
Text_Entry_5_2 = Entry(Frame_2, textvariable = variables_1, font =
('arial',16), width = 5)
Text_Entry_5_2.grid(row = 8, column = 2, pady = 5)
Text_Entry_5_3 = Entry(Frame_2, textvariable = variables_2, font =
('arial',16), width = 5)
Text_Entry_5_3.grid(row = 8, column = 3)
Text_Entry_6_3 = Entry(Frame_2, textvariable = variables_3, font =
('arial',16), width = 5)
Text_Entry_6_3.grid(row = 9, column = 3)

Exit_button = Button(Frame_2, text = 'EXIT', font = ('arial',12,'bold'), width


= 10, command = root.destroy)
Exit_button.grid(row = 8, column = 4, padx = 50, pady = 6)

root.mainloop()

if __name__ == '__main__':
marking_sheet()
CHAPTER 8

OUTPUT SCREEN
Testing
INTRODUCTION TO TESTING

Introduction to Testing:

Testing is a process, which reveals errors in the program. It is the major quality measure
employed during software development. During software development. During testing, the
program is executed with a set of test cases and the output of the program for the test cases is
evaluated to determine if the program is performing as it is expected to perform.

TESTING IN STRATEGIES

In order to make sure that the system does not have errors, the different levels of
testing strategies that are applied at differing phases of software development are:

Unit Testing:

Unit Testing is done on individual modules as they are completed and become executable.
It is confined only to the designer's requirements.

Each module can be tested using the following two Strategies:

Black Box Testing:


In this strategy some test cases are generated as input conditions that fully execute all
functional requirements for the program. This testing has been uses to find errors in the
following categories:

 Incorrect or missing functions


 Interface errors
 Errors in data structure or external database access
 Performance errors
 Initialization and termination errors.
In this testing only the output is checked for correctness. The logical flow of the data is not
checked.

White Box testing:


In this the test cases are generated on the logic of each module by drawing flow graphs
of that module and logical decisions are tested on all the cases. It has been uses to generate
the test cases in the following cases:

 Guarantee that all independent paths have been Executed.


 Execute all logical decisions on their true and false Sides.
 Execute all loops at their boundaries and within their operational bounds
 Execute internal data structures to ensure their validity.
Integrating Testing :
Integration testing ensures that software and subsystems work together a whole. It
tests the interface of all the modules to make sure that the modules behave properly when
integrated together.
System Testing :
Involves in-house testing of the entire system before delivery to the user. It's aim is to
satisfy the user the system meets all requirements of the client's specifications.

Acceptance Testing :

Test Approach :
Testing can be done in two ways:

 Bottom up approach
 Top down approach
Bottom up Approach:

Testing can be performed starting from smallest and lowest level modules and proceeding one
at a time. For each module in bottom up testing a short program executes the module and provides the
needed data so that the module is asked to perform the way it will when embedded with in the larger
system. When bottom level modules are tested attention turns to those on the next level that use the
lower level ones they are tested individually and then linked with the previously examined lower level
modules.

Top down approach:

This type of testing starts from upper level modules. Since the detailed activities usually
performed in the lower level routines are not provided stubs are written. A stub is a module
shell called by upper level module and that when reached properly will return a message to
the calling module indicating that proper interaction occurred. No attempt is made to verify the
correctness of the lower level module.

Validation:

The system has been tested and implemented successfully and thus ensured that all the
requirements as listed in the software requirements specification are completely fulfilled. In
case of erroneous input corresponding error messages are displayed.
CHAPTER 9

CONCLUSION

&

REFENRENCE
9.1 CONCLUSION

College Management System deals with all kind of student details, academic
related reports,collegedetails,library details, marksheet details and
otherresourcerelateddetails too. It tracks all the details of a student from the day one
to the end of his course which can be used for all reporting purpose,curriculum
details, project or any other assignment details, final exam result; In our project, the
college management system is particularly designed to provide marks and attendance
updates from the college to the parents of the respective students. Project administers
three sectors. First is Admin Login where admin will update the new student and
staff; second is the Faculty Login who updates the marks and attendance of the
students; Student will be able to login and check their marks with respect to their
subjects. Once all the updates are completed, Admin will be sending the details of the
student parent’s number. SMS Gateway helps parents to have updates of their
children.
9.2 REFERENCES
1. International Journal of Engineering, Business and Enterprise Application (IJEBEA)

2. Kartiki Datarkar, Neha Hajare, Nidhi Fulzele, Sonali Kawle, Vaibhav Suryavanshi,
Dipeeka
Radke,“OnlineCollegeManagementSystem”,inJCSMC,Vol.5,Issue.4,April2016,
pg.118-122

3. www.codeproject.com.

4. M.A. Norasiah and A. Norhayati. “Intelligent student information system”. 4th


International
conferenceontelecommunicationtechnologyproceedings,ShahAlam,Malaysia, 0-7803-
7773-7/03 2003 IEEE.
5.
6. HTML

7. HTML Black Book by Holzner

8. JDBC

9. Java Database Programming with JDBC by Patel moss.


10. Software Engineering by Roger Pressman

You might also like