Projekt:2022/Stundenplan: Unterschied zwischen den Versionen

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „{{subst:Projekt:2021/Stundenplan}}“)
 
Keine Bearbeitungszusammenfassung
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 2: Zeile 2:
|Projekt=Stundenplan
|Projekt=Stundenplan
|Kurs=Informatik LK
|Kurs=Informatik LK
|Schuljahr=2021/22
|Schuljahr=2022/23
}}
}}
== Projekt Stundenplan ==
== Projekt Stundenplan ==
Zeile 10: Zeile 10:
[[Bild:Sdui_Stundenplan.png|center|600px]]
[[Bild:Sdui_Stundenplan.png|center|600px]]


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.
Ziel soll es sein, ein 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.
Du bearbeitest das Projekt '''alleine''' bis zu den Osterferien. Bis zum 31.03.2023 werden alle Projekt eingesammelt.


{{Aufgabe:Start}}
{{Aufgabe:Start}}
# 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.)
# 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.)
# Übersetze ein vollständiges Datenbankschema zu deinem ERM.
# Übersetze Dein ERM in ein vollständiges Relationenschema.
# Prüfe, ob dein Schema in der 3. Normalform nach Codd ist und falls nicht, transformiere es entsprechend.
# 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.
Die Modelle der Datenbank müssen mit dem Projekt abgegeben werden.
Zeile 23: Zeile 23:


{{Aufgabe:Start}}
{{Aufgabe:Start}}
# Erstelle einen Fork der [https://git.ngb.schule/IF-LK-2020/stundenplan Projektvorlage].
# Erstelle einen Fork der [https://git.ngb.schule/IF-LK-2022/stundenplan Projektvorlage].
# 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.
# Klone das Projekt und analysiere seinen Aufbau. 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.
{{Aufgabe:End}}
{{Aufgabe:End}}


{{Aufgabe:Start}}
{{Aufgabe:Start}}
Öffne die Datenbank <code>stundenplan.db</code> aus dem Projektordner im Programm SQLite Browser. Setze nun dein Datenbankschema um und erstelle die Tabellen und Attribute mit Hilfe des SQLite Browsers.
Öffne die Datenbank <code>stundenplan.db</code> aus dem Projektordner im Programm SQLite Browser. Setze nun Dein Datenbankschema um und erstelle die Tabellen und Attribute mithilfe des SQLite Browsers.
* Es ist schon eine Tabelle mit Daten vorhanden, die du anpassen (Tabelle bearbeiten) und weiter nutzen kannst.
* 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 [http://mockaroo.com Mockaroo]).
* 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 mithilfe von [http://mockaroo.com Mockaroo]).
{{Aufgabe:End}}
{{Aufgabe:End}}


{{Aufgabe:Start}}
{{Aufgabe:Start}}
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.
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.
{{Aufgabe:End}}
{{Aufgabe:End}}


Zeile 43: Zeile 43:
; <code>addFilter( String pName, String[] pOptions )</code>
; <code>addFilter( String pName, String[] pOptions )</code>
: Fügt der Seitenleiste eine neue Auswahlbox mit dem Namen <code>pName</code> hinzu, die die angegebenen Strings in <code>pOptions</code> zur Auswahl stellt.
: Fügt der Seitenleiste eine neue Auswahlbox mit dem Namen <code>pName</code> hinzu, die die angegebenen Strings in <code>pOptions</code> zur Auswahl stellt.
: Bei einer Ändeurng der Auswahl wird <code>pName</code> an die Methode <code>selectionChanged( String pList, String pNewValue )</code> als erster Parameter übergeben.
: Bei einer Änderung der Auswahl wird <code>pName</code> an die Methode <code>selectionChanged( String pList, String pNewValue )</code> als erster Parameter übergeben.
; <code>removeFilter( String pName )</code>
; <code>removeFilter( String pName )</code>
: Entfernt die Auswahlbox mit dem Namen <code>pName</code> aus der Seitenleiste,
: Entfernt die Auswahlbox mit dem Namen <code>pName</code> aus der Seitenleiste,
Zeile 58: Zeile 58:


; <code>selectionChanged( String pList, String pNewValue )</code>
; <code>selectionChanged( String pList, String pNewValue )</code>
: 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.
: Wird vom GUI aufgerufen, wenn sich die Auswahl einer Auswahlbox ändert. Der erste Parameter gibt den Namen der Auswahlbox an, der zweite den neu gewählten Wert.


=== {{Java API|java.awt.Color}} ===
=== {{Java API|java.awt.Color}} ===

Aktuelle Version vom 20. März 2023, 00:06 Uhr

Seite zum Projekt Stundenplan des Informatik LK im Schuljahr 2022/23.

Projekt Stundenplan

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

Sdui Stundenplan.png

Ziel soll es sein, ein 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 bis zu den Osterferien. Bis zum 31.03.2023 werden alle Projekt eingesammelt.

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 Dein ERM in ein vollständiges Relationenschema.
  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 seinen Aufbau. 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 mithilfe 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 mithilfe 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 Änderung 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 Auswahl 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')