4.1.4 Die Datenerfassung

4.1.4.1 Allgemeines zur Datenerfassung

Die Dateneingabe findet ausschließlich mit modalen Dialogen statt: Ein modaler Dialog sperrt solange die aufrufende Applikation, bis dieser wieder geschlossen wird. Die Verwendung modaler Dialoge hat natürlich Vor- und Nachteile. Der entscheidende Vorteil ist der, daß ohne zusätzlichen Programmieraufwand niemals die Datenkonsistenz verletzt wird, da keine weiteren Dialoge parallel geöffnet werden können, die auf denselben Daten arbeiten. Der Nachteil ist damit schon offensichtlich: Die Einschränkung, zu einem Zeitpunkt nur einen Dialog öffnen zu können, schränkt die Flexibilität mehr oder weniger stark ein. In Anbetracht der Tatsache, daß nichtmodale Dialoge, sowohl im Design als auch in der Programmierung, ungleich aufwendiger zu realisieren sind, und uns nicht die nötige Zeit zur Verfügung stand die Benutzerschnittstelle dahingehend zu perfektionieren, haben wir uns für modale Dialoge entschieden.

Die Dateneingabe läßt sich in drei Dialoggruppen unterteilen:

Die erste Gruppe wird von den drei Dialogen "Raumdaten erfassen", "Fächer erfassen" und "Dozenten erfassen" gebildet. Diese Dialoge sind alle ähnlich aufgebaut und dienen der Eingabe fundamentaler "Grund"-Daten, die i. d. R. nur einmal eingegeben werden müssen.

Die zweite Gruppe besteht aus einem Dialog-Tripel, einem Dialog, der in sich drei voneinander abhängige Dialoge enthält, die über sog. "Reiter" oder "Tabs" in den Vordergrund "geblättert" *werden können. Die drei Dialogseiten, die sog. Erhebungsbögen, sind mit "Fach", "Veranstaltungen" und "Terminwünsche und Planungsvorgaben" bezeichnet. Diese Dialogseiten sind den Erhebungsbögen nachempfunden, die Zwecks Datenerfassung an die Dozenten verschickt werden. Sie können danach im ausgefüllten Zustand praktisch 1:1 in die Dialogseiten eingegeben werden. Die Erhebungsbogendaten werden i. d. R. bei jedem neuen Stundenplan neu eingegeben.

Die dritte Gruppe beinhaltet die zwei Dialoge "Prioritätenverteilung" und "Veranstaltungen im Grundstudium pro Tag". Hierüber lassen sich weitere Bedingungen und Einschränkungen einstellen, die das Erscheinungsbild des berechneten Stundenplans beeinflussen.

 

Abbildung 4.1.2 zeigt das Klassendiagramm der drei Dialoge "Raumdaten erfassen", Fächer erfassen" und "Dozenten erfassen". Die Dialoge werden hier durch die Dialog-Klassen CRaumdatenerfassung, CFachDlg und CDozentenErfassung repräsentiert. Die drei Dialoge beinhalten jeweils eine Referenz auf den Datenbankmanager CDBManager. Der Datenbankmanager bildet die interne Schnittstelle zu allen benötigten Daten in der Datenbank. Der Datenbankmanager ist ausführlich im Kapitel 4.2.3.1 beschrieben.

Die Basisklasse aller in der UniPlaner-Applikation designten Dialoge ist fast ausschließlich die MFC1 -Klasse CDialog, welche die Schnittstelle zur grafischen Benutzeroberfläche (GUI) in Dialogform bildet. Der Mechanismus des Datenaustauschs zwischen Bildschirm und Dialogdaten der Dialogklassen soll hier nicht weiter erläutert werden, da er in jedem guten Buch zu den MFC nachgelesen werden kann.

Ferner verwenden einige Dialoge die Klasse CEinstellungen, die beliebige numerische, boolesche oder alphanumerische Einstellungen, wie Initialwerte, letzte Benutzereingaben etc. zur Verfügung stellt bzw. speichert. Die Daten dazu werden in der Datenbank in der Tabelle "Einstellungen" abgelegt. Aus diesem Grund benötigt diese Klasse ebenfalls eine Referenz auf den Datenbankmanager.

Alle Dialoge befinden sich unter der Kontrolle der Dokument-Klasse CUniPlanDoc, welche die Daten des gerade zu bearbeitenden Stundenplans verwaltet. Diese Klasse ist es also, die den Dialogen eine Referenz auf den Datenbankmanager übergibt und ein Anzeigen des entsprechenden Dialogs auf dem Bildschirm bewirkt.

Abbildung 4.1.2: Die drei Dialoge "Fächererfassung", "Dozentenerfassung", und "Raumerfassung"

Das Anzeigen von Dialogen oder Aufrufen der Berechnungsroutine geschieht nachrichten-gesteuert. Ein Betätigen einer Taste in der "Toolbar" oder das Anklicken eines Menüpunktes löst eine Nachricht, "Message" genannt, aus, die in den Raum geschickt wird. Irgendein Objekt, hier die Instanz der Klasse CUniPlanDoc, hat einen entsprechenden Eintrag in der sog. "Message-Map", der die eintreffende "Message" identifizieren kann und die zugehörige Behandlungsroutine, die sog. "Message-Handler-Function", aufruft. In diesen "Message-Handler-Functions" werden die entsprechenden Dialoge aufgerufen oder Berechnungsroutinen etc. gestartet.

4.1.4.2 Dialog "Raumdaten erfassen"

Im Dialog "Raumdaten erfassen" (siehe Abbildung 4.1.3) werden neben der formalen Raumbeschreibung, Raumeigenschaften sowie die Raumbelegbarkeit festgehalten. Diese Bezeichnungen finden sich auch analog im Dialog wieder. Weitere Bedienungselemente stellen die Auswahlbox am Ende des Dialoges sowie die Knöpfe Aktualisieren, Neu, Löschen und Schließen dar. Um eine einheitliche Bedienung des UniPlaners zu gewährleisten, wurden diese Bedienungselemente in die anderen Dialoge des UniPlaners übernommen.

Abbildung 4.1.3: Dialog "Raumdaten erfassen"

In der Gruppe "Formale Raumbeschreibung" kann der Benutzer die "Bezeichnung" des Raumes und die "Raumnummer" über die direkte Eingabe von Zeichen festlegen oder ändern. Der "Standort" kann mit Alternativen aus der Datenbank belegt werden. Die Raumart kann in der Gruppe Raumeigenschaften eingestellt werden. Hier sind wieder die Möglichkeiten aus der Datenbank entnommen. Um die Kapazität der Sitzplätze festzuhalten, dürfen ausschließlich numerische Ziffern in das entsprechende Feld eingegeben werden. Die Raumausstattung wird durch einfaches Anklicken der einzelnen Positionen der ListBox für einen Raum als verfügbare Eigenschaften selektiert. Dabei sind mehrere Alternativen aus den vorgegebenen Ausstattungen möglich. Der volle Umfang der Raumausstattungen wird durch vertikales Scrollen am Fuß der Liste erschlossen.

Knopf "Raum ist verfügbar"
Knopf "Raum ist nicht verfügbar"

Die "Raumbelegbarkeit" stellt eine weitere lokale Gruppe in diesem Dialog dar. Der Editiermodus kann durch Anklicken der Knöpfe "Raum ist verfügbar" oder "Raum ist nicht verfügbar" eingestellt werden. Der gültige Editierstatus wird dem Benutzer im gleichnamigen Feld angezeigt. Verändert werden die Zeitfenster durch einfaches Anclicken. Die gesamte Tabelle kann mit dem aktuellen Zugriffsstatus gesetzt werden, wenn man das leere Feld im Tabellenkopf selektiert. Einzelne Spalten bzw. Zeilen können auf die gleiche Art und Weise gesetzt werden – Markieren einzelner Zeilen und Spalten durch Selektieren der jeweiligen Zeile bzw. Spalte.

4.1.4.3 Dialog "Dozenten erfassen"

Abbildung 4.1.4: Dialog "Dozentenerfassung"

Abbildung 4.1.4 zeigt den Dialog "Dozentenerfassung". Mit diesem Dialog können alle notwendigen Dozentendaten wie Name, Vorname, Titel, Adresse, Telefonnummer etc. eingegeben werden. Dazu stehen folgende Bedienelemente zur Verfügung:

4.1.4.4 Dialog "Fächer erfassen"

Abbildung 4.1.5 zeigt den Dialog "Fächererfassung". Mit diesem Dialog können alle notwendigen Fachdaten wie Bezeichnung, Lehrstuhlinhaber, Kürzel etc. eingegeben werden.

Abbildung 4.1.5: Dialog "Fächer erfassen"

Dazu stehen, ähnlich wie unter Abbildung 4.1.4, folgende Bedienelemente zur Verfügung:

 

4.1.4.5 Dialog "Erhebungsbögen"

Der Dialog "Erhebungsbögen" bildet eine Art Mappe für die drei Dialogseiten. Abbildung 4.1.6 zeigt das Klassendiagramm dazu. Die Klasse CErhebungsbogenMappe verwaltet die drei Dialogklassen CErhebungsbogenFach, CErhebungsbogenVeranstaltung und CErhebungsbogenDozent, welche die Dialoge "Fach", "Veranstaltungen" und "Terminwünsche und Planungsvorgaben" repräsentieren. Die Klasse CErhebungsbogenMappe initialisiert lediglich ihre drei "Tochter"-Dialoge und verwaltet ein "Ordner"-Steuerelement, mit dem zwischen den drei Dialogen hin- und hergeblättert werden kann. Die nötigen Daten werden wie immer über den Datenbankmanager bezogen, der den Dialogen als Referenz übergeben wird.

Zusätzlich zum Datenbankmanager spielt eine weitere Klasse eine entscheidende Rolle im Datenaustausch zwischen der Datenbank und den Erhebungsbogen-Dialogen: Es handelt sich dabei um die Klasse CRestrictionDispatcher. Diese Klasse hat u. a. die Aufgabe, komplexe Transaktionen in den sog. Restriktionstabellen (siehe Datenbank) auszuführen. In den Restriktionstabellen werden die Daten, die in den Erhebungsbögen eingegeben werden, abgelegt. Die Klasse CRestrictionDispatcher wird in der Dokument-Klasse CUniPlanDoc verwaltet. Die Schnittstelle zur Datenbank bildet auch hier der Datenbankmanager, der dem RestrictionDispatcher bei der Initialisierung als Referenz übergeben wird.

Abbildung 4.1.6: Klassendiagramm zu den "Erhebungsbögen"-Dialogseiten

Abbildung 4.1.7 zeigt die Erhebungsbogen-Dialoge im Bezug zu anderen wichtigen, in diesen Dialogen verwendeten Klassen. Die Klasse CErhebungsbogenFach verwendet die Dialog-Klassen CFachDlg und CDozentenErfassung. Die Klasse CErhebungsbogenVeranstaltung verwendet die Klassen CEinstellungen, CDozentenErfassung und CRaumTerminvorgabeDlg, wobei letztere Klasse wiederum die Klasse CRaumdatenerfassung benutzt.

Abbildung 4.1.7: Die "Erhebungsbögen"-Dialogseiten im Bezug zu anderen Dialogen

4.1.4.5.1 Erhebungsbogen "Fach"

Die Abbildung 4.1.8 zeigt die Dialogseite "Fach" des Dialogs "Erhebungsbögen". Hier werden die Fächer ausgewählt, die im neuen Stundenplan verplant werden sollen. Dazu werden die beiden Tasten "Neu..." benutzt: Die Taste neben dem Lehrstuhlinhaber-Feld öffnet den Dialog "Dozenten erfassen" aus Kapitel 4.1.4.3. Hier wählt man den Dozenten aus, dessen Fächer hinzugefügt werden sollen und schließt den Dialog anschließend wieder. Der ausgewählte Dozent erscheint dann im Feld "Lehrstuhlinhaber". Die "Neu..."-Taste neben dem Feld "Bezeichnung des Fachs" öffnet den Dialog "Fächer erfassen" aus Kapitel 4.1.4.4. Hier können weitere Fächer zum entsprechenden Dozenten eingegeben oder aktiviert werden.

Die "Entfernen" Tasten löscht den gerade angezeigten Lehrstuhlinhaber bzw. das Fach aus den "Pull-Down"-Listen, auch "Combo Boxes" genannt. Die Daten zu den Dozenten bzw. Fächern bleiben dabei erhalten und müssen zu einem späteren Zeitpunkt nicht noch einmal eingegeben werden.

Abbildung 4.1.8: Erhebungsbogen "Fach"

Für jedes Fach muß die Zugehörigkeit zu den Studiengängen, die Art des Fachs für den jeweiligen Studiengang und die empfohlenen Semester eingegeben werden. Dazu wählt man erst den entsprechenden Lehrstuhlinhaber und dann eines seiner Fächer aus. Anschließend lassen sich dann die notwendigen Einstellungen vornehmen. Die Änderungen an den Eintragungen werden automatisch gespeichert.

4.1.4.5.2 Erhebungsbogen "Veranstaltungen"

Die Abbildung 4.1.9 zeigt die Dialogseite "Veranstaltungen" des Dialogs "Erhebungsbögen". Er dient dazu, einem in der Dialogseite "Fach" ausgewählten Fach Veranstaltungen hinzuzufügen und die Eigenschaften der Veranstaltungen einzugeben. Der Titel enthält den Lehrstuhlinhaber zusammen mit dem Fach, dessen Veranstaltungen gerade im Dialog angezeigt werden. In der unteren Liste sind die Veranstaltungen zusammen mit dem zugehörigen Dozent aufgelistet. Mit der Taste "Neue Veranstaltung" wird ein neuer Eintrag in der Veranstaltungsliste angelegt. Ein Drücken der Taste "Veranstaltung löschen" löscht die gerade markierte Veranstaltung. Die Daten der markierten Veranstaltung werden in der Gruppe "Veranstaltung:" angezeigt und können dort modifiziert werden.

Abbildung 4.1.9: Erhebungsbogen "Veranstaltungen"

 

Dazu sind folgende Elemente vorgesehen:

 

Abbildung 4.1.10: Dialog "Raum-/Terminvorgabe"

 

 

4.1.4.5.3 Erhebungsbogen "Terminwünsche und Planungsvorgaben"

 

Abbildung 4.1.11: Erhebungsbogen "Terminwünsche und Planungsvorgaben"

 

Abbildung 4.1.11 zeigt den dritten Teildialog des Erhebungsbogens. Hier werden die persönlichen Planungsvorgaben und Terminwünsche eines Dozenten festgehalten, der im vorherigen Dialog einer Veranstaltung zugeordnet wurde. Im Kopf des Dialoges stehen zur Orientierung nochmals der Lehrstuhlinhaber und der Name des Dozenten, für den die nachstehenden Angaben gültig sind. Dem Bediener wird zusätzlich die Telefonnummer des betreffenden Dozenten mitgeteilt, damit evtl. Anfragen ohne lästiges erfolgen können. Im folgenden werden die einzelnen Dialogelemente betrachtet.

Die Wochenübersicht ist ein OCX-Kontrollelement GridCtrl. Diese Softwarekomponente nach dem MS-OLE-Standard ermöglicht es, Tabellen in OLE-fähigen Applikationen darzustellen. Der Benutzer dieser Komponente braucht nur noch das Layout der Tabelle festzulegen. Leider muß dies im Quelltext geschehen, was sehr zeitaufwendig sein kann. Bessere Alternativen werden aber nicht geboten. Die Funktionalität dieser Komponente wird in einer Interfaceklasse namens CGridCtrl von der Entwicklungsumgebung bereitgestellt. Die Funktionalität wurde für unsere Bedürfnisse erweitert. Die Wochenübersicht besteht aus mehreren Zeitfenstern, in denen Wunsch- und Ausschlußzeiten eingetragen werden können. In Abbildung 4.1.12 sind Möglichkeiten dargestellt die Wochenübersicht zu bearbeiten.

Selektieren

Auswirkung

- des leeren Feldes (linke, oberste Zelle der Wochenübersicht) alle Zeitfenster werden mit dem aktuellen 'Editiermodus gesetzt
- einer Uhrzeit (in der 1. Spalte von links) bzw. eines Wochentages (1. Zeile von oben) Setzen der jeweiligen Zeile bzw. Spalte in der Wochenübersicht
Markieren von Bereichen Setzen des markierten Bereichs

Abbildung 4.1.12: Bearbeitungsmöglichkeiten für die Wochenübersicht

 

4.1.4.6 Die Prioritätenverteilung

Abbildung 4.1.13 zeigt den Dialog "Prioritätenverteilung". Wird die Berechnung gestartet, orientiert sich der Berechnungsalgorithmus an den Einstellungen, die hier vorgenommen wurden. Der Algorithmus arbeitet prioritätengetrieben, d. h. die Bedingungen, welche die höchste Priorität haben, werden vor den Bedingungen mit niedriger Priorität berücksichtigt. Es wird zwischen Bedingungen vom Typ "hard" und Bedingungen vom Typ "soft" unterschieden. Die "hard"-Bedingungen werden auf jeden Fall berücksichtigt, wohingegen die "soft"-Bedingungen nur insoweit berücksichtigt werden, wie es möglich ist.

Des weiteren läßt sich jede Bedingung getrennt aktivieren bzw. deaktivieren. Der Typ einer Bedingung sowie deren Priorität lassen sich ebenfalls ändern.

Abbildung 4.1.13: Dialog "Prioritätenverteilung"

4.1.4.7 Sonstige Einstellungen

Abbildung 4.1.14 zeigt den Dialog zur Einstellung der Bedingung, wie viele Veranstaltungen pro Semester dem Student im Grundstudium maximal bzw. minimal zugemutet werden sollten.

 

Abbildung 4.1.14: Dialog "Veranstaltungen im Grundstudium pro Tag"

 


1 MFC: Abk. für "Microsoft Foundation Classes"

 

Web-Designer: Hans Peter Kunz. Booch-Diagramme: Patrick Richter, Gerrit Viola. Letzte Änderung: 12-03-1998.