Final Report1
Final Report1
2023-2024
Computer Technology
-: SUBMITTED BY :-
PROF. M. U. MUN
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.
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.
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.
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.
• 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.
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
Topic Name :-
List of Figure
Abstract
Chapter 5
5.1 Screenshot
Chapter 7
7.1 Future Scope
7.2 Conclusions
7.3 Reference
LIST OF FIGURES
2 AD Activity Diagram
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
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 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 :
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
3.1.1 STUDENT
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 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>
<br><br>
<div class="submit"><input type="submit" value="Submit"></div>
</form>
</div>
</body>
</html>
NUMERIC ANALYSIS
<!DOCTYPE html>
<html>
<head>
<title>Exploratory Data Analysis</title>
</head>
<body>
</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>
</body>
</html>
EDA PAGE
<!DOCTYPE html>
<html>
<head>
<title>Exploratory Data Analysis</title>
</head>
<body>
{% 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
app = Flask(__name__)
global_df = None
global_df_dup = None
@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)
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(' ', '_'))
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%"
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])
return render_template('teacher.html')
@app.route('/eda', methods=['POST'])
def eda():
global global_df
@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()
# return result_group
return result_group
@app.route('/numeda', methods=['POST'])
def numeda():
global global_df
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)
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
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.
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
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.
7.3 Reference
[2] SPA (2013). What is SPA Standard? SPA Student Performance Analyser Online
Available: https://www.studentperformanceanalyser.com.au/spa/about