Skip to content
OnlyProjects
BCA · Data Science & AnalyticsFor educational purposes only
Code included

Unit-Test Score Analytics and Parent Report System for a Grade 8-10 Coaching Centre (Python, MySQL)

Enter marks once, get chapter-level weakness heatmaps and one-page parent reports automatically

Mapped to your syllabusIGNOU BCA (revised) — BCSP-064 guidelines · BCSP-064 Project · Semester 6

Overview

1 min read

Unit-Test Score Analytics and Parent Report System is a small web application for a Grade 8–10 coaching centre — one hall, three teachers, eighty students preparing for boards. The centre runs a unit test every fortnight, and marks currently live in a teacher's register and a tangle of WhatsApp messages. Nobody can answer the questions that matter: which chapter of Class 9 Mathematics is the whole batch weak in, which students are slipping over three tests, and what exactly should be told to a parent at the next meeting.

The system, built as an individual IGNOU BCSP-064 project, gives the centre director and teachers a Streamlit web application over a MySQL database. Teachers manage students and batches, define each unit test with its chapters, and enter marks on screen or by uploading the centre's usual marks sheet as a CSV. The analytics layer computes subject averages, batch percentile ranks, improvement trends across tests and a chapter-level weakness heatmap, and flags an at-risk list by plain rules (falling percentile over two consecutive tests).

Parents see a one-page PDF report generated with ReportLab: scores against batch averages, percentile, three weakest chapters per subject and a teacher's remark, handed over at the parent–teacher meeting.

The project deliberately demonstrates the fundamentals IGNOU examines: a normalised MySQL schema, a level-2 DFD, a documented security section (hashed passwords, parameterised queries, role checks) and test cases — in Python and MySQL, which BCSP-064 explicitly allows, instead of the prohibited C/C++ or VB + MS-Access stacks.

Relevant for
All India
Level
Beginner · 12 weeks · solo
Common at
IGNOU, Bengaluru City University, GGSIPU
Updated
Nov 2026

Syllabus alignment

IGNOU · BCA (revised) — BCSP-064 guidelines

BCSP-064 · Project · Semester 6 · 8 credits · 200 = report 150 + viva 50 (≥40% each)

Subjects this project applies
  • Python programming
  • Database Management Systems (MySQL)
  • Statistics and data handling
  • Software Engineering
How it is evaluated

Team: individual only

synopsis with DFD (≥ level 2), ER/class diagrams; 50–80-page hardbound report (±10%); test cases; security section. Prohibited: C/C++ for DB projects, VB + MS-Access, dBase/FoxPro. Plagiarism → Exam Discipline Committee

Also fits: BCU SEP 2024, GGSIPU 4-year BCA 2024, MDSU CBCS 2024.

What's in the box

11 parts · 5 free · 2 previewed · 4 unlock for ₹2,000

Problem & synopsis

4 min read

Problem statement

A Grade 8–10 coaching centre conducts frequent unit tests, but the marks sit in paper registers and scattered Excel files. As a result the director cannot see which chapter a batch is collectively weak in until board results arrive, teachers cannot track whether an individual student is improving or slipping across tests, and parents receive vague verbal feedback with nothing to refer back to. Hand-calculated averages appear late and occasionally disagree between teachers.

There is a need for a single, secure application in which marks are entered once, stored in a normalised database, and automatically turned into the three things the centre actually needs: chapter-level weakness views for teachers, trend and percentile views for every student, and a clean one-page PDF report for parents. The system must protect student data with authentication, role-based access and safe database access.

Synopsis

Abstract

Small coaching centres track fortnightly unit tests in paper registers, so chapter-level weakness, student trends and parent communication all stay manual and inconsistent. This project delivers a Python + MySQL web application, built with Streamlit, that manages students, batches, subjects, chapters and unit tests; accepts marks on screen or by CSV upload; computes averages, percentile ranks, trends and a chapter-wise weakness heatmap; and generates a one-page PDF report for parents. A security section covers authentication, role-based access and SQL-injection-safe database access.

Introduction

The centre (a fictional but typical example: an 80-student Grade 8–10 coaching centre in Bhopal teaching Mathematics, Science, English and Social Science) conducts two unit tests per subject per month. Each test covers two to four NCERT chapters. Teachers maintain marks in registers; the director tries to spot weak chapters by flipping pages; parents get verbal summaries. The information to make better teaching decisions already exists — it is just not structured.

Existing system

  • Marks in paper registers and ad-hoc Excel files; one file per teacher, no common format.
  • Class averages calculated by hand occasionally; chapter-level analysis never done.
  • Parent communication is verbal at meetings, with no record of what was said.
  • Limitations: no single source of truth, no trend over tests, no objective weakness identification, no printed artefact for parents, and registers cannot be searched or backed up.

Proposed system

  • A central MySQL database of students, batches, subjects, chapters, tests and marks, in third normal form.
  • Marks entry through validated forms or bulk CSV upload with a strict column check.
  • Analytics: subject and test averages, batch percentile ranks, per-student trend across the last three tests, chapter-level weakness heatmap (share of students scoring below 40% per chapter), and a rule-based at-risk list.
  • One-page parent PDF report per student with scores versus batch average, percentile, weakest chapters and remarks.
  • Two roles only — Director (admin) and Teacher — with hashed passwords and role-checked pages.

Feasibility

  • Technical: Python, Streamlit, pandas, MySQL and ReportLab are free and run on the centre's existing Windows desktop; the whole application installs with pip in under ten minutes.
  • Economic: zero licence cost; hosting is unnecessary because the centre runs it on one office computer.
  • Operational: the interface is a set of forms and tables. A teacher needs a 20-minute walkthrough; the director already uses WhatsApp and Excel, so a web table view is familiar.

Objectives

  1. 01Design a normalised (3NF) MySQL schema for students, batches, subjects, chapters, unit tests and marks.
  2. 02Implement login with hashed passwords and two roles (Director, Teacher) enforced on the server side.
  3. 03Provide marks entry through validated forms and bulk CSV upload with column and range checks.
  4. 04Compute subject/test averages, batch percentile ranks and per-student trends across the last three tests.
  5. 05Produce a chapter-level weakness heatmap showing the share of the batch scoring below 40% per chapter.
  6. 06Generate a one-page PDF parent report (scores, percentile, weakest chapters, remark) using ReportLab.
  7. 07Document test cases for every module, including boundary cases in marks entry.

Scope

In scope

  • One coaching centre, Grades 8–10, four subjects, chapters mapped per grade and subject.
  • Two roles: Director (full access) and Teacher (own subjects' marks entry and analytics).
  • Fortnightly unit-test definition, marks entry (form and CSV), analytics dashboards, chapter heatmap, at-risk list, one-page parent PDF reports and Excel export.

Out of scope (v1)

  • Fee collection, attendance, SMS/WhatsApp integration and parent logins (reports are printed for PTMs).
  • Board (final) exam result analysis and any prediction of board scores.
  • Multi-branch or multi-tenant deployment; online payment of any kind.

Methodology

As an individual beginner project, the waterfall model with a working prototype loop is used: requirements and design are frozen first (as BCSP-064 expects a synopsis with DFDs before implementation), then implementation proceeds module by module with weekly demos to the guide.

PhaseWeeksActivitiesDeliverable
Analysis1Interview the centre director; list functional and non-functional requirementsRequirement specification
Synopsis & design2ER diagram, DFD level 0, 1 and 2, schema, UI sketches; synopsis approvalApproved synopsis
Module 13Database creation, seed data, login and rolesSecure skeleton app
Module 24–5Student/batch management; test definition; marks entry + CSV uploadData-entry module
Module 36–7Analytics: averages, percentiles, trend, heatmap, at-risk listAnalytics module
Module 48Parent PDF report generationReport module
Testing9–10Unit tests, black-box test cases, corrective maintenanceTest report
Documentation11–12Final report (BCSP-064 format), viva preparationSubmission

Testing approach: unit tests (pytest) for the analytics functions against seeded data; black-box test cases in a table (test-case ID, input, expected, actual, status) covering login failure, marks above the maximum, malformed CSV rows and report generation; two rounds of user acceptance with the director acting as the user.

Architecture & tech stack

5 diagrams · 6 technologies · 2 min read

  • Python 3
  • Streamlit
  • pandas
  • MySQL
  • Matplotlib
  • ReportLab

The application follows a simple three-tier architecture. The Streamlit front end renders forms and tables; a Python service layer holds all business rules (validation, percentile computation, heatmap counting, PDF assembly); MySQL stores the data. Every database call uses parameterised queries, and every page checks the logged-in role before rendering.

flowchart LR
  U["Director / Teacher (browser)"] --> A["Streamlit app (login gate)"]
  A --> S["Service layer: validation, analytics, report builder"]
  S --> Q["Parameterised SQL (mysql-connector)"]
  Q --> DB[("MySQL: users, students, tests, marks")]
  S --> P["ReportLab PDF generator"]
  P --> F["reports/<admission_no>_<test>.pdf"]

ER diagram

erDiagram
  USER ||--o| TEACHER : "may be a teacher"
  BATCH ||--o{ STUDENT : contains
  SUBJECT ||--o{ CHAPTER : "is divided into"
  BATCH ||--o{ UNIT_TEST : "has tests"
  SUBJECT ||--o{ UNIT_TEST : "test per subject"
  UNIT_TEST ||--o{ TEST_CHAPTER : covers
  CHAPTER ||--o{ TEST_CHAPTER : "is covered by"
  UNIT_TEST ||--o{ MARKS : "is scored in"
  STUDENT ||--o{ MARKS : receives

  USER {
    int user_id PK
    string username UK
    string password_hash
    string role
  }
  TEACHER {
    int teacher_id PK
    int user_id FK
    string name
  }
  BATCH {
    int batch_id PK
    int grade
    string board
    string timing
  }
  STUDENT {
    int student_id PK
    int batch_id FK
    string admission_no UK
    string name
    string guardian_phone
  }
  SUBJECT {
    int subject_id PK
    string name
  }
  CHAPTER {
    int chapter_id PK
    int subject_id FK
    int grade
    string title
  }
  UNIT_TEST {
    int test_id PK
    int batch_id FK
    int subject_id FK
    int teacher_id FK
    date test_date
    int max_marks
  }
  TEST_CHAPTER {
    int test_id FK
    int chapter_id FK
  }
  MARKS {
    int mark_id PK
    int test_id FK
    int student_id FK
    int marks_obtained
  }

DFD Level 0 (context)

flowchart LR
  D([Director]) -- student, batch, teacher setup --> SYS((Unit-Test Score<br/>Analytics System))
  T([Teacher]) -- test definition, marks --> SYS
  SYS -- dashboards, heatmap, at-risk list --> T
  SYS -- parent PDF reports --> D

DFD Level 1

flowchart TD
  D([Director]) --> P1[1.0 Manage users, batches, students]
  T([Teacher]) --> P2[2.0 Define tests and enter marks]
  P2 --> D1[(D1 Marks)]
  P1 --> D2[(D2 Students & Batches)]
  P2 --> D3[(D3 Tests & Chapters)]
  P3[3.0 Compute analytics] --> D1
  P3 --> D4[(D4 Analytics results)]
  P3 --> T
  P4[4.0 Generate parent report] --> D1
  P4 --> D4
  P4 -- PDF --> D

DFD Level 2 — decomposition of process 4.0 (Generate parent report)

flowchart TD
  IN([Report request: student, test]) --> P41[4.1 Fetch scores and batch statistics]
  P41 --> D1[(D1 Marks)]
  P41 --> P42[4.2 Compute percentile and weakest chapters]
  P42 --> D4[(D4 Analytics results)]
  P42 --> P43[4.3 Render one-page PDF via ReportLab]
  P43 --> OUT([PDF saved and logged])

Level 2 is included deliberately: the BCSP-064 synopsis guidelines expect at least a second-level DFD, and the report-generation process is the natural candidate because its steps are sequential and easy to explain in the viva.

Modules

6 modules

  1. Module 01

    Authentication and Roles

    Login screen backed by a users table with bcrypt-hashed passwords (passlib). Session state carries the logged-in user and role; every page re-checks the role before rendering, so a Teacher cannot open the student-management or user-creation screens by editing the URL or session values.

  2. Module 02

    Student and Batch Management

    The Director manages batches (grade, board, timing) and students with a generated admission number, name and guardian phone. Students can be moved between batches with history preserved, and every list view supports search by admission number or name. No government ID numbers are stored anywhere.

  3. Module 03

    Test Definition and Marks Entry

    A teacher defines a unit test (batch, subject, date, maximum marks, chapters covered from the chapter master) and then enters marks per student in an editable table, or uploads the centre's standard CSV marks sheet. Uploads are validated: columns checked, marks must lie between 0 and the maximum, and rejected rows are shown with reasons before anything is saved.

  4. Module 04

    Analytics Engine

    Computes, with pandas over data pulled through parameterised SQL: subject and test averages, each student's percentile rank within the batch, the trend arrow across the last three tests, the chapter-level weakness heatmap (percentage of the batch below 40% per chapter covered by a test), and a rule-based at-risk list (percentile drop across two consecutive tests).

  5. Module 05

    Parent Report Generator

    Builds a one-page PDF per student per test using ReportLab: scores per subject against batch average, percentile, the three weakest chapters per subject, and a remarks line the teacher edits before printing. Files are named admission_no_testname.pdf and generation is logged with user and timestamp for accountability.

  6. Module 06

    Dashboards and Exports

    A director dashboard summarises batches, recent tests, at-risk count and heatmap highlights; Matplotlib figures are embedded in Streamlit. Any table view can be exported to Excel (openpyxl) for the centre's own records, keeping the register-free workflow complete.

Slides

12 slides · titles free · bullets, notes and the .pptx unlock

  1. Slide 1

    Unit-Test Score Analytics and Parent Report System

  2. Slide 2

    The Organisation and the Problem

  3. Slide 3

    Proposed System

  4. Slide 4

    Objectives

  5. Slide 5

    Technology Stack

  6. Slide 6

    System Design — ER Diagram

  7. Slide 7

    System Design — DFD Level 0, 1 and 2

  8. Slide 8

    Modules and Screens

  9. Slide 9

    Security Section

  10. Slide 10

    Testing

  11. Slide 11

    Demo

  12. Slide 12

    Limitations, Future Scope and Conclusion

Bullets, speaker notes and the .pptx · ₹2,000

The titles above are the real outline. The rest is what you present from.

Unlock for ₹2,000

Viva questions & answers

3 of 15 answered free · 12 unlock

Read each answer, close it, and say it in your own words. Your viva will ask. Now you'll know.

  1. 01Concept

    Why did you build this in Python and MySQL rather than C/C++ or Visual Basic with MS-Access?

    The BCSP-064 guidelines explicitly prohibit C/C++ for database projects and VB with MS-Access, while Python and MySQL are listed as permitted stacks. Python gives me pandas for analytics and Streamlit for a quick interface, and MySQL gives a proper multi-user relational database with referential integrity, which MS-Access does not handle well.

  2. 02Concept

    What is a percentile rank and why use it instead of raw percentage?

    A percentile rank says what fraction of the batch a student scored above, so a 62% in a hard test where the batch averaged 45% reads as strong, while the same 62% against a 70% average reads as weak. Percentile places a student within the batch, which raw marks cannot, and it is what the parent report uses.

  3. 03Concept

    Up to which normal form is your schema, and where would redundancy otherwise appear?

    The schema is in 3NF. For example, the subject name is stored once in SUBJECT and referenced by CHAPTER and UNIT_TEST through foreign keys, so renaming a subject is one update; chapter titles are not repeated on every test because TEST_CHAPTER links tests to the chapter master; and MARKS stores only test_id, student_id and marks_obtained.

+12 more questions, with answers

Try the free ones out loud first. Your examiner will not accept “it's in the PPT”.

Source code & how to run

6 steps · complete source code · unlocks with the project

Unlocks with the project · ₹2,000

6 steps · source code zip

Prerequisites, install, seed data and tests, written for demo day. Plus the complete source.

Unlock for ₹2,000

READMEFIRST

266 words · unlocks with the project

What to change before it goes anywhere near a submission. Skipping it is how the demo fails live.

Unlocks with the project · ₹2,000

266 words · ~1 min read

The checklist of things to rename, re-seed and re-think so the project reads as yours.

Unlock for ₹2,000

Instructions

383 words · unlocks with the project

How to study it, adapt it and walk your examiner through it, step by step.

Unlocks with the project · ₹2,000

383 words · ~2 min read

Report structure, formatting rules and the submission checklist your department will grade.

Unlock for ₹2,000

References

8 sources

  1. Python 3 Documentation — official tutorial and library reference
  2. Streamlit Documentation
  3. pandas Documentation
  4. MySQL 8.0 Reference Manual
  5. OWASP Top 10 — Web Application Security Risks
  6. OWASP Password Storage Cheat Sheet
  7. Ramez Elmasri & Shamkant B. Navathe, Fundamentals of Database Systems, 7th ed., Pearson
  8. Ian Sommerville, Software Engineering, 10th ed., Pearson

Cite this bundle

OnlyProjects. (2026). Unit-Test Score Analytics and Parent Report System for a Grade 8-10 Coaching Centre (Python, MySQL): BCA Data Science & Analytics project bundle [Educational resource]. https://onlyprojects.online/projects/bca-ds-coaching-unit-test-score-analytics

Future scope

1 min read

  • Parent login or WhatsApp report delivery with an OTP-verified guardian phone number.
  • Attendance module feeding the same at-risk rules (low attendance plus falling marks).
  • Fee dues reminder list for the director, separate from academic data.
  • Question-paper blueprint mapping so each test's blueprint aligns with the board's design.
  • Multi-branch support for centres running several locations with one database.
  • Export-ready board-analytics pack comparing unit-test trends with pre-board results.

Keep browsing

Same degree, same syllabus slot, different idea. Pick the one your guide will actually approve.

BCACode included

Web Development

Smart Hostel Management System

Room allocation, complaints and mess billing without the register

  • Next.js
  • TypeScript
  • Node.js
  • +3

intermediate8 wk2 students