This commit is contained in:
Asecave
2021-10-05 16:55:26 +02:00
parent 6559ef501d
commit 9facddedf3
12 changed files with 148 additions and 154 deletions

4
.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
/.metadata/
Stundenplan/.classpath
Stundenplan/.project
Stundenplan/.settings/

View File

@@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="sqlite-jdbc-3.36.0.3" level="project" />
</component>
</module>

1
Stundenplan/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/bin/

View File

0
QueryResult.java → Stundenplan/src/QueryResult.java Executable file → Normal file
View File

284
Queue.java → Stundenplan/src/Queue.java Executable file → Normal file
View File

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

View File

@@ -39,6 +39,7 @@ public class Stundenplan implements SelectionListener {
// Lehrer abfragen und ein Auswahlfeld erstellen, dass in der // Lehrer abfragen und ein Auswahlfeld erstellen, dass in der
// GUI angezeigt wird, um den angezeigten Stundenplan anzupassen // GUI angezeigt wird, um den angezeigten Stundenplan anzupassen
dbc.executeStatement("SELECT kuerzel FROM lehrer"); dbc.executeStatement("SELECT kuerzel FROM lehrer");
System.out.println(dbc.getErrorMessage());
r = dbc.getCurrentQueryResult(); r = dbc.getCurrentQueryResult();
String[] teachers = new String[r.getRowCount()]; String[] teachers = new String[r.getRowCount()];
for (int i = 0; i < r.getRowCount(); i++) { for (int i = 0; i < r.getRowCount(); i++) {

View File