SETH M.
R JAIPURIA SCHOOL
KURSI ROAD LUCKNOW
A PROJECT REPORT ON
EXAMINATION MODULE
SYSTEM
CLASS-XII
(2024-25)
SUBMITTED TO : SUBMITTED
BY:
MR. ANURAG SRIVASTAVA
P.G.T.(COMP. SC)
TABLE OF CONTENTS
• CERTIFICATE
• ACKNOWLEDGEMENT
• INTRODUCTION TO THE PROJECT
• MOTIVE
• SYSTEM REQUIREMENTS
• CODING
• DATABASE TABLES
• SCREEN SHOTS OF EXECUTION.
• BIBLIOGRAPHY
• LIMITATIONS
CERTIFICATE
This is to certify that Nikhit Singh of class XII of
Seth M.R Jaipuria School , Kursi Road has done his
project on EXAMINATION MODULE SYSTEM under my
supervision. He has taken interest and has shown at most
sincerity in completion of this project.
I certify this Project up to my expectation & as per
guidelines issued by CBSE, NEW DELHI
Internal Examiner: External
Examiner:
Principal:
ACKNOWLEDGEMENT
It is with pleasure that I acknowledge my sincere
gratitude to our teacher, Mr. Anurag Srivastava who
taught and undertook the responsibility of teaching the
subject computer science. I have been greatly benefited
from his classes.
I am especially indebted to our Principal Mrs. Harpreet
Rekhi who has always been a source of encouragement
and support and without whose inspiration this project
would not have been a successful I would like to place on
record heartfelt thanks to him.
Finally, I would like to express my sincere appreciation for
all the other students for my batch their friendship & the
fine times that we all shared together.
INTRODUCTION TO THE PROJECT
The Examination Module System software is an ERP
software used in government and private educational
institutions in the senior secondary level.This software
stores details of students and their marks details in
different subjects. We can check the report card of the
student and perform marks analysis by graphical
method. This software helps us to create profile for
students, update marks and attendance detailsas per
the requirement.
MOTIVE
• To maintain the student profile, marks and attendance
details of the students of class-XI and XII.
• To generate report card displaying the marks of a student
in different subjects in a particular exam and
represent the same by graphical analysis.
• Globalized usage.
SYSTEM REQUIREMENTS
HARDWARE REQUIREMENT:
• Printer- to print the required documents of the
project.
• Compact Drive
• Proccesor: Pentium III and above
• RAM: 256 MB(minimum)
• Hard-Disk : 20 GB(minimum)
SOFTWARE REQUIREMENT:
• Windows 7 or higher
• My-SQL server 5.5 or higher(as backend)
• Python idle 3.6 or higher or spyder (as frontend).
• Microsoft Word 2010 or higher for documentation.
CODING
FRONTEND DETAILS
PROGRAM CODE
import sys
import matplotlib.pyplot as plt
import mysql.connector
mycon=mysql.connector.connect(host='localhost',user='
root', password='abhisek',database='exam')
mycur=mycon.cursor()
def Student_Profile():
sql="Insert into
student(adm_no,name,class,section)values(%s,%s,%s,
%s)"
print('\nPLEASE PROVIDE THE REQUIRED INFORMATION\
n')
ad=input('\nENTER THE ADMISSION NUMBER TO
REGISTER FOR EXAM:')
nm=input('\nENTER THE STUDENT NAME:')
cls=int(input('\nENTER THE CLASS(11/12):'))
sec=input('\nENTER THE SECTION(A-D):')
value=(ad,nm,cls,sec)
try:
mycur.execute(sql,value)
print(nm,'ADDED SUCCESSFULLY TO EXAM
MODULE')
mycon.commit()
except:
print('UNABLE TO INSERT!!!!!')
def Edit_Profile():
sql="Update student set section=%s where adm_no=
%s";
ph=input('\nENTER THE ADMISSION NUMBER WHOSE
SECTION TO MODIFY:')
nm=input('\nENTER THE NEW SECTION(A-D):')
value=(nm,ph)
try:
mycur.execute(sql,value)
mycon.commit()
print('RECORD UPDATED SUCCESSFULLY')
except:
print('UNABLE TO UPDATE SECTION!!!!')
def Remove_Profile():
ph=input('\nENTER THE ADMISSION NUMBER TO
DELETE:')
sql='Delete from student where Adm_no=%s'
value=(ph,)
try:
mycur.execute(sql,value)
mycon.commit()
print('RECORD DELETED SUCCESSFULLY')
except:
mycon.rollback()
print('UNABLE TO DELETE RECORD!!!')
def Record_Entry():
sql="Insert into
result(adm_no,exam_name,sub1,sub2,sub3,sub4,sub5
,total,percentage,attendance,grade,remarks)values(%
s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
print('\nPLEASE PROVIDE THE REQUIRED
INFORMATION\n')
ad=int(input('\nENTER THE ADMISSION NUMBER TO
ENTER RECORD:'))
nm=input('\nENTER THE EXAM NAME:')
sub1=int(input('ENTER MARKS IN SUBJECT
1(MAX:100):'))
sub2=int(input('ENTER MARKS IN SUBJECT
2(MAX:100):'))
sub3=int(input('ENTER MARKS IN SUBJECT
3(MAX:100):'))
sub4=int(input('ENTER MARKS IN SUBJECT
4(MAX:100):'))
sub5=int(input('ENTER MARKS IN SUBJECT
5(MAX:100):'))
total=sub1+sub2+sub3+sub4+sub5
per=total//5
wrkday=int(input('ENTER TOTAL NUMBER OF
WORKING DAYS:'))
present=int(input('ENTER NO OF DAYS PRESENT:'))
att=present/wrkday*100
att=int(att)
if(per>=90):
g='A'
rem='EXCELLENT PERFORMANCE!!'
elif(per>=75 and per<90):
g='B'
rem='VERY GOOD PERFORMANCE!!'
elif(per>=55 and per<=75):
g='C'
rem='SATISFACTORY PERFORMANCE!!'
elif(per>=35 and per<55):
g='D'
rem='AVERAGE PERFORMANCE!!'
else:
g='E'
rem='SCOPE FOR IMPROVEMENT!!'
value=(ad,nm,sub1,sub2,sub3,sub4,sub5,total,per,att,g
,rem)
try:
mycur.execute(sql,value)
print('RECORD ADDED SUCCESSFULLY TO EXAM
MODULE')
mycon.commit()
except:
print('UNABLE TO INSERT!!!!!')
def Report_Card():
ad=int(input('\nENTER THE ADMISSION NUMBER TO
SEARCH:'))
sql1='Select * from student where adm_no=%s'
value=(ad,)
mycur.execute(sql1,value)
rec1=mycur.fetchone()
if(rec1!=None):
adm=rec1[0]
name=rec1[1]
cls=rec1[2]
sec=rec1[3]
sql2='Select * from result where adm_no=%s'
value=(ad,)
mycur.execute(sql2,value)
rec2=mycur.fetchone()
if(rec2!=None):
adm=rec2[0]
exname=rec2[1]
sub1=rec2[2]
sub2=rec2[3]
sub3=rec2[4]
sub4=rec2[5]
sub5=rec2[6]
total=rec2[7]
per=rec2[8]
att=rec2[9]
g=rec2[10]
rem=rec2[11]
if(rec1==None and rec2==None):
print('WRONG ADMISSION NUMBER GIVEN!!!!!!')
else:
print('\n\n--------REPORT CARD OF',name,'----------\
n\n')
print('\nCLASS-',cls,'SECTION-',sec,'\n')
print('\n------------------------------\n')
print('\nRESULT OF',exname,'\n')
print('\n------------------------------\n')
if(sec=='A'):
print('\n ENGLISH : ',sub1)
print('\n HISTORY : ',sub2)
print('\n POL. SC : ',sub3)
print('\n ECONOMICS : ',sub4)
print('\n GEOGRAPHY : ',sub5)
print('\n TOTAL : ',total)
print('\n PERCENTAGE : ',per)
print('\n ATTENDANCE : ',att,'%')
print('\n GRADE : ',g)
print('\n REMAKS : ',rem)
elif(sec=='B'):
print('\n ENGLISH : ',sub1)
print('\n ACCOUNTANCY: ',sub2)
print('\n B.STUDIES : ',sub3)
print('\n ECONOMICS : ',sub4)
print('\n INFO.PRAC : ',sub5)
print('\n TOTAL : ',total)
print('\n PERCENTAGE : ',per)
print('\n ATTENDANCE : ',att,'%')
print('\n GRADE : ',g)
print('\n REMAKS : ',rem)
elif(sec=='C'):
print('\n ENGLISH : ',sub1)
print('\n PHYSICS : ',sub2)
print('\n COMP.SC : ',sub3)
print('\n CHEMISTRY : ',sub4)
print('\n MATHEMATICS: ',sub5)
print('\n TOTAL : ',total)
print('\n PERCENTAGE : ',per)
print('\n ATTENDANCE : ',att,'%')
print('\n GRADE : ',g)
print('\n REMAKS : ',rem)
elif(sec=='D'):
print('\n ENGLISH : ',sub1)
print('\n PHYSICS : ',sub2)
print('\n BIO.SC : ',sub3)
print('\n CHEMISTRY : ',sub4)
print('\n MATHEMATICS: ',sub5)
print('\n TOTAL : ',total)
print('\n PERCENTAGE : ',per)
print('\n ATTENDANCE : ',att,'%')
print('\n GRADE : ',g)
print('\n REMAKS : ',rem)
def Remove_Record():
ph=input('\nENTER THE ADMISSION NUMBER TO
DELETE:')
sql='Delete from RESULT where Adm_no=%s'
value=(ph,)
try:
mycur.execute(sql,value)
mycon.commit()
print('RECORD DELETED SUCCESSFULLY')
except:
mycon.rollback()
print('UNABLE TO DELETE RECORD!!!')
def Graph():
ad=int(input('\nENTER THE ADMISSION NUMBER TO
SEARCH:'))
sql1='Select * from result where adm_no=%s'
value=(ad,)
mycur.execute(sql1,value)
T=mycur.fetchone()
sql2='Select section from student where adm_no=
%s';
mycur.execute(sql2,value)
s=mycur.fetchone()
L=[T[2],T[3],T[4],T[5],T[6]]
sec=s[0]
if(sec=='A'):
sub1,sub2,sub3,sub4,sub5='English','History','Pol.Sc
','Economics','Geography'
elif(sec=='B'):
sub1,sub2,sub3,sub4,sub5='English','Accountancy','
B.Studies','Economics','Info.Practices'
elif(sec=='C'):
sub1,sub2,sub3,sub4,sub5='English','Physics','Computer
Sc.','Chemistry','Mathematics'
elif(sec=='D'):
sub1,sub2,sub3,sub4,sub5='English','Physics','Biol
ogy','Chemistry','Mathematics'
sub=[sub1,sub2,sub3,sub4,sub5]
clr=('red','green','blue','orange','brown')
plt.bar(sub,L,color=clr)
plt.xlabel('Subjects')
plt.ylabel('Marks')
plt.title('Marks Analysis')
plt.show()
def Close():
print('\nTHANK YOU FOR USING THE APPLICATION')
sys.exit()
print('-----------WELCOME TO EXAMINATION MODULE
SYSTEM FOR CLASS-XI & XII-------------\n\n')
while(True):
print('\n\nPRESS 1 TO CREATE A STUDENT PROFILE')
print('PRESS 2 TO EDIT A STUDENT PROFILE')
print('PRESS 3 TO DELETE A STUDENT PROFILE')
print('PRESS 4 FOR MARKS AND ATTENDANCE ENTRY')
print('PRESS 5 TO GENERATE REPORT CARD')
print('PRESS 6 TO DELETE MARKS DETAILS')
print('PRESS 7 TO PRODUCE A GRAPH PERFORMANCE')
print('PRESS 8 TO CLOSE THE APPLICATION')
choice=int(input('ENTER YOUR CHOICE : '))
if(choice==1):
Student_Profile()
elif(choice==2):
Edit_Profile()
elif(choice==3):
Remove_Profile()
elif(choice==4):
Record_Entry()
elif(choice==5):
Report_Card()
elif(choice==6):
Remove_Record()
elif(choice==7):
Graph()
elif(choice==8):
Close()
DATABASE TABLES
Database Name: EXAM
Code:
Create Database Exam;
Use Exam;
Table Name: STUDENT
Attributes:
adm_no int(6) Primary Key
name varchar(40)
classint(2)
section char(1)
Code:
CREATE TABLE STUDENT(
adm_no INT(6) PRIMARY KEY,
NameVARCHAR(40),
classint(2),
section char(1));
Table Name: RESULT
Attributes:
Adm_no int(6)
exam_name varchar(30)
sub1 int(3)
sub2 int(3)
sub3 int(3)
sub4 int(3)
sub5 int(3)
total int(3)
percentage int(5)
attendance int(5)
grade char(1)
remarks varchar(50)
Code:
CREATE TABLE RESULT (
Adm_no int(6) PRIMARY KEY,
exam_name varchar(30),
sub1 int(3),
sub2 int(3),
sub3 int(3),
sub4 int(3),
sub5 int(3),
total int(3),
percentage int(5),
attendance int(5),
grade char(1),
remarks varchar(50));
OUTPUT
SCREEN SHOTS OF EXECUTION
MAIN MENU
CREATING STUDENT PROFILE
EDITING STUDENT PROFILE
MARKS AND ATTENDANCE ENTRY
GENERATING REPORT CARD
PRODUCING GRAPH
DELETING STUDENTS PROFILE
BIBLIOGRAPHY
BOOKS:
• COMPUTER SCIENCE WITH PYTHON-BY SUMITA
ARORA
• COMPUTER SCIENCE WITH PYTHON-BY PREETI
ARORA
• PYTHON COOKBOOK
WEBSITES:
• www.geeksforgeeks.org
• https://docs.python.org/3/
• https://www.w3schools.com/python/
LIMITATIONS
• The Project has no provision to update marks
after the report card is generated.
• The project does not incorporate the provision
of producing the result of the entire class for a
particular examination.
• The project is limited to the examination system
of class-XI and XII and does not provide the
yearly summary sheet report generation facility.