The C++ project Assignment Scheduler was created to help in the planning and management of assignments for use in professional or academic contexts. It has tools for organizing, displaying, and manipulating different assignments. Unit tests are included to make sure the code is operating as intended.
The project is organized with a clear division of source code, headers, and tests in line with best standards for software engineering. It makes use of CMake as the build system and GoogleTest as the testing framework.
The project is organized into the following directories:
AssignmentScheduler/
├── assignmentscheduler-improved_class/
│ ├── .vscode/
│ │ └── settings.json
│ ├── Data/ #User data files
│ │ ├── Ron.json
│ │ ├── Trinidad.json
│ │ └── Shahaf.jason
├── include/ # Header files
│ ├── assignmentcreator.hpp
│ ├── planner.hpp
│ ├── Assignment.hpp
│ ├── json.hpp
│ └── displayfunctions.hpp
├── src/ # Source files
│ ├── assignmentcreator.cpp
│ ├── planner.cpp
│ ├── main.cpp
│ ├── Classfinal.cpp
│ └── displayfunctions.cpp
├── test/ # Test files using GoogleTest framework
│ ├── test_assignmentcreator.cpp
│ ├── test_planner.cpp
│ ├── test_displayfunctions.cpp
│ └── test_Classfinal.cpp
├── build/ # Generated build files
├── CMakeLists.txt # CMake configuration file
└── README.md # Project documentation
To build and test the project, you'll need the following installed on your system:
- CMake (version 3.10 or higher)
- GCC or another C++ compiler that supports C++17 or later
- GoogleTest library (GTest)
-
Clone the repository:
git clone https://github.com/your-username/AssignmentScheduler.git cd AssignmentScheduler
-
Create a build directory and navigate to it:
mkdir build cd build
-
Run CMake to configure the build system:
cmake ..
-
Compile the project:
make
-
Run the tests:
./runTests
This file specifies the CMake build system for the project. It includes all source files, sets the C++ standard to C++17, and indicates the minimum version of CMake that must be used. Additionally, it connects the test executable to the GoogleTest library.
This folder contains the core implementation files:
assignmentcreator.cpp
: Implements methods for creating and managing assignments.planner.cpp
: Contains our algorithem for planning and organizing assignments.Classfinal.cpp
: Encapsulate functionality for creating, managing, and organizing assignments within the Assignment Scheduler system.displayfunctions.cpp
: Handles output & visualization of the assignment data.
This folder holds the header files for the source code. Each .cpp
file has a matching .h
file that declares the necessary classes and functions.
This folder includes unit tests written using the GoogleTest framework. Each test file corresponds to a source file in the src/
folder and tests its functionality:
test_assignmentcreator.cpp
: Tests theassignmentcreator
functionality.test_planner.cpp
: Verifies the behavior of theplanner
logic.test_displayfunctions.cpp
: Ensures thedisplayfunctions
output is correct.test_Classfinal.cpp
: Tests the finalizing operations inClassfinal
.
The project can be expanded with more features or improvements, such as:
- Enhancing the planner to support more complex scheduling algorithms.
- Adding more unit tests to improve code coverage.
- Introducing a graphical user interface (GUI) for easier interaction.
This project is licensed under the MIT License. See the LICENSE
file for more details.