0% found this document useful (0 votes)
6 views

Final Report1

Uploaded by

pilupilu993
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

Final Report1

Uploaded by

pilupilu993
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 41

A PROJECT REPORT ON

“STUDENT PERFORMANCE ANALYSIS SYSTEM”

2023-2024

This project work is submitted in a partial fulfillment of requirement for


the award of diploma in

Computer Technology

MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION, MUMBAI

-: SUBMITTED BY :-

Mr. Krunal V. Zilpe Miss. Vrushali T. Thaware


Mr. Vaishanav Pilare Miss. Shruti Bagmare
Miss. Lakshmi Raut Miss. Achal Meshram
Miss. Nandini Gurnule

Under the guidance of

PROF. M. U. MUN

(Lecture in Computer Technology Dept.)

GOVERNMENT POLYTECHNIC, BRAMHAPURI


DIST. CHANDRAPUR
DEPARTMENT OF COMPUTER TECHNOLOGY
GOVERNMENT POLYTECHNIC, BRAMHAPURI
DIST. CHANDRAPUR

SUBMISSION

We are the undersigned solemnly declare that the report of the project work entitled
“STUDENT PERFORMANCE ANALYSIS SYSTEM” is based on our work carried out
during the course of our study under the guidance of PROF M. U. MUN (Lecturer in CM
Dept.) We assert that the statements made and conclusions drawn are an outcome of our
project work.

We further certify that,

• The work contained in the project report is original and has


been done by us under the guidance of guide.
• The work has not been submitted to any other institute for any
other degree / diploma certificate.

NAME ENROLLMENT NO. SIGN


Krunal Zilpe 2101210097
Vrushali Thaware 2101210131
Shruti Bagmare 2201210415
Vaishav Pilare 2101210094
Achal Meshram 2101210116
Nandini Gurnule 2001210024
Laxmi Raut 2101210109

Date:- / / Place: - Bramhapuri


GOVERNMENT POLYTECHNIC, BRAMHAPURI
DIST. CHANDRAPUR

CERTIFICATE

This is to certify that the following student of this institute have carried the
project work on “STUDENT PERFORMANCE ANALYSIS SYSTEM” under
my guidance in “Diploma in Computer Technology/ Engineering” during the
academic session 2023-24. This work has been in partial fulfillment requirement
for the Award of Diploma in Computer Engineering from Maharashtra State
Board of Technical Education, Mumbai.

NAME ENROLLMENT NO. SIGN


Krunal Zilpe 2101210097
Vrushali Thawre 2101210131
Shruti Bagmare 2201210415
Vaishav Pilare 2101210094
Achal Meshram 2101210116
Nandini Gurnule 2001210024
Laxmi Raut 2101210109

Under the guidance of


PROF. M. U .MUN
(Lecturer in Computer Technology Dept.)

Prof. S. K. KHARKATE Dr. R. L. WANKHADE


(HOD of Computer Dept.) (Principal)
Government Polytechnic Bramhapuri Government Polytechnic Bramhapuri
GOVERNMENT POLYTECHNIC, BRAMHAPURI
DIST. CHANDRAPUR
DEPARTMENT OF COMPUTER TECHNOLOGY

Examiner’s Certificate

This is to certify that the following students of final year students of Computer
Technology of Government Polytechnic, Bramhapuri were examined by me for
the project work entitled, “STUDENT PERFORMANCE ANALYSIS
SYSTEM” for academic year 2023-2024 and the project is approved.

NAME ENROLLMENT NO. SIGN


Krunal Zilpe 2101210097
Vrushali Thawre 2101210131
Shruti Bagmare 2201210415
Vaishav Pilare 2101210094
Achal Meshram 2101210116
Nandini Gurnule 2001210024
Laxmi Raut 2101210109

Date:- / /
Place: - Bramhapuri Sign and name of examiner
DECLARATION BY THE STUDENTS

We the undersigned solemnly declare that the report of the project work entitled
“STUDENT PERFORMANCE ANALYSIS SYSTEM” is based on my own
work carried out during the course of my study under the supervision of PROF.
M.U.MUN We assert that the statements made and conclusions drawn are an
outcome of my project work.

I further certify that:

• The work contained in the project report is original and has been done
by me under the general supervision of my guide.

• The work has not been submitted to any other institute for any other
degree/diploma/certificate in this university or any other university of
INDIA or abroad.

• I have followed the guidelines provided by the MSBTE in writing the project work.

• Whenever I have used materials (data, theoretical analysis, and text)


from other sources.

NAME ENROLLMENT NO. SIGN


Krunal Zilpe 2101210097
Vrushali Thawre 2101210131
Shruti Bagmare 2201210415
Vaishav Pilare 2101210094
Achal Meshram 2101210116
Nandini Gurnule 2001210024
Laxmi Raut 2101210109
Acknowledgement
We take this opportunity to express my profound gratitude and the whole hearted thanks
to my project guide PROF. M. I .MUN for her kind, disciplined and invaluable guidance
which inspired us to solve all the difficulties that come across during competition of the
project.

Also we express our special thanks to PROF. M. I .MUN Head of CM Dept and PROF.
S .K. KHARKATE lecturer in CM Dept. for her kind support, valuable suggestions and
allowing us to use all facility that are available in the department during this project.

Our sincere thanks are due to DR. A. W. Pawde Principal of institute for extending the
all possible help and allowing us to use all resources available in the institute.

We would like to thanks all the faculty members of CM and IF Department for their
support and suggestion for the successful completion of this project work.

We would also like to thanks all the non-teaching staff (Technical and Non- Technical)
of CM and IF Department.

SUBMITTED BY

NAME ENROLLMENT NO. SIGN


Krunal Zilpe 2101210097
Vrushali Thawre 2101210131
Shruti Bagmare 2201210415
Vaishav Pilare 2101210094
Achal Meshram 2101210116
Nandini Gurnule 2001210024
Laxmi Raut 2101210109
INDEX

Topic Name :-

List of Figure
Abstract

Chapter 1 (Introduction and Problem Definition)


1.1 Introduction
1.2 Problem Definition

Chapter 2 (System Design)

2.1 Data Flow Diagram


2.2 System Architecture
2.3 Activity Diagram
 Activity Diagram
 Use Case Diagram

Chapter 3 (Modules of Web Applications)


3.1 Description of Each Module

Chapter 4 (Implementation Details)


4.1 Code
4.2 Software Requirement
4.3 Technology Used

Chapter 5
5.1 Screenshot

Chapter 6 (Application & Advantages / Disadvantage)


6.1 Application
6.2 Advantage & Disadvantage

Chapter 7
7.1 Future Scope
7.2 Conclusions
7.3 Reference
LIST OF FIGURES

1 DFD Data Flow Diagram

2 AD Activity Diagram

3 UML Unified Modeling Language


ABSTRACT

Performance analysis of outcome based on learning is a system which will strive for
excellence at different levels and diverse dimensions in the field of student’s interests. This
paper proposes a complete EDM framework in a form of a rule based recommender system
that is not developed to analyze and predict the student’s performance only, but also to
exhibit the reasons behind it. The proposed framework analyzes the students’ demographic
data, study related and psychological characteristics to extract all possible knowledge from
students, teachers and parents. Seeking the highest possible accuracy in academic
performance prediction using a set of powerful data mining techniques. The framework
succeeds to highlight the student’s weak points and provide appropriate recommendations.
The realistic case study that has been conducted on 200 students proves the outstanding
performance of the proposed framework in comparison with the existing ones.
CHAPTER-1

(INTRODUCTION AND PROBLEM DEFINITION)


1.1 Introduction

Students are the main asset for various universities. Universities and students play an
important role in producing graduates of high qualities with its academic performance
achievement. Academic performance achievement is the level of achievement of the
students’ educational goal that can be measured and tested through examination,
assessments and other form of measurements. However, the academic performance
achievement varies as different kind of students may have different level of performance
achievement.

The student academic performance is usually stored in student management system, in


different formats such as files, document, records, images and other formats. These
available students’ data could be extracted to produce useful information. However, the
increasing amount of students’ data becomes hard to be analysed by using traditional
statistic techniques and database management tools [4]. Thus, a tool is necessary for
universities to extract the useful information. This useful information could be used to
predict the students’ performance.
1.2 Problem Definition:

The current system in our college faces a significant challenge: teachers lack the
capability to accurately predict a student's performance for upcoming semesters based on
their performance up to the fourth semester. This limitation hampers the proactive
support and guidance that educators can offer to students. However, by harnessing the
power of machine learning, this problem can be addressed effectively. Implementing a
student performance analysis system powered by machine learning algorithms will
enable us to utilize past academic data to forecast a student's future performance. This
predictive model will not only benefit the students by providing them with insights into
their academic trajectory but will also empower teachers to offer personalized guidance
and support tailored to each student's specific needs. By leveraging technology in this
manner, we can enhance the overall educational experience and contribute to the
academic success of our students.

.
CHAPTER-2
(SYSTEM DESIGNED)
2.1 DFD LEVEL DATA FLOW DIAGRAM :

A data-flow diagram is a way of representing a flow of data through a


process or a system The DFD also provides information about the outputs
and inputs of each entity and the process itself.

DATA FLOW DIAGRAM


LEVEL 0

FD Dataset
LEVEL 1 Collection
LEVEL 2

Dataset
collection Pre-
EDA processing

Classify
Pre-
the
processing Random
dataset
selection

Train
Feature Algorithm Trained &
Extraction Testing
dataset

Predict Result
Apply
Algorithm
2.2 SYSTEM ARCHITECTURE
ML Algorithms

Machine
Data pre- Feature
dataset learning
processing extraction
model

Result Data classification classifier


2.2 ACTIVITY DIAGRAM :

Activity diagram is basically a flowchart to represent the flow from one


activity to another activity. The activity can be described as an operation of
the system. The control flow is drawn from one operation to another. This
flow can be sequential, branched, or concurrent.
2.3 USE CASE DIAGRAM :-

Use-case diagrams describe the high-level functions and scope of a


system. These diagrams also identify
the interactions between the system and its actors. The use cases and
actors in use-case diagrams describe what the system does and how the
actors use it, but not how the system operates internally.
3.1 MODULES:

3.1.1 STUDENT

In the student performance analysis system, the student module serves as a


personalized platform tailored to individual student needs. Students can input their
academic data, including grades, attendance records, and extracurricular activities,
into the system. With this information, the system generates comprehensive reports
and visualizations, allowing students to track their progress over time. Through
interactive graphs and charts, students gain valuable insights into their strengths and
areas for improvement, empowering them to make informed decisions about their
academic journey. Additionally, the module provides a predictive feature that
forecasts the student's performance in upcoming semesters based on historical data
and trends. By offering a user-friendly interface and valuable predictive capabilities,
the student module fosters a proactive approach to academic success and self-
improvement.

3.1.2 TEACHER

In contrast, the teacher module of the student performance analysis system provides
educators with a powerful tool for analyzing and managing student performance
across their classes. Teachers have access to a centralized database containing
comprehensive records of all students in their classes, including academic
achievements, attendance records, and behavioral data. Using advanced analytics and
visualization tools, teachers can gain valuable insights into individual student
progress and classroom performance trends. The module enables teachers to generate
detailed reports and graphs, facilitating data-driven decision-making and personalized
interventions to support student success. Moreover, the predictive analytics feature
empowers teachers to forecast students' future performance based on historical data,
enabling them to proactively identify at-risk students and provide targeted support.
With its robust analytical capabilities and predictive insights, the teacher module
enhances educators' ability to optimize teaching strategies, promote student
engagement, and foster a culture of continuous improvement within the classroom.
CHAPTER-4

(IMPLEMENTATION DETAILS)
4.1 CODE:
Main Page
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="styles.css">
<title>Home</title>
<style>
.portal_title a {
font-size: 1rem;
color: black;
text-decoration: none;
}
.portal_title h1 {
text-align: center;
}
.option {
text-align: center;
font-size: 1.7rem;
color: green;
}
.option_select {
display: flex;
justify-content: center;
margin: 3rem 2rem;
}

nav ul {
list-style-type: none;
margin: 0;
padding: 0;
}

nav ul li {
--c: goldenrod;
color: var(--c);
font-size: 16px;
border: 0.3em solid var(--c);
border-radius: 0.5em;
width: 12em;
height: 3em;
text-transform: uppercase;
font-weight: bold;
font-family: sans-serif;
letter-spacing: 0.1em;
text-align: center;
line-height: 3em;
position: relative;
overflow: hidden;
z-index: 1;
transition: 0.5s;
margin: 1em;
}

nav ul li span {
position: absolute;
width: 25%;
height: 100%;
background-color: var(--c);
transform: translateY(150%);
border-radius: 50%;
left: calc((var(--n) - 1) * 25%);
transition: 0.5s;
transition-delay: calc((var(--n) - 1) * 0.1s);
z-index: -1;
}

nav ul li:hover {
color: black;
}

nav ul li:hover span {


transform: translateY(0) scale(2);
}

nav ul li span:nth-child(1) {
--n: 1;
}

nav ul li span:nth-child(2) {
--n: 2;
}

nav ul li span:nth-child(3) {
--n: 3;
}

nav ul li span:nth-child(4) {
--n: 4;
}

</style>
</head>
<body>
<div class="portal_title">
<h1>Welcome to the 5th Semester Marks Prediction Portal</h1>
<div class="option">Select Any one</div>
<div class="option_select">
<nav>
<ul>
<li>
<a href="/student">Student</a>
<span></span><span></span><span></span><span></span>
</li>
<li>
<a href="/teacher">Teacher</a>
<span></span><span></span><span></span><span></span>
</li>
</ul>
</nav>
</div>
</div>
</body>
</html>

INDEX PAGE

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Student Information Form</title>
<style>
.student_info label {
font-size: 1.2rem;
font-style: oblique;
font-weight: 600;
}
h1 {
text-align: center;
margin: 3rem;
margin-top: 1rem;
}
.submit {
text-align: center;
width: 100%;
}
input[type="submit"] {
padding: 1rem 3rem;
background: black;
color: white;
font-weight: 700;
border: none;
margin-top: 2rem;
}
.student_info {
margin-top: 1rem;
}
.details {
font-size: 1.2rem;
font-weight: 700;
color: crimson;
}
</style>

</head>
<body>
<a href="{{ url_for('home') }}"><button>Home</button></a>

<h1>Enter Student Information</h1>


<div >

<form action="/predict" method="POST">


<label class="details">Enter Your Basic Details:</label>
<div class="student_info">
<label for="gender">Gender:</label>
<select id="gender" name="gender">
<option value="Male">Male</option>
<option value="Female">Female</option>
</select>

<label for="10th_percentage">10th Percentage:</label>


<input type="number" id="10th_percentage" name="10th_percentage" step="1"
min="0" max="100">

<label for="12th_percentage">12th Percentage:</label>


<input type="number" id="12th_percentage" name="12th_percentage" step="1"
min="0" max="100">
<label for="12th_stream">12th Stream:</label>
<select id="12th_stream" name="12th_stream">
<option value="Science">Science</option>
<option value="Arts">Arts</option>
<option value="Commerce">Commerce</option>
</select>
<br><br>

<label for="family_count">Family Count:</label>


<input type="number" id="family_count" name="family_count" step="1"
min="0" max="100">

<label for="siblings_count">Siblings Count:</label>


<input type="number" id="siblings_count" name="siblings_count" step="1"
min="0" max="100">

<label for="Father Occupation">Father Occupation:</label>


<select id="Father Occupation" name="Father Occupation">
<option value="Government Job">Government Job</option>
<option value="Private Job">Private Job</option>
<option value="Army">Army</option>
<option value="Housewife">Housewife</option>
<option value="Business">Business</option>
<option value="Farmer">Farmer</option>
<option value="No Job">No Job</option>
</select>
<br><br>
</div>
<label class="details">Enter Your 1st semester Marks:</label>
<div class="student_info">
<label for="english_1st_sem">English 1st Sem:</label>
<input type="number" id="english_1st_sem" name="english_1st_sem"
step="0.01" min="0" max="100">

<label for="math_1st_sem">Math 1st Sem:</label>


<input type="number" id="math_1st_sem" name="math_1st_sem" step="0.01"
min="0" max="100">

<label for="basic_science_1st_sem">Basic Science 1st Sem:</label>


<input type="number" id="basic_science_1st_sem"
name="basic_science_1st_sem" step="0.01" min="0" max="100">
<label for="ict_1st_sem">ICT 1st Sem:</label>
<input type="number" id="ict_1st_sem" name="ict_1st_sem" step="0.01"
min="0" max="100">

<label for="wpc_1st_sem">WPC 1st Sem:</label>


<input type="number" id="wpc_1st_sem" name="wpc_1st_sem" step="0.01"
min="0" max="100">
</div>
<br><br>
<label class="details">Enter Your 2nd semester Marks:</label>
<div class="student_info">
<label for="eec_2st_sem">EEC 2st Sem:</label>
<input type="number" id="eec_2st_sem" name="eec_2st_sem" step="0.01"
min="0" max="100">

<label for="ami_2st_sem">AMI 2st Sem:</label>


<input type="number" id="ami_2st_sem" name="ami_2st_sem" step="0.01"
min="0" max="100">

<label for="bec_2st_sem">BEC 2st Sem:</label>


<input type="number" id="bec_2st_sem" name="bec_2st_sem" step="0.01"
min="0" max="100">

<label for="pci_2st_sem">PCI 2st Sem:</label>


<input type="number" id="pci_2st_sem" name="pci_2st_sem" step="0.01"
min="0" max="100">

<label for="bcc_2st_sem">BCC 2st Sem:</label>


<input type="number" id="bcc_2st_sem" name="bcc_2st_sem" step="0.01"
min="0" max="100">

<label for="cph_2st_sem">CPH 2st Sem:</label>


<input type="number" id="cph_2st_sem" name="cph_2st_sem" step="0.01"
min="0" max="100">

<label for="wpd_2st_sem">WPD 2st Sem:</label>


<input type="number" id="wpd_2st_sem" name="wpd_2st_sem" step="0.01"
min="0" max="100">
</div>
<br><br>
<label class="details">Enter Your 3rd semester Marks:</label>
<div class="student_info">
<label for="oop_3st_sem">OOP 3st Sem:</label>
<input type="number" id="oop_3st_sem" name="oop_3st_sem" step="0.01"
min="0" max="100">

<label for="dsu_3st_sem">DSU 3st Sem:</label>


<input type="number" id="dsu_3st_sem" name="dsu_3st_sem" step="0.01"
min="0" max="100">

<label for="cgr_3st_sem">CGR 3st Sem:</label>


<input type="number" id="cgr_3st_sem" name="cgr_3st_sem" step="0.01"
min="0" max="100">

<label for="dms_3st_sem">DMS 3st Sem:</label>


<input type="number" id="dms_3st_sem" name="dms_3st_sem" step="0.01"
min="0" max="100">

<label for="dte_3st_sem">DTE 3st Sem:</label>


<input type="number" id="dte_3st_sem" name="dte_3st_sem" step="0.01"
min="0" max="100">
</div>
<br><br>
<label class="details">Enter Your 4th semester Marks:</label>
<div class="student_info">
<label for="jpr_4st_sem">JPR 4st Sem:</label>
<input type="number" id="jpr_4st_sem" name="jpr_4st_sem" step="0.01"
min="0" max="100">

<label for="sen_4st_sem">SEN 4st Sem:</label>


<input type="number" id="sen_4st_sem" name="sen_4st_sem" step="0.01"
min="0" max="100">

<label for="dcc_4st_sem">DCC 4st Sem:</label>


<input type="number" id="dcc_4st_sem" name="dcc_4st_sem" step="0.01"
min="0" max="100">

<label for="mic_4st_sem">MIC 4st Sem:</label>


<input type="number" id="mic_4st_sem" name="mic_4st_sem" step="0.01"
min="0" max="100">

<label for="gad_4st_sem">GAD 4st Sem:</label>


<input type="number" id="gad_4st_sem" name="gad_4st_sem" step="0.01"
min="0" max="100">
</div>

<br><br>
<div class="submit"><input type="submit" value="Submit"></div>
</form>
</div>

<h2> {{ prediction }}</h2>

</body>
</html>

NUMERIC ANALYSIS

<!DOCTYPE html>
<html>
<head>
<title>Exploratory Data Analysis</title>
</head>
<body>

<a href="{{ url_for('home') }}"><button>Home</button></a>


<h1 style="text-align: center;">Exploratory Data Analysis</h1>
<h1 style="text-align: center;">Prediction of model vs number of student</h1>
<h2 style="text-align: center; display: flex; justify-content: center;">{{ result|
safe }}</h2>

<h1 style="text-align: center;">Pass Or Fail with respect to number of


student</h1>
<h2 style="text-align: center; display: flex; justify-content: center;">{{ result_pass|
safe }}</h2>

<h1 style="text-align: center;">Prediction Result Vs 1st Sem marks Analysis</h1>


<div style="text-align: center;">
<pre>{{ result_group|safe }}</pre>
</div>

<h1 style="text-align: center;">Prediction Result Vs 2nd Sem marks


Analysis</h1>
<div style="text-align: center;">
<pre>{{ result_group_2nd|safe }}</pre>
</div>

<h1 style="text-align: center;">Prediction Result Vs 3rd Sem marks


Analysis</h1>
<div style="text-align: center;">
<pre>{{ result_group_3rd|safe }}</pre>
</div>

<h1 style="text-align: center;">Prediction Result Vs 4th Sem marks Analysis</h1>


<div style="text-align: center;">
<pre>{{ result_group_4th|safe }}</pre>
</div>

</body>
</html>
TEACHER PAGE

<!DOCTYPE html>
<html>
<head>
<title>Teacher Page</title>
<style>
h1 {
text-align: center;
margin-bottom: 3rem;
}
.info {
display: flex;
justify-content: space-between;
}
input[type="file"] {
font-size: 1rem;
}
input[type="submit"] {
padding: 1rem 3rem;
background: black;
color: white;
font-weight: 700;
border: none;
margin-top: 2rem;
}
</style>

</head>
<body>
<h1>Analysis Page for overall student </h1>
<a href="{{ url_for('home') }}"><button>Home</button></a>
<div class="info">
<!-- Form for uploading CSV file -->
<form action="/teacher" method="post" enctype="multipart/form-data">
<input type="file" name="file" accept=".csv">
<input type="submit" value="Upload">
</form>

<form action="/numeda" method="post">


<input type="submit" value="Numeric Analaysis">
</form>

<form action="/eda" method="post">


<input type="submit" value="EDA">
</form>
</div>
<!-- Display uploaded CSV data -->
{% if table %}
<h2>Uploaded CSV Data</h2>
{{ table|safe }}
{% endif %}

</body>
</html>

EDA PAGE

<!DOCTYPE html>
<html>
<head>
<title>Exploratory Data Analysis</title>
</head>
<body>

<a href="{{ url_for('home') }}"><button>Home</button></a>


<h1>Exploratory Data Analysis</h1>

{% if plots_info %}
{% for plot in plots_info %}
<h2>{{ plot.description }}</h2>
<img src="{{ plot.filename }}" alt="{{ plot.description }}">
{% endfor %}
{% else %}
<p>No plots to display</p>
{% endif %}
</body>
</html>

BACK-END

from flask import Flask,render_template,request,redirect, url_for, session


import pickle
import pandas as pd
import numpy as np
import os

import matplotlib.pyplot as plt


import seaborn as sns

# Path to the static folder containing images


static_folder = 'static'
# List of image file extensions to delete
image_extensions = ['.jpg', '.jpeg', '.png', '.gif']

# Iterate over files in the static folder


for filename in os.listdir(static_folder):
# Check if the file is an image based on its extension
if any(filename.lower().endswith(ext) for ext in image_extensions):
# Construct the full path to the file
file_path = os.path.join(static_folder, filename)
# Delete the file
os.remove(file_path)

app = Flask(__name__)

global_df = None
global_df_dup = None

model = pickle.load(open('xgboost_model.pkl', 'rb'))


@app.route('/')
def index():
return render_template('main.html')

@app.route('/student')
def student():
return render_template('index.html')

# @app.route('/teacher')
# def teacher():
# return render_template('teacher.html')

@app.route('/predict',methods = ['POST'])
def result():
if request.method == 'POST':
gender = request.form['gender']
tenth_percentage = float(request.form['10th_percentage'])
twelfth_percentage = float(request.form['12th_percentage'])
twelfth_stream = request.form['12th_stream']
family_count = int(request.form['family_count'])
father_occupation = request.form['Father Occupation']
siblings_count = int(request.form['siblings_count'])
english_1st_sem = float(request.form['english_1st_sem'])
math_1st_sem = float(request.form['math_1st_sem'])
basic_science_1st_sem = float(request.form['basic_science_1st_sem'])
ict_1st_sem = float(request.form['ict_1st_sem'])
wpc_1st_sem = float(request.form['wpc_1st_sem'])
eec_2st_sem = float(request.form['eec_2st_sem'])
ami_2st_sem = float(request.form['ami_2st_sem'])
bec_2st_sem = float(request.form['bec_2st_sem'])
pci_2st_sem = float(request.form['pci_2st_sem'])
bcc_2st_sem = float(request.form['bcc_2st_sem'])
cph_2st_sem = float(request.form['cph_2st_sem'])
wpd_2st_sem = float(request.form['wpd_2st_sem'])
oop_3st_sem = float(request.form['oop_3st_sem'])
dsu_3st_sem = float(request.form['dsu_3st_sem'])
cgr_3st_sem = float(request.form['cgr_3st_sem'])
dms_3st_sem = float(request.form['dms_3st_sem'])
dte_3st_sem = float(request.form['dte_3st_sem'])
jpr_4st_sem = float(request.form['jpr_4st_sem'])
sen_4st_sem = float(request.form['sen_4st_sem'])
dcc_4st_sem = float(request.form['dcc_4st_sem'])
mic_4st_sem = float(request.form['mic_4st_sem'])
gad_4st_sem = float(request.form['gad_4st_sem'])

gender = request.form['gender']

data = pd.DataFrame({
'Gender': [gender],
'10th Percentage': [tenth_percentage],
'12th Percentage': [twelfth_percentage],
'12th Stream': [twelfth_stream],
'Family Count': [family_count],
'Father Occupation': [father_occupation],
'Siblings Count': [siblings_count],
'English 1st Sem': [english_1st_sem],
'Math 1st Sem': [math_1st_sem],
'Basic Science 1st Sem': [basic_science_1st_sem],
'ICT 1st Sem': [ict_1st_sem],
'WPC 1st Sem': [wpc_1st_sem],
'EEC 2st Sem': [eec_2st_sem],
'AMI 2st Sem': [ami_2st_sem],
'BEC 2st Sem': [bec_2st_sem],
'PCI 2st Sem': [pci_2st_sem],
'BCC 2st Sem': [bcc_2st_sem],
'CPH 2st Sem': [cph_2st_sem],
'WPD 2st Sem': [wpd_2st_sem],
'OOP 3st Sem': [oop_3st_sem],
'DSU 3st Sem': [dsu_3st_sem],
'CGR 3st Sem': [cgr_3st_sem],
'DMS 3st Sem': [dms_3st_sem],
'DTE 3st Sem': [dte_3st_sem],
'JPR 4st Sem': [jpr_4st_sem],
'SEN 4st Sem': [sen_4st_sem],
'DCC 4st Sem': [dcc_4st_sem],
'MIC 4st Sem': [mic_4st_sem],
'GAD 4st Sem': [gad_4st_sem]
})

data['Gender']=np.where(data['Gender']=='Male',1,0)

stream_12_mapping = {'Science': 2, 'Commerce': 1,'Art':0}


data['12th Stream'] = data['12th Stream'].map(stream_12_mapping)

data = pd.get_dummies(data)

# columns_to_replace = ['English 1st Sem', 'Math 1st Sem', 'Basic Science 1st
Sem', 'ICT 1st Sem', 'WPC 1st Sem', 'EEC 2st Sem', 'AMI 2st Sem', 'BEC 2st Sem',
'PCI 2st Sem', 'BCC 2st Sem', 'CPH 2st Sem', 'WPD 2st Sem', 'OOP 3st Sem', 'DSU
3st Sem', 'CGR 3st Sem', 'DMS 3st Sem', 'DTE 3st Sem', 'JPR 4st Sem', 'SEN 4st
Sem', 'DCC 4st Sem', 'MIC 4st Sem', 'GAD 4st Sem']
# data[columns_to_replace] = data[columns_to_replace].apply(lambda x:
str(x).replace(' ', '_'))

train_col=['Gender', '10th Percentage', '12th Percentage', '12th Stream', 'Family


Count', 'Siblings Count', 'English_1st_Sem', 'Math_1st_Sem', 'Basic
Science_1st_Sem', 'ICT_1st_Sem', 'WPC_1st_Sem', 'EEC_2st_Sem', 'AMI_2st_Sem',
'BEC_2st_Sem', 'PCI_2st_Sem', 'BCC_2st_Sem', 'CPH_2st_Sem', 'WPD_2st_Sem',
'OOP_3st_Sem', 'DSU_3st_Sem', 'CGR_3st_Sem', 'DMS_3st_Sem', 'DTE_3st_Sem',
'JPR_4st_Sem', 'SEN_4st_Sem', 'DCC_4st_Sem', 'MIC_4st_Sem', 'GAD_4st_Sem',
'Father Occupation_Army', 'Father Occupation_Business', 'Father
Occupation_Farmer', 'Father Occupation_Government Job', 'Father
Occupation_Housewife', 'Father Occupation_No Job', 'Father Occupation_Private
Job']

input_col=['Gender', '10th Percentage', '12th Percentage', '12th Stream', 'Family


Count', 'Siblings Count', 'English_1st_Sem', 'Math_1st_Sem', 'Basic
Science_1st_Sem', 'ICT_1st_Sem', 'WPC_1st_Sem', 'EEC_2st_Sem', 'AMI_2st_Sem',
'BEC_2st_Sem', 'PCI_2st_Sem', 'BCC_2st_Sem', 'CPH_2st_Sem', 'WPD_2st_Sem',
'OOP_3st_Sem', 'DSU_3st_Sem', 'CGR_3st_Sem', 'DMS_3st_Sem', 'DTE_3st_Sem',
'JPR_4st_Sem', 'SEN_4st_Sem', 'DCC_4st_Sem', 'MIC_4st_Sem', 'GAD_4st_Sem',
'Father Occupation_Government Job']

data.columns=input_col
for i in list(set(train_col)-set(data.columns.tolist())):
data[i]=0

col_act = data.columns.tolist()
prediction= model.predict(data[train_col])
prediction=int(prediction)
if prediction==0:
prediction= "Less than 35%"
elif prediction==1:
prediction= "35% to 50%"
elif prediction==2:
prediction= "50% to 75%"
else:
prediction="75% to 100%"

return render_template('index.html',prediction='Your 5th Semester Percentages will


be between :{}'.format(prediction))

def generate_box_plots(df, predicted_column):


numeric_columns = df.select_dtypes(include=['number']).columns
numeric_columns=list(set(numeric_columns)-set(['Roll No']))
plots_info = []
for col in numeric_columns:
plt.figure(figsize=(8, 6))
sns.boxplot(x=predicted_column, y=col, data=df,order=['<35%','35% to 50%',
'50% to 75%','75% to 100%'])
plt.title(f"Boxplot of {col} vs. {predicted_column}")
plt.xlabel(predicted_column)
plt.ylabel(col)
plot_filename = f"static/boxplot_{col}_vs_{predicted_column}.png"
plt.savefig(plot_filename)
plt.close()
plots_info.append({'filename': plot_filename, 'description': f"Boxplot of {col}
vs. {predicted_column}"})
return plots_info

@app.route('/teacher', methods=['GET', 'POST'])


def teacher():
global global_df
global global_df_dup

if request.method == 'POST':
file = request.files['file']
if file:
df = pd.read_csv(file)
pred_df=df.copy()
pred_df.drop(columns=['Roll No','Mother Occupation'],axis=1,inplace=True)

pred_df['Gender']=np.where(pred_df['Gender']=='Male',1,0)
stream_12_mapping = {'Science': 2, 'Commerce': 1,'Art':0}
pred_df['12th Stream'] = pred_df['12th Stream'].map(stream_12_mapping)
pred_df = pd.get_dummies(pred_df)
train_col=['Gender', '10th Percentage', '12th Percentage', '12th Stream',
'Family Count', 'Siblings Count', 'English_1st_Sem', 'Math_1st_Sem', 'Basic
Science_1st_Sem', 'ICT_1st_Sem', 'WPC_1st_Sem', 'EEC_2st_Sem', 'AMI_2st_Sem',
'BEC_2st_Sem', 'PCI_2st_Sem', 'BCC_2st_Sem', 'CPH_2st_Sem', 'WPD_2st_Sem',
'OOP_3st_Sem', 'DSU_3st_Sem', 'CGR_3st_Sem', 'DMS_3st_Sem', 'DTE_3st_Sem',
'JPR_4st_Sem', 'SEN_4st_Sem', 'DCC_4st_Sem', 'MIC_4st_Sem', 'GAD_4st_Sem',
'Father Occupation_Army', 'Father Occupation_Business', 'Father
Occupation_Farmer', 'Father Occupation_Government Job', 'Father
Occupation_Housewife', 'Father Occupation_No Job', 'Father Occupation_Private
Job']
# input_col=['Gender', '10th Percentage', '12th Percentage', '12th Stream',
'Family Count', 'Siblings Count', 'English_1st_Sem', 'Math_1st_Sem', 'Basic
Science_1st_Sem', 'ICT_1st_Sem', 'WPC_1st_Sem', 'EEC_2st_Sem', 'AMI_2st_Sem',
'BEC_2st_Sem', 'PCI_2st_Sem', 'BCC_2st_Sem', 'CPH_2st_Sem', 'WPD_2st_Sem',
'OOP_3st_Sem', 'DSU_3st_Sem', 'CGR_3st_Sem', 'DMS_3st_Sem', 'DTE_3st_Sem',
'JPR_4st_Sem', 'SEN_4st_Sem', 'DCC_4st_Sem', 'MIC_4st_Sem', 'GAD_4st_Sem',
'Father Occupation_Government Job']

pred_df.columns=train_col
col_act = pred_df.columns.tolist()
df['prediction']= model.predict(pred_df[train_col])

target_mapping = {1:'35% to 50%', 0:'<35%', 3:'75% to 100%', 2:'50% to


75%'}
df['prediction'] = df['prediction'].map(target_mapping)

global_df = df # Store the DataFrame in the global variable


global_df_dup=df

return render_template('teacher.html', table=df.to_html())

return render_template('teacher.html')

@app.route('/eda', methods=['POST'])
def eda():
global global_df

if global_df is not None:


# Assuming 'predicted_column' is the column name to predict
predicted_column = 'prediction'
# Generate box plots for numeric columns
plots_info = generate_box_plots(global_df, predicted_column)
# Render EDA page with plots_info
return render_template('eda.html', plots_info=plots_info)
else:
return "No data available for EDA."

@app.route('/')
def home():
return render_template('main.html')
def calculate_descriptive_stats(df, columns, groupby_col, category_order):
"""
Calculate descriptive statistics for each numeric column in columns grouped by
groupby_col,
maintaining the custom order specified in category_order.
"""
# Group by groupby_col and calculate descriptive statistics for each numeric
column
grouped_data = {}
for col in columns:
grouped_data[col] = df.groupby(groupby_col)[col].agg(['min', 'max', 'mean',
'median', 'count']).reindex(category_order).reset_index()

# Convert each group to a DataFrame and store in a dictionary


grouped_data_frames = {col: pd.DataFrame(group) for col, group in
grouped_data.items()}

# # Format the result to display


# result_group = ""
# for col, group in grouped_data_frames.items():
# result_group += f"\n{col}: \n{group.to_string(index=False)}\n"

# return result_group

# Format the result as an HTML table


result_group = "<table border='1' style='margin: 0 auto;'>"
for col, group in grouped_data_frames.items():
result_group += f"<tr><th colspan='6'>{col}</th></tr>"
result_group += "<tr><th>Predicted Marks Category</th><th>Min
Marks</th><th>Max Marks</th><th>Mean Marks</th><th>Median
Marks</th><th>Student Count</th></tr>"
for index, row in group.iterrows():
result_group +=
f"<tr><td>{row[groupby_col]}</td><td>{int(row['min'])}</td><td>{int(row['max'])
}</td><td>{int(row['mean'])}</td><td>{int(row['median'])}</
td><td>{int(row['count'])}</td></tr>"
result_group += "</table>"

# Wrap the result in a <div> tag for center alignment


result_group = f"<div style='text-align: center;'>{result_group}</div>"

return result_group

@app.route('/numeda', methods=['POST'])
def numeda():
global global_df

if global_df is not None:


# Define the custom category order
category_order = ['<35%','35% to 50%', '50% to 75%','75% to 100%']
# Group by 'Category' and calculate the sum of 'Value', maintaining the custom
order
result = global_df.groupby('prediction',
sort=False).size().reindex(category_order).reset_index()
result=pd.DataFrame(result)
result.columns=['Prediction Cat','No of Student']
result_html = result.to_html(index=False)

global_df['Result']=np.where(global_df['prediction'].isin(['<35%']),'Fail','Pass')
result_html_pass = global_df.groupby('Result', sort=False).size().reset_index()
result_html_pass=pd.DataFrame(result_html_pass)
result_html_pass.columns=['Prediction Cat','No of Student']

result_html_pass = result_html_pass.to_html(index=False)

col_1st_same=['English_1st_Sem', 'Math_1st_Sem', 'Basic Science_1st_Sem',


'ICT_1st_Sem', 'WPC_1st_Sem']
col_2nd_same=['EEC_2st_Sem','AMI_2st_Sem', 'BEC_2st_Sem',
'PCI_2st_Sem', 'BCC_2st_Sem','CPH_2st_Sem', 'WPD_2st_Sem']
col_3rd_same=['OOP_3st_Sem', 'DSU_3st_Sem','CGR_3st_Sem',
'DMS_3st_Sem', 'DTE_3st_Sem']
col_4th_same=['JPR_4st_Sem','SEN_4st_Sem', 'DCC_4st_Sem',
'MIC_4st_Sem', 'GAD_4st_Sem']
# Define custom category order
category_order = ['<35%', '35% to 50%', '50% to 75%', '75% to 100%']

# # Group by 'prediction' and calculate descriptive statistics for each numeric


column, maintaining the custom order
# grouped_data = {}
# for col in col_1st_same:
# grouped_data[col] = global_df.groupby('prediction')
[col].describe().reindex(category_order).reset_index()

# # Convert each group to a DataFrame and store in a dictionary


# grouped_data_frames = {col: pd.DataFrame(group) for col, group in
grouped_data.items()}

# # Format the result to display


# result_group = ""
# for col, group in grouped_data_frames.items():
# result_group += f"\n{col}: \n{group.to_string(index=False)}\n"
result_group=calculate_descriptive_stats(global_df, col_1st_same, 'prediction',
category_order)
result_group_2nd=calculate_descriptive_stats(global_df, col_2nd_same,
'prediction', category_order)
result_group_3rd=calculate_descriptive_stats(global_df, col_3rd_same,
'prediction', category_order)
result_group_4th=calculate_descriptive_stats(global_df, col_4th_same,
'prediction', category_order)

# Render EDA page with plots_info


return render_template('numeric.html', result=result_html,
result_pass=result_html_pass,
result_group=result_group,result_group_2nd=result_group_2nd,

result_group_3rd=result_group_3rd,result_group_4th=result_group_4th)
else:
return "No data available for EDA."

if __name__ == '__main__':
app.run(debug=True,port=8000)
CHAPTER-6

(Application & Advantages / Disadvantage)

6.1 Application

1. Grade tracking: The system should allow teachers to input and track students'
grades for various assignments, tests, and projects. It should also calculate overall
grades and provide insights into individual student performance.

2. Progress reports: The system should generate detailed progress reports for each
student, highlighting their strengths, weaknesses, and areas for improvement. This
can help teachers and parents track progress over time.
3.Data visualization: Visual representations, such as charts and graphs, can make it
easier to understand and analyze student performance trends. The application should
provide visualizations to help identify patterns and make data-driven decisions.

6.2 Advantages / Disadvantage

 Advantages
 The proposal aims to analyze student’s demographic data, study related
details and psychological characteristics in terms of final state to figure
whether the student is on the right track or struggling or even failing. In
addition to extensive comparison of our proposed model with the other
previous related models.
 Graphical user interface is user friendly.
 Easy for faculty to manage student data.
 Easy for student to view his academic records.
 Easy to update and maintain data in digital format.
 No threat of Data loss as multiple copies of data can be created.

 Disadvantage

 Apart from the previously mentioned work, there were previous statistical
analysis models from the perspective of educational psychology that conducted
a couple of studies to examine the correlation between the mental health and
the academic performance.
 The type of the recommendations was too brief, they missed illustrating the
methodologies to apply them.
CHAPTER-7

(Future scope, Conclusion, Reference)

7.1 Future scope:

In the future we provide some technical solution by improve the efficiency of student
performance The user interaction model could be derived for giving the record of
student dynamically and it could give staff an alert message about those students who
are having low performance. We can add non- academic attributes along with
academics attributes.

7.2 Conclusion:
In conclusion, the Student Performance Analysis System is a comprehensive
application designed to assist teachers and students in evaluating and improving their
performance in specific courses. It serves as a valuable tool for record-keeping and
analysis, benefiting both faculty and students. The system can be implemented,
updated, and modified by a Database Administrator (DBA) to cater to the evolving
needs of users. With its user-friendly interface and powerful features, the Student
Performance Analysis System aims to make easier to store records of students.

❖ The goals that will be achieved by the system are:


✓ Efficient management of records.
✓ Simplification of Operations.
✓ Less processing time and easy of getting required information.
✓ Usefulness and correctness.

7.3 Reference

[1] J. Shana, and T. Venkatacalam, “A framework for dynamic Faculty Support


System to analyze student course data”,International Journal of Emerging
Technology and Advanced Engineering, Vol. 2, No. 7, 2012, pp.478-482.

[2] SPA (2013). What is SPA Standard? SPA Student Performance Analyser Online
Available: https://www.studentperformanceanalyser.com.au/spa/about

You might also like