Sortieren nach Fächern und Räumen hinzugefügt

This commit is contained in:
maxlm128
2021-10-23 15:46:47 +02:00
parent b3f34b4994
commit befdd29e88
2 changed files with 133 additions and 12 deletions

View File

@@ -38,26 +38,43 @@ public class Stundenplan implements SelectionListener {
// Lehrer abfragen und ein Auswahlfeld erstellen, dass in der
// GUI angezeigt wird, um den angezeigten Stundenplan anzupassen
dbc.executeStatement("SELECT kuerzel FROM lehrer");
dbc.executeStatement("SELECT kuerzel FROM lehrer ORDER BY kuerzel");
r = dbc.getCurrentQueryResult();
String[] teachers = new String[r.getRowCount()];
String[] lehrer = new String[r.getRowCount()];
for (int i = 0; i < r.getRowCount(); i++) {
teachers[i] = r.getData()[i][0];
lehrer[i] = r.getData()[i][0];
}
gui.addFilter("Lehrer", teachers);
gui.addFilter("Lehrer", lehrer);
// Das gleiche für die klassen
dbc.executeStatement("SELECT bezeichner FROM klassen");
dbc.executeStatement("SELECT bezeichner FROM klassen ORDER BY bezeichner");
r = dbc.getCurrentQueryResult();
String[] klassen = new String[r.getRowCount()];
for (int i = 0; i < r.getRowCount(); i++) {
klassen[i] = r.getData()[i][0];
}
gui.addFilter("Klassen", klassen);
// Und für die Räume:
dbc.executeStatement("SELECT DISTINCT Raum FROM Unterrichtsstunden ORDER BY Raum");
r = dbc.getCurrentQueryResult();
String[] räume = new String[r.getRowCount()];
for (int i = 0; i < r.getRowCount(); i++) {
räume[i] = r.getData()[i][0];
}
gui.addFilter("Räume", räume);
// Und die Fächer:
dbc.executeStatement("SELECT DISTINCT Fach FROM Unterrichtsstunden ORDER BY Fach");
r = dbc.getCurrentQueryResult();
String[] fächer = new String[r.getRowCount()];
for (int i = 0; i < r.getRowCount(); i++) {
fächer[i] = r.getData()[i][0];
}
gui.addFilter("Fächer", fächer);
// GUI anzeigen und Verhalten bei Interaktion festlegen
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.addSelectionListener(this); // GUI ruft Methode selectionChanged auf, wenn sich eine Auswahlbox ändert.
gui.setLocationRelativeTo(null);
gui.setVisible(true);
selectionChanged("Lehrer", lehrer[0]);
}
/**
@@ -95,7 +112,7 @@ public class Stundenplan implements SelectionListener {
"Raum " + data[i][1], // Untertitel
data[i][2], // Beschreibungstext
pNewValue, // Fußzeile
new Color(-16711936) // Farbe (Objekt der Klasse Color)
new Color(bestimmeFarbe(data[i][0])) // Farbe (Objekt der Klasse Color)
);
}
@@ -108,7 +125,10 @@ public class Stundenplan implements SelectionListener {
gui.removeAllLessons();
// Neue Daten aus der Datenbank abfragen.
dbc.executeStatement("");
dbc.executeStatement(
"SELECT Fach,Raum,Lehrer_Kürzel,Tag,Stunde FROM Unterrichtsstunden LEFT OUTER JOIN sind_in_Unterrichtsstunden"
+ " WHERE sind_in_Unterrichtsstunden.Stunden_ID = Unterrichtsstunden.StundenId AND sind_in_Unterrichtsstunden.Klassen_Bezeichner LIKE \""
+ pNewValue + "\"");
QueryResult r = dbc.getCurrentQueryResult();
// Falls es ein Ergebnis gibt ...
@@ -121,12 +141,74 @@ public class Stundenplan implements SelectionListener {
Integer.parseInt(data[i][4]) - 1, // Zeile im Plan (0=1. Stunde, ... ,9=10. Stunde)
data[i][0], // Titel
"Raum " + data[i][1], // Untertitel
data[i][2], // Beschreibungstext
pNewValue, // Fußzeile
new Color(-16711936) // Farbe (Objekt der Klasse Color)
pNewValue, // Beschreibungstext
data[i][2], // Fußzeile
new Color(bestimmeFarbe(data[i][0])) // Farbe (Objekt der Klasse Color)
);
}
// GUI-Fenster neu zeichnen, um neue Elemente anzuzeigen.
gui.revalidate();
gui.repaint();
}
} else if (pList == "Räume") {
// Zuerst alle bisherigen Stunden aus der GUI entfernen
gui.removeAllLessons();
// Neue Daten aus der Datenbank abfragen.
dbc.executeStatement(
"SELECT Fach,Klassen_bezeichner,Lehrer_Kürzel,Tag,Stunde FROM Unterrichtsstunden LEFT OUTER JOIN sind_in_Unterrichtsstunden "
+ "WHERE Unterrichtsstunden.StundenID = sind_in_Unterrichtsstunden.Stunden_ID AND Raum LIKE \""
+ pNewValue + "\"");
QueryResult r = dbc.getCurrentQueryResult();
// Falls es ein Ergebnis gibt ...
if (r != null) {
String[][] data = r.getData();
// Neue Stunden in die GUI schreiben
for (int i = 0; i < data.length; i++) {
gui.addLesson(bestimmeSpalte(data[i][3]), // Spalte im Plan (0=Montag, ... ,4=Freitag)
Integer.parseInt(data[i][4]) - 1, // Zeile im Plan (0=1. Stunde, ... ,9=10. Stunde)
data[i][0], // Titel
"Raum " + pNewValue, // Untertitel
data[i][1], // Beschreibungstext
data[i][2], // Fußzeile
new Color(bestimmeFarbe(data[i][0])) // Farbe (Objekt der Klasse Color)
);
}
// GUI-Fenster neu zeichnen, um neue Elemente anzuzeigen.
gui.revalidate();
gui.repaint();
}
} else if (pList == "Fächer") {
// Zuerst alle bisherigen Stunden aus der GUI entfernen
gui.removeAllLessons();
// Neue Daten aus der Datenbank abfragen.
dbc.executeStatement(
"SELECT Raum,Klassen_bezeichner,Lehrer_Kürzel,Tag,Stunde FROM Unterrichtsstunden LEFT OUTER JOIN sind_in_Unterrichtsstunden "
+ "WHERE Unterrichtsstunden.StundenID = sind_in_Unterrichtsstunden.Stunden_ID AND Fach LIKE \""
+ pNewValue + "\"");
QueryResult r = dbc.getCurrentQueryResult();
// Falls es ein Ergebnis gibt ...
if (r != null) {
String[][] data = r.getData();
// Neue Stunden in die GUI schreiben
for (int i = 0; i < data.length; i++) {
gui.addLesson(bestimmeSpalte(data[i][3]), // Spalte im Plan (0=Montag, ... ,4=Freitag)
Integer.parseInt(data[i][4]) - 1, // Zeile im Plan (0=1. Stunde, ... ,9=10. Stunde)
pNewValue, // Titel
"Raum " + data[i][0], // Untertitel
data[i][1], // Beschreibungstext
data[i][2], // Fußzeile
new Color(bestimmeFarbe(pNewValue) // Farbe (Objekt der Klasse Color)
));
}
// GUI-Fenster neu zeichnen, um neue Elemente anzuzeigen.
gui.revalidate();
gui.repaint();
@@ -150,4 +232,43 @@ public class Stundenplan implements SelectionListener {
return 5;
}
}
public int bestimmeFarbe(String pFach) {
switch (pFach) {
case "Biologie":
return 0x00FF77;
case "Mathematik":
return 0x5000FF;
case "Latein":
return 0xFFBF00;
case "Französisch":
return 0xFF00E9;
case "Informatik":
return 0x000000;
case "Englisch":
return 0xFF0000;
case "Kunst":
return 0xFFFFFF;
case "Deutsch":
return 0x0055FF;
case "Musik":
return 0xFFD000;
case "Sport":
return 0x00FFE9;
case "Philosophie":
return 0x9800FF;
case "Religion":
return 0x632B00;
case "Chemie":
return 0xB600FF;
case "Physik":
return 0xFFE100;
case "Erdkunde":
return 0x00871F;
case "Geschichte":
return 0x844000;
default:
return 0xFFFFFF;
}
}
}

View File

@@ -163,7 +163,7 @@ public class StundenplanGUI extends JFrame implements ActionListener {
*/
public void removeAllLessons() {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 10; j++) {
for (int j = 0; j < 12; j++) {
removeLesson(i, j);
}
}
@@ -235,7 +235,7 @@ public class StundenplanGUI extends JFrame implements ActionListener {
c.fill = GridBagConstraints.NONE;
c.weightx = 0.2;
c.weighty = 0.5;
for (int i = 0; i < 10; i++) {
for (int i = 0; i < 12; i++) {
c.gridy = i + 1;
jpPlan.add(makeLabel((i + 1) + ". Stunde", fHeader), c);
}