Datensätze, implementierung und ERD

This commit is contained in:
2021-10-25 00:26:53 +02:00
parent 5de292cf44
commit d2a920b9fc
8 changed files with 670 additions and 82 deletions

View File

@@ -1,5 +1,6 @@
import javax.swing.*;
import java.awt.*;
import java.util.Arrays;
public class Stundenplan implements SelectionListener {
@@ -44,13 +45,20 @@ public class Stundenplan implements SelectionListener {
for (int i = 0; i < r.getRowCount(); i++) {
teachers[i] = r.getData()[i][0];
}
dbc.executeStatement("SELECT name FROM klassen");
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("Lehrer", teachers);
gui.addFilter("Klasse", klassen);
// 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);
}
/**
@@ -65,29 +73,61 @@ public class Stundenplan implements SelectionListener {
*/
@Override
public void selectionChanged(String pList, String pNewValue) {
if (pList == "Lehrer") {
// Zuerst alle bisherigen Stunden aus der GUI entfernen
gui.removeAllLessons();
// Neue Daten aus der Datenbank abfragen.
// Hier gefakte Daten, die Struktur der Datenbank ist nicht vorgegeben.
dbc.executeStatement("SELECT 0,'Q2','405',kuerzel,0,0,'Informatik',-16711936 FROM lehrer WHERE kuerzel = '" + pNewValue + "'");
//dbc.executeStatement("SELECT 0,'Q2','405',kuerzel,0,0,'Informatik',-16711936 FROM lehrer WHERE kuerzel = '" + pNewValue + "'");
dbc.executeStatement("SELECT blocknummer, raum, name, wochentag, kuerzel, Fach FROM Stunden JOIN klassen ON Stunden.klassen_id = klassen.id JOIN unterrichtet ON unterrichtet.Stundenid = Stunden.id WHERE kuerzel = \""+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++) {
System.out.println("a");
int wochentag = getWochentag(r,i);
gui.addLesson(
Integer.parseInt(data[i][4]), // Spalte im Plan (0=Montag, ... ,4=Freitag)
Integer.parseInt(data[i][5]), // Zeile im Plan (0=1. Stunde, ... ,9=10. Stunde)
data[i][6], // Titel
"Raum " + data[i][2], // Untertitel
data[i][1], // Beschreibungstext
wochentag, // Spalte im Plan (0=Montag, ... ,4=Freitag)
Integer.parseInt(data[i][0])-1, // Zeile im Plan (0=1. Stunde, ... ,9=10. Stunde)
data[i][5], // Titel
"Raum " + data[i][1], // Untertitel
data[i][4], // Beschreibungstext
data[i][3], // Fußzeile
new Color(Integer.parseInt(data[i][7])) // Farbe (Objekt der Klasse Color)
new Color(colors(data,i)) // Farbe (Objekt der Klasse Color)
);
}
// GUI-Fenster neu zeichnen, um neue Elemente anzuzeigen.
gui.revalidate();
gui.repaint();
}
}
if (pList == "Klasse"){
dbc.executeStatement("SELECT blocknummer, raum, name, wochentag, kuerzel, Fach FROM Stunden JOIN klassen ON Stunden.klassen_id = klassen.id JOIN unterrichtet ON unterrichtet.Stundenid = Stunden.id WHERE name = \""+pNewValue+"\"");
QueryResult r = dbc.getCurrentQueryResult();
if (r != null) {
String[][] data = r.getData();
// Neue Stunden in die GUI schreiben
for (int i = 0; i < data.length; i++) {
System.out.println(Arrays.toString(r.getData()[i]));
int wochentag = getWochentag(r,i);
gui.addLesson(
wochentag, // Spalte im Plan (0=Montag, ... ,4=Freitag)
Integer.parseInt(data[i][0])-1, // Zeile im Plan (0=1. Stunde, ... ,9=10. Stunde)
//Integer.parseInt(t.getData()[i][0])-1,
data[i][5], // Titel
"Raum " + data[i][1], // Untertitel
data[i][4], // Beschreibungstext
data[i][2], // Fußzeile
new Color(colors(data,i)) // Farbe (Objekt der Klasse Color)
);
}
@@ -97,4 +137,44 @@ public class Stundenplan implements SelectionListener {
}
}
}
private int colors(String[][]data,int row){
switch(data[row][5]){
case "Deutsch":
return 0xf24e5e;
case "Englisch":
return 0xf5e77d;
case "Mathe":
return 0x3257fa;
case "Informatik":
return 0x9ee7ff;
case "Kunst":
return 0xc39cff;
case "Physik":
return 0x80ffa4;
case "Sport":
return 0xd6d6d6;
}
return 0x000000;
}
private int getWochentag(QueryResult r,int row){
String[][] data = r.getData();
switch (data[row][3]) {
case "Mo":
return 0;
case "Di":
return 1;
case "Mi":
return 2;
case "Do":
return 3;
case "Fr":
return 4;
}
return 0;
}
}