Skip to content

SamuraiSanch/Student-Management-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

17 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ“ Student Management System

A console-based student management system built with C++ and STL containers for efficient data handling and academic record keeping.

Demo

πŸ“‹ Description

This program simulates a university student management system with comprehensive CRUD operations, grade tracking, and statistical analysis. It demonstrates practical usage of C++ STL containers and algorithms.

🎯 Features

Student Management

  • βœ… Add new students with personal information
  • βœ… Remove students by ID
  • βœ… Search students by ID or name
  • βœ… Display all students
  • βœ… Filter students by faculty

Grade Management

  • βœ… Add grades for specific subjects
  • βœ… View all grades for a student
  • βœ… Calculate average grade across all subjects
  • βœ… Support for multiple subjects per student

Statistics & Analytics

  • βœ… Top 5 Students β€” ranked by average grade
  • βœ… Faculty Statistics β€” student count per faculty
  • βœ… Popular Subjects β€” most studied subjects
  • βœ… Excellent Students β€” students with average β‰₯ 90

Data Persistence

  • βœ… Save all data to CSV file
  • βœ… Load data from CSV file
  • βœ… Automatic data validation

πŸ› οΈ Technologies

  • C++11 (STL containers, algorithms, lambda functions)
  • Data Structures:
    • std::map<int, Student> β€” fast student lookup by ID
    • std::map<string, vector<int>> β€” grades organized by subject
    • std::vector β€” dynamic arrays for collections
    • std::pair β€” for ranked data (ID + grade)
  • Algorithms:
    • std::sort with custom comparators
    • std::accumulate for grade calculations
    • std::find_if for conditional search
  • File I/O: CSV format for data persistence

πŸš€ How to Run

Compilation (Visual Studio):

  1. Open the project in Visual Studio
  2. Press F5 (Run)

Compilation (GCC/Clang):

g++ -std=c++11 main.cpp Menu.cpp StudentSystem.cpp -o student_system
./student_system

Compilation (CMake):

mkdir build && cd build
cmake ..
make
./student_system

πŸ“‚ Project Structure

student-management-system/
β”œβ”€β”€ main.cpp              # Entry point
β”œβ”€β”€ Student.h             # Student structure with operator overloads
β”œβ”€β”€ StudentSystem.h       # Core system interface
β”œβ”€β”€ StudentSystem.cpp     # Implementation of all features
β”œβ”€β”€ Menu.h                # Menu interface
β”œβ”€β”€ Menu.cpp              # Interactive console menu
β”œβ”€β”€ README.md             # This file
β”œβ”€β”€ Students.txt          # Sample data file (generated)
└── screenshots/
    └── demo.gif

πŸ’Ύ Data Format

The system uses CSV format for data storage:

# Students
1,John Smith,20,Computer Science
2,Alice Brown,19,Physics

# Grades
1,Math,85,90,95
1,Programming,92,88
2,Math,92,88,90

πŸŽ“ What I Learned

STL Containers & Data Structures:

  • Working with std::map for associative arrays
  • Nested containers (map<string, vector<int>>)
  • Efficient data lookup and manipulation
  • Iterator patterns and best practices

Algorithms & Functional Programming:

  • Custom sorting with lambda comparators
  • Aggregate operations with std::accumulate
  • Conditional filtering and searching
  • Function overloading for flexible interfaces

Software Design:

  • Separation of concerns (Menu, System, Data)
  • Exception handling for error management
  • File I/O with proper error checking
  • CRUD operations implementation

Real-World Skills:

  • Menu-driven application architecture
  • Data persistence and validation
  • User input handling and validation
  • Statistical calculations and ranking

πŸ“‹ Example Usage

=== STUDENT MANAGEMENT SYSTEM ===

1. Add Student
Enter choice: 1

--- Add Student ---
Name: John Smith
Age: 20
Faculty: Computer Science

--- Add Grade ---
Student ID: 1
Subject: Math
Grade: 92

--- Calculate Average ---
Student ID: 1
Average grade: 92.00

--- Top 5 Students ---
1. Student [1] have grade: 95.5
2. Student [3] have grade: 92.3
...

πŸ”§ Future Improvements

  • Export statistics to JSON/XML
  • GUI version using Qt or ImGui
  • Unit tests with Google Test
  • Database integration (SQLite)
  • Multi-user support with authentication
  • Grade history and trends
  • Attendance tracking

πŸ“ License

MIT License β€” free to use and modify.

πŸ‘€ Author

Oleksandr Kopii
GitHub: @SamuraiSanch


⭐ If you found this project helpful, please give it a star!

About

A modular console-based student management system implemented in C++11, showcasing STL containers, custom sorting with algorithms, data persistence in CSV format, and structured application architecture.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages