L4: Stundenplan - JirkaDellOro/Softwaredesign GitHub Wiki
Abschlussaufgabe
Entwickeln Sie eine Software zur Generierung von Stundenplänen an der Fakultät Digitale Medien.
In einer zu ladenden Datei befinden sich Informationen zu den Anzahlen der Studis jedes Semesters jedes der drei Bachelor-Studiengänge (Kohorte), und deren zu besuchenden Pflichtkurse für das Semester. Weiterhin Informationen zu Dozentis, welche Kurse sie anbieten und zu welchen Zeiten sie verfügbar oder verhindert sind, zu der Gesamtheit aller angebotenen Kurse, jeweils eine kurze Beschreibung dazu und welche Ausstattung zur Durchführung erforderlich ist, sowie Informationen zu den Räumen, deren Kapazität und Ausstattung.
Bei Programmstart werden die Informationen geladen und auf dieser Basis Objekte verschiedener Klassen erstellt, sowie deren Laufzeitbeziehungen untereinander aufgebaut. Dann wird ein Gesamtstundenplan generiert und für jeden Kurs berechnet, wann er wo stattfinden soll. Dabei dürfen natürlich keinerlei Doppelbelastungen auftreten. Dauert die Berechnung länger als eine bestimmte vorgegebene Zeit, soll sie mit einem Nutzerhinweis abgebrochen werden.
Ist die Berechnung erfolgreich, kann der Nutzer sich einen Stundenplan für eine Kohorte, ein Dozenti oder einen Raum ausgeben lassen. Auch ist es möglich, eine Liste aller Kurse mit ihren Zeit- und Raumzuordnungen zu erhalten.
Selbstverständlich sollten Sie die Ausgangsdaten so wählen, dass ein Stundenplan schließlich erstellt werden kann. Werden alle Kurse nur von einem Dozenti gehalten, ist das sicher nicht möglich. Bilden Sie also ungefähr die realen Daten an unserer Fakultät ab und schätzen Sie die Studizahlen.
Konzeption
-
Sammeln Sie zunächst Daten aus unserem Intranet und versuchen Sie selbst, z.B. durch Auslegen von kleinen Papierkärtchen für die Kurse und Räume, Stundenpläne zu erstellen, die keine Ressourcen überlasten, um ein Gefühl für das Problem zu bekommen.
-
Entwerfen Sie vollständige und syntaktisch korrekte Klassendiagramme für die unterschiedlichen Entitäten im Programm. Identifizieren Sie sinnvolle Klassenhierarchien und planen Sie diese.
-
Entwerfen Sie umfangreiche und syntaktisch korrekte Aktivitätsdiagramme für die wichtigsten zu verwendenden Algorithmen.
Hinweise: Achten Sie darauf, dass Sie Daten und Algorithmen trennen. Das bedeutet, dass es möglich sein muss, weitere Räume, Kurse, Dozentis und Studiengänge etc. zu integrieren, wobei diese lediglich in den Ausgangsdaten vermerkt werden und keine Änderungen der Programmlogik erforderlich sind. Achten Sie auch darauf, dass das Programm sinnvoll auf mehrere Code-Dokumente verteilt wird.
Produktion
Setzen Sie das Konzept syntaktisch korrekt Schritt für Schritt in C#-Code um. Beachten Sie dabei die im Rahmen dieser Veranstaltung vermittelten Inhalte und unsere Code-Konventionen, sowie die von Microsoft
Erweiterung
Erweitern Sie ihre Konzeption um Wahlpflichtkurse. Hier sind die Zeiten, zu denen sie stattfinden sollen, bereits von den Dozentis gewählt und in den Ausgangsdaten hinterlegt. Studentis können sich nach der Stundenplanberechnung anzeigen lassen, welche Wahlpflichtkurse sie noch belegen könnten, und wann und in welchen Räumen diese stattfinden.