Project Report
Project Report
Project Report
ON
In partial fulfilment of the requirement for the award of the Degree of
Nov 2023
We, Lavish and Mandeep Gautam hereby declare that the report of the project entitled
“StudentManagementSystem”hasnotpresentedasapartofanyotheracademicworktoget
mydegreeorcertificateexceptChandigarhSchoolofBusinessJhanjeriMohali,affiliatedto
I.K.GujralPunjabTechnicalUniversity,Jalandhar,forthefulfilmentoftherequirementsfor
the degree of bachelor’s in computer applications.
ii
ACKNOWLEDGEMENT
I wish to express my heartfelt appreciation for the successful completion of the "Student
Management System" project.
I extend my deepest gratitude to Ms. Anjali for her invaluable guidance and unwavering
support throughout the development of this project.
I am indebted to the Chandigarh School of Business for providing the necessaryresources
and fostering an environment conducive to learning and innovation.
Specialthankstomyteammate,MandeepGautam,fortheircollaborationandsupportduring
this project.
Lastly, I am grateful to all individualswhoofferedtheirsupportandmotivationduringthis
endeavour.
SIGNATURE OF STUDENT:
Lavish (2133104)
Mandeep Gautam (2133109)
BCA
iii
Table of Contents
Declaration ii
Acknowledgement iii
Abstract vi
1.1 Background
1.2 Objectives
1.3 Scope
3.1 Overview
iv
CHAPTER -5 TESTING 37-38
6.3 Troubleshooting
CONCLUSION 43
REFERENCES 44
v
ABSTRACT
The Student Management System (SMS) is an innovative software solution designed to
within educational institutions. Developed using Python and Tkinter, this system offers a
Atitscore,theSMSintegratesseamlesslywithSQLiteorMySQLdatabases,ensuringsecure
storage and retrieval of student records. Its functionalities encompass student registration,
academic record management, grade tracking, and report generation. Administrators can
effortlessly add, modify, or remove student details, while teachers can efficiently update
gradesandattendancerecords.Thesystem'scustomizablereportgenerationfeatureprovides
Builtonamodulararchitecture,theSMSboastsscalability,allowingforfutureenhancements
guarantee data security and access control, safeguarding sensitive student information.
The SMS serves as an invaluable tool for educational institutions, offering centralised
management of student data and automating routine tasks. By reducing administrative
burdens, it empowers educators to focus more on fostering quality education and student
development. Overall, the SMS revolutionises the educational landscape by providing an
vi
CHAPTER -1
INTRODUCTION
1.1 Background and Context
Educational institutions serve as hubs for learning, growth, and development. However,
managing the diversearrayofstudent-relateddatahasemergedasasignificantchallengein
ensuring smooth administrative operations and effective academic management. Our
institution, in line with this trend, has encountered notable hurdles in managing the
burgeoning student population and their associated data. The prevailing system,
predominantly reliant on manual record-keeping and outdated databases, has proven
inadequate in coping with the increasing complexities and demands of modern academia.
The existing methods of maintaining student records involve fragmented, paper-based
systemsorrudimentarydatabasesthathinderseamlessdataretrieval,impedetimelyaccessto
information,andposeasubstantialriskoferrorsduetomanualentry.Theselimitationshave
resulted in administrative inefficiencies, delayed decision-making processes, and a lack of
holistic insights into student performance and trends.
1
Core Objectives
1. The Student Management System (SMS) project aimstoovercomethesechallenges
and redefine the management of student-related data within our institution. The
primary objectives of the SMS project encompass:
2. Efficient Data Management: Creating a comprehensive and centralised repository
for student information to ensure accuracy, consistency, and accessibility across
administrative functions.
3. User-Centric Interface: Designing an intuitive and ergonomic interface that
promotes ease of use and minimises the learning curve for administrative staff.
Functional Objectives
1. Registration and Profile Management: Enabling the efficient registration of
students into the system and providing functionalities for updating and maintaining
student profiles.
2. Academic Progress Tracking: Implementing mechanisms to record and monitor
academic performance, including grades, attendance, and disciplinary records.
3. Reporting and Analytics: Developing robust reporting functionalities to generate
detailed reports, analytics, and insights into student performance for informed
decision-making.
4. Automation and Workflow Enhancement: Introducing automation in routine
administrative tasks to streamline processes and reduce manual efforts, thereby
improving overall workflow efficiency.
2
2. Administrative Functions: Implementing user authentication, access control
mechanisms, and managing administrative roles and privileges within the system.
3. Academic Performance Tracking: Facilitating the recording of student grades,
performanceindicators,generatingcomprehensivereports,andprovidinganalyticsfor
academic progression and evaluation.
3
CHAPTER -2
REQUIREMENTS ANALYSIS
4
Communication and Notification
Requirement
Facilitate communication between faculty, administrators, and students.
Details
1. Messaging System: Implement a messaging platform to enable communication
between users within the system.
2. Notification System: Provide a mechanism for sendingnotifications,reminders,and
updates to relevant stakeholders regarding academic progress or administrative
matters.
Automation of Administrative Tasks
Requirement
Automate routine administrative tasks to improve workflow efficiency.
Details
1. Automated Processes: Implement automated routines for tasks such as grade
calculation, report generation, data backups, and reminders for administrative
deadlines.
2. ScheduledTasks:Enableschedulingofrecurringtaskstoreducemanualintervention
and streamline administrative processes.
2.2 Non-Functional Requirements
Performance
Requirement
The system must respond within acceptable time frames.
Details
Response Time: Ensure thatsystemoperations,suchasdataretrievalandreportgeneration,
occur within defined response time thresholds.
Scalability: Maintain optimal performance as the system scales up with increased dataand
user load.
Usability and User Interface
Requirement
The system should have an intuitive and user-friendly interface.
5
Details
1. Intuitiveness:Designtheinterfacetobeeasilynavigableandunderstandableforusers
with varying technical proficiencies.
2. Accessibility: Ensure accessibility features for users with disabilities to promote
inclusivity.
Security
Requirement
Ensure data security and privacy.
Details
1. Data Encryption: Implement robust encryption methods to protect sensitive student
information.
2. Access Controls: Enforce strict access controls and permissions to prevent
unauthorised access to student records.
Scalability and Flexibility
Requirement
The system should accommodate future growth and changes.
Details
1. Scalability: Design the system architecture to be scalable, allowing for additional
functionalities and increased data volumes without significant reengineering.
2. Flexibility: Maintain flexibility to adapt tochangingrequirementsandtechnological
advancements.
Reliability and Availability
Requirement
The system must be available during essential operational hours.
Details
1. UptimeGuarantee:Ensurehighsystemavailabilityduringcriticaloperationalhoursto
support administrative functions without significant interruptions.
2. Backup and Recovery: Implement robust backup mechanisms and disasterrecovery
plans to ensure data integrity and minimise downtime in case of system failures.
2.3 Use Case Diagrams
6
Student Registration Use Case
Description
This use case illustrates the interaction between actors (administrators, students) and the
system for registering new students.
Key Actors
Administrator, Student
Activities
1. Inputting student details
2. Verifying information
3. Adding student to the system
Student Registration Use Case Diagram
Generate Student Report Use Case
Description
This use case demonstrates how administrators generate comprehensive reports for student
performance.
Key Actors
Administrator
Activities
1. Selecting student(s)
2. Specifying report parameters
3. Generating and viewing the report
Generate Student Report Use Case Diagram
Update Student Information Use Case
Description
This use case showcases the process of modifying student information in the system.
Key Actors
Administrator
Activities
1. Accessing student records
2. Making necessary updates
7
3. Saving changes
Update Student Information Use Case Diagram
User Authentication Use Case
Description
This use case illustrates the login process and access control mechanisms.
Key Actors
System, User
Activities
1. Providing credentials
2. Authentication
3. Granting access based on user role
User Authentication Use Case Diagram
Expandingontheserequirementsprovidesadetailedunderstandingofthefunctionalitiesand
qualities expected from the Student Management System. These specificationsserveasthe
foundation for the system's development and ensure alignment with user expectations and
institutional needs.
8
CHAPTER -3
SYSTEM DESIGN
3.1 Overview
TheSystemDesignsegmentoutlinesthefundamentalstructureandfunctionalcomponentsof
theStudentManagementSystem.Thissectionprovidesacomprehensiveviewofthesystem's
architecture, database design, and user interface layout.
3.2 System Architecture
Description
The architecture of the Student Management System is structured around a three-tier
architecture model, ensuring modularity, scalability, and maintainability.
Key Components
1. PresentationLayer:Thislayerencompassesthegraphicaluserinterface(GUI)using
Tkinter, providing a user-friendly interaction platform for administrators, teachers,
and users of the system.
2. Application Layer: The core logic and functionalities of the system reside in this
layer, developed in Python. It manages the data flow, business logic, and
communication between the presentation and database layers.
3. DatabaseLayer:Atthelowestlevel,thesysteminteractswiththedatabaselayer.It
manages student-related data storage, retrieval, and manipulation using a relational
database system like MySQL or SQLite.
Architecture Type
Thesystemadoptsamodularizedarchitecture,promotingseparationofconcernsandeaseof
maintenance. The presentation, application, and database tiers are distinctly separated,
enablingscalabilityandeasiermodificationsorupdatestoindividuallayerswithoutaffecting
the entire system.
3.3 Database Design
Description
Thedatabasedesignemphasisesthestructuringandorganisationofdatatoensureefficiency,
integrity, and optimal retrieval.
9
Database Schema
1. Students Table: Contains fields for student information such as student ID, name,
contact details, enrollment status, courses enrolled, and academic records.
2. Users Table: Stores information about system users including administrators,
teachers, and other users, with fields for login credentials, access rights, and
associated student IDs where applicable.
3. Grades Table: Tracks student grades, course information, and performance data,
linked to respective student IDs and course IDs.
4. MessagesTable:Storescommunicationrecordsbetweensystemusers,withfieldsfor
sender, receiver, message content, timestamps, and related IDs.
Relationships
1. Students - Grades: Establishesaone-to-manyrelationship,linkingstudentstotheir
respective grades and course details.
2. Users - Students: Facilitates associations between users and students, enabling
administrators and teachers to interact with student data andperformadministrative
functions.
3.4 User Interface Design
Description
The user interface design focuses on delivering an intuitive, user-friendly interface for
seamless interaction with the system functionalities.
Interface Elements
1. Input Forms: Tailored formsforinputtingandupdatingstudentdetails,grades,and
user information, designed for clarity and ease of use.
2. Navigation Menus: Intuitive navigation menus enabling smooth traversal between
different sections and functionalities within the system.
3. Report Generation Interface: An accessible and straightforward interface for
generating comprehensive reports and analytics, providing necessary parametersfor
report customization.
10
Design Principles
1. Consistency: Ensuring uniformity in design elements, colour schemes, and
navigation patterns across the entire system, enhancing user familiarity and ease of
navigation.
2. Accessibility: Designing the interface to be accessible and usable for users with
varying levels of technical expertise or potential disabilities.
3. Usability: Prioritising user experience by creatinganinterfacethatisintuitive,easy
to understand, and minimises the learning curve for users interacting with the system.
11
CHAPTER -4
IMPLEMENTATION
Database
For data management and storage, two database management systems were considered:
1. SQLite: Employed during development and testing phases due to its lightweight
nature and ease of setup, aiding rapid prototyping and testing of system
functionalities.
2. MySQL:Consideredforlargerdeployments,owingtoitsscalabilityandrobustness,
ensuring efficient handling of large volumes of student-related data in production
environments.
4.2 Code Structure
Modular Architecture
The SMS was architectured usingamodularapproachtoensurescalability,maintainability,
and reusability of code components.
1. Modularization: System functionalities were compartmentalised into distinct
modules and packages. For instance,moduleswerededicatedtouserauthentication,
12
studentdatamanagement,reportgeneration,etc.,ensuringaclearorganisationofthe
codebase.
2. SeparationofConcerns:Eachmodulefocusedonaspecificaspectorconcernofthe
system, promoting code readability and allowing for independent development and
maintenance of different system components.
Backend Logic
The backend logic of the system was developed adhering to object-oriented programming
principles for enhanced flexibility and code organisation.
1. Object-Oriented Approach: Data and functionalities were encapsulated within
classesandmethods,promotingcodereusability,maintainability,andallowingforan
efficient division of responsibilities among different components.
2. Functionalities: Backend processing encompassed data validation, database
interactions,businesslogichandling,andimplementingvarioussystemfeaturessuch
as user authentication, student record management, and report generation.
4.3 Features Implemented
Student Management
The SMS offered comprehensive functionalities for managing student-related information:
1. StudentRegistration:Administratorscouldadd,modify,anddeletestudentrecords,
capturing details such as name, contact information, enrollment status, and courses
selected.
2. User Authentication: Secure login mechanisms were implemented to authenticate
users, ensuring access control based on different user roles within the system.
3. GradeTracking:Thesystemrecordedandmanagedstudentgrades,attendance,and
course-related information, enabling efficient academic tracking and performance
analysis.
4. Report Generation:Administratorscouldgeneratedetailedreportsandanalyticson
student performance, providing insights into academic progress and trends.
13
4.4 Code Snippets
def addstudent():
def submitadd():
id = idval.get()
name = nameval.get()
mobile = mobileval.get()
email = emailval.get()
address = addressval.get()
gender = genderval.get()
dob = dobval.get()
addedtime = time.strftime("%H:%M:%S")
addeddate = time.strftime("%d/%m/%Y")
try:
strr = 'insert into studentdata1 values(%s,%s,%s,%s,%s,%s,%s,%s,%s)'
mycursor.execute(strr,(id,name,mobile,email,address,gender,dob,addeddate,addedtime))
con.commit()
res=messagebox.askyesnocancel('Notificatrions','Id{}Name{}Addedsucessfully..
and want to clean the form'.format(id,name),parent=addroot)
if(res==True):
idval.set('')
nameval.set('')
mobileval.set('')
emailval.set('')
addressval.set('')
genderval.set('')
dobval.set('')
except:
messagebox.showerror('Notifications','Id Already Exist try another
id...',parent=addroot)
14
strr = 'select * from studentdata1'
mycursor.execute(strr)
datas = mycursor.fetchall()
studenmttable.delete(*studenmttable.get_children())
for i in datas:
vv = [i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8]]
studenmttable.insert('',END,values=vv)
addroot = Toplevel(master=DataEntryFrame)
addroot.grab_set()
addroot.geometry('470x470+220+200')
addroot.title('Student Management System')
addroot.config(bg='blue')
addroot.iconbitmap('mana.ico')
addroot.resizable(False,False)
#--------------------------------------------------- Add studenmt Labels
idlabel = Label(addroot,text='Enter Id :
',bg='gold2',font=('times',20,'bold'),relief=GROOVE,borderwidth=3,width=12,anchor='w')
idlabel.place(x=10,y=10)
15
addresslabel = Label(addroot,text='Enter Address :
',bg='gold2',font=('times',20,'bold'),relief=GROOVE,borderwidth=3,width=12,anchor='w')
addresslabel.place(x=10,y=250)
identry = Entry(addroot,font=('roman',15,'bold'),bd=5,textvariable=idval)
identry.place(x=250,y=10)
nameentry = Entry(addroot,font=('roman',15,'bold'),bd=5,textvariable=nameval)
nameentry.place(x=250,y=70)
mobileentry = Entry(addroot,font=('roman',15,'bold'),bd=5,textvariable=mobileval)
mobileentry.place(x=250,y=130)
16
emailentry = Entry(addroot,font=('roman',15,'bold'),bd=5,textvariable=emailval)
emailentry.place(x=250,y=190)
addressentry = Entry(addroot,font=('roman',15,'bold'),bd=5,textvariable=addressval)
addressentry.place(x=250,y=250)
genderentry = Entry(addroot,font=('roman',15,'bold'),bd=5,textvariable=genderval)
genderentry.place(x=250,y=310)
dobentry = Entry(addroot,font=('roman',15,'bold'),bd=5,textvariable=dobval)
dobentry.place(x=250,y=370)
############------------------------- add button
submitbtn =
Button(addroot,text='Submit',font=('roman',15,'bold'),width=20,bd=5,activebackground='blue
',activeforeground='white',
bg='red',command=submitadd)
submitbtn.place(x=150,y=420)
addroot.mainloop()
def searchstudent():
def search():
id = idval.get()
name = nameval.get()
mobile = mobileval.get()
email = emailval.get()
address = addressval.get()
gender = genderval.get()
dob = dobval.get()
17
addeddate = time.strftime("%d/%m/%Y")
if(id != ''):
strr = 'select *from studentdata1 where id=%s'
mycursor.execute(strr,(id))
datas = mycursor.fetchall()
studenmttable.delete(*studenmttable.get_children())
for i in datas:
vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
studenmttable.insert('', END, values=vv)
elif(name != ''):
strr = 'select *from studentdata1 where name=%s'
mycursor.execute(strr,(name))
datas = mycursor.fetchall()
studenmttable.delete(*studenmttable.get_children())
for i in datas:
vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
studenmttable.insert('', END, values=vv)
elif(mobile != ''):
strr = 'select *from studentdata1 where mobile=%s'
mycursor.execute(strr,(mobile))
datas = mycursor.fetchall()
studenmttable.delete(*studenmttable.get_children())
for i in datas:
vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
studenmttable.insert('', END, values=vv)
elif(email != ''):
strr = 'select *from studentdata1 where email=%s'
mycursor.execute(strr,(email))
datas = mycursor.fetchall()
studenmttable.delete(*studenmttable.get_children())
for i in datas:
18
vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
studenmttable.insert('', END, values=vv)
elif(address != ''):
strr = 'select *from studentdata1 where address=%s'
mycursor.execute(strr,(address))
datas = mycursor.fetchall()
studenmttable.delete(*studenmttable.get_children())
for i in datas:
vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
studenmttable.insert('', END, values=vv)
elif(gender != ''):
strr = 'select *from studentdata1 where gender=%s'
mycursor.execute(strr,(gender))
datas = mycursor.fetchall()
studenmttable.delete(*studenmttable.get_children())
for i in datas:
vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
studenmttable.insert('', END, values=vv)
elif(dob != ''):
strr = 'select *from studentdata1 where dob=%s'
mycursor.execute(strr,(dob))
datas = mycursor.fetchall()
studenmttable.delete(*studenmttable.get_children())
for i in datas:
vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
studenmttable.insert('', END, values=vv)
elif(addeddate != ''):
strr = 'select *from studentdata1 where addeddate=%s'
mycursor.execute(strr,(addeddate))
datas = mycursor.fetchall()
19
studenmttable.delete(*studenmttable.get_children())
for i in datas:
vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
studenmttable.insert('', END, values=vv)
searchroot = Toplevel(master=DataEntryFrame)
searchroot.grab_set()
searchroot.geometry('470x540+220+200')
searchroot.title('Student Management System')
searchroot.config(bg='firebrick1')
searchroot.iconbitmap('mana.ico')
searchroot.resizable(False,False)
#--------------------------------------------------- Add studenmt Labels
idlabel = Label(searchroot,text='Enter Id :
',bg='gold2',font=('times',20,'bold'),relief=GROOVE,borderwidth=3,width=12,anchor='w')
idlabel.place(x=10,y=10)
20
addresslabel.place(x=10,y=250)
identry = Entry(searchroot,font=('roman',15,'bold'),bd=5,textvariable=idval)
identry.place(x=250,y=10)
nameentry = Entry(searchroot,font=('roman',15,'bold'),bd=5,textvariable=nameval)
nameentry.place(x=250,y=70)
mobileentry = Entry(searchroot,font=('roman',15,'bold'),bd=5,textvariable=mobileval)
21
mobileentry.place(x=250,y=130)
emailentry = Entry(searchroot,font=('roman',15,'bold'),bd=5,textvariable=emailval)
emailentry.place(x=250,y=190)
addressentry = Entry(searchroot,font=('roman',15,'bold'),bd=5,textvariable=addressval)
addressentry.place(x=250,y=250)
genderentry = Entry(searchroot,font=('roman',15,'bold'),bd=5,textvariable=genderval)
genderentry.place(x=250,y=310)
dobentry = Entry(searchroot,font=('roman',15,'bold'),bd=5,textvariable=dobval)
dobentry.place(x=250,y=370)
dateentry = Entry(searchroot,font=('roman',15,'bold'),bd=5,textvariable=dateval)
dateentry.place(x=250,y=430)
############------------------------- add button
submitbtn =
Button(searchroot,text='Submit',font=('roman',15,'bold'),width=20,bd=5,activebackground='b
lue',activeforeground='white',
bg='red',command=search)
submitbtn.place(x=150,y=480)
searchroot.mainloop()
def deletestudent():
cc = studenmttable.focus()
content = studenmttable.item(cc)
pp = content['values'][0]
strr = 'delete from studentdata1 where id=%s'
22
mycursor.execute(strr,(pp))
con.commit()
messagebox.showinfo('Notifications','Id {} deleted sucessfully...'.format(pp))
strr = 'select *from studentdata1'
mycursor.execute(strr)
datas = mycursor.fetchall()
studenmttable.delete(*studenmttable.get_children())
for i in datas:
vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
studenmttable.insert('', END, values=vv)
def updatestudent():
def update():
id = idval.get()
name = nameval.get()
mobile = mobileval.get()
email = emailval.get()
address = addressval.get()
gender = genderval.get()
dob = dobval.get()
date = dateval.get()
time = timeval.get()
23
strr = 'select *from studentdata1'
mycursor.execute(strr)
datas = mycursor.fetchall()
studenmttable.delete(*studenmttable.get_children())
for i in datas:
vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
studenmttable.insert('', END, values=vv)
updateroot = Toplevel(master=DataEntryFrame)
updateroot.grab_set()
updateroot.geometry('470x585+220+160')
updateroot.title('Student Management System')
updateroot.config(bg='firebrick1')
updateroot.iconbitmap('mana.ico')
updateroot.resizable(False,False)
#--------------------------------------------------- Add studenmt Labels
idlabel = Label(updateroot,text='Enter Id :
',bg='gold2',font=('times',20,'bold'),relief=GROOVE,borderwidth=3,width=12,anchor='w')
idlabel.place(x=10,y=10)
24
emaillabel.place(x=10,y=190)
25
timeval = StringVar()
identry = Entry(updateroot,font=('roman',15,'bold'),bd=5,textvariable=idval)
identry.place(x=250,y=10)
nameentry = Entry(updateroot,font=('roman',15,'bold'),bd=5,textvariable=nameval)
nameentry.place(x=250,y=70)
mobileentry = Entry(updateroot,font=('roman',15,'bold'),bd=5,textvariable=mobileval)
mobileentry.place(x=250,y=130)
emailentry = Entry(updateroot,font=('roman',15,'bold'),bd=5,textvariable=idval)
emailentry.place(x=250,y=190)
addressentry = Entry(updateroot,font=('roman',15,'bold'),bd=5,textvariable=addressval)
addressentry.place(x=250,y=250)
genderentry = Entry(updateroot,font=('roman',15,'bold'),bd=5,textvariable=genderval)
genderentry.place(x=250,y=310)
dobentry = Entry(updateroot,font=('roman',15,'bold'),bd=5,textvariable=dobval)
dobentry.place(x=250,y=370)
dateentry = Entry(updateroot,font=('roman',15,'bold'),bd=5,textvariable=dateval)
dateentry.place(x=250,y=430)
timeentry = Entry(updateroot,font=('roman',15,'bold'),bd=5,textvariable=dateval)
timeentry.place(x=250,y=490)
############------------------------- add button
26
submitbtn =
Button(updateroot,text='Submit',font=('roman',15,'bold'),width=20,bd=5,activebackground='b
lue',activeforeground='white',
bg='red',command=update)
submitbtn.place(x=150,y=540)
cc = studenmttable.focus()
content = studenmttable.item(cc)
pp = content['values']
if(len(pp) != 0):
idval.set(pp[0])
nameval.set(pp[1])
mobileval.set(pp[2])
emailval.set(pp[3])
addressval.set(pp[4])
genderval.set(pp[5])
dobval.set(pp[6])
dateval.set(pp[7])
timeval.set(pp[8])
updateroot.mainloop()
def showstudent():
strr = 'select *from studentdata1'
mycursor.execute(strr)
datas = mycursor.fetchall()
studenmttable.delete(*studenmttable.get_children())
for i in datas:
vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
studenmttable.insert('', END, values=vv)
def exportstudent():
ff = filedialog.asksaveasfilename()
27
gg = studenmttable.get_children()
id,name,mobile,email,address,gender,dob,addeddate,addedtime=[],[],[],[],[],[],[],[],[]
for i in gg:
content = studenmttable.item(i)
pp = content['values']
id.append(pp[0]),name.append(pp[1]),mobile.append(pp[2]),email.append(pp[3]),address.app
end(pp[4]),gender.append(pp[5]),
dob.append(pp[6]),addeddate.append(pp[7]),addedtime.append(pp[8])
dd = ['Id','Name','Mobile','Email','Address','Gender','D.O.B','Added Date','Added Time']
df =
pandas.DataFrame(list(zip(id,name,mobile,email,address,gender,dob,addeddate,addedtime)),
columns=dd)
paths = r'{}.csv'.format(ff)
df.to_csv(paths,index=False)
messagebox.showinfo('Notifications', 'Student data is Saved {}'.format(paths))
def exitstudent():
res = messagebox.askyesnocancel('Notification','Do you want to exit?')
if(res == True):
root.destroy()
###########################################################################
########Connecttion of Database
def Connectdb():
def submitdb():
global con,mycursor
host = hostval.get()
user = userval.get()
28
password = passwordval.get()
try:
con = pymysql.connect(host=host,user=user,password=password)
mycursor = con.cursor()
except:
messagebox.showerror('Notifications','Data is incorrect please try
again',parent=dbroot)
return
try:
strr = 'create database studentmanagementsystem1'
mycursor.execute(strr)
strr = 'use studentmanagementsystem1'
mycursor.execute(strr)
strr='createtablestudentdata1(idint,namevarchar(20),mobilevarchar(12),email
varchar(30),address varchar(100),gender varchar(50),dob varchar(50),date varchar(50),time
varchar(50))'
mycursor.execute(strr)
strr = 'alter table studentdata1 modify column id int not null'
mycursor.execute(strr)
strr = 'alter table studentdata1 modify column id int primary key'
mycursor.execute(strr)
messagebox.showinfo('Notification','database created andnowyouareconnected
connected to the database ....',parent=dbroot)
except:
strr = 'use studentmanagementsystem1'
mycursor.execute(strr)
messagebox.showinfo('Notification','Now you are connected to the database
....',parent=dbroot)
dbroot.destroy()
29
dbroot = Toplevel()
dbroot.grab_set()
dbroot.geometry('470x250+800+230')
dbroot.iconbitmap('mana.ico')
dbroot.resizable(False,False)
dbroot.config(bg='blue')
#-------------------------------Connectdb Labels
hostlabel = Label(dbroot,text="Enter Host :
",bg='gold2',font=('times',20,'bold'),relief=GROOVE,borderwidth=3,width=13,anchor='w')
hostlabel.place(x=10,y=10)
#-------------------------Connectdb Entry
hostval = StringVar()
userval = StringVar()
passwordval = StringVar()
hostentry = Entry(dbroot,font=('roman',15,'bold'),bd=5,textvariable=hostval)
hostentry.place(x=250,y=10)
userentry = Entry(dbroot,font=('roman',15,'bold'),bd=5,textvariable=userval)
userentry.place(x=250,y=70)
30
passwordentry = Entry(dbroot,font=('roman',15,'bold'),bd=5,textvariable=passwordval)
passwordentry.place(x=250,y=130)
dbroot.mainloop()
###########################################
def tick():
time_string = time.strftime("%H:%M:%S")
date_string = time.strftime("%d/%m/%Y")
clock.config(text='Date :'+date_string+"\n"+"Time : "+time_string)
clock.after(200,tick)
#######################################INTRO SLIDER
import random
colors = ['red','green','blue','yellow','pink','red2','gold2']
def IntroLabelColorTick():
fg = random.choice(colors)
SliderLabel.config(fg=fg)
SliderLabel.after(2,IntroLabelColorTick)
def IntroLabelTick():
global count,text
if(count>=len(ss)):
count = 0
text = ''
SliderLabel.config(text=text)
31
else:
text = text+ss[count]
SliderLabel.config(text=text)
count += 1
SliderLabel.after(200,IntroLabelTick)
###########################################################################
###############################
from tkinter import *
from tkinter import Toplevel,messagebox,filedialog
from tkinter.ttk import Treeview
from tkinter import ttk
import pandas
import pymysql
import time
root = Tk()
root.title('Student Management System')
root.config(bg='gold2')
root.geometry('1174x700+200+50')
root.iconbitmap('mana.ico')
root.resizable(False,False)
###########################################################################
################################# Frames
##---------------------------------------------------------------------------- dataentry frame
DataEntryFrame = Frame(root,bg='gold2',relief=GROOVE,borderwidth=5)
DataEntryFrame.place(x=10,y=80,width=500,height=600)
frontlabel =
Label(DataEntryFrame,text='--------------Welcome--------------',width=30,font=('arial',22,'itali
c bold'),bg='gold2')
frontlabel.pack(side=TOP,expand=True)
32
addbtn = Button(DataEntryFrame,text='1. Add
Student',width=25,font=('chiller',20,'bold'),bd=6,bg='skyblue3',activebackground='blue',relief
=RIDGE,
activeforeground='white',command=addstudent)
addbtn.pack(side=TOP,expand=True)
33
exportbtn = Button(DataEntryFrame,text='6. Export
data',width=25,font=('chiller',20,'bold'),bd=6,bg='skyblue3',activebackground='blue',relief=R
IDGE,
activeforeground='white',command=exportstudent)
exportbtn.pack(side=TOP,expand=True)
##------------------------------------------------- Showdataframe
style = ttk.Style()
style.configure('Treeview.Heading',font=('chiller',20,'bold'),foreground='blue')
style.configure('Treeview',font=('times',15,'bold'),background='cyan',foreground='black')
scroll_x = Scrollbar(ShowDataFrame,orient=HORIZONTAL)
scroll_y = Scrollbar(ShowDataFrame,orient=VERTICAL)
studenmttable = Treeview(ShowDataFrame,columns=('Id','Name','Mobile
No','Email','Address','Gender','D.O.B','Added Date','Added Time'),
yscrollcommand=scroll_y.set,xscrollcommand=scroll_x.set)
scroll_x.pack(side=BOTTOM,fill=X)
scroll_y.pack(side=RIGHT,fill=Y)
scroll_x.config(command=studenmttable.xview)
scroll_y.config(command=studenmttable.yview)
studenmttable.heading('Id',text='Id')
studenmttable.heading('Name',text='Name')
34
studenmttable.heading('Mobile No',text='Mobile No')
studenmttable.heading('Email',text='Email')
studenmttable.heading('Address',text='Address')
studenmttable.heading('Gender',text='Gender')
studenmttable.heading('D.O.B',text='D.O.B')
studenmttable.heading('Added Date',text='Added Date')
studenmttable.heading('Added Time',text='Added Time')
studenmttable['show'] = 'headings'
studenmttable.column('Id',width=100)
studenmttable.column('Name',width=200)
studenmttable.column('Mobile No',width=200)
studenmttable.column('Email',width=300)
studenmttable.column('Address',width=200)
studenmttable.column('Gender',width=100)
studenmttable.column('D.O.B',width=150)
studenmttable.column('Added Date',width=150)
studenmttable.column('Added Time',width=150)
studenmttable.pack(fill=BOTH,expand=1)
###########################################################################
##################################### Slider
ss = 'Welcome To Student Management System'
count = 0
text = ''
##################################
SliderLabel = Label(root,text=ss,font=('chiller',30,'italic
bold'),relief=RIDGE,borderwidth=4,width=35,bg='cyan')
SliderLabel.place(x=260,y=0)
IntroLabelTick()
IntroLabelColorTick()
35
###########################################################################
#################################### clock
clock = Label(root,font=('times',14,'bold'),relief=RIDGE,borderwidth=4,bg='lawn green')
clock.place(x=0,y=0)
tick()
###########################################################################
####################################### ConnectDatabaseButton
connectbutton = Button(root,text='Connect To Database',width=23,font=('chiller',19,'italic
bold'),relief=RIDGE,borderwidth=4,bg='green2',
activebackground='blue',activeforeground='white',command=Connectdb)
connectbutton.place(x=930,y=0)root.mainloop()
36
CHAPTER -5
TESTING
5.1 Testing Strategy
Testing Phases
1. Unit Testing: Conducted individual testing ofmodulesandfunctionstoensurethey
perform as expected.
2. Integration Testing: Examined the interactionsbetweendifferentmodulestoverify
proper integration and data flow.
3. System Testing: Evaluated the entire system as a whole, checking its compliance
with requirements and functionalities.
Test Environment
1. Local Testing: Primarily conducted testing in a controlled environment using local
development setups and databases.
2. Scenario-based Testing: Emulated real-world scenarios to validate the system's
behaviour under different conditions, such as adding/deleting students, generating
reports, and handling simultaneous user interactions.
5.2 Test Cases
User Authentication Test Case
Objective:Validate user login functionality.
Steps:
1. Enter the correct username and password.
2. Enter incorrect username.
3. Enter incorrect password.
Expected Result:Successful login with correct credentials;failure otherwise.
Student Registration Test Case
Objective:Test student registration functionality.
Steps:
1. Add a new student with complete details.
2. Add a student with incomplete details.
3. Delete a student record.
37
ExpectedResult:Successfuladditionanddeletionofstudentswithcompletedetails;erroron
incomplete details.
Grade Tracking Test Case
Objective:Validate grade tracking and report generation.
Steps:
1. Enter and update student grades for a course.
2. Generate a report for a specific student.
Expected Result:Correct recording of grades; accurategeneration of student reports.
5.3 Results and Observations
User Authentication Results
1. Test 1: Successful login with correct credentials.
2. Test 2: Failure to login with incorrect username.
3. Test 3: Failure to login with incorrect password.
Observations: Authentication system functions correctly. Error messages display for
incorrect inputs.
Student Registration Results
1. Test 1: Successful addition and deletion of students with complete details.
2. Test 2: Error reported for adding students with incomplete details.
Observations: System accurately handles student registration; validation forcompletedata
entry functions properly.
Grade Tracking Results
1. Test 1: Accurate recording and updating of student grades.
2. Test 2: Correct generation of detailed student reports.
Observations: Grade tracking and report generation functionalities operate correctly,
providing accurate academic insights.
Summary
The testingphasesuccessfullyvalidatedthecorefunctionalitiesoftheStudentManagement
System, confirming their compliance with system requirements and expected behaviour.
38
CHAPTER -6
USER MANUAL
6.1Installation Guide
Hardware Requirements:
● Check the system requirements specified in the user manual or product
documentation.Ensureyourcomputermeetsorexceedstheserequirementsregarding
processor speed, RAM, available disk space, and other hardware specifications.
Software Installation:
1. Download the installation package from the official website or provided source.
2. Locate the downloaded file and double-click to start the installation process.
3. Followthepromptsintheinstallationwizard.Ittypicallyincludesagreeingtoterms,
selectingtheinstallationdirectory,andoptionallychoosingadditionalcomponentsto
install.
4. Waitfortheinstallationtocomplete.Oncedone,youmaybepromptedtorestartyour
system.
Activation/Registration:
● Somesoftwaremightrequireactivationorregistrationusingalicencekeyorspecific
process. Follow the instructions provided with yourpurchasetoactivate/registerthe
software.
6.2 How to Use the System
Getting Started:
1. After installation, find the program icon and double-click to open the application.
2. Takeamomenttoexploretheinterface.Lookformenus,buttons,orpanelsthatmight
guide you through various functions.
Basic Functions:
● The user guide ortooltipswithinthesoftwarecanhelpyouperformbasictasks.For
example, if it's a design software, familiarise yourself with tools like selection,
drawing, and saving files.
Advanced Features:
39
● To explore advanced capabilities, refer to the advanced user manual or online
documentation (if available). This might cover features beyond the basics, such as
customization, advanced settings, or integration with other software/tools.
Additional Resources:
● Online tutorials, forums, or support documentation might provide valuable insights
intousingthesoftwareefficiently.Theseresourcescanoffertips,tricks,andsolutions
to common challenges users face.
6.3 Troubleshooting
Common Issues and Solutions:
● The troubleshooting section in the manual typically addresses common problems
usersencounterduringinstallationorusage.Itmightcoverissueslikecrashes,errors,
or functionality problems along with recommended solutions.
Contact Support:
● Ifyouencounteranissuenotcoveredinthetroubleshootingsection,contactcustomer
support. Provide detailed information about the problem, including any error
messages or steps leading up to the issue. This will helpthesupportteamdiagnose
and resolve the problem more effectively.
40
CHAPTER -7
FUTURE ENHANCEMENTS
7.1 Potential Upgrades
1. Performance Boosts:
OptimizationStrategies:Conductin-depthcodeanalysistoidentifyinefficienciesand
optimise algorithms, improving processing speed and resource utilisation.
Scalability Measures: Redesign the system architecture to accommodate increased
loads without compromising performance, ensuring seamless scalability.
2. User Experience Enhancements:
UI/UX Refinement: Redefine the interface for a modern, intuitive design with
simplified navigation, ensuring a delightful user experience.
Personalization Features: Implement customizable elements to allow users to tailor
their experience, enhancing engagement and satisfaction.
3. Security Reinforcement:
AdvancedEncryptionStandards:Implementrobustencryptionmethodstofortifydata
protection against potential breaches or unauthorised access.
Proactive Security Updates: Establish a structured plan for regular security updates
and vulnerability assessments to preemptively address potential threats.
4. Compatibility and Adaptability:
Cross-Platform Compatibility: Ensure seamless operation acrossvariousdevicesand
operating systems, maintaining compatibility with evolving technology.
API Integration Advancements: Expand and enhance API integrations to facilitate
smoother interactions with third-party services and platforms.
5. Efficiency Improvements:
AutomationFrameworks:Developsophisticatedautomationcapabilitiestostreamline
workflows, reducing manual intervention and enhancing efficiency.
Performance Monitoring Tools: Incorporate tools for real-time monitoring and
analysis of system performance, aiding in resource optimization.
41
7.2 Additional Features
1. User-Requested Functionalities:
Feedback Integration Channels: Implement mechanisms for capturing user feedback
and integrating highly requested features to align with user needs.
2. Cutting-Edge Functionalities:
AI Integration for Predictive Insights: Incorporate AI and machine learning
capabilities to deliver predictive analytics and smarter decision-making.
IoT Integration for Expanded Functionality: Explore integration with Internet of
Things devices to unlock new functionalities and user experiences.
3. Enhanced Integration and Compatibility:
Extended API Support: Expand the range and capabilities of APIs for improved
integration with a wider array of services and applications.
Seamless Cross-Platform Experience: Ensure a consistent user experience across
different platforms, providing accessibility and ease of use.
4. Advanced Reporting and Analytics:
Advanced Data Analytics Tools: Introduce sophisticated analytics tools for in-depth
data analysis, empowering users with actionable insights.
Real-timeReportingFeatures:Enablereal-timereportingfunctionalitiesforquickand
informed decision-making.
5. Collaboration and Teamwork Features:
Collaboration Tools: Develop features that facilitate collaborative efforts within the
software, enabling seamless teamwork and communication.
42
CONCLUSION
In conclusion, the envisioned future enhancements for this system/software present a
comprehensive roadmap toward a more advancedanduser-centricsolution.Byfocusingon
performance optimization, enriched user experience, enhancedsecuritymeasures,improved
compatibility, and increased efficiency, these upgrades aim to meet both user needs and
technological advancements. Incorporating additional features such as AI integration, IoT
functionalities, advanced analytics, and collaboration tools further bolsters the system's
capabilities. Lessons learned underscore the importance of user-driven innovation,
adaptability, robust security practices, and scalability. To achieve success, a meticulous
execution plan involving agile development, collaboration, and continuous user feedback
loops is essential. These enhancements position the system/software as a user-friendly,
innovative, and reliable solution ready to thrive in the ever-evolving digital landscape.
43
REFERENCES
44