//Erstellt Main Menü public static void MainMenu(Timetable timetable) { // 1 = Kohorte // 2 = Dozenti // 3 = Raum // 4 = Alle Kurse // // 0 = Beenden int type = -1; // Eingabe auswerten while (type != 0) { // Text der Konsole löschen Console.Clear(); Console.WriteLine(); // Stundenplantyp auslesen type = ReadType(); // Bei < 1 beenden if (type < 1) { break; } // Kohorte if (type == 1) { int cohortNumber = ReadCohort(); if (CheckInput(cohortNumber, 1, Timetable.CohortMap.Count)) { string cohortName = Timetable.CohortMap[cohortNumber]; var cohort = timetable.GetCohortFromName(cohortName); var semesters = timetable.GetSemesters(cohort); int semesterInput = ReadSemester(semesters); if (CheckInput(semesterInput, 1, semesters.Count)) { int semester = semesters[semesterInput - 1]; var sessions = timetable.GetSessions(cohort, semester); Console.WriteLine($"Stundenplan: {cohort.Name} / Semester {semester}\n"); foreach (var session in sessions) { Console.WriteLine(session.ToString()); Console.WriteLine(); } timetable.GenerateWPV(sessions); Console.WriteLine(); Console.WriteLine($"WPV-Stundenplan: {cohort.Name} / Semester {semester}\n"); foreach (var wpvSession in timetable.WPVSessions) { Console.WriteLine(wpvSession.ToString()); Console.WriteLine(); } } } } //Bei Input = 2 zeige Profs an else if (type == 2) { var professor = ReadProfessor(timetable); if (professor != null) { var sessions = timetable.GetSessions(professor); Console.WriteLine($"Stundenplan: {professor.Name}\n"); foreach (var session in sessions) { Console.WriteLine(session.ToString()); Console.WriteLine(); } } } //Bei Input = 3 zeige Räume an else if (type == 3) { var room = ReadRoom(timetable); if (room != null) { var sessions = timetable.GetSessions(room); Console.WriteLine($"Stundenplan: {room.Name}\n"); foreach (var session in sessions) { Console.WriteLine(session.ToString()); Console.WriteLine(); } } } //Bei Input = 4 zeige alle Kurse an else if (type == 4) { Console.WriteLine($"Stundenplan für alle Kurse in jedem Semester\n"); foreach (var session in timetable.Sessions) { Console.WriteLine(session.ToString()); Console.WriteLine(); } Console.WriteLine(timetable.Sessions.Count); } // Auf Eingabe des Benutzers warten Console.WriteLine(); Console.ReadLine(); } }
//generiere Stundenplan public static Timetable GenerateTimetable() { //JSON-Dateien werden eingelesen var timetable = new Timetable("data.json"); //Stundenplan wird generiert foreach (string cohortName in Timetable.CohortMap.Values) { var cohort = timetable.GetCohortFromName(cohortName); var semesters = timetable.GetSemesters(cohort); foreach (int semester in semesters) { //Pflichtkurs-Duplikate löschen, damit nicht 2x angezeigt wird var courses = timetable.GetCoursesForSemester(cohort, semester); foreach (var session in timetable.Sessions) { for (int i = 0; i < courses.Count; i++) { var course = courses[i]; //Wenn Kursname und Professor übereinstimmen mit einem Eintrag im bereits generierten Stundenplan //-->Lösche Kurs //Gleicher Kurs andere Kohorte if (course.Name == session.Course.Name && course.Professor == session.Course.Professor) { courses.Remove(course); } } } //Generiert einen Teil des Stundenplans anhand der Kohorte + Semester int generateResult = timetable.Generate(courses); if (generateResult == 0) { //Console.WriteLine("Erfolg!!!\n"); } else { Console.WriteLine("Konnte nicht erstellen."); // nicht genügend Räume if (generateResult == -1) { Console.WriteLine($"Grund: nicht genügend Räume"); } // nicht genügend Blöcke else if (generateResult == -2) { Console.WriteLine($"Grund: nicht genügend Blöcke"); } return(null); } } } return(timetable); }