fiebig.schule

Projekt | Wahlkampfagentur

🟪 Projektbeschreibung

Logo der Stadt Bielefeld

Die letzte Kommunalwahl in Bielefeld ist erst wenige Wochen her. Jetzt ist Zeit für eine Analyse, denn die nächste Wahl, der nächste Wahlkampf kommt bestimmt! Du schlüpfst in die Rolle einer Wahlkampfagentur, die eine demokratische Partei berät. Die Partei möchte wissen, wie sie bei der letzten Wahl in den verschiedenen Stadtbezirken und Wahllokalen abgeschnitten hat, wo sie verloren, wo gewonnen, wo noch Potenzial hat.

🟦 Hinführung zur Datenanalyse

🏗️ Projektschritt 1 | Daten finden und aufbereiten

  • Hier findest du die Daten für das Projekt; sie liegen im Dateiformat CSV vor: Open Data der Stadt Bielefeld | Kommunalwahl 2025

  • Erkunde die Daten im DB Browser for SQLite.

    1. 👤 Den DB Browser for SQLite kannst du als Portable Software (engl. portable app) installieren, auch ohne Admin-Rechte. Führe das Programm am besten nach der Installation aus und hefte es an der Taskleiste an.
    2. 👤 Zur Erkundung der Daten: Lege eine neue Datenbank an und importiere danach (!) die CSV-Datei. Betrachte die Daten und überlege, welche Bedeutung die Attribute haben.
    3. 👤 Führe den SQL-Befehl SELECT COUNT(*) FROM 'Ergebnis-Ratswahl-2025'; aus. Das Ergebnis sollte 267 lauten.
    4. 👤 Führe verschiedene SQL-Anweisungen aus; überlege dir, welche demokratische Partei du beraten möchtest.

☝️ Hinweise

  • Beim Importieren der CSV-Datei in den DB Browser for SQLite müssen das richtige Trennzeichen und die richtige Zeichenkodierung angegeben werden. Diese zu identifizieren, geht so: Öffne die CSV-Datei in einem Editor.
    • Trennzeichen: Du erkennst beim Lesen, wie die Werte getrennt sind (Komma, Semikolon usw.)
    • Zeichenkodierung: In der Statusleiste oder unter „Eigenschaften“ wird die Zeichenkodierung (engl. character encoding, kurz encoding) angezeigt (z. B. ASCII, ISO-8859-1, UTF-8 usw.)
  • Achte darauf, dass die erste Zeile der CSV-Datei als Spaltenüberschriften eingerichtet wird.

🏗️ Projektschritt 2 | Erste Schritte mit der Klassen DatabaseConnector

  1. 👤 Falls nötig, installiere die IntelliJ IDEA Community Edition, NICHT IntelliJ IDEA Ultimate! Scrolle dazu auf der Seite ein bisschen nach unten.

  2. 👤 Erstelle ein neues IntelliJ-Projekt. Lege im Projektordner einen Ordern +libs an und speichere darin das Java-Archiv sqlite-jdbc, also die Datei mit Dateiendung .jar. Binde diese Bibliothek über die Projektstruktur ein.

  3. 👤 Speichere die SQLite-Datenbank (Dateiendung .db) im Projektordner, nicht unter src, sondern im übergeordneten Projektordner.

  4. 👤 Du benötigst im Folgenden die Klassen Main und Wahlkampfagentur, darüber hinaus die folgenden drei Klassen. Füge alle Klassen in dein Projekt ein und führe die main-Methode aus.

    DatabaseConnector

    QueryResult

    Queue

    Main.java im Projekt Wahlkampfagentur
    public class Main {
     
      public static void main(String[] args) {
          Wahlkampfagentur wka = new Wahlkampfagentur();
          wka.countLines();
      }
     
    }
    Wahlkampfagentur.java im Projekt Wahlkampfagentur
    public class Wahlkampfagentur {
     
      /* Statische Variable für den Namen der verwendeten Datenbank.
      Der Name muss mit dem Namen der Datenbank übereinstimmen! */
      public static final String DB_NAME = "Ergebnis-Ratswahl-2025.db";
     
      // Deklaration eines Objekts vom Typ DatabaseConnector
      private DatabaseConnector dbc;
     
      // ...
      public Wahlkampfagentur() {
          // Offline-Verbindungsaufbau zur SQLite DB
          dbc = new DatabaseConnector("", 0, DB_NAME, "","");
      }
     
      /**
       * 
      */
      public void countLines() {
          // ...
          String sqlStatement = "SELECT COUNT(*) FROM 'Ergebnis-Ratswahl-2025';";
     
          // ...
          dbc.executeStatement(sqlStatement);
     
          // ...
          QueryResult results = dbc.getCurrentQueryResult();
     
          // ...
          if (results != null && results.getRowCount() > 0) {
              String[][] data = results.getData();
              System.out.println(Integer.parseInt(data[0][0]));
          }
     
          // ...
          System.out.println(dbc.getErrorMessage());
      }
     
    }

🟩 Grafische Aufbereitung

🟨 Dokumentation und Präsentation