School Management System
Complete Project Guide — Class 12 CBSE Computer Science
■ Final Project Checklist
■■ Database & Core (MySQL)
■ Student table — name, roll no, class, contact
■ Marks table — subject-wise marks, unit tests, midterm
■ Attendance table — date-wise present/absent
■ Teacher table — name, subject, contact
■ Admission waitlist table
■■ OOP & Structure
■ Person base class — name, age, contact
■ Student class — inherits Person, has roll no, marks
■ Teacher class — inherits Person, has subject
■ Admin class — login, manage all records
■ Core SMS Features
■ Add / search / update / delete student
■ Add / view teacher records
■ Record subject-wise marks (UT1, UT2, Midterm, Final)
■ Mark daily attendance
■ Calculate attendance percentage
■ Generate class topper & subject-wise best student
■ File Handling
■ Export all student records to CSV
■ Generate individual report card as .txt file
■ Backup entire database to CSV with one command
■ Read student data from CSV to bulk-import
■ Data Structures
■ Stack — undo last added student entry
■ Queue — admission waitlist (enqueue/dequeue)
■ Linear search — find student by name
■ Binary search — find student by roll number (sorted list)
■ Bubble sort — sort students by marks
■■ Exception Handling
■ Invalid menu input
■ Duplicate roll number
■ File not found error
■ MySQL connection error
■ Empty database / no records found
■ Pandas Features
■ Load marks from CSV into DataFrame
■ Calculate mean, max, min per subject
■ Filter at-risk students (marks < 33 or attendance < 75%)
■ Export filtered data back to CSV
■ Matplotlib + Seaborn Features
■ Bar chart — class average per subject
■ Pie/donut chart — attendance (present vs absent)
■ Line graph — individual student marks trend (UT1 → UT2 → Final)
■ Seaborn heatmap — subject-wise marks for entire class
■ Highlight at-risk students in red on bar chart
■ Scikit-learn Features
■ Train Linear Regression model on marks + attendance
■ Predict final exam score for any student
■ Classify students — ■ Safe / ■ Warning / ■ At Risk
■ Show prediction confidence / accuracy score
■ Dashboard (The Wow Factor)
■ Single command opens full visual dashboard
■ All charts appear together in one window
■ At-risk students listed below charts
■ Top 3 rankers displayed
■ What to Learn & How
1. MySQL + Python
What to learn: Connect Python to MySQL, run queries from code
Time: Already know SQL — just learn connector syntax (2 hours)
Resource: Search "[Link] python tutorial" on YouTube — any 30 min video is enough
import [Link]
conn = [Link](
host="localhost", user="root",
password="", database="school"
)
cursor = [Link]()
[Link]("SELECT * FROM students")
2. Pandas
What to learn: DataFrame basics, read/write CSV, filter rows
Time: 3–4 hours
Resource: "Pandas in 1 hour" by Tech With Tim on YouTube
import pandas as pd
df = pd.read_csv("[Link]") # read
df[df["marks"] < 33] # filter
df["marks"].mean() # calculate
df.to_csv("[Link]", index=False) # save
print([Link]()) # display
3. Matplotlib
What to learn: Bar chart, pie chart, line graph, subplots
Time: 3–4 hours
Resource: "Matplotlib full tutorial" by Corey Schafer on YouTube
import [Link] as plt
[Link](subjects, averages) # bar chart
[Link](sizes, labels=labels) # pie chart
[Link](tests, marks) # line graph
[Link]()
4. Seaborn
What to learn: Just the heatmap — literally one function
Time: 1 hour
Resource: Just read Seaborn docs for heatmap — nothing else needed
import seaborn as sns
[Link](df, annot=True, cmap="RdYlGn") # that's it
[Link]()
5. Scikit-learn
What to learn: Linear Regression only — train, predict, score
Time: 4–5 hours (the most new stuff)
Resource: "Scikit-learn crash course" by freeCodeCamp on YouTube
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
X = df[["attendance", "ut1", "ut2"]] # input features
y = df["final_marks"] # what to predict
X_train, X_test, y_train, y_test = train_test_split(X, y)
model = LinearRegression()
[Link](X_train, y_train) # train
[Link]([[85, 72, 68]]) # predict
[Link](X_test, y_test) # accuracy
■■ Day-by-Day Build Plan
Day Task
Day 1 MySQL setup + OOP classes + core CRUD
Day 2 File handling + Stack/Queue + Exception handling
Day 3 Pandas integration + CSV features
Day 4 Matplotlib + Seaborn charts + Dashboard
Day 5 Scikit-learn predictor + Risk classifier
Day 6 Testing + cleaning code + project report
Total: 6 days. Done.
■ Final File Structure
school_management/
■
■■■ [Link] # Menu, entry point
■■■ [Link] # Person, Student, Teacher, Admin classes
■■■ [Link] # All MySQL queries
■■■ file_handler.py # CSV export, report card generator
■■■ data_structures.py # Stack, Queue, Search, Sort
■■■ [Link] # Pandas calculations
■■■ [Link] # All Matplotlib + Seaborn charts
■■■ [Link] # Scikit-learn ML model
■■■ [Link] # Combined dashboard window
■■■ school_db.sql # SQL file to create all tables
■ Final Viva Answer (Memorize This)
"My School Management System goes beyond basic CRUD — it uses Pandas for data analysis,
Matplotlib and Seaborn for a live performance dashboard, and Scikit-learn's Linear Regression to
predict student outcomes and flag at-risk students. The system covers OOP, file handling, data
structures, MySQL, and machine learning all in one project."
■ Complete CBSE Topic Coverage
Topic Class How to Include
Variables, I/O, operators 11 Basic user input/output
Conditionals & loops 11 Menu-driven program
Strings, Lists, Tuples, Dicts 11 Data storage & manipulation
Functions & recursion 11 Modular code + recursive search/sort
Modules (random, math, os) 11 Import and use in logic
File handling (text/CSV/binary) 12 Store records persistently
Exception handling 12 Try-except for invalid inputs/file errors
Stack & Queue using lists 12 Undo feature or queue system
OOP (classes, inheritance) 12 Model real-world entities
MySQL + Python 12 Backend database for all CRUD
SQL queries (JOIN, GROUP BY) 12 Reports and analytics
Class 12 CBSE Computer Science — School Management System Project Guide