THE MODERN TEST APPEARING SYSTEM
Project report in partial fulfillment of the requirement for the award of the degree of
Bachelor of Technology
In
Computer Science & Technology
Submitted By
Ishika Saha Enrollment No. 12022002022020
Bibek Dhara Enrollment No. 12022002022014
Anamitra Mondal Enrollment No. 12022002022044
Anish Hazra Enrollment No. 12022002022012
Raunak Das Enrollment No. 12022002002086
Under the guidance of
Prof. Dr. Subhalaxmi Chakraborty
Department of Computer Science and Technology & Computer Science and Information Technology
(CST & CSIT)
UNIVERSITY OF ENGINEERING & MANAGEMENT, KOLKATA
University Area, Plot No. III – B/5, New Town, Action Area – III, Kolkata – 700160.
CERTIFICATE
This is to certify that the project titled The Modern Test Appearing System submitted by Anamitra
Mondal- 12022002022044, Anish Hazra- 12022002022012, Bibek Dhara - 12022002022014,
Ishika Saha - 12022002022020 & Raunak Das- 12022002002086 students of UNIVERSITY OF
ENGINEERING & MANAGEMENT, KOLKATA, in partial fulfillment of requirement for the
degree of Bachelor of Computer Science and Technology, is a bonafide work carried out by them
under the supervision and guidance of Prof. Dr. Subhalaxmi Chakraborty during the 3rd Semester of
academic session of 2022 - 2026. The content of this report has not been submitted to any other
university or institute. I am glad to inform that the work is entirely original and its performance is
found to be quite satisfactory.
Signature of Guide
Signature of Head of the Department
ACKNOWLEDGEMENT
We would like to take this opportunity to thank everyone whose cooperation and
encouragement throughout the ongoing course of this project remains invaluable to us.
We are sincerely grateful to our guide Prof. Dr. Subhalaxmi Chakraborty of the
Department of CST & CSIT, UEM, Kolkata, for her wisdom, guidance and inspiration that
helped us to go through with this project and take it to where it stands now.
Last but not the least, we would like to extend our warm regards to our families and peers
who have kept supporting us and always had faith in our work.
Anish Hazra
Anamitra Mondal
Bibek Dhara
Ishika Saha
Raunak Das
TABLE OF CONTENTS
ABSTRACT ……………………………………………………………………………………Pg. 5
INTRODUCTION ……………………………………………………………………………Pg. 6
LITERATURE SURVEY …………………………………………………………………….Pg. 7
PROBLEM STATEMENT ………………………………………………………………...Pg. 8
PROPOSED SOLUTION ………………………………………………………..…Pg. 9 – 12
EXPERIMENTAL SETUP & RESULT ANALYSIS………………………………..Pg. 13
CONCLUSION AND FUTURE SCOPES ……………………………………………Pg. 14
BIBLIOGRAPHY …………………………………………………………………………..Pg. 15
ABSTRACT
The "Modern Test Appearing System" is a Python-MySQL based application that enables
its primary user to create and manage Class Tests for the students respectively, Also, the
system while conducting the test will calculate and thus store the results in real- time.
Developed by Bibek and Ishika, this system offers an interactive interface for users to
create, store, and administer quizzes / tests efficiently.
The system allows the Primary User to define the number of questions and set the correct
options if not assigned in the database previously. It supports the creation of multiple-
choice questions with four options. Students can participate by providing their answers to
the questions respectively.
The Key features of the system include the ability to:
Create and store quizzes in a MySQL database.
Can use a single Question Set multiple times to conduct multiple Class Tests, once
the question sets and options are assigned to the database.
Administer quizzes to multiple students with their respective individual names.
Calculating and Storing of Student Responses in Real - Time
Publish results to a separate MySQL database created for the results to be stored.
Provide an option for the Primary user to view the aggregated results in descending
order of the scores obtained, without accessing the database manually.
Instant result Publication prevents time loss.
This project simplifies the process of conducting and managing and administering
tests/quizzes, making it valuable for educational institutions and organizations seeking an
efficient and user-friendly system for conducting various tests / quizzes.
INTRODUCTION
In this evolving world of digital learning, the "Modern Test Appearing System" is a crucial
and user-friendly solution to the process of creating and managing tests/quizzes especially
in educational institutions. Developed & coded by Bibek and Ishika, this Python - MySQL
based application is designed to fulfill the needs of every educators, institutions, and
organizations who want a liable platform for conducting quizzes and efficiently storing and
analyzing results. This project is a proof of the power of technology in education.
The age-old methods of paper-based assessments and manual score calculations, are not
only time and resource-consuming but also can have errors. This project solves all these
challenges. With its automated service, it simplifies the job of creating multiple-choice
question papers and assessing the results. Even for students, the system offers a user-
friendly experience, allowing them to participate in quizzes by providing answers to each
of the questions presented. This system even allows the students to view their scores and
ranks in the test by collecting their responses.
In this document, we present an abstract that marks the essence of the project and its key
features. We would love to get feedbacks on this which would help us grow!
LITERATURE SURVEY
PROBLEM STATEMENT
In the context of a modernized education and e-learning, the process of creating,
administering, and managing quizzes / tests can be a lot time-consuming, error-prone,
complex and sometimes paid, thus often requiring the use of various tools and platforms.
Educators and institutions all around the globe need an efficient and user - friendly
solution that simplifies the process of hosting Tests while ensuring accurate assessment
and data analysis. The existing options, including the widely known e-learning platforms
and standalone quiz tools, may lack the required marginal level of simplicity and
flexibility. Therefore, there is a clear and sharp need for a comprehensive "Modern Test
Appearing System" that offers a streamlined and accessible approach to test creation,
administration, and result management, ultimately improving the assessment process for
both educators and students and facilitate innovations for the upcoming generations.
PROPOSED SOLUTION
The Code snippet of the Modern Test Appearing System -
import time
import mysql.connector
print("The Mordern Test Appearing System\n\n")
myques = mysql.connector.connect(host="localhost", user="root", password="bibek", database="question")
ques = myques.cursor()
print("Please type no if You are having the question already stored when asked below \n")
delete_table = input("Do you want to delete the Existing Questions ? (yes/no): ").lower()
if delete_table == "yes":
cmdo = "DROP TABLE IF EXISTS q_paper" # deletion if exists
ques.execute(cmdo)
# Table creation
cmd = "CREATE TABLE IF NOT EXISTS q_paper(No varchar(10) NOT NULL, quest varchar(250) NOT NULL, opt1 varchar(250) NOT NULL,
opt2 varchar(250) NOT NULL, opt3 varchar(250) NOT NULL, opt4 varchar(250) NOT NULL, correct_option varchar(10))"
ques.execute(cmd)
score = 0
mark = ""
st = [] # student name list
sop = [] # student marks list
# Insertion of data in the created table
if delete_table == "yes":
numb = int(input("No of Questions to be Stored - "))
for i in range(1, numb + 1):
a = input("Question :- ")
options = []
for q in range(4):
u_input = input("Option %s - " %(q+1))
options.append(u_input)
c = input("Correct option is (a, b, c, d) :- ")
cmd2 = "INSERT INTO q_paper(No, quest, opt1, opt2, opt3, opt4, correct_option) VALUES(%s, %s, %s, %s, %s, %s, %s)"
bl = (i, a, options[0], options[1], options[2], options[3], c)
ques.execute(cmd2, bl)
studentss = int(input("Number of students to appear :- "))
for j in range(100):
print()
#No. of Question
if delete_table == "no":
cmd3 = "SELECT No FROM q_paper ORDER BY No DESC LIMIT 1"
ques.execute(cmd3)
res = ques.fetchone()
numb = int(res[0])
# TEST SCENARIO
for v in range(studentss):
name = input("Student Name:- ")
print()
st.append(name)
for t in range(numb):
cmd4 = "SELECT quest, opt1, opt2, opt3, opt4, correct_option FROM q_paper WHERE No = %s" % (t + 1,)
ques.execute(cmd4)
result = ques.fetchone()
if result:
question, opt1, opt2, opt3, opt4, correct_option = result
time.sleep(1)
PROPOSED SOLUTION 1
print("Question:", question)
time.sleep(1)
print("Options: ")
print("a)", opt1)
print("b)", opt2)
print("c)", opt3)
print("d)", opt4)
time.sleep(1)
answer = input("Correct Option is (a, b, c, d) :- ")
time.sleep(1)
if answer == correct_option:
score += 1
print()
else:
print("Question %s not found in the database." %(t+1))
mark += str(score)
mark += " "
score = 0
for p in range(80):
print()
sop = mark.split()
myques.commit()
#Result Publication Part
mydb = mysql.connector.connect(host="localhost", user="root", password="bibek", database="result")
cur = mydb.cursor()
cmd5 = "DROP TABLE IF EXISTS marks"
cur.execute(cmd5)
cmd6 = "CREATE TABLE marks(StudentName varchar(250) NOT NULL, Marks varchar(250) NOT NULL)"
cur.execute(cmd6)
for k in range(studentss):
su = "INSERT INTO marks(StudentName, Marks) VALUES(%s, %s)"
p1 = st[k]
p2 = sop[k]
bl = (p1, p2)
cur.execute(su, bl)
time.sleep(1)
print("Result Uploaded in your desired MySQL Database...........")
print("Thanks for Using \n\n")
time.sleep(1)
check = int(input("To view the result press 1 else 0 - "))
if check == 1:
cmd7 = "SELECT * FROM marks ORDER BY Marks DESC"
cur.execute(cmd7)
data = cur.fetchall()
for row in data:
print("Name - ",row[0])
print("Marks - ",row[1],"\n")
mydb.commit()
else:
mydb.commit()
PROPOSED SOLUTION 2
The storing of the Data’s that are given by the primary user will be processed in the below snippet of the above code
only if the user wants to make a new set of questions rather using the old set to take the tests -
# Insertion of data in the created table
if delete_table == "yes":
numb = int(input("No of Questions to be Stored - "))
for i in range(1, numb + 1):
a = input("Question :- ")
options = []
for q in range(4):
u_input = input("Option %s - " %(q+1))
options.append(u_input)
c = input("Correct option is (a, b, c, d) :- ")
cmd2 = "INSERT INTO q_paper(No, quest, opt1, opt2, opt3, opt4, correct_option) VALUES(%s, %s, %s, %s, %s,
%s, %s)"
bl = (i, a, options[0], options[1], options[2], options[3], c)
ques.execute(cmd2, bl)
The Conducting of the Test / Quiz along with the Response Calculation of the individual students will be done in the
following code snippet of the main code below -
studentss = int(input("Number of students to appear :- "))
for j in range(100):
print()
# TEST SCENARIO
for v in range(studentss):
name = input("Student Name:- ")
print()
st.append(name)
for t in range(numb):
cmd4 = "SELECT quest, opt1, opt2, opt3, opt4, correct_option FROM q_paper WHERE No = %s" % (t + 1,)
ques.execute(cmd4)
result = ques.fetchone()
if result:
question, opt1, opt2, opt3, opt4, correct_option = result
time.sleep(1)
print("Question:", question)
time.sleep(1)
print("Options: ")
print("a)", opt1)
print("b)", opt2)
print("c)", opt3)
print("d)", opt4)
time.sleep(1)
answer = input("Correct Option is (a, b, c, d) :- ")
time.sleep(1)
if answer == correct_option:
score += 1
print()
else:
print("Question %s not found in the database." %(t+1))
mark += str(score)
mark += " "
score = 0
for p in range(80):
print()
sop = mark.split()
myques.commit()
PROPOSED SOLUTION 3
And finally below is the result publication part where the obtained result will be stored in a database of a MySQL
server and will also publish the result if the user wants to….in descending order of the marks obtained once the test
will be successfully conducted.
#Result Publication Part
mydb = mysql.connector.connect(host="localhost", user="root", password="bibek", database="result")
cur = mydb.cursor()
cmd5 = "DROP TABLE IF EXISTS marks"
cur.execute(cmd5)
cmd6 = "CREATE TABLE marks(StudentName varchar(250) NOT NULL, Marks varchar(250) NOT NULL)"
cur.execute(cmd6)
for k in range(studentss):
su = "INSERT INTO marks(StudentName, Marks) VALUES(%s, %s)"
p1 = st[k]
p2 = sop[k]
bl = (p1, p2)
cur.execute(su, bl)
time.sleep(1)
print("Result Uploaded in your desired MySQL Database...........")
print("Thanks for Using \n\n")
time.sleep(1)
check = int(input("To view the result press 1 else 0 - "))
if check == 1:
cmd7 = "SELECT * FROM marks ORDER BY Marks DESC"
cur.execute(cmd7)
data = cur.fetchall()
for row in data:
print("Name - ",row[0])
print("Marks - ",row[1],"\n")
mydb.commit()
else:
mydb.commit()
Lastly to add some life in the proposed Test Management System, the time module of the python library is being used
to provide the code some life and make the feel a bit responsive………
PROPOSED SOLUTION 4
EXPERIMENTAL SETUP & RESULT ANALYSIS
To set-up the “Modern Test Appearing System” and make it runnable in a User’s
Personal Computer, the following steps must be fulfilled in order to run the Test System
1) Installation Of Python & MySQL – In order to run the test system both the
software’s / programming languages i.e., The MySQL Database and Python must be
installed manually in the users PC. One can download the required software’s from their
official respective websites, (i) Python from https://www.python.org
(ii) MySQL from https://www.mysql.com
2) After Installing both the Software’s, the user must install a specific package of Python
in order to establish connection with the MySQL Database.
(i) Press Win + R -> Type cmd & press Enter.
(ii) Type “pip install mysql-connector-python” & Press Enter.
3) Creation of Two Databases: Next we will be required to create two separate MySQL
databases one for the Question & the Other for Result using the following MySQL
Commands after opening the MySQL Command Line Client from the Start UP Menus of
the System – “create database question;” & “create database result;” then the user can
type the command “exit” to close the MySQL Command Line Client
4) Once The above Steps are performed the User will be all – set to run the Program in
his/her PC and Enjoy the Efficiency, Accuracy & Compatibility of “The Modern Test
Appearing System”.
CONCLUSION & FUTURE SCOPES
The "Modern Test Appearing System" does simplify the process of creating and hosting a
test / quiz, it is and will be saving time for its each and every respective user in an
efficient manner with on - time accuracy, thus will also be providing user satisfaction. Its
user-friendly interface, efficiency, and accuracy in scoring and evaluating marks make it a
valuable tool for educators and institutions all around the globe. As technology continues
to reshape the education field, this system serves as an exemplar of innovation and user-
centric design, with potential for further enhancements and impact in the far future.
Future Scopes –
A more Comprehensive Report & Analytics can be coded in the future to assess the
subjects more precisely in certain possible aspects.
Using of Modules like Tkinter of the python library can provide a GUI for the System.
A leaderboard can also be implemented by morphing the current algorithm of the code
Duration of Exam for each student can also be added in the code, so that each student
will be having a fixated time to complete the exam.
Mobile Application - A mobile application version of the system can be made in the
future to support mobiles and tablets using languages like Flutter.
Web Application – Using the basics of HTML, CSS and Java Script – (React js or
any other) we could make a live Web Platform.
Multi – Language Support as well can be initiated
Bibliography
1) Zeller, Ryan. "Python and MySQL Development." 1st ed., Packt Publishing, 2010.
2) Dawson, Michael. "Python Programming for the Absolute Beginner." 3rd ed., Cengage
Learning, 2014.
3) Rossum, Guido van. "The Python Language Reference Manual." Network Theory Ltd.,
2003.
4) DuBois, Paul. "MySQL Cookbook: Solutions for Database Developers and
Administrators." O'Reilly Media, 2014.
5) Reese, George. "MySQL Pocket Reference: SQL Statements, Functions and Utilities and
more." O'Reilly Media, 2016.
6) Hetland, Magnus Lie. "Beginning Python: From Novice to Professional." 2nd ed.,
Apress, 2008.
7) Yarger, Jay, et al. "MySQL in a Nutshell." O'Reilly Media, 2008.
8) Lutz, Mark. "Learning Python: Powerful Object-Oriented Programming." 5th ed.,
O'Reilly Media, 2013.