- This is a modular Smart Student Management System built in Python, designed for managing student records, calculating academic performance, and generating reports.
- It features a console-based, menu-driven interface that handles adding, searching, updating, and reporting on students.
- Data is stored in a simple in-memory dictionary (via
database/students.py) for persistence across sessions within the program runtime. - The system emphasizes clean code organization with separated modules for students (
modules/student.py), reports (modules/report.py), and utilities (utils/). - It includes input validation, error handling, and formatted outputs for a user-friendly experience.
- Developed as a Python assignment project, it demonstrates object-oriented principles through modular design, exception handling, and core language features.
- Add Students: Validate roll number, name, subjects, and marks (0-100 range).
- Search Students: By roll number or name (case-insensitive).
- Update Records: Add/remove subjects or update marks with automatic validation.
- View All Students: Detailed tabular display for each student.
- Generate Reports: Console class summary (total students, highest/lowest marks, average marks, grade distribution).
- Export CSV: CSV reports with roll number, name, subjects, marks, percentage, grade, and remark.
- Error Handling: Robust checks for invalid inputs, duplicates, and empty data.
- Grading System: Percentage-based grades (A+/A/B/C/D/F) with descriptive remarks.
- Modular Design: Functions split across modules (e.g.,
add_student()inmodules/student.py). - Data Structures:
Dictionariesfor storage,tuplesfor subjects (immutable),listsfor marks (mutable). - Control Flow:
while Trueloops for menus/input validation,if-elif-elsefor grading/options. - Exception Handling:
try-exceptfor ValueError (invalid integer) and IndexError (out-of-bounds). - Operators & Functions: Arithmetic (
sum()/len()for percentage), string methods (.title(),.strip()), custom utils likecomma_separated_input(). - File I/O: CSV writing with
csv.writerand timestamped filenames. - Other: Decorators-inspired utils (
heading(),horizontal_line()) for formatting.
- Add Student: Prompts for roll number, name, subjects (comma-separated), and marks (comma-separated).
- Search Student: Choose roll number or name. Displays full record if found.
- Update Subject/Mark: For a given roll number, add, remove a subject, or update the mark.
- Show All Students: Lists all students with headings, subjects table, percentage, grade, and remark.
- Generate Class Report: Console output with stats and grade distribution.
- Export Report (CSV): Saves a detailed report to
students_report_YYYYMMDD_HHMMSS.csvfile. - Exit: Gracefully ends the program.
.
|-- app.py
|-- database
| `-- students.py
|-- modules
| |-- report.py
| `-- student.py
`-- utils
|-- menu_decorator.py
`-- utils.py
3 directories, 6 files
- Student data is stored in
students_data(global dict indatabase/students.py)
students_data = {
1001: {
"name": "Devendra Indapawar",
"subjects": (
"English",
"Marathi",
"Hindi",
"Maths",
"Science",
"Social Science",
),
"marks": [92, 96, 95, 97, 92, 94],
}
}- Percentages and grades are calculated on-the-fly using
utils/utils.py.
-
Prerequisites
- Python 3.12
- No external libraries required (uses built-in
csvanddatetimemodules).
-
Clone the Repository
git clone https://github.com/devendraDPI/smart-student-management-system.git cd smart-student-management-system -
Run the Application
python app.py
- The program will launch the main menu. Use numbers to navigate options.
==================================================
Smart Student Management System
==================================================
1. Add student
2. Search student
3. Update subject or mark
4. Show all students
5. Generate class report
6. Export report (csv)
7. Exit
--------------------------------------------------
Enter option: 1
==================================================
Add Student
==================================================
Total Student(s) : 0
Last roll number : n/a
Enter roll number: 1001
Enter name: Devendra Indapawar
Enter subject(s) (comma separated): English, Marathi, Hindi, Maths, Science, Social Science
Enter marks for 6 subject(s) (comma separated): 92, 96, 95, 97, 92, 94
:) Student Added Successfully.
==================================================
Smart Student Management System
==================================================
1. Add student
2. Search student
3. Update subject or mark
4. Show all students
5. Generate class report
6. Export report (csv)
7. Exit
--------------------------------------------------
Enter option: 5
==================================================
Class Report
==================================================
Total Student(s) : 1
Highest Marks in Class : 97
Lowest Marks in Class : 92
Average Score : 94.33
Grade Distribution:
Grade A+ : 1 student(s)
--------------------------------------------------
==================================================
Smart Student Management System
==================================================
1. Add student
2. Search student
3. Update subject or mark
4. Show all students
5. Generate class report
6. Export report (csv)
7. Exit
--------------------------------------------------
Enter option: 6
:) Exported report to students_report_20251107_111912.csv
==================================================
Smart Student Management System
==================================================
1. Add student
2. Search student
3. Update subject or mark
4. Show all students
5. Generate class report
6. Export report (csv)
7. Exit
--------------------------------------------------
Enter option: 7
:) Thanks for using App! See you next time.
- See full session file for details.
- See how the Smart Student Management System works, from adding student records to generating reports, in this video walkthrough.
- MIT License: See License file for details.












