Datenbank fertiggestellt

This commit is contained in:
Maxim Derksen 2021-10-07 10:21:45 +02:00
parent 20c130ddad
commit eac089bb6e
18 changed files with 583 additions and 144 deletions

BIN
DatabaseConnector.class Normal file

Binary file not shown.

19
DatabaseConnector.ctxt Normal file
View File

@ -0,0 +1,19 @@
#BlueJ class context
comment0.target=DatabaseConnector
comment0.text=\r\n\ <p>\r\n\ Materialien\ zu\ den\ zentralen\ NRW-Abiturpruefungen\ im\ Fach\ Informatik\ ab\ 2018\r\n\ </p>\r\n\ <p>\r\n\ Klasse\ DatabaseConnector\r\n\ </p>\r\n\ <p>\r\n\ Ein\ Objekt\ der\ Klasse\ DatabaseConnector\ ermoeglicht\ die\ Abfrage\ und\ Manipulation\ \r\n\ einer\ SQLite-Datenbank.\ \r\n\ Beim\ Erzeugen\ des\ Objekts\ wird\ eine\ Datenbankverbindung\ aufgebaut,\ so\ dass\ \r\n\ anschlie\u00DFend\ SQL-Anweisungen\ an\ diese\ Datenbank\ gerichtet\ werden\ koennen.\r\n\ </p>\r\n\ \r\n\ @author\ Qualitaets-\ und\ UnterstuetzungsAgentur\ -\ Landesinstitut\ fuer\ Schule\r\n\ @version\ 2016-01-24\r\n
comment1.params=pIP\ pPort\ pDatabase\ pUsername\ pPassword
comment1.target=DatabaseConnector(java.lang.String,\ int,\ java.lang.String,\ java.lang.String,\ java.lang.String)
comment1.text=\r\n\ Ein\ Objekt\ vom\ Typ\ DatabaseConnector\ wird\ erstellt,\ und\ eine\ Verbindung\ zur\ Datenbank\ \r\n\ wird\ aufgebaut.\ Mit\ den\ Parametern\ pIP\ und\ pPort\ werden\ die\ IP-Adresse\ und\ die\ \r\n\ Port-Nummer\ uebergeben,\ unter\ denen\ die\ Datenbank\ mit\ Namen\ pDatabase\ zu\ erreichen\ ist.\ \r\n\ Mit\ den\ Parametern\ pUsername\ und\ pPassword\ werden\ Benutzername\ und\ Passwort\ fuer\ die\ \r\n\ Datenbank\ uebergeben.\r\n
comment2.params=pSQLStatement
comment2.target=void\ executeStatement(java.lang.String)
comment2.text=\r\n\ Der\ Auftrag\ schickt\ den\ im\ Parameter\ pSQLStatement\ enthaltenen\ SQL-Befehl\ an\ die\ \r\n\ Datenbank\ ab.\ \r\n\ Handelt\ es\ sich\ bei\ pSQLStatement\ um\ einen\ SQL-Befehl,\ der\ eine\ Ergebnismenge\ \r\n\ liefert,\ so\ kann\ dieses\ Ergebnis\ anschlie\u00DFend\ mit\ der\ Methode\ getCurrentQueryResult\ \r\n\ abgerufen\ werden.\r\n
comment3.params=
comment3.target=QueryResult\ getCurrentQueryResult()
comment3.text=\r\n\ Die\ Anfrage\ liefert\ das\ Ergebnis\ des\ letzten\ mit\ der\ Methode\ executeStatement\ an\ \r\n\ die\ Datenbank\ geschickten\ SQL-Befehls\ als\ Ob-jekt\ vom\ Typ\ QueryResult\ zurueck.\r\n\ Wurde\ bisher\ kein\ SQL-Befehl\ abgeschickt\ oder\ ergab\ der\ letzte\ Aufruf\ von\ \r\n\ executeStatement\ keine\ Ergebnismenge\ (z.B.\ bei\ einem\ INSERT-Befehl\ oder\ einem\ \r\n\ Syntaxfehler),\ so\ wird\ null\ geliefert.\ \ \r\n
comment4.params=
comment4.target=java.lang.String\ getErrorMessage()
comment4.text=\r\n\ Die\ Anfrage\ liefert\ null\ oder\ eine\ Fehlermeldung,\ die\ sich\ jeweils\ auf\ die\ letzte\ zuvor\ ausgefuehrte\ \r\n\ Datenbankoperation\ bezieht.\r\n
comment5.params=
comment5.target=void\ close()
comment5.text=\r\n\ Die\ Datenbankverbindung\ wird\ geschlossen.\r\n
numComments=6

BIN
QueryResult.class Normal file

Binary file not shown.

22
QueryResult.ctxt Normal file
View File

@ -0,0 +1,22 @@
#BlueJ class context
comment0.target=QueryResult
comment0.text=\r\n\ <p>\r\n\ Materialien\ zu\ den\ zentralen\ NRW-Abiturpruefungen\ im\ Fach\ Informatik\ ab\ 2018\r\n\ </p>\r\n\ <p>\r\n\ Klasse\ QueryResult\r\n\ </p>\r\n\ <p>\r\n\ Ein\ Objekt\ der\ Klasse\ QueryResult\ stellt\ die\ Ergebnistabelle\ einer\ Datenbankanfrage\ mit\ Hilfe\ \r\n\ der\ Klasse\ DatabaseConnector\ dar.\ Objekte\ dieser\ Klasse\ werden\ nur\ von\ der\ Klasse\ DatabaseConnector\ erstellt.\ \r\n\ Die\ Klasse\ verfuegt\ ueber\ keinen\ oeffentlichen\ Konstruktor.\r\n\ </p>\r\n\ \r\n\ @author\ Qualitaets-\ und\ UnterstuetzungsAgentur\ -\ Landesinstitut\ fuer\ Schule\r\n\ @version\ 2015-01-31\r\n
comment1.params=pData\ pColumnNames\ pColumnTypes
comment1.target=QueryResult(java.lang.String[][],\ java.lang.String[],\ java.lang.String[])
comment1.text=\r\n\ Paketinterner\ Konstruktor.\r\n
comment2.params=
comment2.target=java.lang.String[][]\ getData()
comment2.text=\r\n\ Die\ Anfrage\ liefert\ die\ Eintraege\ der\ Ergebnistabelle\ als\ zweidimensionales\ Feld\r\n\ vom\ Typ\ String.\ Der\ erste\ Index\ des\ Feldes\ stellt\ die\ Zeile\ und\ der\ zweite\ die\ \r\n\ Spalte\ dar\ (d.h.\ Object[zeile][spalte]).\r\n
comment3.params=
comment3.target=java.lang.String[]\ getColumnNames()
comment3.text=\r\n\ Die\ Anfrage\ liefert\ die\ Bezeichner\ der\ Spalten\ der\ Ergebnistabelle\ als\ Feld\ vom\ \r\n\ Typ\ String\ zurueck.\r\n
comment4.params=
comment4.target=java.lang.String[]\ getColumnTypes()
comment4.text=\r\n\ Die\ Anfrage\ liefert\ die\ Typenbezeichnung\ der\ Spalten\ der\ Ergebnistabelle\ als\ Feld\ \r\n\ vom\ Typ\ String\ zurueck.\ Die\ Bezeichnungen\ entsprechen\ den\ Angaben\ in\ der\ MySQL-Datenbank.\r\n
comment5.params=
comment5.target=int\ getRowCount()
comment5.text=\r\n\ Die\ Anfrage\ liefert\ die\ Anzahl\ der\ Zeilen\ der\ Ergebnistabelle\ als\ Integer.\r\n
comment6.params=
comment6.target=int\ getColumnCount()
comment6.text=\r\n\ Die\ Anfrage\ liefert\ die\ Anzahl\ der\ Spalten\ der\ Ergebnistabelle\ als\ Integer.\r\n
numComments=7

BIN
Queue$QueueNode.class Normal file

Binary file not shown.

BIN
Queue.class Normal file

Binary file not shown.

19
Queue.ctxt Normal file
View File

@ -0,0 +1,19 @@
#BlueJ class context
comment0.target=Queue
comment0.text=\r\n\ <p>\r\n\ Materialien\ zu\ den\ zentralen\ NRW-Abiturpruefungen\ im\ Fach\ Informatik\ ab\ 2018\r\n\ </p>\r\n\ <p>\r\n\ Generische\ Klasse\ Queue<ContentType>\r\n\ </p>\r\n\ <p>\r\n\ Objekte\ der\ generischen\ Klasse\ Queue\ (Warteschlange)\ verwalten\ beliebige\r\n\ Objekte\ vom\ Typ\ ContentType\ nach\ dem\ First-In-First-Out-Prinzip,\ d.h.,\ das\r\n\ zuerst\ abgelegte\ Objekt\ wird\ als\ erstes\ wieder\ entnommen.\ Alle\ Methoden\ haben\r\n\ eine\ konstante\ Laufzeit,\ unabhaengig\ von\ der\ Anzahl\ der\ verwalteten\ Objekte.\r\n\ </p>\r\n\ \r\n\ @author\ Qualitaets-\ und\ UnterstuetzungsAgentur\ -\ Landesinstitut\ fuer\ Schule\r\n\ @version\ Generisch_02\ 2014-02-21\r\n
comment1.params=
comment1.target=Queue()
comment1.text=\r\n\ Eine\ leere\ Schlange\ wird\ erzeugt.\ \r\n\ Objekte,\ die\ in\ dieser\ Schlange\ verwaltet\ werden,\ muessen\ vom\ Typ\r\n\ ContentType\ sein.\r\n
comment2.params=
comment2.target=boolean\ isEmpty()
comment2.text=\r\n\ Die\ Anfrage\ liefert\ den\ Wert\ true,\ wenn\ die\ Schlange\ keine\ Objekte\ enthaelt,\ \r\n\ sonst\ liefert\ sie\ den\ Wert\ false.\r\n\ \r\n\ @return\ true,\ falls\ die\ Schlange\ leer\ ist,\ sonst\ false\r\n
comment3.params=pContent
comment3.target=void\ enqueue(java.lang.Object)
comment3.text=\r\n\ Das\ Objekt\ pContentType\ wird\ an\ die\ Schlange\ angehaengt.\ \r\n\ Falls\ pContentType\ gleich\ null\ ist,\ bleibt\ die\ Schlange\ unveraendert.\r\n\ \r\n\ @param\ pContent\r\n\ \ \ \ \ \ \ \ \ \ \ \ das\ anzuhaengende\ Objekt\ vom\ Typ\ ContentType\r\n
comment4.params=
comment4.target=void\ dequeue()
comment4.text=\r\n\ Das\ erste\ Objekt\ wird\ aus\ der\ Schlange\ entfernt.\ \r\n\ Falls\ die\ Schlange\ leer\ ist,\ wird\ sie\ nicht\ veraendert.\r\n
comment5.params=
comment5.target=java.lang.Object\ front()
comment5.text=\r\n\ Die\ Anfrage\ liefert\ das\ erste\ Objekt\ der\ Schlange.\ \r\n\ Die\ Schlange\ bleibt\ unveraendert.\ \r\n\ Falls\ die\ Schlange\ leer\ ist,\ wird\ null\ zurueckgegeben.\r\n\r\n\ @return\ das\ erste\ Objekt\ der\ Schlange\ vom\ Typ\ ContentType\ oder\ null,\r\n\ \ \ \ \ \ \ \ \ falls\ die\ Schlange\ leer\ ist\r\n
numComments=6

View File

@ -1,142 +1,142 @@
/**
* <p>
* Materialien zu den zentralen NRW-Abiturpruefungen im Fach Informatik ab 2018
* </p>
* <p>
* Generische Klasse Queue<ContentType>
* </p>
* <p>
* Objekte der generischen Klasse Queue (Warteschlange) verwalten beliebige
* Objekte vom Typ ContentType nach dem First-In-First-Out-Prinzip, d.h., das
* zuerst abgelegte Objekt wird als erstes wieder entnommen. Alle Methoden haben
* eine konstante Laufzeit, unabhaengig von der Anzahl der verwalteten Objekte.
* </p>
*
* @author Qualitaets- und UnterstuetzungsAgentur - Landesinstitut fuer Schule
* @version Generisch_02 2014-02-21
*/
public class Queue<ContentType> {
/* --------- Anfang der privaten inneren Klasse -------------- */
private class QueueNode {
private ContentType content = null;
private QueueNode nextNode = null;
/**
* Ein neues Objekt vom Typ QueueNode<ContentType> wird erschaffen.
* Der Inhalt wird per Parameter gesetzt. Der Verweis ist leer.
*
* @param pContent das Inhaltselement des Knotens vom Typ ContentType
*/
public QueueNode(ContentType pContent) {
content = pContent;
nextNode = null;
}
/**
* Der Verweis wird auf das Objekt, das als Parameter uebergeben wird,
* gesetzt.
*
* @param pNext der Nachfolger des Knotens
*/
public void setNext(QueueNode pNext) {
nextNode = pNext;
}
/**
* Liefert das naechste Element des aktuellen Knotens.
*
* @return das Objekt vom Typ QueueNode, auf das der aktuelle Verweis zeigt
*/
public QueueNode getNext() {
return nextNode;
}
/**
* Liefert das Inhaltsobjekt des Knotens vom Typ ContentType.
*
* @return das Inhaltsobjekt des Knotens
*/
public ContentType getContent() {
return content;
}
}
/* ----------- Ende der privaten inneren Klasse -------------- */
private QueueNode head;
private QueueNode tail;
/**
* Eine leere Schlange wird erzeugt.
* Objekte, die in dieser Schlange verwaltet werden, muessen vom Typ
* ContentType sein.
*/
public Queue() {
head = null;
tail = null;
}
/**
* Die Anfrage liefert den Wert true, wenn die Schlange keine Objekte enthaelt,
* sonst liefert sie den Wert false.
*
* @return true, falls die Schlange leer ist, sonst false
*/
public boolean isEmpty() {
return head == null;
}
/**
* Das Objekt pContentType wird an die Schlange angehaengt.
* Falls pContentType gleich null ist, bleibt die Schlange unveraendert.
*
* @param pContent
* das anzuhaengende Objekt vom Typ ContentType
*/
public void enqueue(ContentType pContent) {
if (pContent != null) {
QueueNode newNode = new QueueNode(pContent);
if (this.isEmpty()) {
head = newNode;
tail = newNode;
} else {
tail.setNext(newNode);
tail = newNode;
}
}
}
/**
* Das erste Objekt wird aus der Schlange entfernt.
* Falls die Schlange leer ist, wird sie nicht veraendert.
*/
public void dequeue() {
if (!this.isEmpty()) {
head = head.getNext();
if (this.isEmpty()) {
head = null;
tail = null;
}
}
}
/**
* Die Anfrage liefert das erste Objekt der Schlange.
* Die Schlange bleibt unveraendert.
* Falls die Schlange leer ist, wird null zurueckgegeben.
*
* @return das erste Objekt der Schlange vom Typ ContentType oder null,
* falls die Schlange leer ist
*/
public ContentType front() {
if (this.isEmpty()) {
return null;
} else {
return head.getContent();
}
}
}
/**
* <p>
* Materialien zu den zentralen NRW-Abiturpruefungen im Fach Informatik ab 2018
* </p>
* <p>
* Generische Klasse Queue<ContentType>
* </p>
* <p>
* Objekte der generischen Klasse Queue (Warteschlange) verwalten beliebige
* Objekte vom Typ ContentType nach dem First-In-First-Out-Prinzip, d.h., das
* zuerst abgelegte Objekt wird als erstes wieder entnommen. Alle Methoden haben
* eine konstante Laufzeit, unabhaengig von der Anzahl der verwalteten Objekte.
* </p>
*
* @author Qualitaets- und UnterstuetzungsAgentur - Landesinstitut fuer Schule
* @version Generisch_02 2014-02-21
*/
public class Queue<ContentType> {
/* --------- Anfang der privaten inneren Klasse -------------- */
private class QueueNode {
private ContentType content = null;
private QueueNode nextNode = null;
/**
* Ein neues Objekt vom Typ QueueNode<ContentType> wird erschaffen.
* Der Inhalt wird per Parameter gesetzt. Der Verweis ist leer.
*
* @param pContent das Inhaltselement des Knotens vom Typ ContentType
*/
public QueueNode(ContentType pContent) {
content = pContent;
nextNode = null;
}
/**
* Der Verweis wird auf das Objekt, das als Parameter uebergeben wird,
* gesetzt.
*
* @param pNext der Nachfolger des Knotens
*/
public void setNext(QueueNode pNext) {
nextNode = pNext;
}
/**
* Liefert das naechste Element des aktuellen Knotens.
*
* @return das Objekt vom Typ QueueNode, auf das der aktuelle Verweis zeigt
*/
public QueueNode getNext() {
return nextNode;
}
/**
* Liefert das Inhaltsobjekt des Knotens vom Typ ContentType.
*
* @return das Inhaltsobjekt des Knotens
*/
public ContentType getContent() {
return content;
}
}
/* ----------- Ende der privaten inneren Klasse -------------- */
private QueueNode head;
private QueueNode tail;
/**
* Eine leere Schlange wird erzeugt.
* Objekte, die in dieser Schlange verwaltet werden, muessen vom Typ
* ContentType sein.
*/
public Queue() {
head = null;
tail = null;
}
/**
* Die Anfrage liefert den Wert true, wenn die Schlange keine Objekte enthaelt,
* sonst liefert sie den Wert false.
*
* @return true, falls die Schlange leer ist, sonst false
*/
public boolean isEmpty() {
return head == null;
}
/**
* Das Objekt pContentType wird an die Schlange angehaengt.
* Falls pContentType gleich null ist, bleibt die Schlange unveraendert.
*
* @param pContent
* das anzuhaengende Objekt vom Typ ContentType
*/
public void enqueue(ContentType pContent) {
if (pContent != null) {
QueueNode newNode = new QueueNode(pContent);
if (this.isEmpty()) {
head = newNode;
tail = newNode;
} else {
tail.setNext(newNode);
tail = newNode;
}
}
}
/**
* Das erste Objekt wird aus der Schlange entfernt.
* Falls die Schlange leer ist, wird sie nicht veraendert.
*/
public void dequeue() {
if (!this.isEmpty()) {
head = head.getNext();
if (this.isEmpty()) {
head = null;
tail = null;
}
}
}
/**
* Die Anfrage liefert das erste Objekt der Schlange.
* Die Schlange bleibt unveraendert.
* Falls die Schlange leer ist, wird null zurueckgegeben.
*
* @return das erste Objekt der Schlange vom Typ ContentType oder null,
* falls die Schlange leer ist
*/
public ContentType front() {
if (this.isEmpty()) {
return null;
} else {
return head.getContent();
}
}
}

BIN
SelectionListener.class Normal file

Binary file not shown.

7
SelectionListener.ctxt Normal file
View File

@ -0,0 +1,7 @@
#BlueJ class context
comment0.target=SelectionListener
comment0.text=\r\n\ Listener-INterface,\ um\ auf\ \u00C4nderungen\ der\ Auswahlboxen\ im\ GUI\ zu\ reagieren.\r\n
comment1.params=pList\ pNewValue
comment1.target=void\ selectionChanged(java.lang.String,\ java.lang.String)
comment1.text=\r\n\ Wird\ aufgerufen,\ wenn\ sich\ die\ Auswahl\ \u00E4ndert.\r\n\ @param\ pList\ Name\ der\ Auswahlbox\r\n\ @param\ pNewValue\ Neuer\ Wert\r\n
numComments=2

BIN
Stundenplan.class Normal file

Binary file not shown.

12
Stundenplan.ctxt Normal file
View File

@ -0,0 +1,12 @@
#BlueJ class context
comment0.target=Stundenplan
comment1.params=args
comment1.target=void\ main(java.lang.String[])
comment1.text=\r\n\ Main-Methode\ um\ das\ Programm\ (au\u00DFerhalb\ von\ BlueJ)\ zu\ starten.\r\n\r\n\ @param\ args\r\n
comment2.params=
comment2.target=Stundenplan()
comment2.text=\r\n\ Konstruktor\ des\ Hauptprogramms\r\n
comment3.params=pList\ pNewValue
comment3.target=void\ selectionChanged(java.lang.String,\ java.lang.String)
comment3.text=\r\n\ Methode\ \ um\ auf\ \u00C4nderungen\ in\ der\ GUi\ zu\ reagieren.\ Sobald\ der\ nutzer\ die\r\n\ Auswahl\ \u00E4ndert,\ wird\ diese\ Methode\ aufgerufen.\ Der\ erste\ Parameter\ ist\ der\r\n\ Name\ der\ Auswahlliste,\ die\ sich\ ge\u00E4ndert\ hat\ (erster\ Parameter\ von\r\n\ {@link\ StundenplanGUI\#addFilter(String,\ String[])}\ oben)\ und\ der\ zweite\ ist\r\n\ der\ neue\ Wert\ der\ Auswahl.\r\n\r\n\ @param\ pList\ \ \ \ \ Name\ der\ Auswahlliste\r\n\ @param\ pNewValue\ Neuer\ Wert\ der\ Auswahl\r\n
numComments=4

1
Stundenplan.erdplus Normal file
View File

@ -0,0 +1 @@
{"version":2,"www":"erdplus.com","shapes":[{"type":"Entity","details":{"name":"Lehrer","type":"regular","x":559,"y":352.5,"isDisjointed":true,"isTotalSpecialization":true,"isSubtype":false,"supertypeEntityId":null,"id":1}},{"type":"Entity","details":{"name":"Klassen","type":"regular","x":560,"y":148.5,"isDisjointed":true,"isTotalSpecialization":true,"isSubtype":false,"supertypeEntityId":null,"id":3}},{"type":"Entity","details":{"name":"Unterrichtsstunden","type":"regular","x":888,"y":149.5,"isDisjointed":true,"isTotalSpecialization":true,"isSubtype":false,"supertypeEntityId":null,"id":4}},{"type":"Attribute","details":{"name":"Fach","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":886,"y":36.5,"id":6}},{"type":"Attribute","details":{"name":"Tag","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":1044,"y":38.5,"id":7}},{"type":"Attribute","details":{"name":"Stunde","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":1056,"y":152.5,"id":8}},{"type":"Attribute","details":{"name":"Jahrgang","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":561,"y":33.5,"id":12}},{"type":"Attribute","details":{"name":"Zug","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":373,"y":148.5,"id":14}},{"type":"Attribute","details":{"name":"Kürzel","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":381,"y":359.5,"id":18}},{"type":"Attribute","details":{"name":"Vorname","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":390,"y":465.5,"id":19}},{"type":"Attribute","details":{"name":"Nachname","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":561,"y":478.5,"id":20}},{"type":"Attribute","details":{"name":"Raum","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":884,"y":328.5,"id":24}},{"type":"Relationship","details":{"name":"unterrichtet in","isIdentifying":false,"x":732,"y":263,"slots":[{"slotIndex":0,"minimum":"","maximum":"","participation":"unspecified","cardinality":"many","role":"","entityId":1},{"slotIndex":1,"minimum":"","maximum":"","participation":"unspecified","cardinality":"one","role":"","entityId":4}],"id":30}},{"type":"Relationship","details":{"name":"sind in","isIdentifying":false,"x":733,"y":150,"slots":[{"slotIndex":0,"minimum":"","maximum":"","participation":"unspecified","cardinality":"many","role":"","entityId":3},{"slotIndex":1,"minimum":"","maximum":"","participation":"unspecified","cardinality":"many","role":"","entityId":4}],"id":33}},{"type":"Attribute","details":{"name":"ID","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":true,"x":747,"y":37.5,"id":42}},{"type":"Relationship","details":{"name":"unterrichtet","isIdentifying":false,"x":559,"y":253,"slots":[{"slotIndex":0,"minimum":"","maximum":"","participation":"unspecified","cardinality":"many","role":"","entityId":1},{"slotIndex":1,"minimum":"","maximum":"","participation":"unspecified","cardinality":"many","role":"","entityId":3}],"id":54}},{"type":"Attribute","details":{"name":"Bezeichner","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":383,"y":34,"id":57}}],"connectors":[{"type":"Connector","details":{"id":43},"source":6,"destination":4},{"type":"Connector","details":{"id":44},"source":7,"destination":4},{"type":"Connector","details":{"id":45},"source":8,"destination":4},{"type":"Connector","details":{"id":46},"source":12,"destination":3},{"type":"Connector","details":{"id":47},"source":14,"destination":3},{"type":"Connector","details":{"id":48},"source":18,"destination":1},{"type":"Connector","details":{"id":49},"source":19,"destination":1},{"type":"Connector","details":{"id":50},"source":20,"destination":1},{"type":"RelationshipConnector","details":{"slotIndex":0,"id":31},"source":1,"destination":30},{"type":"RelationshipConnector","details":{"slotIndex":1,"id":32},"source":4,"destination":30},{"type":"RelationshipConnector","details":{"slotIndex":0,"id":34},"source":3,"destination":33},{"type":"RelationshipConnector","details":{"slotIndex":1,"id":35},"source":4,"destination":33},{"type":"Connector","details":{"id":52},"source":42,"destination":4},{"type":"Connector","details":{"id":53},"source":24,"destination":4},{"type":"RelationshipConnector","details":{"slotIndex":0,"id":55},"source":1,"destination":54},{"type":"RelationshipConnector","details":{"slotIndex":1,"id":56},"source":3,"destination":54},{"type":"Connector","details":{"id":58},"source":57,"destination":3}],"width":2000,"height":1000}

BIN
StundenplanGUI.class Normal file

Binary file not shown.

40
StundenplanGUI.ctxt Normal file
View File

@ -0,0 +1,40 @@
#BlueJ class context
comment0.target=StundenplanGUI
comment0.text=\r\n\ GUI\ f\u00FCr\ das\ Stundenplanprogramm.\r\n
comment1.params=
comment1.target=StundenplanGUI()
comment1.text=\r\n\ Erstellt\ ein\ neues\ GUI,\ zeigt\ es\ aber\ noch\ nicht\ an.\ Das\ Hauptprogramm\r\n\ muss\ dies\ explizit\ mit\ {@link\ \#setVisible(boolean)}\ tun.\r\n
comment10.params=
comment10.target=void\ addComponents()
comment10.text=\r\n\ F\u00FCgt\ dem\ GUI\ die\ Standard-Komponenten\ hinzu.\r\n
comment11.params=pLabel
comment11.target=javax.swing.JLabel\ makeLabel(java.lang.String)
comment11.text=\r\n\ Erzeugt\ ein\ Text-Label\ mit\ der\ Standard-Schrift\ und\ dem\ angegebenen\ Text.\r\n\ @param\ pLabel\r\n\ @return\r\n
comment12.params=pLabel\ pFont
comment12.target=javax.swing.JLabel\ makeLabel(java.lang.String,\ java.awt.Font)
comment12.text=\r\n\ Erzeugt\ ein\ Text-Label\ mit\ der\ angegebenen\ Schrift\ und\ dem\ Text.\r\n\ @param\ pLabel\r\n\ @param\ pFont\r\n\ @return\r\n
comment2.params=pName\ pOptions
comment2.target=void\ addFilter(java.lang.String,\ java.lang.String[])
comment2.text=\r\n\ F\u00FCgt\ der\ Seitenleister\ eine\ neue\ Auswahlbox\ hinzu.\ Der\ Name\ wird\ bei\r\n\ \u00C4nderungen\ an\ den\ {@link\ SelectionListener}\ \u00FCbergeben,\ um\ verschiedene\r\n\ Boxen\ unterscheiden\ zu\ k\u00F6nnen.\r\n\ @param\ pName\ Name\ des\ Filters\r\n\ @param\ pOptions\ M\u00F6gliche\ Optionen\r\n
comment3.params=pName
comment3.target=void\ removeFilter(java.lang.String)
comment3.text=\r\n\ Entfernt\ die\ Auswahlbox\ mit\ dem\ angegebnen\ Namen\ aus\ der\ Seitenleiste.\r\n\ @param\ pName\r\n
comment4.params=
comment4.target=void\ removeAllFilters()
comment4.text=\r\n\ Entfernt\ alle\ Auswahlboxen\ aus\ der\ Seitenleiste.\r\n
comment5.params=pCol\ pRow\ pTitle\ pSubtitle\ pText\ pFooter\ pColor
comment5.target=void\ addLesson(int,\ int,\ java.lang.String,\ java.lang.String,\ java.lang.String,\ java.lang.String,\ java.awt.Color)
comment5.text=\r\n\ F\u00FCgt\ eine\ neue\ Stunde\ in\ den\ Plan\ ein.\ Exisitiert\ in\ der\ angegebenen\ Zelle\r\n\ schon\ eine\ Stunde,\ wird\ diese\ entfernt\ und\ durch\ die\ neue\ ersetzt.\r\n\r\n\ Eine\ Stunde\ in\ der\ GUI\ hat\ verschiedene\ Bereiche,\ in\ denen\ Informationen\r\n\ (Text)\ untergebracht\ werden\ k\u00F6nnen,\ sowie\ eine\ Farbe.\r\n\r\n\ Nachdem\ eine\ oder\ mehrere\ Stunden\ hinzugef\u00FCgt\ wurden,\ sollte\ das\ Fenster\ mit\r\n\ {@link\ JFrame\#revalidate()}\ und\ {@link\ JFrame\#repaint()}\ neu\ gezeichnet\ werden.\r\n\r\n\ @param\ pCol\ Spaltenindex\ (0\=Montag,\ ...,\ 4\=Freitag)\r\n\ @param\ pRow\ Zeilenindex\ (0\=1.\ Stunde,\ ...,\ 9\=10.\ Stunde)\r\n\ @param\ pTitle\ \u00DCberschrift\r\n\ @param\ pSubtitle\ Untertitel\r\n\ @param\ pText\ Beschreibung\r\n\ @param\ pFooter\ Fu\u00DFzeile\r\n\ @param\ pColor\ Farbe\ der\ Stunde\ im\ Plan\r\n
comment6.params=pCol\ pRow
comment6.target=void\ removeLesson(int,\ int)
comment6.text=\r\n\ Entfernt\ die\ Stunde\ aus\ der\ angebenen\ Zelle.\r\n\ @param\ pCol\ Spaltenindex\ (0\=Montag,\ ...,\ 4\=Freitag)\r\n\ @param\ pRow\ Zeilenindex\ (0\=1.\ Stunde,\ ...,\ 9\=10.\ Stunde)\r\n
comment7.params=
comment7.target=void\ removeAllLessons()
comment7.text=\r\n\ Entfernt\ alle\ derzeit\ angezeigten\ Stunden\ aus\ dem\ GUI.\r\n
comment8.params=pSelectionListener
comment8.target=void\ addSelectionListener(SelectionListener)
comment8.text=\r\n\ Setzt\ den\ Listener,\ der\ \u00FCber\ \u00C4nderungen\ der\ Auswahlboxen\ informiert\ wird.\r\n\ @param\ pSelectionListener\r\n
comment9.params=pActionEvent
comment9.target=void\ actionPerformed(java.awt.event.ActionEvent)
comment9.text=\r\n\ Leitet\ die\ \u00C4nderungen\ der\ Auswahlboxen\ an\ den\ {@link\ SelectionListener}\r\n\ weiter.\r\n\ @param\ pActionEvent\r\n
numComments=13

View File

@ -162,8 +162,8 @@ public class StundenplanGUI extends JFrame implements ActionListener {
* Entfernt alle derzeit angezeigten Stunden aus dem GUI.
*/
public void removeAllLessons() {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 5; j++) {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 10; j++) {
removeLesson(i, j);
}
}

319
package.bluej Normal file
View File

@ -0,0 +1,319 @@
#BlueJ package file
dependency1.from=Lunk
dependency1.to=Welt
dependency1.type=UsesDependency
dependency10.from=Karte_0
dependency10.to=Feld
dependency10.type=UsesDependency
dependency11.from=Karte_1
dependency11.to=Welt
dependency11.type=UsesDependency
dependency12.from=Karte_1
dependency12.to=Wassereimer
dependency12.type=UsesDependency
dependency13.from=Karte_1
dependency13.to=Feld
dependency13.type=UsesDependency
dependency14.from=Karte_2
dependency14.to=Welt
dependency14.type=UsesDependency
dependency15.from=Karte_2
dependency15.to=Ork
dependency15.type=UsesDependency
dependency16.from=Karte_2
dependency16.to=Feld
dependency16.type=UsesDependency
dependency17.from=Karte_3
dependency17.to=Welt
dependency17.type=UsesDependency
dependency18.from=Karte_3
dependency18.to=Feld
dependency18.type=UsesDependency
dependency19.from=Karte_3
dependency19.to=Heiltrank
dependency19.type=UsesDependency
dependency2.from=Lunk
dependency2.to=Gegenstand
dependency2.type=UsesDependency
dependency20.from=Karte_3
dependency20.to=TrankAngriff
dependency20.type=UsesDependency
dependency21.from=Karte_3
dependency21.to=Zombie
dependency21.type=UsesDependency
dependency22.from=Karte_3
dependency22.to=Troll
dependency22.type=UsesDependency
dependency23.from=Gegenstand
dependency23.to=Karte
dependency23.type=UsesDependency
dependency24.from=Gegenstand
dependency24.to=Lunk
dependency24.type=UsesDependency
dependency25.from=Gegenstand
dependency25.to=Gegner
dependency25.type=UsesDependency
dependency26.from=Gegner
dependency26.to=Karte
dependency26.type=UsesDependency
dependency27.from=Zombie
dependency27.to=Karte
dependency27.type=UsesDependency
dependency28.from=Zombie
dependency28.to=Troll
dependency28.type=UsesDependency
dependency29.from=Zombie
dependency29.to=Lunk
dependency29.type=UsesDependency
dependency3.from=Karte
dependency3.to=Welt
dependency3.type=UsesDependency
dependency30.from=Ork
dependency30.to=Karte
dependency30.type=UsesDependency
dependency31.from=Ork
dependency31.to=Lunk
dependency31.type=UsesDependency
dependency32.from=Heiltrank
dependency32.to=Karte
dependency32.type=UsesDependency
dependency33.from=Heiltrank
dependency33.to=Lunk
dependency33.type=UsesDependency
dependency34.from=Heiltrank
dependency34.to=Gegner
dependency34.type=UsesDependency
dependency35.from=Troll
dependency35.to=Karte
dependency35.type=UsesDependency
dependency36.from=Troll
dependency36.to=Lunk
dependency36.type=UsesDependency
dependency37.from=Wassereimer
dependency37.to=Karte
dependency37.type=UsesDependency
dependency38.from=Wassereimer
dependency38.to=Lunk
dependency38.type=UsesDependency
dependency39.from=Wassereimer
dependency39.to=Feld
dependency39.type=UsesDependency
dependency4.from=Karte
dependency4.to=Gegenstand
dependency4.type=UsesDependency
dependency40.from=Wassereimer
dependency40.to=Gegner
dependency40.type=UsesDependency
dependency41.from=TrankAngriff
dependency41.to=Karte
dependency41.type=UsesDependency
dependency42.from=TrankAngriff
dependency42.to=Lunk
dependency42.type=UsesDependency
dependency43.from=TrankAngriff
dependency43.to=Gegner
dependency43.type=UsesDependency
dependency44.from=Welt
dependency44.to=Lunk
dependency44.type=UsesDependency
dependency45.from=Welt
dependency45.to=Karte
dependency45.type=UsesDependency
dependency46.from=Welt
dependency46.to=Karte_0
dependency46.type=UsesDependency
dependency47.from=Welt
dependency47.to=Karte_1
dependency47.type=UsesDependency
dependency48.from=Welt
dependency48.to=Karte_2
dependency48.type=UsesDependency
dependency49.from=Welt
dependency49.to=Karte_3
dependency49.type=UsesDependency
dependency5.from=Karte
dependency5.to=Gegner
dependency5.type=UsesDependency
dependency50.from=Welt
dependency50.to=Feld
dependency50.type=UsesDependency
dependency51.from=Welt
dependency51.to=Gegenstand
dependency51.type=UsesDependency
dependency52.from=Welt
dependency52.to=Gegner
dependency52.type=UsesDependency
dependency53.from=Welt
dependency53.to=Zombie
dependency53.type=UsesDependency
dependency54.from=Welt
dependency54.to=Ork
dependency54.type=UsesDependency
dependency55.from=Zulda
dependency55.to=Welt
dependency55.type=UsesDependency
dependency56.from=Zulda
dependency56.to=Lunk
dependency56.type=UsesDependency
dependency6.from=Karte
dependency6.to=Feld
dependency6.type=UsesDependency
dependency7.from=Karte_0
dependency7.to=Welt
dependency7.type=UsesDependency
dependency8.from=Karte_0
dependency8.to=Heiltrank
dependency8.type=UsesDependency
dependency9.from=Karte_0
dependency9.to=Troll
dependency9.type=UsesDependency
editor.fx.0.height=0
editor.fx.0.width=0
editor.fx.0.x=0
editor.fx.0.y=0
objectbench.height=87
objectbench.width=1240
package.divider.horizontal=0.6
package.divider.vertical=0.8422818791946308
package.editor.height=482
package.editor.width=1116
package.editor.x=0
package.editor.y=25
package.frame.height=695
package.frame.width=1280
package.numDependencies=56
package.numTargets=18
package.showExtends=true
package.showUses=true
project.charset=UTF-8
readme.height=58
readme.name=@README
readme.width=47
readme.x=10
readme.y=10
target1.height=50
target1.name=Lunk
target1.showInterface=false
target1.type=ClassTarget
target1.width=80
target1.x=170
target1.y=120
target10.height=50
target10.name=Karte_1
target10.showInterface=false
target10.type=ClassTarget
target10.width=80
target10.x=1300
target10.y=240
target11.height=50
target11.name=Ork
target11.showInterface=false
target11.type=ClassTarget
target11.width=80
target11.x=1320
target11.y=650
target12.height=70
target12.name=Wassereimer
target12.showInterface=false
target12.type=ClassTarget
target12.width=120
target12.x=190
target12.y=670
target13.height=50
target13.name=Gegner
target13.showInterface=false
target13.type=AbstractTarget
target13.width=80
target13.x=1190
target13.y=680
target14.height=50
target14.name=Feld
target14.showInterface=false
target14.type=ClassTarget
target14.width=80
target14.x=1250
target14.y=100
target15.height=50
target15.name=Karte_2
target15.showInterface=false
target15.type=ClassTarget
target15.width=80
target15.x=1200
target15.y=240
target16.height=70
target16.name=Karte_3
target16.showInterface=false
target16.type=ClassTarget
target16.width=120
target16.x=1230
target16.y=310
target17.height=50
target17.name=TrankAngriff
target17.showInterface=false
target17.type=ClassTarget
target17.width=100
target17.x=160
target17.y=580
target18.height=50
target18.name=Welt
target18.showInterface=false
target18.type=ClassTarget
target18.width=80
target18.x=530
target18.y=140
target2.height=50
target2.name=Karte
target2.showInterface=false
target2.type=ClassTarget
target2.width=80
target2.x=1300
target2.y=170
target3.height=50
target3.name=Troll
target3.showInterface=false
target3.type=ClassTarget
target3.width=80
target3.x=1100
target3.y=730
target4.height=50
target4.name=FigureMaker
target4.showInterface=false
target4.type=ClassTarget
target4.width=100
target4.x=450
target4.y=80
target5.height=70
target5.name=Zombie
target5.showInterface=false
target5.type=ClassTarget
target5.width=120
target5.x=1320
target5.y=730
target6.height=50
target6.name=Zulda
target6.showInterface=false
target6.type=ClassTarget
target6.width=80
target6.x=580
target6.y=80
target7.height=50
target7.name=Heiltrank
target7.showInterface=false
target7.type=ClassTarget
target7.width=100
target7.x=30
target7.y=550
target8.height=50
target8.name=Gegenstand
target8.showInterface=false
target8.type=AbstractTarget
target8.width=100
target8.x=20
target8.y=710
target9.height=50
target9.name=Karte_0
target9.showInterface=false
target9.type=ClassTarget
target9.width=80
target9.x=1200
target9.y=170

Binary file not shown.