Menu
Coddy logo textTech

Ausleihsystem

Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy. Lektion 79 von 87.

challenge icon

Aufgabe

Einfach

Fahren wir mit dem Aufbau des Library Management Systems fort, indem wir ein richtiges Ausleihsystem mit einer Library-Klasse erstellen, die die Sammlung von Büchern und Benutzern verwaltet. Hier beginnt sich dein System wie eine echte Bibliothek anzufühlen: Es verfolgt, wer was hat, und setzt Ausleihregeln durch!

Du wirst deinen Code auf vier Dateien verteilen:

  • Book.java: Behalte deine Book-Klasse aus der vorherigen Aufgabe mit ihrer gesamten Funktionalität: isbn, title, author, isAvailable, borrowedBy, getDetails() sowie den passenden Gettern/Settern.
  • User.java: Behalte deine User-Klasse mit id, name, der borrowedBooks ArrayList, borrowBook(), returnBook(), getBorrowedCount() und toString().
  • Library.java: Erstelle die zentrale Library-Klasse, die alles verwaltet. Deine Bibliothek sollte zwei ArrayLists verwalten: eine für Book-Objekte und eine für User-Objekte. Füge diese Methoden hinzu:

    addBook(Book book) – fügt ein Buch zur Sammlung der Bibliothek hinzu.

    registerUser(User user) – fügt einen Benutzer zu den registrierten Benutzern der Bibliothek hinzu.

    findBookByIsbn(String isbn) – durchsucht die Bücher und gibt das Book mit der passenden ISBN zurück oder null, wenn es nicht gefunden wurde.

    findUserById(String id) – durchsucht die Benutzer und gibt den User mit der passenden ID zurück oder null, wenn er nicht gefunden wurde.

    borrowBook(String userId, String isbn) – findet den Benutzer und das Buch und lässt den Benutzer, wenn beide existieren und das Buch verfügbar ist, das Buch ausleihen; anschließend wird [userName] borrowed [bookTitle] ausgegeben. Wenn das Buch nicht verfügbar ist, gib Book not available aus. Wenn der Benutzer oder das Buch nicht gefunden wurde, gib Invalid user or book aus.

    returnBook(String userId, String isbn) – findet den Benutzer und das Buch, lässt den Benutzer anschließend das Buch zurückgeben und gibt [userName] returned [bookTitle] aus. Wenn der Benutzer oder das Buch nicht gefunden wurde, gib Invalid user or book aus.

  • Main.java: Führe dein Bibliothekssystem zusammen! Du erhältst Eingaben für zwei Bücher (jeweils ISBN, Titel und Autor), einen Benutzer (ID, Name) und anschließend eine Reihe von Operationen.

    Erstelle eine Library, füge beide Bücher hinzu und registriere den Benutzer. Verarbeite anschließend die Operationen: Du erhältst eine durch Kommas getrennte Zeichenkette, in der jede Operation als borrow:userId:isbn oder return:userId:isbn formatiert ist.

    Gib nach der Verarbeitung aller Operationen eine Zusammenfassung aus, die den Status jedes Buchs im Format [isbn]: [Available/Borrowed] anzeigt.

Du erhältst die Eingaben in dieser Reihenfolge: ISBN von book1, Titel von book1, Autor von book1, ISBN von book2, Titel von book2, Autor von book2, Benutzer-ID, Benutzername und schließlich die Operationszeichenkette.

Bei den Eingaben ISBN-001, Clean Code, Robert Martin, ISBN-002, Design Patterns, Gang of Four, U001, Alice und borrow:U001:ISBN-001,borrow:U001:ISBN-002,return:U001:ISBN-001 würde deine Ausgabe beispielsweise so aussehen:

Alice borrowed Clean Code
Alice borrowed Design Patterns
Alice returned Clean Code
ISBN-001: Available
ISBN-002: Borrowed

Diese Aufgabe führt Komposition, Kapselung und Methodendesign zusammen, um ein zusammenhängendes System zu erstellen. Die Library-Klasse fungiert als Koordinator, delegiert die eigentliche Ausleihlogik an die User- und Book-Klassen und verwaltet gleichzeitig die gesamte Sammlung!

Probier es selbst

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Buch-1-Informationen lesen
        String isbn1 = scanner.nextLine();
        String title1 = scanner.nextLine();
        String author1 = scanner.nextLine();
        
        // Buch-2-Informationen lesen
        String isbn2 = scanner.nextLine();
        String title2 = scanner.nextLine();
        String author2 = scanner.nextLine();
        
        // Benutzerinformationen lesen
        String userId = scanner.nextLine();
        String userName = scanner.nextLine();
        
        // Operations-String lesen (kommagetrennt, Format: borrow:userId:isbn oder return:userId:isbn)
        String operationsStr = scanner.nextLine();
        
        // TODO: Erstelle Book-Objekte für book1 und book2
        
        // TODO: Erstelle ein User-Objekt
        
        // TODO: Erstelle eine Library, füge beide Bücher hinzu und registriere den Benutzer
        
        // TODO: Teile operationsStr bei "," und verarbeite jede Operation
        //       Für jede Operation bei ":" aufteilen, um action, userId, isbn zu erhalten
        //       Rufe entsprechend library.borrowBook() oder library.returnBook() auf
        
        // TODO: Gib Zusammenfassung für jedes Buch im Format "[isbn]: [Available/Borrowed]" aus
    }
}

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Java-Compiler