0 Daumen
341 Aufrufe

Aufgabe (JDBC und Anwendungsbeispiel Sharing-Plattform):

Erstellen Sie ein Java-Programm, das auf dem Schema der Ehemaligen-Plattform arbeitet. Das Programm soll folgende Funktionalität aufweisen:

1. Man kann eine Verbindung zur Datenbank aufbauen.

2. Man kann neue Kunden in die Datenbank aufnehmen.

3. Man kann sich alle in der Datenbank enthaltenen Kunden anzeigen lassen.

4. Man kann sich alle alten Mieten anzeigen lassen, die einen Roller ausgeliehen hatten. (bitte erzeugen sie doch vorab mindestens zwei solcher Mieten)

5. Man kann die Verbindung zur Datenbank wieder abbauen.

Das Programm muss nicht zwingend eine grafische Oberfläche aufweisen, obwohl das sicherlich wünschenswert wäre. Allerdings soll das Programm eine Eingabemöglichkeit aufweisen und der Benutzer kann durch eine Eingabe (notfalls die Zahle 1-5) die Funktionen anwählen.

Avatar von

1 Antwort

0 Daumen

Antwort mit KI erzeugt

Um ein Java-Programm zu erstellen, das die oben beschriebenen Anforderungen erfüllt, müssen wir die Java Database Connectivity (JDBC) verwenden. JDBC ermöglicht es Java-Anwendungen, auf relationale Datenbanken zuzugreifen und SQL-Abfragen auszuführen.

Hier ist eine Schritt-für-Schritt-Anleitung, einschließlich eines vollständigen Java-Codes, der die geforderten Funktionalitäten implementiert:

Schritt 1: Datenbank einrichten
- Erstellt eine MySQL-Datenbank mit den Tabellen für Kunden und Mieten.
- Fügt Beispiel-Datensätze hinzu.

Schritt 2: JDBC-Treiber hinzufügen
- Stellt sicher, dass die MySQL-JDBC-Treiberbibliothek (mysql-connector-java) im Projekt eingebunden ist.

Schritt 3: Java-Programm erstellen
- Implementiert die benötigten Funktionen in Java.

Datenbankschema:
sql
CREATE DATABASE pp1;

USE pp1;

CREATE TABLE Kunden (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    email VARCHAR(100)
);

CREATE TABLE Mieten (
    id INT PRIMARY KEY AUTO_INCREMENT,
    kunden_id INT,
    roller_id INT,
    mietdatum DATE,
    FOREIGN KEY (kunden_id) REFERENCES Kunden(id)
);

-- Beispiel-Datensätze einfügen
INSERT INTO Kunden (name, email) VALUES ('Max Mustermann', 'max@mustermann.de');
INSERT INTO Kunden (name, email) VALUES ('Erika Mustermann', 'erika@mustermann.de');

INSERT INTO Mieten (kunden_id, roller_id, mietdatum) VALUES (1, 101, '2023-01-15');
INSERT INTO Mieten (kunden_id, roller_id, mietdatum) VALUES (2, 102, '2023-02-20');


Java-Code:
java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.util.Scanner;

public class SharingPlattformApp {

    private static final String DB_URL = "jdbc:mysql://localhost:3306/pp1";
    private static final String USER = "root";
    private static final String PASS = "password";

    private static Connection conn = null;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        boolean running = true;
        
        while (running) {
            System.out.println("1. Verbindung zur Datenbank aufbauen");
            System.out.println("2. Neuen Kunden aufnehmen");
            System.out.println("3. Alle Kunden anzeigen");
            System.out.println("4. Alle alten Mieten anzeigen (Roller)");
            System.out.println("5. Verbindung zur Datenbank abbauen");
            System.out.println("Bitte wählen Sie eine Option:");

            int choice = scanner.nextInt();
            scanner.nextLine(); // consume newline character

            switch (choice) {
                case 1:
                    connectToDatabase();
                    break;
                case 2:
                    addNewCustomer(scanner);
                    break;
                case 3:
                    displayAllCustomers();
                    break;
                case 4:
                    displayOldRentals();
                    break;
                case 5:
                    disconnectFromDatabase();
                    running = false;
                    break;
                default:
                    System.out.println("Ungültige Eingabe. Bitte wählen Sie eine Zahl von 1 bis 5.");
                    break;
            }
        }

        scanner.close();
    }

    private static void connectToDatabase() {
        try {
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
            System.out.println("Verbindung zur Datenbank erfolgreich hergestellt.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void addNewCustomer(Scanner scanner) {
        if (conn == null) {
            System.out.println("Bitte verbinden Sie zuerst mit der Datenbank (Option 1).");
            return;
        }

        try {
            System.out.println("Geben Sie den Namen des neuen Kunden ein:");
            String name = scanner.nextLine();

            System.out.println("Geben Sie die E-Mail des neuen Kunden ein:");
            String email = scanner.nextLine();

            String query = "INSERT INTO Kunden (name, email) VALUES (?, ?)";
            PreparedStatement pstmt = conn.prepareStatement(query);
            pstmt.setString(1, name);
            pstmt.setString(2, email);
            pstmt.executeUpdate();

            System.out.println("Neuer Kunde erfolgreich hinzugefügt.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void displayAllCustomers() {
        if (conn == null) {
            System.out.println("Bitte verbinden Sie zuerst mit der Datenbank (Option 1).");
            return;
        }

        try {
            String query = "SELECT * FROM Kunden";
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(query);

            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String email = rs.getString("email");

                System.out.println("ID: " + id + ", Name: " + name + ", Email: " + email);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void displayOldRentals() {
        if (conn == null) {
            System.out.println("Bitte verbinden Sie zuerst mit der Datenbank (Option 1).");
            return;
        }

        try {
            String query = "SELECT Mieten.id, Kunden.name, Mieten.roller_id, Mieten.mietdatum " +
                    "FROM Mieten " +
                    "JOIN Kunden ON Mieten.kunden_id = Kunden.id";
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(query);

            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                int rollerId = rs.getInt("roller_id");
                String mietdatum = rs.getString("mietdatum");

                System.out.println("Mieten ID: " + id + ", Kunde: " + name + ", Roller ID: " + rollerId + ", Mietdatum: " + mietdatum);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void disconnectFromDatabase() {
        if (conn != null) {
            try {
                conn.close();
                System.out.println("Verbindung zur Datenbank erfolgreich abgebaut.");
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("Es besteht keine Verbindung zur Datenbank.");
        }
    }
}


Erklärung:
1. Verbindung zur Datenbank aufbauen: In der Methode connectToDatabase wird die Verbindung zur Datenbank hergestellt.
2. Neuen Kunden aufnehmen: In der Methode addNewCustomer wird ein neuer Kunde zur Datenbank hinzugefügt.
3. Alle Kunden anzeigen: Die Methode displayAllCustomers zeigt alle Kunden in der Datenbank an.
4. Alle alten Mieten anzeigen (Roller): Die Methode displayOldRentals zeigt alle alten Mieten für Roller an.
5. Verbindung zur Datenbank abbauen: Die Methode disconnectFromDatabase baut die Verbindung zur Datenbank ab.

Benutzer können die verschiedenen Funktionen durch Eingabe der entsprechenden Zahl (1-5) wählen.
Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community