Skip to content

This a CLI Application programmed in C++. Manage the function that are need in typical School management system along persistence data.

Notifications You must be signed in to change notification settings

PerHac13/School-Management-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

School Management System

Overview

This School Management System is a C++ project designed as a learning opportunity for intermediate to advanced C++ programmers. It demonstrates the use of modern C++ features, object-oriented programming principles, and integrates various software development practices.

Features

  • Create and manage multiple schools
  • Add classes to schools
  • Add students to classes
  • Save and load data using JSON files
  • Command-line interface for user interaction

Prerequisites

  • C++17 compatible compiler (e.g., GCC 7+, Clang 5+, MSVC 2017+)
  • CMake 3.10 or higher
  • Git (for version control)

Project Structure

school_management_system/
├── CMakeLists.txt
├── src/
│   ├── main.cpp
|   ├── menu.cpp
|   ├── query_system.cpp
│   ├── school.cpp
│   ├── class.cpp
│   └── student.cpp
├── include/
│   ├── menu.h
|   ├── query_system.h
│   ├── school.h
│   ├── class.h
│   └── student.h
├── lib/
│   └── json.hpp
├── data/
│   └── schools.json
├── build/
├── .vscode/
│   ├── tasks.json
│   └── launch.json
└── README.md

Setup and Build

  1. Clone the repository:

    git clone <repository-url>
    cd school_management_system
    
  2. Create a build directory and run CMake:

    mkdir build
    cd build
    cmake ..
    
  3. Build the project:

    make
    
  4. Run the program:

    ./SchoolManagementSystem
    

Development Milestones

Milestone 1: Basic Structure and Functionality

  • Set up project structure with CMake
  • Implement basic classes (School, Class, Student)
  • Create a simple command-line interface
  • Implement JSON serialization and deserialization

Milestone 2: Enhanced Functionality and Error Handling

  • Implement input validation for all user inputs
  • Add error handling using try-catch blocks
  • Create custom exceptions for specific error scenarios
  • Implement a logging system to track operations and errors

Milestone 3: Advanced Features

  • Add more complex queries (e.g., find students by age range)
  • Implement class average calculations
  • Add support for courses and grades
  • Create reports (e.g., student performance, class statistics)

Milestone 4: Performance and Scalability

  • Optimize data structures for larger datasets
  • Implement multithreading for improved performance
  • Add database support (e.g., SQLite) for persistent storage

Milestone 5: User Interface and Experience

  • Develop a graphical user interface using Qt or wxWidgets
  • Implement user authentication and access levels
  • Create a dashboard for quick overview of school statistics

Milestone 6: Testing and Documentation

  • Write unit tests using Google Test or Catch2
  • Implement integration tests
  • Create comprehensive documentation using Doxygen
  • Write a user manual

Learning Objectives

  1. Modern C++ Features: Utilize C++17 features like structured bindings, if constexpr, and std::optional.
  2. Object-Oriented Design: Apply SOLID principles and design patterns.
  3. Memory Management: Use smart pointers and RAII techniques.
  4. Generic Programming: Implement templates for reusable components.
  5. Standard Library: Leverage containers, algorithms, and utilities from the C++ Standard Library.
  6. Third-party Libraries: Integrate and use external libraries (e.g., JSON for Modern C++).
  7. Build Systems: Gain proficiency with CMake for cross-platform project management.
  8. Version Control: Practice Git workflows and collaborative development.
  9. Error Handling: Implement robust error handling and logging mechanisms.
  10. Multithreading: Apply concurrent programming techniques for performance optimization.
  11. GUI Development: Create user-friendly interfaces using C++ GUI frameworks.
  12. Database Integration: Connect and interact with SQL databases from C++.
  13. Testing: Write and maintain unit and integration tests.
  14. Documentation: Create clear and comprehensive documentation for the project.

Contributing

This project is not open for contributions. Please follow these steps to fork and do your own experiment:

  1. Fork the repository
  2. Create a new branch for your feature
  3. Commit your changes
  4. Push to your branch
  5. Create a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • JSON for Modern C++ by Niels Lohmann
  • All contributors and supporters of this learning project

About

This a CLI Application programmed in C++. Manage the function that are need in typical School management system along persistence data.

Topics

Resources

Stars

Watchers

Forks