Ejemplo n.º 1
0
        //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();
            }
        }
Ejemplo n.º 2
0
        //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);
        }