{"id":17672138,"url":"https://github.com/perhac13/school-management-system","last_synced_at":"2026-05-03T04:34:38.931Z","repository":{"id":257570186,"uuid":"858672780","full_name":"PerHac13/School-Management-System","owner":"PerHac13","description":"This a CLI Application programmed in C++. Manage the function that are need in typical School management system along persistence data.","archived":false,"fork":false,"pushed_at":"2024-12-07T11:01:37.000Z","size":193,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-05T16:49:31.013Z","etag":null,"topics":["cpp17","factory-pattern","file-handling-in-cpp","json","oops-in-cpp"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PerHac13.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-17T10:32:12.000Z","updated_at":"2024-12-07T11:01:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"e19cf95f-12af-4399-b7bd-3c2187e57dcc","html_url":"https://github.com/PerHac13/School-Management-System","commit_stats":null,"previous_names":["perhac13/school-management-system"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PerHac13%2FSchool-Management-System","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PerHac13%2FSchool-Management-System/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PerHac13%2FSchool-Management-System/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PerHac13%2FSchool-Management-System/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PerHac13","download_url":"https://codeload.github.com/PerHac13/School-Management-System/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246336103,"owners_count":20760985,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp17","factory-pattern","file-handling-in-cpp","json","oops-in-cpp"],"created_at":"2024-10-24T04:07:06.516Z","updated_at":"2026-05-03T04:34:38.905Z","avatar_url":"https://github.com/PerHac13.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# School Management System\n\n## Overview\n\nThis 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.\n\n## Features\n\n- Create and manage multiple schools\n- Add classes to schools\n- Add students to classes\n- Save and load data using JSON files\n- Command-line interface for user interaction\n\n## Prerequisites\n\n- C++17 compatible compiler (e.g., GCC 7+, Clang 5+, MSVC 2017+)\n- CMake 3.10 or higher\n- Git (for version control)\n\n## Project Structure\n\n```\nschool_management_system/\n├── CMakeLists.txt\n├── src/\n│   ├── main.cpp\n|   ├── menu.cpp\n|   ├── query_system.cpp\n│   ├── school.cpp\n│   ├── class.cpp\n│   └── student.cpp\n├── include/\n│   ├── menu.h\n|   ├── query_system.h\n│   ├── school.h\n│   ├── class.h\n│   └── student.h\n├── lib/\n│   └── json.hpp\n├── data/\n│   └── schools.json\n├── build/\n├── .vscode/\n│   ├── tasks.json\n│   └── launch.json\n└── README.md\n```\n\n## Setup and Build\n\n1. Clone the repository:\n\n   ```\n   git clone \u003crepository-url\u003e\n   cd school_management_system\n   ```\n\n2. Create a build directory and run CMake:\n\n   ```\n   mkdir build\n   cd build\n   cmake ..\n   ```\n\n3. Build the project:\n\n   ```\n   make\n   ```\n\n4. Run the program:\n   ```\n   ./SchoolManagementSystem\n   ```\n\n## Development Milestones\n\n### Milestone 1: Basic Structure and Functionality\n\n- [x] Set up project structure with CMake\n- [x] Implement basic classes (School, Class, Student)\n- [x] Create a simple command-line interface\n- [x] Implement JSON serialization and deserialization\n\n### Milestone 2: Enhanced Functionality and Error Handling\n\n- [ ] Implement input validation for all user inputs\n- [ ] Add error handling using try-catch blocks\n- [ ] Create custom exceptions for specific error scenarios\n- [ ] Implement a logging system to track operations and errors\n\n### Milestone 3: Advanced Features\n\n- [ ] Add more complex queries (e.g., find students by age range)\n- [ ] Implement class average calculations\n- [ ] Add support for courses and grades\n- [ ] Create reports (e.g., student performance, class statistics)\n\n### Milestone 4: Performance and Scalability\n\n- [ ] Optimize data structures for larger datasets\n- [ ] Implement multithreading for improved performance\n- [ ] Add database support (e.g., SQLite) for persistent storage\n\n### Milestone 5: User Interface and Experience\n\n- [ ] Develop a graphical user interface using Qt or wxWidgets\n- [ ] Implement user authentication and access levels\n- [ ] Create a dashboard for quick overview of school statistics\n\n### Milestone 6: Testing and Documentation\n\n- [ ] Write unit tests using Google Test or Catch2\n- [ ] Implement integration tests\n- [ ] Create comprehensive documentation using Doxygen\n- [ ] Write a user manual\n\n## Learning Objectives\n\n1. **Modern C++ Features**: Utilize C++17 features like structured bindings, if constexpr, and std::optional.\n2. **Object-Oriented Design**: Apply SOLID principles and design patterns.\n3. **Memory Management**: Use smart pointers and RAII techniques.\n4. **Generic Programming**: Implement templates for reusable components.\n5. **Standard Library**: Leverage containers, algorithms, and utilities from the C++ Standard Library.\n6. **Third-party Libraries**: Integrate and use external libraries (e.g., JSON for Modern C++).\n7. **Build Systems**: Gain proficiency with CMake for cross-platform project management.\n8. **Version Control**: Practice Git workflows and collaborative development.\n9. **Error Handling**: Implement robust error handling and logging mechanisms.\n10. **Multithreading**: Apply concurrent programming techniques for performance optimization.\n11. **GUI Development**: Create user-friendly interfaces using C++ GUI frameworks.\n12. **Database Integration**: Connect and interact with SQL databases from C++.\n13. **Testing**: Write and maintain unit and integration tests.\n14. **Documentation**: Create clear and comprehensive documentation for the project.\n\n## Contributing\n\nThis project is not open for contributions. Please follow these steps to fork and do your own experiment:\n\n1. Fork the repository\n2. Create a new branch for your feature\n3. Commit your changes\n4. Push to your branch\n5. Create a Pull Request\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- [JSON for Modern C++](https://github.com/nlohmann/json) by Niels Lohmann\n- All contributors and supporters of this learning project\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperhac13%2Fschool-management-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fperhac13%2Fschool-management-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperhac13%2Fschool-management-system/lists"}