π Student Grade Manager (C++ Project)
A modern C++ application that reads student marks from a CSV file, calculates totals, averages, and grades, and exports results in CSV & JSON formats. Built with clean class-based design, modular structure, and optional GoogleTest unit testing.
β¨ Features Overview π§± Object-Oriented Design
Student class handles:
Marks
Total calculation
Average calculation
Grade evaluation
π₯ CSV Input
Reads students from:
data/students.csv
Format:
Name Marks1 Marks2 Marks3
π€ Exports Output
data/results.csv
data/results.json
β Grade Logic Average Grade β₯ 90 A β₯ 75 B β₯ 60 C β₯ 40 D < 40 F π Project Structure student_grade_manager/ βββ src/ β βββ main.cpp β βββ student.h β βββ student.cpp β βββ file_handler.h β βββ file_handler.cpp βββ tests/ β βββ test_student.cpp βββ data/ β βββ students.csv βββ build/ βββ Makefile βββ CMakeLists.txt βββ README.md
βοΈ Build & Run π Using Makefile (Recommended) Build: make
Run: make run
Clean: make clean
π§ͺ Unit Testing with GoogleTest
Tests are inside:
tests/
Run using CMake:
ctest
π Sample Input (students.csv) Alice 95 92 88 Bob 78 74 80 Charlie 60 65 62 David 45 42 40 Eve 25 30 20
π Output Example (results.json) [ { "name": "Alice", "total": 275, "average": 91.66, "grade": "A" } ]
π Future Enhancements πΉ Planned Features
Interactive CLI (add/edit/delete students)
JSON library support (nlohmann-json)
Exception handling improvements
SQLite database support
REST API version (crow / cpp-httplib)
PDF & chart report generation
Performance benchmark tests
π€ Author
SSR Embedded Systems Developer β’ C++ β’ Linux/Yocto β’ Drivers