Projekt:2022/Stundenplan: Unterschied zwischen den Versionen
Ngb (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „{{subst:Projekt:2021/Stundenplan}}“) |
Ngb (Diskussion | Beiträge) 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= | |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, | 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''' | 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 | # Übersetze Dein ERM in ein vollständiges Relationenschema. | ||
# Prüfe, ob | # 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- | # Erstelle einen Fork der [https://git.ngb.schule/IF-LK-2022/stundenplan Projektvorlage]. | ||
# Klone das Projekt und analysiere | # 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 | Ö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 | * Es ist schon eine Tabelle mit Daten vorhanden, die Du anpassen (Tabelle bearbeiten) und weiter nutzen kannst. | ||
* Im Projektordner findest | * 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 | 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 | : 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 | : 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.
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.
- 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 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.
Die Modelle der Datenbank müssen mit dem Projekt abgegeben werden.
- Erstelle einen Fork der Projektvorlage.
- 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.
Ö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).
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
pNamehinzu, die die angegebenen Strings inpOptionszur Auswahl stellt. - Bei einer Änderung der Auswahl wird
pNamean die MethodeselectionChanged( String pList, String pNewValue )als erster Parameter übergeben. removeFilter( String pName )- Entfernt die Auswahlbox mit dem Namen
pNameaus 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.
pColundpRowbestimmen die Stundenplanzelle (ab Index 0), die String-Parameter den Inhalt der Zelle undpColordie 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')