From eac089bb6e4344963e3c831d32352cedd42bdf95 Mon Sep 17 00:00:00 2001 From: Maxim Derksen Date: Thu, 7 Oct 2021 10:21:45 +0200 Subject: [PATCH] Datenbank fertiggestellt --- DatabaseConnector.class | Bin 0 -> 3667 bytes DatabaseConnector.ctxt | 19 +++ QueryResult.class | Bin 0 -> 1079 bytes QueryResult.ctxt | 22 +++ Queue$QueueNode.class | Bin 0 -> 1192 bytes Queue.class | Bin 0 -> 1541 bytes Queue.ctxt | 19 +++ Queue.java | 284 +++++++++++++++++------------------ SelectionListener.class | Bin 0 -> 184 bytes SelectionListener.ctxt | 7 + Stundenplan.class | Bin 0 -> 3021 bytes Stundenplan.ctxt | 12 ++ Stundenplan.erdplus | 1 + StundenplanGUI.class | Bin 0 -> 7159 bytes StundenplanGUI.ctxt | 40 +++++ StundenplanGUI.java | 4 +- package.bluej | 319 ++++++++++++++++++++++++++++++++++++++++ stundenplan.db | Bin 40960 -> 57344 bytes 18 files changed, 583 insertions(+), 144 deletions(-) create mode 100644 DatabaseConnector.class create mode 100644 DatabaseConnector.ctxt create mode 100644 QueryResult.class create mode 100644 QueryResult.ctxt create mode 100644 Queue$QueueNode.class create mode 100644 Queue.class create mode 100644 Queue.ctxt create mode 100644 SelectionListener.class create mode 100644 SelectionListener.ctxt create mode 100644 Stundenplan.class create mode 100644 Stundenplan.ctxt create mode 100644 Stundenplan.erdplus create mode 100644 StundenplanGUI.class create mode 100644 StundenplanGUI.ctxt create mode 100644 package.bluej diff --git a/DatabaseConnector.class b/DatabaseConnector.class new file mode 100644 index 0000000000000000000000000000000000000000..4cd65a119fbbc21fcb32d3bc823a0d115491dbbf GIT binary patch literal 3667 zcma)8TW}j!8UBuLM_R4p#I}^EN!_G4!B(84h16~A#6XmUxRn#9a-AkAZPxO}ku7PJ z-BsdnX(^;B1xjft5DFA17jr8E15N65U^)Z5bOr`qm_EV-!wiq`L}r5d&aSLWtO8?e z&)NU{_y7CTC_VQMF67OM3Z5Q@+_MEopgViOaE)oh zF>5)nY#s(HV-o`5%7kSzb}=RptE}*;{X>pvmyHtD$0`$s<6N-p8RjVG8u|Hgqf#@! z)?6_2Ro5ihHA~DWy=jvU6_+URM|Wbjmv7s;K-W&K&PtubF{!P`XHXUN>y$HHdLPeQ z#cHXXv8u}CI$veRqaC5sG}A(xyjW4R5RGz?s?b%FYN906bZEW~l>%Bl)z&dFN9UYI zs7=n*6F{vUmE5sxogk3RwiJ%O)Uvn9cVurHW1}Myk4rqke9oF~rVU&>`v-0TY$rJn z+O}nnuK>4)JYEO1LN}Z*S`I54>{o@+a#q#On}-StWXTl_)UmQtDbO*1DIHs}O~<>@ zPk37P>`qpt;F>${Kd?U|@o^nb;u8XE_gj|hxVBLlH{G+=jMEvxC!@He<0)L0cv{D& z@QjXkp^x=%I9CU*j!$D!;xjrvi)VFw4$tZMJf7F_0=^*eqK+@(OSICE^gB|=mvKeM zS8#=>_UfzSC45!K*A)5dcv;6c)ay6#Egi3@U>*X4k2m$a3i8`T&Z-o&m^(T>$MM3U z;CY~c*;MKVv5r>es^M#<$W|f(&ses?sle8D-O^MuPhdpDcko>TYi?#bKkR3HSO}~y z8S|>C^M-r8;GX4<;4Hf|u&8)c3>o3<3}>N8Vd;GH$995h(j z02*cM81!r0%EO%GZIdITDRs#ethS_-+GK6Uyu)ZYDWKC{Q@&d?)#=m}_xy4VzsY-> z4c6HRTJN0fx7BmA>QrEjm!GB~#Af0UZIH9Zv{_U>kG1W=b#-|)oP02Z%H{%*MNJGU zMh3r3Dh1_pYGmD#0w0Pas)=R6IasQ=7YY6|wxxz*Ywy=s$v9)yRPF0;H|5&QqBf*~ zDT(i?j{c!QUjyES@_B3CtbHSWU>-8^u4VJ{{9}GHvz9eqt*~HY{6^azw$)s|(u}Q| z4u5zYHp(+a)9LdCN17U=hTtYji=aws8}{ZU+eESQ}CD*&s*C5j3H3ZZn*cEym;p6EY z*AW3;hkOmuMXVW)q*IZr(8%yJ%CDiVK3=_o7^H@6+yR>rLXx}nJl%>OTHM0ZKHA$x zd%LiMf52hdRQx+hp#j{*zq`4r-Fqk_yxn`To8BqfJ){M_-4J&nZ+9 zL_}hX#9G0h{||0s8kOzAFrN%J@F$v!17dR{)buY9T|!)7d~o{`^Z=*(KL(f3A#h~J z64nSTp;KTelnDJ2Ylp-B5(y5;giM59!QH8FLi&se89Kd$bphm3kyct4X_ur}T>kwV z=ss}`J;O3M6s1%`(A*whXDm3RB{ZdTLn@Zgb|f^VE~!K{ivBGnQ?aX9pNNJ|4@DQ3 zf0KwNLchg^z_1cb$*V}cgkB}7_P4!>jXAa1q|^*)i_3pzP`3-D-$3t)R4f%vMXuov z)_V~#|6~#RczUo=UQKihRmzZ8-WNPD-N%&gfrfo7?fZEx&alXbSh6uv?o|os@d$p6$M8Fx#vfqdZA{~@yxjjC zGx#U(-2XyBXqXorD2Z-3^r#}%!xneI^`LYGo%G@!j1Vl6pXW{3%biABgYK~aW>V+R z9~nuy0A9Xgc%Ibf(7`)cf>$s#B9he9QOmD#Hd%94t<8 literal 0 HcmV?d00001 diff --git a/DatabaseConnector.ctxt b/DatabaseConnector.ctxt new file mode 100644 index 0000000..4c65897 --- /dev/null +++ b/DatabaseConnector.ctxt @@ -0,0 +1,19 @@ +#BlueJ class context +comment0.target=DatabaseConnector +comment0.text=\r\n\

\r\n\ Materialien\ zu\ den\ zentralen\ NRW-Abiturpruefungen\ im\ Fach\ Informatik\ ab\ 2018\r\n\

\r\n\

\r\n\ Klasse\ DatabaseConnector\r\n\

\r\n\

\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\

\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 diff --git a/QueryResult.class b/QueryResult.class new file mode 100644 index 0000000000000000000000000000000000000000..0f04b2990e34118eb6aa35719d7d96b50175cbd1 GIT binary patch literal 1079 zcmaJfgs5S(Y{qe$q+*aJTbG0!%{tt>9yefwr+XW#nQ@1N%Yo}y7i4(kPEQJ0@P@^d$jjXdrN zWR48q5U3m;c8-ltM$0kWL96SJZFlfYpk#VZFm(5fp>-m#_&?0S=}2O7TefTa&jq#{ zX_6@lDWztQ#@gPIB~b3zuC*5o`_}lt=sT<|bUf2=ddAq6=eU^hKiKR(+j$pQpMeZsABWb$L zxBX+wjC%L5&gJL$Tc}W^05e5ugpo3g@>atvI5abd_Zh~D{sTgPFoB{!oIuq#C&+wb zT|t@ODpi4-L@rZph0IkfVh!`G>JcB;u)q_Qcr!zFnN`?P39}_;Dyvmok2|**B`T|b zhw_z4)G8MiH$rJG0>sh+H)tWUog}MQ$(yO<f;NPq9mo& X4&UV!YS>M*s$XtZqx5ZxE2#Ye+6uj; literal 0 HcmV?d00001 diff --git a/QueryResult.ctxt b/QueryResult.ctxt new file mode 100644 index 0000000..22f0d6b --- /dev/null +++ b/QueryResult.ctxt @@ -0,0 +1,22 @@ +#BlueJ class context +comment0.target=QueryResult +comment0.text=\r\n\

\r\n\ Materialien\ zu\ den\ zentralen\ NRW-Abiturpruefungen\ im\ Fach\ Informatik\ ab\ 2018\r\n\

\r\n\

\r\n\ Klasse\ QueryResult\r\n\

\r\n\

\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\

\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 diff --git a/Queue$QueueNode.class b/Queue$QueueNode.class new file mode 100644 index 0000000000000000000000000000000000000000..70cf8e76aaa606f96c472401979f476584676436 GIT binary patch literal 1192 zcmb7CU2hUW6g|VoF5p%uMYOeIOHr3?3-v`GY-&ssqY1&75*~b8aDv<5LfFOVtG`GS z8xtS=0sbiCncZdiX!{@uJ9qB6bI!SU=Fi_>zX3eO<1Ess=b*t-(Z2c|=s48T5YYQ0 z*O#s@P;8yspX}z)b_dNjy>r?3p9y5ooPlfm(}@&V>zszQoiAfaEaS@0etYzuQ13ONn^1@^FKIV?T7}$TAtF59oO+s1h&m6 zciC~hE08)3Jmp)CE8EkLJvr&vy&+u|Tcf@`?AjAY?W1H$39*@R)SN(hxs1(5r3G`z zu+q{!>9;usfl_2@p;1+k9*6K=1Yh5CKsT7tZJ6~d23MVBucr~nktA-W#1mKCYu>Cc z^}L5qcmY)A=W9LRZUJJ zC=y7T^)7b!1~tCUBoc}Td_vqMkmH|}@jhQDC`Do^=8D)LUgGX6*Cf}9wSNI&{Y1hN z7f7m4$~u@u-&v8wEq=EGwOy**A^RqIs*Lt<4>gpDm&r#q+$O4i6`~pDHW|;ce2gid zq2n$3x{Gb@m9KYP6_ciXrRMso9ynyzjRid|*3;-jbv@TpSg5D4d_0i~qx+m+sP}?9 zLFTme1F3He!gjSF`6Q4s!h%Rj3CuG}AZ%loRaFk;GHr5|_W6I%)@bMfMG|<3N5N`h Njcbl_X_&N<_y@1u*e3u0 literal 0 HcmV?d00001 diff --git a/Queue.class b/Queue.class new file mode 100644 index 0000000000000000000000000000000000000000..99c3d008be93df58fc9e8092f65e26c7cbaa6f63 GIT binary patch literal 1541 zcmZuxTTc@~6#k~&vb5b&K)|~KqLu~0`wc`BqKOGq4Md|4CJPL(Shv`26-;>7_zUz8 z_~L^miisvBzG&i4GRF9w*+p7wn$FHSbLM=Pv+a-HpS}P%hszmcF_K0Gqp}>gaUuf? zCo>FA$?mi)XJk2Rv;@2Z63kmb_|JR~4*f?JX#DOqr5_zlCGG zHRCS@URbN}R&R7ZK08?sLLG#&>#KTfVx+#@3O&E1&@%1^emJ3!EDYXe|4Dbf&G0<-1buwpv;0LQ_@NGvkcm1N zQ&L@=;+}H3cC+FR&lR6}_al_6J|H1W@*Pu2^lL5H05LUR~Q5j-RAbG|As>aaSRuq0E5 gm5${PvQ=b+iy<~nU>L^?0RKCY<1RxM7FP#}KmEcLs{jB1 literal 0 HcmV?d00001 diff --git a/Queue.ctxt b/Queue.ctxt new file mode 100644 index 0000000..d277cda --- /dev/null +++ b/Queue.ctxt @@ -0,0 +1,19 @@ +#BlueJ class context +comment0.target=Queue +comment0.text=\r\n\

\r\n\ Materialien\ zu\ den\ zentralen\ NRW-Abiturpruefungen\ im\ Fach\ Informatik\ ab\ 2018\r\n\

\r\n\

\r\n\ Generische\ Klasse\ Queue\r\n\

\r\n\

\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\

\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 diff --git a/Queue.java b/Queue.java index 5a6ef1f..b6f9c59 100755 --- a/Queue.java +++ b/Queue.java @@ -1,142 +1,142 @@ -/** - *

- * Materialien zu den zentralen NRW-Abiturpruefungen im Fach Informatik ab 2018 - *

- *

- * Generische Klasse Queue - *

- *

- * 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. - *

- * - * @author Qualitaets- und UnterstuetzungsAgentur - Landesinstitut fuer Schule - * @version Generisch_02 2014-02-21 - */ -public class Queue { - - /* --------- Anfang der privaten inneren Klasse -------------- */ - - private class QueueNode { - - private ContentType content = null; - private QueueNode nextNode = null; - - /** - * Ein neues Objekt vom Typ QueueNode 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(); - } - } -} +/** + *

+ * Materialien zu den zentralen NRW-Abiturpruefungen im Fach Informatik ab 2018 + *

+ *

+ * Generische Klasse Queue + *

+ *

+ * 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. + *

+ * + * @author Qualitaets- und UnterstuetzungsAgentur - Landesinstitut fuer Schule + * @version Generisch_02 2014-02-21 + */ +public class Queue { + + /* --------- Anfang der privaten inneren Klasse -------------- */ + + private class QueueNode { + + private ContentType content = null; + private QueueNode nextNode = null; + + /** + * Ein neues Objekt vom Typ QueueNode 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(); + } + } +} diff --git a/SelectionListener.class b/SelectionListener.class new file mode 100644 index 0000000000000000000000000000000000000000..a2a6eaf5a15b2b7089e8351e5c0893d881f6ee5b GIT binary patch literal 184 zcmX^0Z`VEs1_pBmPId-%b_Nbc27%(#oYdr!%=|p(jKsY3)D%Vrbq$}a#Ii*F93Wpm zxTGjEFWnkbL^F($fh#z_v?w{%Ei)&TkwGjNW|B{4aY<@kYLOnu7)Ay`3<;pM2pjy9 hvVaa?V`N}tU;?_0fq{{Qk%5_k1;k=t1(Hk*Yyf4!GAaN7 literal 0 HcmV?d00001 diff --git a/SelectionListener.ctxt b/SelectionListener.ctxt new file mode 100644 index 0000000..93a69b2 --- /dev/null +++ b/SelectionListener.ctxt @@ -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 diff --git a/Stundenplan.class b/Stundenplan.class new file mode 100644 index 0000000000000000000000000000000000000000..997d73ffb10f1ab5f463532fc0a7dbe3b3cc7a98 GIT binary patch literal 3021 zcmbVOTX!4P75;MUV;}lc`VYzj^gAOp7RyRkSC{N__UzevpZ$Gj z?{nrK-`)8Jz(e>fjx)%q;jD&p8uD?3F%!o@%xIX6L&HovHFFxCh~az;^KrycP^yI( zE~tk^H7vz3fhRRwRP&`6E-TNcG+a^hFVyg~8lF*up@!uIm%kdv3RV*kxT@h=9D`U> z?<_Tx)nIFIG*kpaD^*jVJ74gtc1hY5%dj86kQ?WV(sEItCx6=Tjb+1=S;w|z(RWi3>SRYv{%LtFY;*cSymXwvs6c0viW{pViIl+3ZM!PKV(Ij@s^C~@S%uipaTr4ay9-nKsqDhw8o7K< zT7%Q`b2EdMTy-V$x{h@nn|Myg^LT;DZzWeR3LU@1uLPp`hW(3piJT~_>%-m#t7iD@ zv}=^5j+b#m$1Aw0<5j$-<8{2DNAdGtysmN?unKzlq^Z9dF@n4Zqd# zJG>Lay95!eZfy9&S;umi-3b-*J-n~u1B~kUeGqOd#ku8c+}BY zfm>``e=5IC8yro20qMmc$h@>Tuge8T;75(5>UC4DI5xQmJmU0NG(9soz{06Z0fnwC zJL~eKW#y&kIkp$aAMl~TVxvorr<3P1$#in`_=CxGqh->^`Ag>PtBzadvTMoo(UGx- zMn)b!G1lBogG*&6~px;AMaCq+}!BAQ7sP&9#>?#j#l7GD))aD;Qfm9Ucc5kcjdZanLJzBKAI~l zyl;FBAE|EtMBu;{6w_XJ)@0-IsS`A9sB3Cd!=KfW!;Y--p3`%@zTBWGC0YBZnYBiY z`oVI>uuGQo4%8jT@0V|I<^8~MVY4Dzm^W8;{iqpl-kwH?tYKLN)0g8K{vvR28@^V# z3GDsvcG$5_7Qi2(_ap|W8B>sP zgI|I_<2;I4Jd8((eu8nvNlsfpPCwedr$bm%e-j!WCD-3#7wsnTSc9u`=pfa=$43%< zU*JQPcnv?{)S146J-`+-vq%4qjiY4Zk#J}%(ia&BfAcw>R1O2-zDP#P+{WHOirtgC zqnSVx$=o4y1ai2pie~O&@M56p4qR_xUk&?jMo91%^(-E!PY1S0JjI#-PBYeb^gw1q&G8qT5ZdWS7B@{OO^#TU|aGk*;+sn#xgcyA4yO0$m5yG%*acc zwrNWjAZgMzZGd!jo6sg*5`#w#BE+RFErcXZNZJsxkN`;&vbRlJ0wLeI_st?(?mxAE zzVEJQ{mwb}j-UDIV^09sDtAP17an);u?PZqJd7$lq0Pq~oR9GPciKGZ;O`>{>$ZQ0 zpc;?s;2(9{Q`-9{ZT{K8)B1fTj0Sun!sb~Weo}XRN{M_rgn!YQ&p7yO1k3Q8HlNex z^CA4Ja{o77{(|OxW9U0hn zs9zuhf|{OGGMkGfbBAMz8LtAUXcoA3TmSxnzWzg;3)~`bCi}hEgqIQ24Nk{S#5!Up za~-{@WUfn4HF+qWOL&6tsg99c zCZ3$?GBc+-vL`v{xc)#a=_R^$DYt}|&C(14yQO13H=mN~dmt63!k3~`HJv^{euBjd z?V!xl>5=$^Hx{GbRXgIzcy5=VqGiKjL9iz^K~3rg<4JFL=J=SGIi!jT8V6J3vBcq6 zCazTBTo^V~3>tknNj5Q zq!Ou2mvMEPeR@27Fm;kRNEbpUT^2fNKXlTC(5ccxDdMKy3Q{5|2#ie`9~2aDrV~ER z3vf6X8zbTck?BN>Mz#Y|>7;AJLLnd9DsV6~42 zwUu|mOXfQEnl1aaZ(LE8P0eJ+iThB}J82RijbrC*JhWF_UST$_+jB zMt3U1N-`KbotnwHvP7C(oWu!Nmda(WM1^(F5HKZXU;Mb2%rgDBvRqcUvJzt|-x*g{ z$!ZraRSDNK=pI1?ULh9i`S>wtTxZjnvvX0T$Lr-}bSFV)xda}ip z4btjLn{0HYT{daMUI$LQ_!FF=&P5$eJi2m~T{cBvgRy9~zZh|qRaEE4h ztGn*J&XujQ?E+buAbq=V$My>?X`HF*-|r$$&81ViTuiGCj%ky?QNi+}j28#4D?4aE z*{RJg+3m_6+0C+3JTZ{WdbzACd!^fz9*mW1Y$Dmk3_XS8NIJ65mHpD|N}u#Hz737C z%Hc}C3^;PVD>ulXD?@lM?cMD$Itja`B1d0Ft2B2E5x6l;X#3*yyX_9ebGehLaq1S? zmrC;9VCS9Qj2AaM>brTx$mTM!^pKZ3nwrSgRmpHjZgk~<+{C~va=T9 zCdJB4#w|924I2X~rq&vgE8n!JjHKP8S+Jg@4rIJZFO%^mtQ<|{)QW*aij^nh6FHi% zo|G>*v$TwO>4-_?OlN`(W$VS{=HHWyw{IMq=B3W$)25d4`$5@)n#yL>1`@S7wPeUO zWh@plwV_>+o?$}U=5HsA&!xwl25wcaDpqX{60EY47xJW^rR=IP`epNMW-LM=n?kQHwb9gA zw#gPHvZ>baz0L zYfmDU&3fehK)H544Vz#4W66nxmtAWQmS=;DjWF-vA>Q>D*uGHOC<|+!L{BV{7>Vb+ zE=O(`th-3Rg=8bh|L=XcoDb@|Ah;VYqKILP{c%3s1DN30D;rPpInVosdDgS~nlEdw z`Lg_)FDo#=0WFZ`%j**9y~Xr1oafD{IL>j*YHHSa|KYcWYrK20eJe*(s9+D+&^ilg zokL)B78U0ZEOjee8!DO`0=MMhwB`}|h#~cJY?o0f@Mn!6T2O}#9JgUDHgeRCw{gX_ zgz@wE1&##2h__p&QVIPF%*-K7ev#q!IaIUb=26q$`Y3AisLP|Cvkjwm*!U_EsdmgKgC>?g1 zkEj9_Pz5$qME@Y?PhBuize9JVf98Dy>~XIxYA${5p;F8|0-Xu`~B_MsOeQwJ)n z{6RGP-8JVC9#Zi)=5d8Tx3)};CL_)b{Kab!OG$n;hRO7R5w)2_m-1IG6(*qMi$ZVk zg?M@y;SDuH#5i5mL5!tSdQPf9L`Z!@-d`q8M9M~gNav}tX?+h@_%8S+uk8IFddA^M#kE^my6=g`hGmBCqT%A-TaSB*x) z99~VJ%wh9r`z*F}Mxv3kxF(Nlc`l+J)|DuCZRxCzR-eUncB#6!RH;jD)IE!>c8R$2 zPgUtsO|<4Lw%Mf`yR@C??Ch+K)-Dg;eGXmG+77@?$(m>BE%&<9G<~Lxf!a48PA_HFw;LKVVNEc1ipp zdo`5%X6p0Ds3n^CDzccu2gp+sM@P||!)jc{wFZf%fTys8GkwvZjTK!gj}@D<9whsR z7#Huu3W~6f%r}vl<}4f99R)L>qhJR1tQjKQ|ECmP;%#g65nGgw)%b47jR4C-uH+!K(8-~8b{!uI7-X0l?wpEmpe{qiuD@VlHe zFUJRsm>Sk$G;&rw6JW?cY`ujwzUV4aJ%XIg%jDzz`RZkXOQpe)*S44AwtBv?; zgTj@>%imZO5?=-BTJd4hmSVQGC-3D+KhbSqm%kra!2_EqwgUQ2);qrf4YO;i(mB*p z;@Y#gkvU0wT8`=`SPE?&Qe|r!59D!E=|rDS_G#(4Njq~m$iy+iY-LA=ZdpbdY-4`t zYGc9Oq0PQFn@;#SbPjv;Ol#v|TkL4kXxr$c=rRe&E*-h_(k+)>8ol(=t)-3o1PrdLxCMBv zEQZ2Gl!kGR$mP$f`m>Tx>TZ%^Mn%1ruQt}9;dX}2we2N}wFas|-s&q+D^-Sat36Ys zT<=rX=%3|1F~B_G;BT4gDwu~qS^z$)iN-51IEULu8}A6#yR*3S5i}Ks)n<5&9ahwb z%<#IxFl>ff?Xc2c-KK69qr1J5G%}tS@m95%7s4gjL5EkcE~$Oy} z!nej{PtsC0cxj2zM9_aMJabHugaVvbZk>Uawc%hwBE$zW+7R63m1A127r<|D7jD;t(RVOvyeCtqSJ_~<6IZC#jTLcRrtIcu zE9BxBvj&&>15}M$ID}g<*Y+Cg!suFC>=0TiYpJi6owyq+h?IKiB%Fu$VFW6MhlXwv z@4(c%nTAY@^>eBV%}+n?8%$m>&mlSEtjjcBmnjEU@fr&!e_~T-WSP8&O>VLUJ0GLxc(~!@LLQ09`n+oFT>KXqoI~}&e10Akb`EVJ zHgS7N5P!2F|7C^EECGM`CpoZiF#to1{|o;;28PXi4omnaZ#u7|1PnJN4s`#T0Y!N@ spsrt3ATTk2os|hF#4ZSUGSA30EORi$p8QV