Projekt:2021/Stundenplan

Aus HG Wiki
Zur Navigation springen Zur Suche springen

Projekt Stundenplan

Zum Ende des Themas Datenbanken wollen wir ein kleines Java-Projekt mit Datenbankanbindung umsetzen.

Sdui Stundenplan.png

Ziel soll es sein, eine Programm zur Anzeige eines Stundenplans zu erstellen. Das Programm soll in der Lage sein, die Stundenpläne von Lehrern, Klassen und Räumen anzuzeigen. Dazu werden die entsprechenden Daten in einer SQLite Datenbank gespeichert und in einem vorgefertigten GUI angezeigt.

Du bearbeitest das Projekt alleine und kannst auch die Zeit über die Herbstferien nutzen, um daran weiterzuarbeiten. Nach den Ferien sollen alle Projekte eingesammelt werden.

Icon Heft.png
Arbeitsauftrag
  1. Analysiere den Problembereich "Stundenplan" und erstelle ein vollständiges ER-Modell. (Du kannst wieder https://link.ngb.schule/erdplus nutzen, ein anderes Tool Deiner Wahl oder per Hand zeichnen.)
  2. Übersetze ein vollständiges Datenbankschema zu deinem ERM.
  3. Prüfe, ob dein Schema in der 3. Normalform nach Codd ist und falls nicht, transformiere es entsprechend.

Die Modelle der Datenbank müssen mit dem Projekt abgegeben werden.


Icon Heft.png
Arbeitsauftrag
  1. Erstelle einen Fork der Projektvorlage.
  2. Klone das Projekt und analysiere den Aufbau des Projekts. Versuche vor allem aus den Beispielen und Kommentaren die Interaktion mit der GUI zu verstehen. (Den Aufbau der GUI musst du nicht unbedingt nachvollziehen. Du kannst die bereitgestellten Methoden nutzen. Es ist aber auch nicht verboten, die Vorlage anzupassen, falls du dich mit GUIs schon auskennst.) Starte das Projekt auch und schau dir die GUI an.


Icon Heft.png
Arbeitsauftrag

Öffne die Datenbank stundenplan.db aus dem Projektordner im Programm SQLite Browser. Setze nun dein Datenbankschema um und erstelle die Tabellen und Attribute mit Hilfe des SQLite Browsers.

  • Es ist schon eine Tabelle mit Daten vorhanden, die du anpassen (Tabelle bearbeiten) und weiter nutzen kannst.
  • Im Projektordner findest du einige CSV-Dateien, die du modifizieren und über "Datei -> Import -> Tabellen aus CSV" in die Datenbank importieren kannst. Oder du erzeugst dir selber Testdaten (zum Beispiel in Excel oder mit Hilfe von Mockaroo).


Icon Heft.png
Arbeitsauftrag

Programmiere deine Stundenplan-App nach deinen Vorstellungen. Du kannst dir selber sinnvolle Funktionalitäten überlegt und dir Mindestziele setzen, die du im Projekt umsetzen möchtest. Es sollte aber mindestens möglich sein, einen Stundenplan anzuzeigen, der aus der Datenbank ausgelesen wird.


Dokumentationen

StundenplanGUI

addFilter( String pName, String[] pOptions )
Fügt der Seitenleiste eine neue Auswahlbox mit dem Namen pName hinzu, die die angegebenen Strings in pOptions zur Auswahl stellt.
Bei einer Ändeurng der Auswahl wird pName an die Methode selectionChanged( String pList, String pNewValue ) als erster Parameter übergeben.
removeFilter( String pName )
Entfernt die Auswahlbox mit dem Namen pName aus der Seitenleiste,
removeAllFilters()
Entfernt alle Filter aus der Seitenleiste.
addLesson( int pCol, int pRow, String pTitle, String pSubtitle, String pText, String pFooter, Color pColor )
Fügt dem Stundenplan eine neue Stunde hinzu. pCol und pRow bestimmen die Stundenplanzelle (ab Index 0), die String-Parameter den Inhalt der Zelle und pColor die Farbe.
removeLesson( int pCol, int pRow )
Entfernt die Stunde in der angegebenen Zelle aus dem Stundenplan.
removeAllLessons()
Entfernt alle Stunden aus dem Stundenplan.

SelectionListener

selectionChanged( String pList, String pNewValue )
Wird vom GUI aufgerufen, wenn sich die Auswhal einer Auswahlbox ändert. Der erste Parameter gibt den Namen der Auswahlbox an, der zweite den neu gewählten Wert.

java.awt.Color

Die Klasse Color der AWT Java-Bibliothek repräsentiert Farben in verschiedenen Darstellungen. Die klassische Darstellung ist die RGB-Darstellung, bei der die Farbe in drei Komponenten (Rot, Grün, Blau) angegeben wird. Die drei Anteile können auch als Hexadezimalzahlen (0 <= r,g,b <= 255) angegeben werden und hintereinander als sechsstelliger Hexadezimal-Code angegeben werden (z.B. #F3A276).

Die Klasse bietet eine Reihe Farbkonstanten, für die meisten Grundfarben: Color.red, Color.blue, Color.green, usw.

Eine Farbe kann durch die Angabe der drei Bestandteile erstellt werden:

new Color(255, 0, 255)

oder aus einem String mit einer Hex-Farbe:

Color.decode('#FF00FF')