https://github.com/perhac13/school-management-system
This a CLI Application programmed in C++. Manage the function that are need in typical School management system along persistence data.
https://github.com/perhac13/school-management-system
cpp17 factory-pattern file-handling-in-cpp json oops-in-cpp
Last synced: about 1 month ago
JSON representation
This a CLI Application programmed in C++. Manage the function that are need in typical School management system along persistence data.
- Host: GitHub
- URL: https://github.com/perhac13/school-management-system
- Owner: PerHac13
- Created: 2024-09-17T10:32:12.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-12-07T11:01:37.000Z (over 1 year ago)
- Last Synced: 2025-02-05T16:49:31.013Z (over 1 year ago)
- Topics: cpp17, factory-pattern, file-handling-in-cpp, json, oops-in-cpp
- Language: C++
- Homepage:
- Size: 188 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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
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
- [x] Set up project structure with CMake
- [x] Implement basic classes (School, Class, Student)
- [x] Create a simple command-line interface
- [x] 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](LICENSE) file for details.
## Acknowledgments
- [JSON for Modern C++](https://github.com/nlohmann/json) by Niels Lohmann
- All contributors and supporters of this learning project