From 92903b93eb7a0ee302adcff09497f62407bd739d Mon Sep 17 00:00:00 2001 From: elarturo Date: Tue, 19 Nov 2024 10:06:36 +0100 Subject: [PATCH 01/14] addMedium korrigiert --- .../src/ServiceLayer/LibraryService.java | 29 ++++++------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/Bibliotheksverwaltung/src/ServiceLayer/LibraryService.java b/Bibliotheksverwaltung/src/ServiceLayer/LibraryService.java index a92ddb8..4a26d41 100644 --- a/Bibliotheksverwaltung/src/ServiceLayer/LibraryService.java +++ b/Bibliotheksverwaltung/src/ServiceLayer/LibraryService.java @@ -24,31 +24,20 @@ public class LibraryService { return admin; } - public String displayCatalog() { - StringBuilder catalog = new StringBuilder(); // StringBuilder zum Sammeln der Katalogeinträge - catalog.append("Medienkatalog:\n"); - - // Iteriere durch alle Medien im Katalog + public List displayCatalog() { + List catalog = new ArrayList<>(); for (Medium medium : mediaList) { - // Holen des Autors und Erscheinungsjahres - String author = medium.getAuthor(); - String releaseYear = medium.getReleaseYear(); String status = medium.isBorrowed() ? "Ausgeliehen bis: " + medium.getDueDate() : "Verfügbar"; - - // Wenn das Medium ein Buch ist, zeigen wir den Autor an, andernfalls "-" - String authorDisplay = (author != null) ? author : "-"; // Wenn author null ist, setze "-" als Platzhalter - - // Katalogeintrag als String zusammenbauen - catalog.append("Titel: ").append(medium.getTitle()) - .append(", Autor: ").append(authorDisplay) - .append(", Erscheinungsjahr: ").append(releaseYear) - .append(", Status: ").append(status) - .append("\n"); + String author = medium.getAuthor() != null ? medium.getAuthor() : "-"; + catalog.add("ID: " + medium.getId() + + ", Titel: " + medium.getTitle() + + ", Autor: " + author + + ", Status: " + status); } - - return catalog.toString(); // Gib den gesamten Katalog als String zurück + return catalog; } + public List searchMedia(String query, boolean filterBorrowed, String mediaType) { return mediaList.stream().filter(medium -> medium.getTitle().toLowerCase().startsWith(query.toLowerCase())) // Filter // nach -- 2.51.0 From b63eb3805deb5f8f1622762937d593d86cf9f659 Mon Sep 17 00:00:00 2001 From: elarturo Date: Tue, 19 Nov 2024 10:06:59 +0100 Subject: [PATCH 02/14] borrowMedium korrigiert --- .../src/ServiceLayer/BorrowService.java | 167 +++++++++++------- 1 file changed, 99 insertions(+), 68 deletions(-) diff --git a/Bibliotheksverwaltung/src/ServiceLayer/BorrowService.java b/Bibliotheksverwaltung/src/ServiceLayer/BorrowService.java index c7a10dd..88067a4 100644 --- a/Bibliotheksverwaltung/src/ServiceLayer/BorrowService.java +++ b/Bibliotheksverwaltung/src/ServiceLayer/BorrowService.java @@ -8,111 +8,142 @@ import DomainLayer.User; public class BorrowService { private LocalDate currentDate = LocalDate.now(); private LibraryService libraryService; - + + // Getter für das aktuelle Datum public LocalDate getCurrentDate() { return currentDate; } + public String showOutstandingFees(User user) { + // Stelle sicher, dass der Benutzer ausstehende Gebühren hat + if (user != null) { + return "Ausstehende Gebühren für " + user.getName() + ": " + user.getOutstandingFees() + "€."; + } else { + return "Benutzer nicht gefunden."; + } + } + + // Beispielmethode, die jetzt mit einer initialisierten LibraryService-Instanz + // arbeitet public void setCurrentDate(LocalDate newDate) { this.currentDate = newDate; - // Überprüfen, ob ausgeliehene Medien ein korrektes Ausleihdatum haben - for (Medium medium : libraryService.getAllMedia()) { - if (medium.isBorrowed() && medium.getBorrowDate() == null) { - medium.setBorrowDate(newDate); // Setze das aktuelle Datum als Ausleihdatum - System.out.println("Warnung: Ausleihdatum für Medium '" + medium.getTitle() - + "' war null und wurde auf " + newDate + " gesetzt."); + // Stelle sicher, dass libraryService nicht null ist, bevor du darauf zugreifst + if (libraryService != null) { + for (Medium medium : libraryService.getAllMedia()) { + if (medium.isBorrowed() && medium.getBorrowDate() == null) { + medium.setBorrowDate(newDate); // Setze das Ausleihdatum + } } } - System.out.println("Datum erfolgreich geändert: " + this.currentDate); } - public void renewMedium(User user, Medium medium, LocalDate newBorrowDate) { + // Verlängern eines Mediums + public String renewMedium(User user, Medium medium, LocalDate newBorrowDate) { + // Überprüfen, ob das Medium ausgeliehen ist if (!medium.isBorrowed()) { - System.out.println("Das Medium wurde nicht ausgeliehen und kann daher nicht verlängert werden."); - return; + return "Das Medium wurde nicht ausgeliehen."; } - // Wenn das neue Ausleihdatum gesetzt ist, verwenden wir dieses Datum, ansonsten das aktuelle Datum - if (newBorrowDate != null) { - medium.setBorrowDate(newBorrowDate); // Ausleihdatum auf das neue Datum setzen + // Überprüfen, ob der Benutzer das Medium ausgeliehen hat + if (!user.getBorrowedMedia().contains(medium)) { + return "Dieses Medium wurde nicht von Ihnen ausgeliehen und kann daher nicht verlängert werden."; } - // Wenn das Medium keine Verlängerung erlaubt, breche ab + // Überprüfen, ob das Medium verlängerbar ist if (!medium.isRenewable()) { - System.out.println("Das Medium kann nicht verlängert werden."); - return; + return "Das Medium kann nicht verlängert werden."; } - // Wenn die maximale Anzahl an Verlängerungen erreicht wurde + // Überprüfen, ob die maximale Anzahl an Verlängerungen erreicht wurde if (medium.getRenewals() >= medium.getMaxRenewals()) { - System.out.println("Maximale Anzahl an Verlängerungen erreicht."); - return; + return "Die maximale Anzahl an Verlängerungen wurde bereits erreicht."; + } + + // Optional: Ausleihdatum aktualisieren + if (newBorrowDate != null) { + medium.setBorrowDate(newBorrowDate); // Setze das neue Ausleihdatum } // Verlängerung durchführen medium.increaseRenewals(); - medium.setDueDate(medium.getDueDate().plusDays(medium.getBorrowPeriod())); // Rückgabedatum basierend auf der Leihfrist anpassen - System.out.println("Verlängerung erfolgreich. Neue Rückgabefrist: " + medium.getDueDate()); + medium.setDueDate(medium.getDueDate().plusDays(medium.getBorrowPeriod())); // Rückgabedatum basierend auf der Leihfrist verlängern + + return "Verlängerung erfolgreich. Neue Rückgabefrist: " + medium.getDueDate(); } - public void borrowMedium(User user, Medium medium) { - if (medium.isBorrowed()) { - System.out.println("Das Medium ist bereits ausgeliehen."); - return; - } - // Verwende das aktuelle Datum als Ausleihdatum - LocalDate borrowDate = currentDate; - medium.setBorrowed(true); - medium.setBorrowDate(borrowDate); // Setze das aktuelle Datum als Ausleihdatum - medium.setDueDate(borrowDate.plusDays(medium.getBorrowPeriod())); // Berechne Rückgabedatum - user.borrowMedium(medium); + // Ausleihen eines Mediums + public String borrowMedium(User user, Medium medium) { + if (medium.isBorrowed()) { + return "Das Medium ist bereits ausgeliehen."; + } - System.out.println("Ausleihe erfolgreich. " - + medium.getDueDate()); + LocalDate borrowDate = LocalDate.now(); // Setze das aktuelle Datum als Ausleihdatum + medium.setBorrowDate(borrowDate); // Setze das Ausleihdatum und berechne das Fälligkeitsdatum + + user.borrowMedium(medium); // Füge das Medium zur Liste der ausgeliehenen Medien des Benutzers hinzu + medium.setBorrowed(true); // Markiere das Medium als ausgeliehen + + return "Ausleihe erfolgreich. Fällig am: " + medium.getDueDate(); } - public void returnMedium(User user, Medium medium) { - if (!medium.isBorrowed()) { - System.out.println("Das Medium wurde nicht ausgeliehen."); - return; - } - // Berechnung der Gebühren - LocalDate dueDate = medium.getDueDate(); - if (dueDate != null && currentDate.isAfter(dueDate)) { - long overdueDays = java.time.temporal.ChronoUnit.DAYS.between(dueDate, currentDate); - double fee; - if (overdueDays > 7) { - fee = 7 * 1 + (overdueDays - 7) * 2; - } else { - fee = overdueDays * 1; - } - user.addFee(fee); - System.out.println("Überfällige Gebühr: " + fee + "€."); - } - medium.setBorrowed(false); - medium.resetRenewals(); - medium.setDueDate(null); // Rückgabedatum zurücksetzen, Ausleihdatum bleibt unverändert - user.returnMedium(medium); + // Rückgabe eines Mediums + public String returnMedium(User user, Medium medium) { + // Überprüfen, ob das Medium ausgeliehen ist + if (!medium.isBorrowed()) { + return "Das Medium wurde nicht ausgeliehen."; + } - System.out.println("Rückgabe erfolgreich."); - System.out.println("Noch ausgeliehene Medien:"); - for (Medium m : user.getBorrowedMedia()) { - System.out.println("- " + m.getTitle() + " (Fällig am: " + m.getDueDate() + ")"); - } + // Überprüfen, ob der Benutzer das Medium ausgeliehen hat + if (!user.getBorrowedMedia().contains(medium)) { + return "Dieses Medium wurde nicht von Ihnen ausgeliehen und kann daher nicht zurückgegeben werden."; + } + + StringBuilder result = new StringBuilder(); // StringBuilder für die Rückgabewerte + result.append("Zurückgegebenes Medium: ").append(medium.getTitle()).append("\n"); + + // Berechnung der Gebühren + LocalDate dueDate = medium.getDueDate(); + if (dueDate != null && currentDate.isAfter(dueDate)) { + long overdueDays = java.time.temporal.ChronoUnit.DAYS.between(dueDate, currentDate); + double fee; + if (overdueDays > 7) { + fee = 7 * 1 + (overdueDays - 7) * 2; + } else { + fee = overdueDays * 1; + } + user.addFee(fee); + result.append("Überfällige Gebühr: ").append(fee).append("€.\n"); + } else { + result.append("Keine Gebühren angefallen.\n"); + } + + // Aktualisierung des Mediums und des Benutzers + medium.setBorrowed(false); // Medium ist nicht mehr ausgeliehen + medium.resetRenewals(); // Anzahl der Verlängerungen zurücksetzen + medium.setDueDate(null); // Fälligkeitsdatum entfernen + user.returnMedium(medium); // Entferne das Medium aus der Liste des Benutzers + + // Anzeigen der verbleibenden ausgeliehenen Medien + if (user.getBorrowedMedia().isEmpty()) { + result.append("Keine weiteren Medien ausgeliehen."); + } else { + result.append("Noch ausgeliehene Medien:\n"); + for (Medium m : user.getBorrowedMedia()) { + result.append("- ").append(m.getTitle()).append(" (Fällig am: ").append(m.getDueDate()).append(")\n"); + } + } + + return result.toString(); } - public void showOutstandingFees(User user) { - System.out.println("Ausstehende Gebühren für " + user.getName() + ": " + user.getOutstandingFees() + "€."); - } - public void handleAdminPayment(User user, double amount) { - user.payFees(amount); - } + + } -- 2.51.0 From 7b0232ab3f5904d35486db578d282d2f49698e1d Mon Sep 17 00:00:00 2001 From: elarturo Date: Tue, 19 Nov 2024 10:07:17 +0100 Subject: [PATCH 03/14] Ausleihzeit verbessert --- .../src/DomainLayer/VideoGame.java | 40 ++++++++----------- 1 file changed, 16 insertions(+), 24 deletions(-) diff --git a/Bibliotheksverwaltung/src/DomainLayer/VideoGame.java b/Bibliotheksverwaltung/src/DomainLayer/VideoGame.java index 474f9bb..6510a95 100644 --- a/Bibliotheksverwaltung/src/DomainLayer/VideoGame.java +++ b/Bibliotheksverwaltung/src/DomainLayer/VideoGame.java @@ -1,36 +1,28 @@ package DomainLayer; -import java.time.LocalDate; public class VideoGame extends Medium { - public VideoGame(String id, String title, String releaseYear) { - super(id, title, releaseYear); - } + public VideoGame(String id, String title, String releaseYear) { + super(id, title, releaseYear); + } - @Override - public int getBorrowPeriod() { - return 28; // 4 Wochen - } + @Override + public int getBorrowPeriod() { + return 28; // 1 Woche für DVDs + } - @Override - public boolean isRenewable() { - return true; // Verlängerung möglich - } + @Override + public boolean isRenewable() { + return true; // Keine Verlängerung für DVDs + } - @Override - public int getMaxRenewals() { - return 1; // Bis zu 1 Mal verlängerbar - } + @Override + public int getMaxRenewals() { + return 1; // Keine Verlängerung + } @Override public String getAuthor() { - // TODO Auto-generated method stub - return null; - } - - @Override - public void setBorrowDate(LocalDate currentDate) { - // TODO Auto-generated method stub - + return null; // DVDs haben keinen Autor } } \ No newline at end of file -- 2.51.0 From a7c8f96e23c473961f2046144696e0917c5b1726 Mon Sep 17 00:00:00 2001 From: elarturo Date: Tue, 19 Nov 2024 10:07:23 +0100 Subject: [PATCH 04/14] Ausleihzeit verbessert --- Bibliotheksverwaltung/src/DomainLayer/CD.java | 41 ++++++++----------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/Bibliotheksverwaltung/src/DomainLayer/CD.java b/Bibliotheksverwaltung/src/DomainLayer/CD.java index 54ef443..a5594fa 100644 --- a/Bibliotheksverwaltung/src/DomainLayer/CD.java +++ b/Bibliotheksverwaltung/src/DomainLayer/CD.java @@ -1,36 +1,27 @@ package DomainLayer; -import java.time.LocalDate; - public class CD extends Medium { - public CD(String id, String title, String releaseYear) { - super(id, title, releaseYear); - } + public CD(String id, String title, String releaseYear) { + super(id, title, releaseYear); + } - @Override - public int getBorrowPeriod() { - return 14; // 2 Wochen - } + @Override + public int getBorrowPeriod() { + return 14; // 1 Woche für DVDs + } - @Override - public boolean isRenewable() { - return false; // Keine Verlängerung möglich - } + @Override + public boolean isRenewable() { + return false; // Keine Verlängerung für DVDs + } - @Override - public int getMaxRenewals() { - return 0; // Keine Verlängerung - } + @Override + public int getMaxRenewals() { + return 0; // Keine Verlängerung + } @Override public String getAuthor() { - // TODO Auto-generated method stub - return null; - } - - @Override - public void setBorrowDate(LocalDate currentDate) { - // TODO Auto-generated method stub - + return null; // DVDs haben keinen Autor } } \ No newline at end of file -- 2.51.0 From da24a584f65c154edf3bea067b24821ef1d78049 Mon Sep 17 00:00:00 2001 From: elarturo Date: Tue, 19 Nov 2024 10:07:28 +0100 Subject: [PATCH 05/14] Ausleihzeit verbessert --- .../src/DomainLayer/DVD.java | 41 ++++++++----------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/Bibliotheksverwaltung/src/DomainLayer/DVD.java b/Bibliotheksverwaltung/src/DomainLayer/DVD.java index 9d9231a..40985af 100644 --- a/Bibliotheksverwaltung/src/DomainLayer/DVD.java +++ b/Bibliotheksverwaltung/src/DomainLayer/DVD.java @@ -1,36 +1,27 @@ package DomainLayer; -import java.time.LocalDate; - public class DVD extends Medium { - public DVD(String id, String title, String releaseYear) { - super(id, title, releaseYear); - } + public DVD(String id, String title, String releaseYear) { + super(id, title, releaseYear); + } - @Override - public int getBorrowPeriod() { - return 7; // 1 Woche - } + @Override + public int getBorrowPeriod() { + return 7; // 1 Woche für DVDs + } - @Override - public boolean isRenewable() { - return false; // Keine Verlängerung möglich - } + @Override + public boolean isRenewable() { + return false; // Keine Verlängerung für DVDs + } - @Override - public int getMaxRenewals() { - return 0; // Keine Verlängerung - } + @Override + public int getMaxRenewals() { + return 0; // Keine Verlängerung + } @Override public String getAuthor() { - // TODO Auto-generated method stub - return null; - } - - @Override - public void setBorrowDate(LocalDate currentDate) { - // TODO Auto-generated method stub - + return null; // DVDs haben keinen Autor } } -- 2.51.0 From 02f146a295653acc57d345a11ba5872685261101 Mon Sep 17 00:00:00 2001 From: elarturo Date: Tue, 19 Nov 2024 10:07:35 +0100 Subject: [PATCH 06/14] Ausleihzeit verbessert --- .../src/DomainLayer/BoardGame.java | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/Bibliotheksverwaltung/src/DomainLayer/BoardGame.java b/Bibliotheksverwaltung/src/DomainLayer/BoardGame.java index ecefd2f..f655f1f 100644 --- a/Bibliotheksverwaltung/src/DomainLayer/BoardGame.java +++ b/Bibliotheksverwaltung/src/DomainLayer/BoardGame.java @@ -1,6 +1,5 @@ package DomainLayer; -import java.time.LocalDate; public class BoardGame extends Medium { public BoardGame(String id, String title, String releaseYear) { @@ -9,12 +8,12 @@ public class BoardGame extends Medium { @Override public int getBorrowPeriod() { - return 14; // 2 Wochen + return 14; // 1 Woche für DVDs } @Override public boolean isRenewable() { - return false; // Keine Verlängerung möglich + return false; // Keine Verlängerung für DVDs } @Override @@ -24,13 +23,6 @@ public class BoardGame extends Medium { @Override public String getAuthor() { - // TODO Auto-generated method stub - return null; - } - - @Override - public void setBorrowDate(LocalDate currentDate) { - // TODO Auto-generated method stub - + return null; // DVDs haben keinen Autor } } \ No newline at end of file -- 2.51.0 From 2a5998d23179e96b9ce66581a8e449a6c2de018c Mon Sep 17 00:00:00 2001 From: elarturo Date: Tue, 19 Nov 2024 10:07:45 +0100 Subject: [PATCH 07/14] Ausleihzeit verbessert --- Bibliotheksverwaltung/src/DomainLayer/Book.java | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/Bibliotheksverwaltung/src/DomainLayer/Book.java b/Bibliotheksverwaltung/src/DomainLayer/Book.java index dc593c1..5bd4c45 100644 --- a/Bibliotheksverwaltung/src/DomainLayer/Book.java +++ b/Bibliotheksverwaltung/src/DomainLayer/Book.java @@ -1,16 +1,14 @@ package DomainLayer; -import java.time.LocalDate; - public class Book extends Medium { private String author; // Nur Bücher haben einen Autor + // Konstruktor public Book(String id, String title, String releaseYear, String author) { super(id, title, releaseYear); // Aufruf des Konstruktors der Oberklasse Medium this.author = author; } - // Implementierung von getAuthor() für Bücher @Override public String getAuthor() { return this.author; // Gibt den Autor des Buches zurück @@ -18,22 +16,16 @@ public class Book extends Medium { @Override public int getBorrowPeriod() { - return 28; // 4 Wochen + return 28; // 4 Wochen für Bücher } @Override public boolean isRenewable() { - return true; // Verlängerung möglich + return true; // Bücher können verlängert werden } @Override public int getMaxRenewals() { - return 3; // Bis zu 3 Mal verlängerbar - } - - @Override - public void setBorrowDate(LocalDate currentDate) { - // TODO Auto-generated method stub - + return 3; // Maximale 3 Verlängerungen für Bücher } } -- 2.51.0 From 128edcf8e1fac74c264e31840c935c9bbad25831 Mon Sep 17 00:00:00 2001 From: elarturo Date: Tue, 19 Nov 2024 10:08:02 +0100 Subject: [PATCH 08/14] Konstruktor ausgebaut --- Bibliotheksverwaltung/src/DomainLayer/Admin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Bibliotheksverwaltung/src/DomainLayer/Admin.java b/Bibliotheksverwaltung/src/DomainLayer/Admin.java index 2417dfe..74a953f 100644 --- a/Bibliotheksverwaltung/src/DomainLayer/Admin.java +++ b/Bibliotheksverwaltung/src/DomainLayer/Admin.java @@ -2,7 +2,7 @@ package DomainLayer; public class Admin extends User { public Admin(String id, String name) { - super(id, name, 0); // Admin hat keine Jahresgebühr + super(id, name, 0.0, "admin"); // Admin hat keine jährliche Gebühr, wird aber als "admin" gesetzt } // Admin-spezifische Funktionen -- 2.51.0 From 79d4422479ae44a63e75cae68ea755d60cca9372 Mon Sep 17 00:00:00 2001 From: elarturo Date: Tue, 19 Nov 2024 10:08:29 +0100 Subject: [PATCH 09/14] =?UTF-8?q?Jahresgeb=C3=BChr=20gesetzt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bibliotheksverwaltung/src/DomainLayer/Adult.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Bibliotheksverwaltung/src/DomainLayer/Adult.java b/Bibliotheksverwaltung/src/DomainLayer/Adult.java index a0288ff..f216b39 100644 --- a/Bibliotheksverwaltung/src/DomainLayer/Adult.java +++ b/Bibliotheksverwaltung/src/DomainLayer/Adult.java @@ -1,9 +1,9 @@ package DomainLayer; public class Adult extends User { - private static final double REGULAR_FEE = 50.0; // Jahresgebühr für Erwachsene + private static final double REGULAR_FEE = 50.0; // Jahresgebühr für Erwachsene - public Adult(String id, String name) { - super(id, name, REGULAR_FEE); - } + public Adult(String id, String name) { + super(id, name, REGULAR_FEE, "user"); + } } \ No newline at end of file -- 2.51.0 From 7ecd2575c2f2420f34c31a6b3a9f95a9029c880c Mon Sep 17 00:00:00 2001 From: elarturo Date: Tue, 19 Nov 2024 10:08:45 +0100 Subject: [PATCH 10/14] interface implementiert --- Bibliotheksverwaltung/src/DomainLayer/Loanable.java | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Bibliotheksverwaltung/src/DomainLayer/Loanable.java diff --git a/Bibliotheksverwaltung/src/DomainLayer/Loanable.java b/Bibliotheksverwaltung/src/DomainLayer/Loanable.java new file mode 100644 index 0000000..8373175 --- /dev/null +++ b/Bibliotheksverwaltung/src/DomainLayer/Loanable.java @@ -0,0 +1,11 @@ +package DomainLayer; + +import java.time.LocalDate; + +public interface Loanable { + int getBorrowPeriod(); // Gibt die Ausleihfrist in Tagen zurück + boolean isRenewable(); // Gibt an, ob das Medium verlängert werden kann + int getMaxRenewals(); // Gibt die maximale Anzahl an Verlängerungen zurück + void setBorrowDate(LocalDate borrowDate); // Setzt das Ausleihdatum + LocalDate getDueDate(); // Gibt das Fälligkeitsdatum zurück +} -- 2.51.0 From 1816c277d86363d8a010d8dffd786e234e0d0387 Mon Sep 17 00:00:00 2001 From: elarturo Date: Tue, 19 Nov 2024 10:09:01 +0100 Subject: [PATCH 11/14] =?UTF-8?q?Methode=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/DomainLayer/Medium.java | 118 +++++++++--------- 1 file changed, 60 insertions(+), 58 deletions(-) diff --git a/Bibliotheksverwaltung/src/DomainLayer/Medium.java b/Bibliotheksverwaltung/src/DomainLayer/Medium.java index a0e8eb4..ef61036 100644 --- a/Bibliotheksverwaltung/src/DomainLayer/Medium.java +++ b/Bibliotheksverwaltung/src/DomainLayer/Medium.java @@ -2,77 +2,79 @@ package DomainLayer; import java.time.LocalDate; -public abstract class Medium { - private String id; - private String title; - private String releaseYear; - private boolean isBorrowed; - private LocalDate borrowDate; - private LocalDate dueDate; - private int renewals; +public abstract class Medium implements Loanable { + private String id; + private String title; + private String releaseYear; + private boolean isBorrowed; + private LocalDate borrowDate; + private LocalDate dueDate; - public Medium(String id, String title, String releaseYear) { - this.id = id; - this.title = title; - this.releaseYear = releaseYear; - this.isBorrowed = false; - this.renewals = 0; - } + // Konstruktor + public Medium(String id, String title, String releaseYear) { + this.id = id; + this.title = title; + this.releaseYear = releaseYear; + } + + private int renewals = 0; // Anzahl der bisherigen Verlängerungen - public String getId() { - return id; - } + // Getter und Setter für Verlängerungen + public int getRenewals() { + return renewals; + } - public String getTitle() { - return title; - } + public void increaseRenewals() { + renewals++; + } - public String getReleaseYear() { - return releaseYear; - } + public void resetRenewals() { + renewals = 0; + } - public boolean isBorrowed() { - return isBorrowed; - } - public void setBorrowed(boolean borrowed) { - this.isBorrowed = borrowed; - } + @Override + public void setBorrowDate(LocalDate borrowDate) { + this.borrowDate = borrowDate; + this.dueDate = borrowDate != null ? borrowDate.plusDays(getBorrowPeriod()) : null; // Fälligkeitsdatum berechnen + } - public LocalDate getDueDate() { - return dueDate; - } - public void setDueDate(LocalDate dueDate) { - this.dueDate = dueDate; - } + @Override + public LocalDate getDueDate() { + return dueDate; + } - public int getRenewals() { - return renewals; - } + public void setDueDate(LocalDate dueDate) { + this.dueDate = dueDate; // Erlaubt sowohl ein Datum als auch null + } - public void increaseRenewals() { - this.renewals++; - } - public void resetRenewals() { - this.renewals = 0; - } + public boolean isBorrowed() { + return isBorrowed; + } - // Abstrakte Methoden - public abstract int getBorrowPeriod(); - public abstract boolean isRenewable(); - public abstract int getMaxRenewals(); + public void setBorrowed(boolean borrowed) { + isBorrowed = borrowed; + } - // Neue Methode für den Autor - public abstract String getAuthor(); + public String getId() { + return id; + } - public LocalDate getBorrowDate() { - return borrowDate; - } + public String getTitle() { + return title; + } + + public String getReleaseYear() { + return releaseYear; + } + + // Neue Methode für den Autor + public abstract String getAuthor(); + + public LocalDate getBorrowDate() { + return borrowDate; + } - public void setBorrowDate(LocalDate borrowDate) { - this.borrowDate = borrowDate; - } - } -- 2.51.0 From 43324565e5813eb69ea2c2d0e963ca9642aea88d Mon Sep 17 00:00:00 2001 From: elarturo Date: Tue, 19 Nov 2024 10:09:18 +0100 Subject: [PATCH 12/14] Rolle zu "user" gesetzt --- Bibliotheksverwaltung/src/DomainLayer/Student.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Bibliotheksverwaltung/src/DomainLayer/Student.java b/Bibliotheksverwaltung/src/DomainLayer/Student.java index 1b7c092..a84f99b 100644 --- a/Bibliotheksverwaltung/src/DomainLayer/Student.java +++ b/Bibliotheksverwaltung/src/DomainLayer/Student.java @@ -1,9 +1,9 @@ package DomainLayer; public class Student extends User { - private static final double DISCOUNTED_FEE = 25.0; // Jahresgebühr für Schüler/Studenten + private static final double DISCOUNTED_FEE = 25.0; // Jahresgebühr für Schüler/Studenten - public Student(String id, String name) { - super(id, name, DISCOUNTED_FEE); - } -} \ No newline at end of file + public Student(String id, String name) { + super(id, name, DISCOUNTED_FEE, "user"); // Rolle als "user" setzen + } +} -- 2.51.0 From 6bfc94ad3312be8f83dfa1dbe4f098f975dcad2a Mon Sep 17 00:00:00 2001 From: elarturo Date: Tue, 19 Nov 2024 10:09:40 +0100 Subject: [PATCH 13/14] =?UTF-8?q?Methode=20payfees=20hinzugef=C3=BCgt=20un?= =?UTF-8?q?d=20korrigiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/DomainLayer/User.java | 112 ++++++++++-------- 1 file changed, 60 insertions(+), 52 deletions(-) diff --git a/Bibliotheksverwaltung/src/DomainLayer/User.java b/Bibliotheksverwaltung/src/DomainLayer/User.java index 632dd6a..d72a12d 100644 --- a/Bibliotheksverwaltung/src/DomainLayer/User.java +++ b/Bibliotheksverwaltung/src/DomainLayer/User.java @@ -4,61 +4,69 @@ import java.util.ArrayList; import java.util.List; public abstract class User { - private String id; - private String name; - private double outstandingFees; // Ausstehende Gebühren - private List borrowedMedia; + private String id; + private String name; + private double annualFee; // Jahresgebühr + private double outstandingFees; // Ausstehende Gebühren + private List borrowedMedia; + private String role; // "admin", "user", "student", "scholar" - public User(String id, String name, double annualFee) { - this.id = id; - this.name = name; - this.outstandingFees = 0.0; - this.borrowedMedia = new ArrayList<>(); - } + public User(String id, String name, double annualFee, String role) { + this.id = id; + this.name = name; + this.annualFee = annualFee; + this.outstandingFees = 0.0; + this.borrowedMedia = new ArrayList<>(); + this.role = role; // Setzt die Rolle des Benutzers + } - public String getId() { - return id; - } + public String getId() { + return id; + } - public String getName() { - return name; - } + public String getName() { + return name; + } - public double getOutstandingFees() { + public double getAnnualFee() { + return annualFee; + } + + public void addFee(double fee) { + this.outstandingFees += fee; + } + + public void payFees(double amount) { + if (amount > outstandingFees) { + System.out.println("Der Betrag übersteigt die ausstehenden Gebühren."); + return; + } + outstandingFees -= amount; + System.out.println("Zahlung von " + amount + "€ erfolgreich. Verbleibende Gebühren: " + outstandingFees + "€."); + } + + public List getBorrowedMedia() { + return borrowedMedia; + } + + public void borrowMedium(Medium medium) { + borrowedMedia.add(medium); + } + + public void returnMedium(Medium medium) { + borrowedMedia.remove(medium); + } + + public String getRole() { + return role; + } + + @Override + public String toString() { + return "Benutzer{" + "ID='" + id + '\'' + ", Name='" + name + '\'' + ", Jahresgebühr=" + annualFee + + ", Ausstehende Gebühren=" + outstandingFees + '}'; + } + public double getOutstandingFees() { return outstandingFees; } - - public void addFee(double fee) { - this.outstandingFees += fee; - } - - public void payFees(double amount) { - if (amount > outstandingFees) { - System.out.println("Der Betrag übersteigt die ausstehenden Gebühren."); - return; - } - outstandingFees -= amount; - System.out.println("Zahlung von " + amount + "€ erfolgreich. Verbleibende Gebühren: " + outstandingFees + "€."); - } - - public List getBorrowedMedia() { - return borrowedMedia; - } - - public void borrowMedium(Medium medium) { - borrowedMedia.add(medium); - } - - public void returnMedium(Medium medium) { - borrowedMedia.remove(medium); - } - - @Override - public String toString() { - return "Benutzer{" + - "ID='" + id + '\'' + - ", Name='" + name + '\'' + - ", Ausstehende Gebühren=" + outstandingFees + - '}'; - } -} \ No newline at end of file +} -- 2.51.0 From 300dbcd8307bc3c1fbe3f32f5b4b27b8e73ffdbf Mon Sep 17 00:00:00 2001 From: elarturo Date: Tue, 19 Nov 2024 10:10:00 +0100 Subject: [PATCH 14/14] =?UTF-8?q?TUI=20vergr=C3=B6=C3=9Fert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/UILayer/LibraryUI.java | 389 ++++++++++++------ 1 file changed, 259 insertions(+), 130 deletions(-) diff --git a/Bibliotheksverwaltung/src/UILayer/LibraryUI.java b/Bibliotheksverwaltung/src/UILayer/LibraryUI.java index e16a95d..1e35782 100644 --- a/Bibliotheksverwaltung/src/UILayer/LibraryUI.java +++ b/Bibliotheksverwaltung/src/UILayer/LibraryUI.java @@ -18,151 +18,246 @@ public class LibraryUI { Scanner scanner = new Scanner(System.in); while (true) { - System.out.println("\nAktuelles Datum: " + borrowService.getCurrentDate()); - System.out.println("1. Registrieren"); - System.out.println("2. Anmelden"); - System.out.println("3. Datum ändern"); - System.out.println("4. Katalog anzeigen"); - System.out.println("5. Medium ausleihen"); - System.out.println("6. Medium zurückgeben"); - System.out.println("7. Medium verlängern"); - System.out.println("8. Gebühren anzeigen"); - System.out.println("9. Admin-Zahlung bearbeiten"); - System.out.println("10. Medien durchsuchen"); - System.out.println("11. Beenden"); + // Wenn der Benutzer nicht eingeloggt ist, zeige Anmeldeoptionen + if (currentUser == null) { + System.out.println("\nAktuelles Datum: " + borrowService.getCurrentDate()); + System.out.println("1. Registrieren"); + System.out.println("2. Anmelden"); + System.out.println("3. Katalog anzeigen"); + System.out.println("4. Beenden"); - int choice = scanner.nextInt(); - switch (choice) { - case 1 -> registerUser(scanner); - case 2 -> login(scanner); - case 3 -> changeDate(scanner); - case 4 -> showCatalog(); - case 5 -> borrowMedia(scanner); - case 6 -> returnMedia(scanner); - case 7 -> renewMedia(scanner); - case 8 -> showFees(); - case 9 -> processAdminPayment(scanner); - case 10 -> searchMedia(scanner); - case 11 -> { - System.out.println("Programm beendet."); - return; - } - default -> System.out.println("Ungültige Auswahl."); + int choice = scanner.nextInt(); + scanner.nextLine(); // Puffer leeren + + switch (choice) { + case 1 -> registerUser(scanner); // Benutzerregistrierung + case 2 -> login(scanner); // Benutzeranmeldung + case 3 -> showCatalog(); + case 4 -> { + System.out.println("Programm beendet."); + return; + } + default -> System.out.println("Ungültige Auswahl."); + } + } else { + // Wenn der Benutzer eingeloggt ist, zeige die entsprechenden Optionen + System.out.println("\nAktuelles Datum: " + borrowService.getCurrentDate()); + + // Menü für alle Benutzer (Admin und normaler Benutzer) + System.out.println("3. Datum ändern"); + System.out.println("4. Katalog anzeigen"); + System.out.println("5. Medium ausleihen"); + System.out.println("6. Medium zurückgeben"); + System.out.println("7. Medium verlängern"); + System.out.println("8. Gebühren anzeigen"); + System.out.println("9. Admin-Zahlung bearbeiten"); + System.out.println("10. Medien durchsuchen"); + System.out.println("11. Abmelden"); + System.out.println("12. Beenden"); + + // Wenn der Benutzer ein Admin ist, gib nur die Admin-Optionen an + if (currentUser.getRole().equals("admin")) { + // Admin kann nur die Zahlungen bearbeiten + System.out.println("Admin hat nur Zugriff auf 'Admin-Zahlung bearbeiten'."); + } + + int choice = scanner.nextInt(); + scanner.nextLine(); // Puffer leeren + + switch (choice) { + + case 3 -> changeDate(scanner); // Datum ändern + + case 4 -> { + if (currentUser.getRole().equals("admin")) { + System.out.println("Admins kann sich nicht den Katalog anzeigen lassen."); + } else { + showCatalog();// Medien ausleihen (nur für Benutzer) + } + + } + + case 5 -> { + if (currentUser.getRole().equals("admin")) { + System.out.println("Admins können keine Medien ausleihen."); + } else { + borrowMedia(scanner); // Medien ausleihen (nur für Benutzer) + } + } + case 6 -> { + if (currentUser.getRole().equals("admin")) { + System.out.println("Admins können keine Medien zurückgeben."); + } else { + returnMedia(scanner); // Medien zurückgeben (nur für Benutzer) + } + } + case 7 -> { + if (currentUser.getRole().equals("admin")) { + System.out.println("Admins können die Leihfrist nicht verlängern."); + } else { + renewMedia(scanner); // Medien verlängern (nur für Benutzer) + } + } + case 8 -> { + if (currentUser.getRole().equals("admin")) { + System.out.println("Admins können keine Gebühren anzeigen."); + } else { + showOutstandingFees(scanner); // Gebühren anzeigen (nur für Benutzer) + } + } + case 9 -> { + if (currentUser.getRole().equals("admin")) { + processAdminPayment(scanner); // Admin-Zahlung bearbeiten + } else { + System.out.println("Zahlungen können nur von einem Admin bearbeitet werden."); + } + } + case 10 -> searchMedia(scanner); // Medien durchsuchen (auch für Benutzer) + case 11 -> logout(); // Abmelden + case 12 -> { + System.out.println("Programm beendet."); + return; + } + default -> System.out.println("Ungültige Auswahl."); + } } } } + private void logout() { + System.out.println("Sie haben sich erfolgreich abgemeldet."); + currentUser = null; // Setze den aktuellen Benutzer auf null + } + private void registerUser(Scanner scanner) { - System.out.print("Geben Sie den Benutzertyp ein (1 = Erwachsener, 2 = Schüler/Student): "); - int userType = scanner.nextInt(); - scanner.nextLine(); // Puffer leeren - System.out.print("Geben Sie den Namen des Benutzers ein: "); - String name = scanner.nextLine(); - System.out.print("Geben Sie eine eindeutige Kartennummer ein: "); - String id = scanner.nextLine(); + System.out.print("Geben Sie eine Benutzer-ID ein: "); + String userId = scanner.nextLine(); - User newUser; - if (userType == 1) { - newUser = new Adult(id, name); - } else if (userType == 2) { - newUser = new Student(id, name); - } else { - System.out.println("Ungültiger Benutzertyp."); - return; - } + // Admin-ID '001' darf nicht für normale Benutzer verwendet werden + if (userId.equals("001")) { + System.out.println("Die ID '001' ist für den Admin reserviert und kann nicht verwendet werden."); + return; + } - libraryService.addUser(newUser); - System.out.println("Benutzer erfolgreich registriert: " + newUser); + System.out.print("Geben Sie Ihren Namen ein: "); + String userName = scanner.nextLine(); + + System.out.println("Sind Sie ein Student/Schüler? (Ja/Nein): "); + String userType = scanner.nextLine().trim().toLowerCase(); + + User newUser; + if (userType.equals("ja")) { + newUser = new Student(userId, userName); // Student-Instanz erstellen + } else { + newUser = new Adult(userId, userName); // Erwachsene-Instanz erstellen + } + + libraryService.addUser(newUser); // Benutzer zur Bibliothek hinzufügen + System.out.println("Benutzer erfolgreich registriert."); } private void login(Scanner scanner) { System.out.print("Geben Sie Ihre Benutzer-ID ein: "); - String userId = scanner.next(); + String userId = scanner.nextLine(); + + // Suche nach dem Benutzer in der Bibliothek currentUser = libraryService.findUserById(userId); + if (currentUser != null) { System.out.println("Willkommen, " + currentUser.getName() + "!"); - borrowService.showOutstandingFees(currentUser); + // Zeige die aktuellen ausstehenden Gebühren nach der Anmeldung an + System.out.println("Ihre ausstehenden Gebühren: " + currentUser.getOutstandingFees() + "€."); } else { - System.out.println("Benutzer nicht gefunden. Bitte zuerst registrieren."); + System.out.println("Benutzer nicht gefunden."); } } private void changeDate(Scanner scanner) { System.out.print("Geben Sie das neue Datum (YYYY-MM-DD) ein: "); - String newDateInput = scanner.next(); + String newDateInput = scanner.nextLine(); // Verwenden von nextLine() um die Eingabe zu lesen + + if (newDateInput.isEmpty()) { + System.out.println("Kein Datum eingegeben, es wird das heutige Datum verwendet."); + return; // Wenn keine Eingabe erfolgt, wird das heutige Datum verwendet + } try { - LocalDate newDate = LocalDate.parse(newDateInput); + LocalDate newDate = LocalDate.parse(newDateInput); // Versucht, das Datum zu parsen borrowService.setCurrentDate(newDate); // Datum ändern und ggf. fehlende borrowDates setzen } catch (Exception e) { - System.out.println("Ungültiges Datumformat. Bitte erneut versuchen."); + System.out.println( + "Ungültiges Datumformat. Bitte stellen Sie sicher, dass das Datum im Format YYYY-MM-DD eingegeben wird."); } } private void borrowMedia(Scanner scanner) { - if (currentUser == null) { - System.out.println("Bitte melden Sie sich zuerst an."); - return; - } + if (currentUser == null) { + System.out.println("Bitte melden Sie sich zuerst an."); + return; + } - System.out.print("Geben Sie die ID des Mediums ein, das Sie ausleihen möchten: "); - String mediumId = scanner.next(); - Medium medium = libraryService.findMediumById(mediumId); + System.out.print("Geben Sie die ID des Mediums ein, das Sie ausleihen möchten: "); + String mediumId = scanner.next(); + Medium medium = libraryService.findMediumById(mediumId); - if (medium != null) { - borrowService.borrowMedium(currentUser, medium); // Heutiges Datum wird automatisch gesetzt - } else { - System.out.println("Medium nicht gefunden."); - } + if (medium != null) { + String result = borrowService.borrowMedium(currentUser, medium); + System.out.println(result); // Zeigt die Rückgabe der Service-Methode an + } else { + System.out.println("Medium nicht gefunden."); + } } + + + private void returnMedia(Scanner scanner) { - if (currentUser == null) { - System.out.println("Bitte melden Sie sich zuerst an."); - return; - } + if (currentUser == null) { + System.out.println("Bitte melden Sie sich zuerst an."); + return; + } - System.out.print("Geben Sie die ID des Mediums ein, das Sie zurückgeben möchten: "); - String mediumId = scanner.next(); - Medium medium = libraryService.findMediumById(mediumId); + System.out.print("Geben Sie die ID des Mediums ein, das Sie zurückgeben möchten: "); + String mediumId = scanner.nextLine(); - if (medium != null) { - borrowService.returnMedium(currentUser, medium); - } else { - System.out.println("Medium nicht gefunden."); - } + Medium medium = libraryService.findMediumById(mediumId); + if (medium != null) { + String result = borrowService.returnMedium(currentUser, medium); + System.out.println(result); // Zeigt die Rückgabeinformationen an + } else { + System.out.println("Medium nicht gefunden."); + } } - private void showFees() { - if (currentUser == null) { - System.out.println("Bitte melden Sie sich zuerst an."); - return; - } - borrowService.showOutstandingFees(currentUser); - } + private void processAdminPayment(Scanner scanner) { - // Überprüfen, ob der aktuelle Benutzer der Admin ist - if (!(currentUser instanceof Admin)) { - System.out.println("Nur der Admin kann Zahlungen bearbeiten."); - return; - } + if (currentUser == null || !currentUser.getRole().equals("admin")) { + System.out.println("Nur ein Admin kann Zahlungen bearbeiten."); + return; + } - // Admin-Prozess: Zahlung bearbeiten - Admin admin = (Admin) currentUser; // Casten des aktuellen Benutzers zu Admin + System.out.print("Geben Sie die Benutzer-ID für die Zahlung ein: "); + String userId = scanner.nextLine(); - System.out.print("Geben Sie die Benutzer-ID ein, für den Sie die Zahlung bearbeiten möchten: "); - String userId = scanner.next(); - User user = libraryService.findUserById(userId); + // Suchen des Benutzers + User user = libraryService.findUserById(userId); + if (user != null) { + System.out.println("Ausstehende Gebühren für " + user.getName() + ": " + user.getOutstandingFees() + "€."); + System.out.print("Geben Sie den zu zahlenden Betrag ein: "); + double paymentAmount = scanner.nextDouble(); + scanner.nextLine(); // Puffer leeren - if (user == null) { - System.out.println("Benutzer nicht gefunden."); - return; - } - - System.out.print("Geben Sie den Zahlungsbetrag ein: "); - double amount = scanner.nextDouble(); - admin.processPayment(user, amount); // Admin kann die Zahlung bearbeiten + // Zahlung bearbeiten + if (paymentAmount <= user.getOutstandingFees()) { + user.payFees(paymentAmount); + System.out.println("Zahlung erfolgreich verarbeitet."); + } else { + System.out.println("Der Betrag übersteigt die ausstehenden Gebühren."); + } + } else { + System.out.println("Benutzer nicht gefunden."); + } } private void searchMedia(Scanner scanner) { @@ -190,40 +285,74 @@ public class LibraryUI { } private void renewMedia(Scanner scanner) { - if (currentUser == null) { - System.out.println("Bitte melden Sie sich zuerst an."); - return; - } + if (currentUser == null) { + System.out.println("Bitte melden Sie sich zuerst an."); + return; + } - System.out.print("Geben Sie die ID des Mediums ein, das Sie verlängern möchten: "); - String mediumId = scanner.next(); - Medium medium = libraryService.findMediumById(mediumId); + System.out.print("Geben Sie die ID des Mediums ein, das Sie verlängern möchten: "); + String mediumId = scanner.next(); + Medium medium = libraryService.findMediumById(mediumId); - if (medium != null) { - System.out.print( - "Möchten Sie das Ausleihdatum ändern? (YYYY-MM-DD oder leer lassen, um es unverändert zu lassen): "); - scanner.nextLine(); // Puffer leeren - String inputDate = scanner.nextLine(); + if (medium != null) { + // Überprüfen, ob der Benutzer das Medium ausgeliehen hat + if (!currentUser.getBorrowedMedia().contains(medium)) { + System.out.println("Dieses Medium wurde nicht von Ihnen ausgeliehen und kann daher nicht verlängert werden."); + return; + } - LocalDate newBorrowDate = null; - if (!inputDate.isBlank()) { - try { - newBorrowDate = LocalDate.parse(inputDate); // Neues Ausleihdatum parsen - } catch (Exception e) { - System.out.println("Ungültiges Datum. Das ursprüngliche Ausleihdatum bleibt bestehen."); - } - } + // Optional: Ausleihdatum ändern + System.out.print( + "Möchten Sie das Ausleihdatum ändern? (YYYY-MM-DD oder leer lassen, um es unverändert zu lassen): "); + scanner.nextLine(); // Puffer leeren + String inputDate = scanner.nextLine(); - // Aufruf der renewMedium-Methode im BorrowService mit den Parametern - borrowService.renewMedium(currentUser, medium, newBorrowDate); // Hier übergeben wir currentUser, medium und - // newBorrowDate - } else { - System.out.println("Medium nicht gefunden."); - } + LocalDate newBorrowDate = null; + if (!inputDate.isBlank()) { + try { + newBorrowDate = LocalDate.parse(inputDate); + } catch (Exception e) { + System.out.println("Ungültiges Datum. Das ursprüngliche Ausleihdatum bleibt bestehen."); + } + } + + // Verlängerung durchführen und Ergebnis anzeigen + String result = borrowService.renewMedium(currentUser, medium, newBorrowDate); + System.out.println(result); + } else { + System.out.println("Medium nicht gefunden."); + } } - + + private void showCatalog() { - libraryService.displayCatalog(); // Zeigt den gesamten Katalog mit Ausleihstatus an + List catalog = libraryService.displayCatalog(); + System.out.println("Katalog der Medien:"); + for (String entry : catalog) { + System.out.println(entry); // Anzeige jedes Mediums + } } + + private void showOutstandingFees(Scanner scanner) { + if (currentUser == null) { + System.out.println("Bitte melden Sie sich zuerst an."); + return; + } + + // Zeige die ausstehenden Gebühren des Benutzers an + System.out.println("Ausstehende Gebühren für " + currentUser.getName() + ": " + currentUser.getOutstandingFees() + "€."); + + // Zeige die ausgeliehenen Medien und deren Fälligkeitsdaten an + if (!currentUser.getBorrowedMedia().isEmpty()) { + System.out.println("Ausgeliehene Medien:"); + for (Medium medium : currentUser.getBorrowedMedia()) { + System.out.println("- Titel: " + medium.getTitle() + ", Fällig am: " + medium.getDueDate()); + } + } else { + System.out.println("Keine ausgeliehenen Medien."); + } + } + + } -- 2.51.0