Professional Documents
Culture Documents
Submitted by
BACHELOR OF ENGINEERING
IN
APRIL 2021
BONAFIDE CERTIFICATE
Certified that this Mini project report “RESULT ANALYSIS AUTOMATION” is the bonafide
work of ABDUL RAHMAN SHEAIK S (113218104004), DEVAMUTHAN S (113218104025)
and DILLI RAJA D (113218104026) who carried out the Mini project work under my
supervision.
SIGNATURE SIGNATURE
2
MINI PROJECT EXAMINATION
of Third year Bachelor of Engineering in Computer Science and Engineering submitted for the
university examination held on
3
ABSTRACT
Technology in today’s world has reached to extent that it can be used to do various task in
day to day life easily with less effort and time. World today has realized importance of education
in one’s life which has led to revolution in field of education. Universities, colleges, schools
today have loads of task to be completed in given timeline. In today’s scenario colleges
needs to analyze student results manually which takes lots of time and effort by faculties
working on it. Hence in order to simplify this tasks a web based system is introduced
which can perform student result analysis. The system takes file of student results obtained by
universities in pdf format as an input. This system runs on web browser on computer with well-
connected network. Using Report Analysis Automation will make the examination cell activities
more efficient by wrapping the drawbacks of manual systems like accuracy, time, speed and
simplicity. This system will ensure examination activities are carried more effectively and it can
be accessible and will be convenient for staff by making it a centralized system. Finally this
product would an aimed automation system, which will replace present examination cell process.
Result Analysis Automation is a new concept which came into existence to reduce heavy burden
on examination cell and it made analysis of results a monotonous task, apart from the large amount
of data that is generated in a college for various branches of all semesters. This system will make
the analysis process much organized and will require data to be pre-existing. This automation,
however will manage a great deal of menial work. Finally this system will minimize the manual
work, which leads to ease of generating reports, reducing confusions and increase in work rate
effectively.
4
TABLE OF CONTENTS
ABSTRACT 4
LIST OF FIGURES 8
LIST OF ABBREVATIONS 9
1 INTRODUCTION 10
1.2 TABULA-JAVA 10
2 SYSTEM ANALYSIS 12
5
3 SYSTEM SPECIFICATION 14
4 SYSTEM DESIGN 15
5 SYSTEM IMPLEMENTATION 21
5.1 MODULES 21
5.2.1 Login 21
6
6 CONCLUSION AND FUTURE WORK 24
6.1 CONCLUSION 24
APPENDIX II-SNAPSHOTS 38
REFERENCES 43
7
LIST OF FIGURES
8
LIST OF ABBREVATIONS
TERMS ABBREVATION
JS Java Script
DB Database
UI User Interface
9
CHAPTER 1
INTRODUCTION
1.1 PURPOSE OF THE PROJECT:
Result Analysis Automation is a web based application developed for colleges to
analyze the result and keep track of students. We are able to see the individual
candidate’s results separately. Result Analysis Automation system has been designed to carry out
the mark analysis process in an educational institution. The results of respective departments
can be efficiently computed without much of manual involvement [1].
The basic challenge of an institution is to carry out result analysis from each and every corner of
the students’ performance, track and resolve various students issues before and after examination
and manage the whole of these operations in a flawless manner and deliver quality result oriented
education. If we just glance on a day to day basis, there are most basic problems faced by an
institution [2].
d) Information is inconsistent.
So to curb all these problems Result Analysis Automation is proposed. This will reduce much
paper work and burden of storage. Also, it makes the task easier for the staffs to access their result
whenever required, if we share it on local/global network.
1.2 TABULA-JAVA
Tabula is free and available under the MIT open-source license. Tabula lets you feed a (table-
based) PDF file into the library and automatically pull tabular data into CSV format. Tabula is
available for the 3 major operating systems. It works on any java environment installed in a
computer. Extracting the table from pdf can be done efficiently using tabula [3].
10
1.3 LAYERED ARCHITECTURE:
The most common architecture pattern is the layered architecture pattern. This is also known as
the n-tier architecture pattern. Components within the layered architecture pattern are organized
into horizontal layers, each layer performing a specific role within the application (e.g.,
presentation logic or business logic). Although the layered architecture pattern does not specify
the number and types of layers that must exist in the pattern, most layered architectures consist of
four standard layers:
This project aims at developing and implementing a web-based student result management system
for the Universities, replacing the old manually done paper work and to minimize the security
issues and the problems it possesses. The proposed is a multi-user system, developed using JS
libraries and frameworks (REACT JS and NODE JS) and MySQL DBMS support. The system is
confined to and intended for the staffs. The entire system is managed by university staff, who
possesses the full control of the system, to read, write and execute the results and to assign
privileges to teachers. The teachers have the privilege to enter the student’s marks by uploading a
pdf, through which, a result will be generated either for individual students, or for entire class, or
for entire department automatically.
11
CHAPTER 2
SYSTEM ANALYSIS
Today there exist some computer program which helps user to find and store basic
Information such as student’s name, marks, class, sec and department. Rest all the computational
work either needs a different program or is done manually by faculties of that institution.
This huge amount of workload makes the user process very slow and clumsy. This system requires
maintaining a lot of files and documents. Handling of such important documents is again a tedious
work, also if in future if we wants to retrieve important facts and statistics this will again lead to a
lot of time consumption even it becomes difficult for staff as they have to manually do a lot of
work starting from gathering all previous grades of the student. Hence, there arises a need for a
better system.
Not User Friendly: The existing system is not user friendly because the retrieval of data
is very slow and data is not maintained efficiently.
Manual control: All calculations to generate report is done manually so there is greater
chance of errors.
12
difficult as all data needs to revise again. In addition more paperwork and documentation is
required.
Generation of reports.
Result Analysis Automation is simple web based application designed using React JS as front-
end and Node JS as back-end technology. In this system DB is designed using MySQL. Logical
coding is done using JS (Node JS in Server Side) which contains main logic of overall
system functionality. To design web pages, CSS is used. The system is covered under all validation
checks for authentication. Data is been imported from PDF (Published by Anna University) into
database. These student data is been analyzed based on various aspects like GPA, grade [6].
System will be designed in such a way that it can be later updated to accept different format.
User friendly.
Easy computation.
More efficient.
13
CHAPTER 3
SYSTEM SPECIFICAION
RAM: 4GB.
14
CHAPTER 4
SYSTEM DESIGN
4.1 SYSTEM ARCHITECTURE
A system architecture is the conceptual model that defines the structure, behavior, and
more views of a system. It is an important tool as it provides an overall view of the physical
deployment of the software system and its evolution roadmap. An architecture description is a
formal description and representation of a system, organized in a way that supports reasoning about
the structures and behaviors of the system. A system architecture can consist of
system components and the sub-systems developed, that will work together to implement the
overall system. There have been efforts to formalize languages to describe system architecture,
collectively these are called ADL [7].
UML is a standard language for specifying, visualizing, constructing, and documenting the
artifacts of software systems. It’s a rich language to model software solutions, application
structures, and system behavior and business processes [8]. UML provides a comprehensive
notation for the full lifecycle of OOD. UML is not a programming language but tools can be
used to generate code in various languages using UML diagrams. The goal of UML can be defined
as a simple modeling mechanism to model all possible practical systems in today’s complex
environment.
ADVANTAGES
1. To represent complete systems (instead of only the software portion)
using object oriented concepts.
2. To establish an explicit coupling between concepts and executable
code.
3. To take into account the scaling factors that are inherent to complex
and critical systems.
4. To creating a modelling language usable by both humans and machines.
16
4.2.1 USE CASE DIAGRAM
A use case diagram at its simplest is a representation of a user's interaction with the system
and depicting the specifications of a use case. A use case diagram can portray the different types
of users of a system and the various ways that they interact with the system.
17
4.2.2 CLASS DIAGRAM
The class diagram is the main building block of object-oriented modeling. It is used for
general conceptual modeling of the structure of the application, and for detailed modeling,
translating the models into programming code. Class diagrams can also be used for data
modeling. The classes in a class diagram represent both the main elements, interactions in the
application, and the classes to be programmed. In the design of a system, a number of classes
are identified and grouped together in a class diagram that helps to determine the static relations
between them. In detailed modeling, the classes of the conceptual design are often split into
subclasses [9].
18
4.2.3 SEQUENCE DIAGRAM
19
4.3 DATA FLOW DIAGRAM
A Data Flow Diagram (DFD) is a traditional visual representation of the information flows
within a system. A neat and clear DFD can depict the right amount of the system requirement
graphically. It can be manual, automated, or a combination of both.
It shows how data enters and leaves the system, what changes the information, and where data is
stored.
The objective of a DFD is to show the scope and boundaries of a system as a whole. It may be
used as a communication tool between a system analyst and any person who plays a part in the
order that acts as a starting point for redesigning a system. The DFD is also called as a data flow
graph or bubble chart [10].
20
CHAPTER 5
SYSTEM IMPLEMENTATION
5.1 MODULES
Login
Add Students
Add Marks
View Marks
5.2 MODULE DESCRIPTION
5.2.1 LOGIN:
Login Page is the landing page for the Web Application, through which only the
authorized faculties will be allowed.
5.2.2 Add Students:
Add Students Module is used to add the student details like student’s name,
student’s registration number, student’s department, student’s section, student’s
batch. This process is done only once per student. The mode of adding the students
may vary, so there are various options in which student’s data can be added based
on the number of students.
1. Add student’s data of entire department:
In this sub-module, the data of an entire department can be added by uploading
a excel/csv file which contains data like student name, registration number,
section. The department and batch can be entered in the UI next to which the
file will be uploaded.
2. Add student’s data of entire class:
In this sub-module, the data of entire class can be added by uploading a
excel/csv file which contains data like student name and registration number.
The department, batch and section can be entered in the UI next to which the
file will be uploaded.
3. Add individual student’s data:
This sub-module exists because, some students may be joined late like Lateral
21
Entry, so to handle situations like that, and the data of an individual student can
be added into the DB. All the data of the student which includes student name,
registration number, batch, department, section entered into a UI form will be
collected, validated and added to the DB.
5.2.3 Add Marks:
Add Marks Module is used to add the student’s result into the database. Here again
there are two modes to add the data.
1. Add Individual Data:
In this sub-module, the marks data of a single student’s in a particular semester
into the database. The data will be collected in a UI form.
2. Add PDF Data:
In this sub-module, the PDF of result published by the University will be
uploaded and then the data from the PDF will be extracted using a JS library
called ‘tabula-js’ which basically uses ‘tabula-java’ in the background and
returns the extracted data as a JS object, which then will be mapped to the
respective relations in the DB.
5.2.4 View Marks:
This module is used to view the added marks of the students in various forms like
marks of an individual student, marks of an entire class, marks of an entire
department, and marks of an entire college.
1. View Individual Marks:
In this sub-module, the data such as, history of GPA (in graph form), Grades in
all the semester (in table form) can be viewed by entering the registration
number of the student.s
2. View Class Marks:
In this sub-module, the data of the entire class can be viewed. Data like the
result of the entire class (in table form), subject wise pass percentage (in bar
graph), and pass percentage vs fail percentage (in pie graph). Along with all the
arrear results which also contains the same table and the graphs as mentioned
above. Additionally, at any instance, the data of the individual student can be
22
viewed by just clicking on the registration number of the student that is
underlined in the table of data. After clicking, the page will be redirected to
View Individual Marks page that is filled with the data of the registration
number clicked.
3. View Department Marks:
In this sub-module, the data of an entire department can be viewed. The data to
be displayed are, marks of all the students in the department (in table view),
subject wise pass percentage (in bar graph), pass percentage vs fail percentage
(in pie graph), comparison between pass percentages of all the sections (in pie
graph). Along with all the arrear results which also contains the same table and
graphs as mentioned above. Here again, the data of the individual student can
be viewed by clicking the underlined registration number of the student from
the table.
23
CHAPTER 6
8.1 CONCLUSION
The system can be expanded in the future by integrating it with mobile development frameworks
so that it can be available as an android/iOS application which further increases the reach of this
system. This system can be further expanded by allowing the user to upload different forms of
data. Further, this system will be made available for student’s use to view their performances
individually.
24
APPENDIX 1
SOURCE CODE
Program to add students’ marks data of entire department (PDF upload):
Controller Layer:
router.post( '/', ( req, res ) => addMarks( req, res ) )
const addMarks = async ( req, res ) => {
logger.info( 'Entering | MarksController::addMarks' )
let marksDTO = new MarksDT0( true, null, '', null )
let form = new formidable.IncomingForm()
await form.parse( req, async function ( err, fields, files ) {
if ( err ) {
marksDTO.success = false
marksDTO.description = err
}
if ( marksDTO.success ) {
marksDTO = await marksService.addMarks( files.file, fields, marksDTO )
}
res.json( marksDTO.json )
logger.info( 'Exiting | MarksController::addMarks' )
res.end()
} )}
Service Layer:
async addMarks ( file, fields, marksDTO ) {
logger.info( 'Entering | MarksService::addMarks' )
const data = await this.extractData( file.path )
if ( data.error !== '' ) {
marksDTO.success = false
marksDTO.description = data.error
}
let newData = data.output.split( "\n" )
marksDTO.marksData = {
25
data: newData,
type: fields.type
}
if ( marksDTO.success ) {
marksDTO = marksDao.addMarks( marksDTO )
}
logger.info( 'Exiting | MarksService::addMarks' )
return marksDTO
}
Dao Layer:
async addMarks ( marksDTO ) {
logger.info( 'Entering | MarksDao::addMarks' )
this.conn = await mysql.createConnection( config )
const data = marksDTO.marksData.data
const type = marksDTO.marksData.type
const grades = {
'O': 10,
'A+': 9,
'A': 8,
'B+': 7,
'B': 6,
'U': 0
}
if ( type === 'before_revaluation' ) {
let prevNum = null, dept = null, batch = null, sem = null, tableCheck = false
let subjects = [], credits = {}, tableName
const regEx1 = /Subjectcode->/i
const regEx2 = /([1-9])([0-9]{11})/
try {
for ( let i = 0; i < data.length; i++ ) {
const row = data[ i ].split( '\r' )[ 0 ].split( ',' )
26
if ( regEx1.test( row[ 1 ] ) ) {
subjects = []
prevNum = null
for ( let j = 2; j < row.length; j++ ) {
subjects.push( row[ j ] )
}
continue
}
if ( subjects === [] ) {
continue
}
if ( regEx2.test( row[ 0 ] ) ) {
// Getting Dept, Batch, Sem when new sem comes
if ( prevNum === null ) {
prevNum = row[ 0 ]
let result
result = await this.findStudent( row[ 0 ] )
dept = result[ 'Class' ]
batch = result[ 'Batch' ]
sem = await this.findSemester( subjects[ 0 ], dept )
tableName = dept + "_" + batch + "_s" + sem
27
batch = result[ 'Batch' ]
tableName = dept + "_" + batch + "_s" + sem
tableCheck = await this.tableCheck( tableName, subjects )
}
try {
let tablePresent = false
const [ rows ] = await conn.execute( 'SHOW TABLES' )
rows.forEach( row => {
if ( row[ 'Tables_in_raa' ] === (studentDTO.studentData.dept + '_' +
studentDTO.studentData.batch.toString() + '_' + (studentDTO.studentData.batch + 4).toString() +
'_S1').toLowerCase() ) {
tablePresent = true
}
})
if ( !tablePresent ) {
for ( let sem = 1; sem <= 8; sem++ ) {
const tableName = studentDTO.studentData.dept + '_' +
studentDTO.studentData.batch.toString() + '_' + (studentDTO.studentData.batch + 4).toString() +
'_S' + sem.toString()
31
await conn.execute( "CREATE TABLE " + tableName + "(Registration_Number
VARCHAR(12) PRIMARY KEY,Credit INT)" )
await conn.execute( "CREATE TABLE " + tableName + '_AfterRevaluation' +
"(Registration_Number varchar(12),Subject_Code VARCHAR(6),Credit INT,Grade
VARCHAR(2), PRIMARY KEY(Registration_Number,Subject_Code))" )
await conn.execute( "CREATE TABLE " + tableName + '_AfterReview' +
"(Registration_Number VARCHAR(12),Subject_Code VARCHAR(6),Credit INT,Grade
VARCHAR(2), PRIMARY KEY(Registration_Number,Subject_Code))" )
await conn.execute( "CREATE TABLE " + tableName + '_Arrear1' +
"(Registration_Number VARCHAR(12),Subject_Code VARCHAR(6),Grade
VARCHAR(2),Credit INT, PRIMARY KEY(Registration_Number,Subject_Code))" )
await conn.execute( "CREATE TABLE " + tableName + '_Arrear2' +
"(Registration_Number VARCHAR(12),Subject_Code VARCHAR(6),Grade
VARCHAR(2),Credit INT, PRIMARY KEY(Registration_Number,Subject_Code))" )
await conn.execute( "CREATE TABLE " + tableName + '_Arrear3' +
"(Registration_Number VARCHAR(12),Subject_Code VARCHAR(6),Grade
VARCHAR(2),Credit INT, PRIMARY KEY(Registration_Number,Subject_Code))" )
await conn.execute( "CREATE TABLE " + tableName + '_Failures' +
"(Registration_Number VARCHAR(12),Subject_Code VARCHAR(6), PRIMARY
KEY(Registration_Number,Subject_Code) )" )
}
}
for ( let i in data ) {
const row = data[ i ]
const keys = Object.keys( row )
const regNo = row[ keys[ 0 ] ]
const name = row[ keys[ 1 ] ]
const studClass = studentDTO.studentData.dept + '_' + row[ keys[ 2 ] ]
const batch = studentDTO.studentData.batch.toString() + '_' +
(studentDTO.studentData.batch + 4).toString()
await conn.execute( "INSERT INTO students VALUES(" + regNo + ",'" + name + "','"
32
+ studClass + "','" + batch + "')" )
for ( let sem = 1; sem <= 8; sem++ ) {
const tableName = studentDTO.studentData.dept + '_' +
studentDTO.studentData.batch.toString() + '_' + (studentDTO.studentData.batch + 4).toString() +
'_S' + sem.toString()
await conn.execute( "INSERT INTO " + tableName + "(Registration_Number)
VALUES(" + regNo + ")" )
}
}
studentDTO.success = true
} catch
( err ) {
studentDTO.success = false
studentDTO.description = err
studentDTO.status = 500
}
if ( studentDTO.success ) {
studentDTO.status = 200
studentDTO.description = DATA_ADDED_SUCCESSFULLY
}
studentDTO.studentData = null
logger.info( 'Exiting | StudentDao::addStudents' )
return studentDTO
}
marksDTO.success = true
marksDTO.status = 200
marksDTO.description = DATA_RETRIEVED_SUCCESSFULLY
logger.info( 'Exiting | MarksDao::getIndividualMarks' )
return marksDTO
}
37
APPENDIX -2
SNAPSHOTS
Login Page:
38
After Entering Registration Number(And clicked Search Button):
39
View Class Marks:
Before Entering Data:
40
41
Report Generation:
42
REFERENCES
[1] Ashwin Mehta, Jugal Patel, Aditya Mewada “Student Result Analysis System” IRJET, Vol.
5, Issue. 4, April 2018, pg.2578-2580
[2] K.Himaja, lalam Sreevidya and N.Srinivasan “Result Analysis Automation System” ARPN,
Vol. 12, Issue. 12, July 2017, pg.4065-4068
[6] Chew Li Sa, Dayang Hanani bt. Abang Ibrahim, Emmy Dahliana Hossain
“Student Performance Analysis System” IEEE, ISBN: 978-1-4799-6242-6 Nov 2014.
43