A console-based C++17 project built around a simple idea: not every task should have the same priority. Different task types use their own scoring rules, while the scheduler handles them through one common Task interface.
- C++17
- STL
vector+ algorithms - File streams for persistence
- OOP: abstraction, inheritance, polymorphism, encapsulation
Create Task
↓
Task-specific Priority Score
↓
Scheduler sorts highest → lowest
↓
Complete / Remove
↓
Save to tasks.txt
UrgentTask uses urgency, deadline, and difficulty, while PersonalTask also considers a preferred time of day.
Compile with any C++17 compiler:
g++ -std=c++17 -Wall -Wextra -o scheduler main.cpp Task.cpp UrgentTask.cpp PersonalTask.cpp Scheduler.cpp
./schedulerOn Windows, run scheduler.exe.
The main challenge was making polymorphism useful in a real workflow instead of just demonstrating inheritance — each task type genuinely controls its own scheduling behavior.