#include <iostream> #include <set> #include <algorithm> #include <vector> #include "Course.h" int main() { std::vector<Course *> courses; bool quit = false; while (!quit) { std::cout << "1. Create course" << std::endl; std::cout << "2. Add student" << std::endl; std::cout << "3. Add existing student" << std::endl; std::cout << "4. Display student" << std::endl; std::cout << "5. Remove student" << std::endl; std::cout << "6. Delete student" << std::endl; std::cout << "7. Display course" << std::endl; std::cout << "8. Display all courses" << std::endl; std::cout << "9. Quit" << std::endl; std::cout << "Enter your choice: "; int choice; std::cin >> choice; std::string name, lastName, firstName, courseName; int matriculationNumber; switch (choice) { case 1: std::cout << "Enter course name: "; std::cin.ignore(); std::getline(std::cin, name); courses.push_back(new Course(name)); break; case 2: std::cout << "Enter student's first name: "; std::cin >> firstName; std::cout << "Enter student's last name: "; std::cin >> lastName; std::cout << "Enter course name: "; std::cin >> courseName; for (auto *course: courses) { if (course->getName() == courseName) { course->addStudent(new Student(lastName, firstName)); } } break; case 3: std::cout << "Enter student's matriculation number: "; std::cin >> matriculationNumber; std::cout << "Enter course name: "; std::cin >> courseName; for (auto *course: courses) { if (course->getName() == courseName) { Student *student = course->getStudent(matriculationNumber); if (student != nullptr) { course->addStudent(student); } } } break; case 4: std::cout << "Enter student's matriculation number: "; std::cin >> matriculationNumber; for (auto *course: courses) { course->displayStudent(matriculationNumber); } break; case 5: std::cout << "Enter student's matriculation number: "; std::cin >> matriculationNumber; std::cout << "Enter course name: "; std::cin >> courseName; for (auto *course: courses) { if (course->getName() == courseName) { course->deleteStudent(matriculationNumber); } } break; case 6: std::cout << "Enter student's matriculation number: "; std::cin >> matriculationNumber; // Delete student from all courses for (auto *course: courses) { course->deleteStudent(matriculationNumber); } break; case 7: std::cout << "Enter course name: "; std::cin >> courseName; for (auto *course: courses) { if (course->getName() == courseName) { course->displayCourse(); } } break; case 8: std::cout << "Courses:" << std::endl; for (auto *course: courses) { course->displayCourse(); } break; case 9: quit = true; break; default: std::cout << "Invalid choice." << std::endl; break; } } for (auto *course: courses) { delete course; } return 0; }