OpenQP

Question Paper Management System

Introduction

OpenQP generates Question Papers by selecting questions from a collection of questions stored in a Database. The questions are stored as text (with embedded LaTex commands for equations, images etc.) in a postgres RDBMS, that can be accessed from remote computers. Some of the features of the system are:

Click Here to generate dummy Question Papers

Software

The programs are available as a Debian package or Python source code. After installing the DEB package all the programs will appear in the ‘Education’ menu, or search them by typing QB.

GUI programs are available for

Creating Courses

A GUI program is provided for Creating/Editing/Deleting Courses. The following details need to be provided while creating a new course.

To view a screenshot of the GUI Click Here.

Adding Questions to a Course

There are two methods available for populating a course with questions.

The system uses LaTex for typesetting and it is necessary to make sure that the entered text does not contain any special characters that are interpreted as LaTex commands. For example characters like &, %, _ etc. should be entered as \&, \% and _. Make sure that you View the questions in the PDF format before uploading.

Bulk Uploading of Questions from a spreadsheet (.xlsx) file.

To view a screenshot of the GUI Click Here

The Excel file must be prepared carefully, the points to note are:

Edit/Add individual questions

To view a screenshot of the GUI Click Here.

The steps to be followed are:

If you include figures by using the ‘\includegraphics’ command, the image file should be in the same directory.

Generating Question Papers

A GUI program is available for generating the question papers. The following details, to appear on the generated question paper are added:

To view a screenshot of the GUI Click Here

Design of the Question Bank

The backbone of the system is a Postgres RDBMS. A table named coursedetails stores the information about all the available courses. Each record of this table represents a course. Each Course has a Table to store the questions and related information. Name of the table is same as the course code. There is a corresponding ‘user’for every course, having access rights to it.

To create a new Course, a new record is added to the table named coursedetails. Corresponding Data table and user are created. The editor/upload programs populate questions to the data table. Qoestion paper generator program selects questions from the data table to generate question papers.

Details of the table coursedetails

Name Type Description
code varchar Course code
syllabusYear varchar Course starting year
inst varchar Institution type, university dept UD / Affiliated college AC
name varchar Course Name
faculty varchar Faculty name
degree varchar Degree name
semester varchar Semester , first to eighth
texlanguage varchar typestting language
qpmodel varchar Question paper model
duration varchar Exam duration
nmodules varchar Number of modules in the course
code2 varchar Second course code
code3 varchar Third course code

Data Table for a Course

Name Type Description
modnum int Module number, maximum 8
unitnum varchar Unit number/group number, to mark related questions
qtype char(1) Question type. A,B or C
qnum int Question number, assigned by the software
mark int mark
level varchar Bloom’s level
outcome varchar Outcome OC1 to OC7
author varchar Author information
qtext varchar Question text, can contain LaTex commands
atext varchar Answer hint, can contain LaTex commands
figname varchar Filename of an included figure
figure bytea Stored image

Installation, postgres RDBMS

A database and a user to own it are areated (replace mydbname below with your choice). Also two users named ‘dummy’ and ‘reader’ are created. These steps are carried out by the ‘psql’ client program, after logging into the server machine. The commands are shown below for pastegresql version 16 or later (ubunto 24.04).

$ sudo - su postgres
$ psql
postgres=# create role mydbname with createrole  login password '******';
postgres=# create database mydbname owner mydbname;
postgres=# create user dummy with password 'dum123';
postgres=# create user reader with password '******';
postgres=# \q

Enable connection using TCP/IP protocol

The postgres RDBMS should be configured for remote login, using TCP/IP protocol. The two files mentioned below need to be edited to enable TCP/IP connectivity.

The file  /etc/postgresql/16/main/pg_hba.conf  should have the following lines
host    mydbname   all      127.0.0.1/32   password
host    mydbname   all      0.0.0.0/0      password

Modify /etc/postgresql/12/main/postgresql.conf , to have the line
listen_addresses = '*'          # what IP address(es) to listen on;

Restart the database server using

$ sudo systemctl restart postgresql       

After completing these steps the program, run the program

$ python3 initQbank.py hostname mydbname

It will ask for the database password.

After completing these steps, the system can be accessed using any of the GUI programs provided.

About

This software is distributed under GNU General Public License version 3

Authors :