ich habe versucht die fassade wieder einzu bauen damit die ui weniger code und meher trennung bekommt.
parent
e17196354d
commit
5f61cdc46f
|
@ -8,7 +8,7 @@ abstract class Benutzer {
|
|||
private double gebuehren; // Aktuelle ausstehende Gebühren des Benutzers
|
||||
|
||||
// Konstruktor
|
||||
public Benutzer(String name, String nachname, int kundennummer, String art) {
|
||||
public Benutzer(String name, String nachname, int kundennummer, String art) {
|
||||
this.name = name;
|
||||
this.nachname = nachname;
|
||||
this.kundennummer = kundennummer;
|
||||
|
|
15
Creator.java
15
Creator.java
|
@ -1,15 +1,16 @@
|
|||
class Creator {
|
||||
// Factory-Methode für Benutzer
|
||||
static Benutzer factoryBenutzer(String name, String nachname, int kundennummer, String art) {
|
||||
if (art.equals("e")) {
|
||||
return new Benutzer.Erwachsener(name, nachname, kundennummer);
|
||||
} else if (art.equals("s")) {
|
||||
return new Benutzer.SchuelerStudent(name, nachname, kundennummer, art);
|
||||
if (art.equalsIgnoreCase("e")) {
|
||||
return new Benutzer.Erwachsener(name, nachname, kundennummer); // Erstelle einen Erwachsenen
|
||||
} else if (art.equalsIgnoreCase("s")) {
|
||||
return new Benutzer.SchuelerStudent(name, nachname, kundennummer, art); // Erstelle einen Schüler/Studenten
|
||||
} else {
|
||||
return null;
|
||||
return null; // Unbekannte Benutzerart
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Factory-Methode für Medien
|
||||
public static Medien factoryMedien(String name, String regisseur, int id, String art, int erscheinungsjahr) {
|
||||
switch (art.toLowerCase()) {
|
||||
case "buch":
|
||||
|
@ -26,4 +27,4 @@ class Creator {
|
|||
throw new IllegalArgumentException("Unbekannter Medientyp: " + art);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
public class Fassade {
|
||||
|
||||
private final Verwaltung verwaltung;
|
||||
private LocalDate aktuellesDatum;
|
||||
|
||||
// Konstruktor
|
||||
public Fassade(Verwaltung verwaltung) {
|
||||
this.verwaltung = verwaltung;
|
||||
this.aktuellesDatum = LocalDate.now(); // Initiales Datum ist das heutige Datum
|
||||
}
|
||||
|
||||
// Benutzer registrieren
|
||||
public void registriereBenutzer(Benutzer benutzer) {
|
||||
verwaltung.addBenutzer(benutzer); // Benutzer zur Verwaltung hinzufügen
|
||||
}
|
||||
|
||||
// Benutzer anmelden
|
||||
public Benutzer anmeldenBenutzer(int kundennummer) {
|
||||
return verwaltung.benutzerListe.stream()
|
||||
.filter(b -> b.getKundennummer() == kundennummer)
|
||||
.findFirst()
|
||||
.orElse(null); // Gibt null zurück, wenn Benutzer nicht gefunden wurde
|
||||
}
|
||||
|
||||
// Medien durchsuchen
|
||||
public List<Medien> durchsuchenMedien(String suchbegriff) {
|
||||
// Rufe die Methode in der Verwaltung auf und übergebe die medienListe
|
||||
return verwaltung.durchsuchenMedien(verwaltung.mediensListe, suchbegriff);
|
||||
}
|
||||
|
||||
|
||||
// Medien ausleihen
|
||||
public void ausleihen(int medienId, Benutzer benutzer, LocalDate ausleihDatum, LocalDate rueckgabeDatum) {
|
||||
Medien medien = verwaltung.mediensListe.stream()
|
||||
.filter(m -> m.getId() == medienId)
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
if (medien != null) {
|
||||
verwaltung.addAL(medien, benutzer, ausleihDatum, rueckgabeDatum); // Leihe das Medium aus
|
||||
} else {
|
||||
System.out.println("Medien nicht gefunden.");
|
||||
}
|
||||
}
|
||||
|
||||
// Medien zurückgeben
|
||||
public void rueckgabe(int medienId, Benutzer benutzer, LocalDate rueckgabeDatum) {
|
||||
verwaltung.rueckgabe(medienId, benutzer, rueckgabeDatum); // Rückgabe des Mediums
|
||||
}
|
||||
|
||||
// Medien verlängern
|
||||
public void verlaengern(int medienId, Benutzer benutzer) {
|
||||
Medien medien = verwaltung.mediensListe.stream()
|
||||
.filter(m -> m.getId() == medienId)
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
if (medien != null) {
|
||||
verwaltung.verlängern(medien, benutzer); // Verlängere die Leihfrist
|
||||
} else {
|
||||
System.out.println("Medien nicht gefunden.");
|
||||
}
|
||||
}
|
||||
|
||||
// Zeit verschieben
|
||||
public void zeitVerschieben(LocalDate neuesDatum) {
|
||||
this.aktuellesDatum = neuesDatum; // Aktuelles Datum auf das neue Datum setzen
|
||||
}
|
||||
|
||||
// Aktuelles Datum abrufen
|
||||
public LocalDate getAktuellesDatum() {
|
||||
return aktuellesDatum; // Gibt das aktuelle Datum zurück
|
||||
}
|
||||
}
|
15
Main.java
15
Main.java
|
@ -1,9 +1,9 @@
|
|||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
// Erstelle die Instanzen
|
||||
Creator creator = new Creator();
|
||||
Verwaltung verwaltung = new Verwaltung();
|
||||
|
||||
|
||||
// Medienobjekte hinzufügen
|
||||
verwaltung.mediensListe.add(creator.factoryMedien("Java Programmierung", "Max Mustermann", 1, "buch", 2020));
|
||||
verwaltung.mediensListe.add(creator.factoryMedien("Datenstrukturen", "Julia Schmidt", 2, "buch", 2018));
|
||||
|
@ -16,8 +16,13 @@ public class Main {
|
|||
verwaltung.mediensListe.add(creator.factoryMedien("Minecraft", "Mojang", 9, "videospiel", 0));
|
||||
verwaltung.mediensListe.add(creator.factoryMedien("The Witcher 3", "CD Projekt", 10, "videospiel", 0));
|
||||
|
||||
// Ui mit der Verwaltung-Instanz initialisieren7
|
||||
Ui ui = new Ui(verwaltung);
|
||||
ui.anmeldung();
|
||||
// Erstelle die Fassade mit der Verwaltung
|
||||
Fassade fassade = new Fassade(verwaltung);
|
||||
|
||||
// UI mit der Fassade initialisieren
|
||||
Ui ui = new Ui(fassade);
|
||||
|
||||
// Anmeldung starten
|
||||
ui.starten();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
332
Ui.java
332
Ui.java
|
@ -1,291 +1,159 @@
|
|||
import java.time.LocalDate;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.*;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Ui {
|
||||
private final Scanner scanner = new Scanner(System.in);
|
||||
private final Verwaltung verwaltung;
|
||||
|
||||
// Zeitversatz für Tests
|
||||
private LocalDate aktuelleZeit = LocalDate.now();
|
||||
private final Fassade fassade;
|
||||
private final Scanner scanner;
|
||||
|
||||
public Ui(Verwaltung verwaltung) {
|
||||
this.verwaltung = verwaltung;
|
||||
public Ui(Fassade fassade) {
|
||||
this.fassade = fassade;
|
||||
this.scanner = new Scanner(System.in);
|
||||
}
|
||||
|
||||
void anmeldung() {
|
||||
boolean running = true;
|
||||
while (running) {
|
||||
System.out.println("Willkommen! Bitte wählen Sie eine Option:");
|
||||
System.out.println("1: Durchsuchen der Medien");
|
||||
System.out.println("2: Ausleihen eines Gegenstandes");
|
||||
System.out.println("3: Rückgabe eines Gegenstandes");
|
||||
System.out.println("4: Ausgeliehene Gegenstände und Gebühren anzeigen");
|
||||
System.out.println("5: Verlängern der Leihfrist");
|
||||
System.out.println("6: Verbuchen von überfälligen Gebühren (Admin)");
|
||||
System.out.println("7: Registrieren");
|
||||
System.out.println("8: Anmelden");
|
||||
System.out.println("9: Zeit verschieben (Testoption)");
|
||||
System.out.println("0: Programm beenden");
|
||||
public void starten() {
|
||||
boolean weiter = true;
|
||||
while (weiter) {
|
||||
System.out.println("Bitte wählen Sie eine Option:");
|
||||
System.out.println("1. Medien durchsuchen");
|
||||
System.out.println("2. Benutzer registrieren");
|
||||
System.out.println("3. Benutzer anmelden");
|
||||
System.out.println("4. Medien ausleihen");
|
||||
System.out.println("5. Medien zurückgeben");
|
||||
System.out.println("6. Medien verlängern");
|
||||
System.out.println("7. Gebühren einsehen");
|
||||
System.out.println("8. Zeit verschieben");
|
||||
System.out.println("9. Beenden");
|
||||
|
||||
int menue = scanner.nextInt();
|
||||
scanner.nextLine(); // Leert den Puffer nach nextInt()
|
||||
int auswahl = scanner.nextInt();
|
||||
scanner.nextLine(); // Puffer leeren
|
||||
|
||||
switch (menue) {
|
||||
case 1 -> suchenNachMedien();
|
||||
case 2 -> ausleihen();
|
||||
case 3 -> rueckgabeDurchfuehren();
|
||||
case 4 -> gebuehrenEinsehen();
|
||||
case 5 -> verlaengern();
|
||||
case 6 -> adminrechte();
|
||||
case 7 -> registrieren();
|
||||
case 8 -> anmelden();
|
||||
case 9 -> zeitVerschieben();
|
||||
case 0 -> {
|
||||
System.out.println("Programm wird beendet. Auf Wiedersehen!");
|
||||
running = false;
|
||||
}
|
||||
default -> System.out.println("Ungültige Auswahl. Bitte versuchen Sie es erneut.");
|
||||
switch (auswahl) {
|
||||
case 1: durchsuchenMedien(); break;
|
||||
case 2: registrierenBenutzer(); break;
|
||||
case 3: anmeldenBenutzer(); break;
|
||||
case 4: ausleihen(); break;
|
||||
case 5: rueckgabe(); break;
|
||||
case 6: verlaengern(); break;
|
||||
case 7: gebuehrenEinsehen(); break;
|
||||
case 8: zeitVerschieben(); break;
|
||||
case 9: weiter = false; break;
|
||||
default: System.out.println("Ungültige Auswahl."); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void suchenNachMedien() {
|
||||
System.out.println("Bitte geben Sie stichwortartig an, wonach Sie suchen:");
|
||||
private void durchsuchenMedien() {
|
||||
System.out.print("Suchbegriff (oder 'all' für alle Medien): ");
|
||||
String suchbegriff = scanner.nextLine();
|
||||
|
||||
List<Medien> gefundeneMedien = Verwaltung.durchsuchenMedien(verwaltung.mediensListe, suchbegriff);
|
||||
|
||||
if (gefundeneMedien.isEmpty()) {
|
||||
var ergebnisse = fassade.durchsuchenMedien(suchbegriff);
|
||||
if (ergebnisse.isEmpty()) {
|
||||
System.out.println("Keine Medien gefunden.");
|
||||
} else {
|
||||
System.out.println("Gefundene Medien:");
|
||||
for (Medien medien : gefundeneMedien) {
|
||||
System.out.print(medien.getName());
|
||||
|
||||
if (medien.istAusgeliehen) {
|
||||
Optional<Aausleihe> ausleiheOpt = verwaltung.ausliste.stream()
|
||||
.filter(ausleihe -> ausleihe.getMedien().equals(medien))
|
||||
.findFirst();
|
||||
|
||||
if (ausleiheOpt.isPresent()) {
|
||||
Aausleihe ausleihe = ausleiheOpt.get();
|
||||
LocalDate rueckgabedatum = ausleihe.getDate().plusWeeks(medien.frist);
|
||||
System.out.println(" ist ausgeliehen. Rückgabedatum: " + rueckgabedatum);
|
||||
}
|
||||
} else {
|
||||
System.out.println(" ist verfügbar.");
|
||||
}
|
||||
}
|
||||
ergebnisse.forEach(m -> System.out.println(m));
|
||||
}
|
||||
}
|
||||
|
||||
private void registrieren() {
|
||||
System.out.print("Geben Sie Ihren Vornamen ein: ");
|
||||
String name = scanner.nextLine();
|
||||
|
||||
System.out.print("Geben Sie Ihren Nachnamen ein: ");
|
||||
private void registrierenBenutzer() {
|
||||
System.out.print("Vorname: ");
|
||||
String vorname = scanner.nextLine();
|
||||
System.out.print("Nachname: ");
|
||||
String nachname = scanner.nextLine();
|
||||
System.out.print("Benutzertyp (e für Erwachsener, s für Schüler/Student): ");
|
||||
String art = scanner.nextLine();
|
||||
|
||||
System.out.print("Für Student geben Sie 's' und für Erwachsener 'e' ein: ");
|
||||
String artInput = scanner.nextLine();
|
||||
// Erstelle den Benutzer über die Creator-Fabrikmethode
|
||||
Benutzer benutzer = Creator.factoryBenutzer(vorname, nachname, 0, art); // Kundennummer könnte hier 0 sein, wenn sie noch nicht vergeben wurde.
|
||||
|
||||
int genkundennummer = verwaltung.generiereEindeutigeKundennummer();
|
||||
Benutzer neuerBenutzer = Creator.factoryBenutzer(name, nachname, genkundennummer, artInput.toLowerCase());
|
||||
|
||||
if (neuerBenutzer != null) {
|
||||
verwaltung.benutzerListe.add(neuerBenutzer);
|
||||
System.out.println("Registrierung erfolgreich! Ihre Kundennummer lautet: " + genkundennummer);
|
||||
if (benutzer != null) {
|
||||
fassade.registriereBenutzer(benutzer);
|
||||
System.out.println("Benutzer erfolgreich registriert.");
|
||||
} else {
|
||||
System.out.println("Ungültige Art. Versuchen Sie es erneut.");
|
||||
System.out.println("Fehler: Ungültiger Benutzertyp.");
|
||||
}
|
||||
}
|
||||
|
||||
private Benutzer anmelden() {
|
||||
System.out.print("Geben Sie Ihre Kundennummer zur Anmeldung ein: ");
|
||||
int eingabeKundennummer = scanner.nextInt();
|
||||
scanner.nextLine(); // Puffer leeren
|
||||
|
||||
Optional<Benutzer> benutzerOpt = verwaltung.benutzerListe.stream()
|
||||
.filter(benutzer -> benutzer.getKundennummer() == eingabeKundennummer)
|
||||
.findFirst();
|
||||
|
||||
if (benutzerOpt.isPresent()) {
|
||||
System.out.println("Willkommen zurück, " + benutzerOpt.get().getName());
|
||||
return benutzerOpt.get();
|
||||
private void anmeldenBenutzer() {
|
||||
System.out.print("Kundennummer: ");
|
||||
int kundennummer = scanner.nextInt();
|
||||
scanner.nextLine(); // Puffer leeren
|
||||
Benutzer benutzer = fassade.anmeldenBenutzer(kundennummer);
|
||||
if (benutzer != null) {
|
||||
System.out.println("Benutzer angemeldet: " + benutzer.getName() + " " + benutzer.getNachname());
|
||||
} else {
|
||||
System.out.println("Kundennummer nicht gefunden.");
|
||||
return null;
|
||||
System.out.println("Benutzer nicht gefunden.");
|
||||
}
|
||||
}
|
||||
|
||||
private void ausleihen() {
|
||||
Benutzer benutzer = anmelden();
|
||||
if (benutzer == null) {
|
||||
System.out.println("Sie müssen sich zuerst anmelden.");
|
||||
return;
|
||||
}
|
||||
|
||||
System.out.print("Geben Sie die ID des gewünschten Mediums ein: ");
|
||||
int id = scanner.nextInt();
|
||||
System.out.print("Medien ID: ");
|
||||
int medienId = scanner.nextInt();
|
||||
System.out.print("Kundennummer: ");
|
||||
int kundennummer = scanner.nextInt();
|
||||
scanner.nextLine(); // Puffer leeren
|
||||
|
||||
Optional<Medien> optionalMedien = verwaltung.mediensListe.stream()
|
||||
.filter(medien -> medien.getId() == id)
|
||||
.findFirst();
|
||||
|
||||
if (optionalMedien.isPresent()) {
|
||||
Medien medien = optionalMedien.get();
|
||||
if (!medien.istAusgeliehen()) {
|
||||
verwaltung.addAL(medien, benutzer, aktuelleZeit, null);
|
||||
System.out.println("Das Medium wurde erfolgreich ausgeliehen.");
|
||||
} else {
|
||||
System.out.println("Das Medium ist bereits ausgeliehen.");
|
||||
}
|
||||
Benutzer benutzer = fassade.anmeldenBenutzer(kundennummer);
|
||||
if (benutzer != null) {
|
||||
System.out.print("Rückgabedatum (yyyy-MM-dd): ");
|
||||
LocalDate rueckgabeDatum = LocalDate.parse(scanner.nextLine());
|
||||
fassade.ausleihen(medienId, benutzer, LocalDate.now(), rueckgabeDatum);
|
||||
System.out.println("Ausleihe erfolgreich.");
|
||||
} else {
|
||||
System.out.println("Medium mit dieser ID nicht gefunden.");
|
||||
System.out.println("Benutzer nicht gefunden.");
|
||||
}
|
||||
}
|
||||
|
||||
private void rueckgabeDurchfuehren() {
|
||||
Benutzer benutzer = anmelden();
|
||||
if (benutzer == null) {
|
||||
System.out.println("Sie müssen sich zuerst anmelden.");
|
||||
return;
|
||||
}
|
||||
|
||||
System.out.print("Geben Sie die ID des Mediums ein, das Sie zurückgeben möchten: ");
|
||||
int id = scanner.nextInt();
|
||||
private void rueckgabe() {
|
||||
System.out.print("Medien ID: ");
|
||||
int medienId = scanner.nextInt();
|
||||
System.out.print("Kundennummer: ");
|
||||
int kundennummer = scanner.nextInt();
|
||||
scanner.nextLine(); // Puffer leeren
|
||||
|
||||
Optional<Medien> optionalMedien = verwaltung.mediensListe.stream()
|
||||
.filter(medien -> medien.getId() == id)
|
||||
.findFirst();
|
||||
|
||||
if (optionalMedien.isPresent()) {
|
||||
verwaltung.rueckgabe(id, benutzer, aktuelleZeit);
|
||||
System.out.println("Das Medium wurde erfolgreich zurückgegeben.");
|
||||
Benutzer benutzer = fassade.anmeldenBenutzer(kundennummer);
|
||||
if (benutzer != null) {
|
||||
System.out.print("Rückgabedatum (yyyy-MM-dd): ");
|
||||
LocalDate rueckgabeDatum = LocalDate.parse(scanner.nextLine());
|
||||
fassade.rueckgabe(medienId, benutzer, rueckgabeDatum);
|
||||
System.out.println("Rückgabe erfolgreich.");
|
||||
} else {
|
||||
System.out.println("Medium mit dieser ID nicht gefunden.");
|
||||
System.out.println("Benutzer nicht gefunden.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void verlaengern() {
|
||||
Benutzer benutzer = anmelden();
|
||||
if (benutzer == null) {
|
||||
System.out.println("Sie müssen sich zuerst anmelden.");
|
||||
return;
|
||||
}
|
||||
|
||||
System.out.print("Geben Sie die ID des Mediums ein, das Sie verlängern möchten: ");
|
||||
int id = scanner.nextInt();
|
||||
System.out.print("Medien ID: ");
|
||||
int medienId = scanner.nextInt();
|
||||
System.out.print("Kundennummer: ");
|
||||
int kundennummer = scanner.nextInt();
|
||||
scanner.nextLine(); // Puffer leeren
|
||||
|
||||
Optional<Medien> optionalMedien = verwaltung.mediensListe.stream()
|
||||
.filter(medien -> medien.getId() == id)
|
||||
.findFirst();
|
||||
|
||||
if (optionalMedien.isPresent()) {
|
||||
verwaltung.verlängern(optionalMedien.get(), benutzer);
|
||||
System.out.println("Das Medium wurde verlängert.");
|
||||
Benutzer benutzer = fassade.anmeldenBenutzer(kundennummer);
|
||||
if (benutzer != null) {
|
||||
fassade.verlaengern(medienId, benutzer);
|
||||
} else {
|
||||
System.out.println("Medium mit dieser ID nicht gefunden.");
|
||||
System.out.println("Benutzer nicht gefunden.");
|
||||
}
|
||||
}
|
||||
|
||||
private void adminrechte() {
|
||||
System.out.print("Geben Sie den Admin-Benutzernamen ein: ");
|
||||
String benutzername = scanner.nextLine();
|
||||
System.out.print("Geben Sie das Admin-Passwort ein: ");
|
||||
String passwort = scanner.nextLine();
|
||||
|
||||
if (benutzername.equals("admin") && passwort.equals("admin123")) {
|
||||
System.out.println("Admin-Login erfolgreich.");
|
||||
verbucheUeberfaelligeGebuehren();
|
||||
} else {
|
||||
System.out.println("Falsche Admin-Zugangsdaten.");
|
||||
}
|
||||
System.out.println("möchten sie zahlungen löschem geben sie benutzer id ein");
|
||||
int id=scanner.nextInt();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void verbucheUeberfaelligeGebuehren() {
|
||||
System.out.println("Verbuchen überfälliger Gebühren:");
|
||||
|
||||
for (Aausleihe ausleihe : verwaltung.ausliste) {
|
||||
Medien medien = ausleihe.getMedien();
|
||||
Benutzer benutzer = ausleihe.getBenutzer();
|
||||
LocalDate faelligkeitsdatum = ausleihe.getDate().plusDays(medien.frist);
|
||||
|
||||
if (aktuelleZeit.isAfter(faelligkeitsdatum)) {
|
||||
long ueberfaelligeWochen = ChronoUnit.DAYS.between(faelligkeitsdatum, aktuelleZeit);
|
||||
double gebuehr = ueberfaelligeWochen;
|
||||
System.out.println("Benutzer: " + benutzer.getName() + ", Medium: " + medien.getName() +
|
||||
", Überfällige Wochen: " + ueberfaelligeWochen + ", Gebühr: " + gebuehr + " EUR");
|
||||
}
|
||||
}
|
||||
}
|
||||
private void gebuehrenEinsehen() {
|
||||
Benutzer benutzer = anmelden();
|
||||
if (benutzer == null) {
|
||||
System.out.println("Sie müssen sich zuerst anmelden.");
|
||||
return;
|
||||
}
|
||||
System.out.print("Kundennummer: ");
|
||||
int kundennummer = scanner.nextInt();
|
||||
scanner.nextLine(); // Puffer leeren
|
||||
|
||||
System.out.println("Ihre ausstehenden Gebühren:");
|
||||
List<Aausleihe> ausleihen = verwaltung.getAusleihenByBenutzer(benutzer);
|
||||
|
||||
if (ausleihen.isEmpty()) {
|
||||
System.out.println("Sie haben keine ausgeliehenen Medien.");
|
||||
return;
|
||||
}
|
||||
|
||||
boolean hatAusgelieheneMedien = false;
|
||||
|
||||
for (Aausleihe ausleihe : ausleihen) {
|
||||
Medien medien = ausleihe.getMedien();
|
||||
|
||||
// Prüfen, ob das Medium ausgeliehen ist
|
||||
if (!medien.istAusgeliehen()) {
|
||||
continue; // Überspringt Medien, die nicht ausgeliehen sind
|
||||
}
|
||||
|
||||
hatAusgelieheneMedien = true; // Mindestens ein Medium ist ausgeliehen
|
||||
|
||||
LocalDate faelligkeitsdatum = ausleihe.getDate().plusWeeks(medien.frist);
|
||||
double gebuehr = 0;
|
||||
|
||||
// Gebühren berechnen, wenn das Medium überfällig ist
|
||||
if (aktuelleZeit.isAfter(faelligkeitsdatum)) {
|
||||
long ueberfaelligeTage = ChronoUnit.DAYS.between(faelligkeitsdatum, aktuelleZeit);
|
||||
gebuehr = ueberfaelligeTage * 2.0; // 2 EUR pro überfälligem Tag
|
||||
}
|
||||
|
||||
// Details zum Medium ausgeben
|
||||
System.out.println("Medium: " + medien.getName() +
|
||||
", Fälligkeitsdatum: " + faelligkeitsdatum +
|
||||
", Gebühr: " + gebuehr + " EUR");
|
||||
}
|
||||
|
||||
if (!hatAusgelieheneMedien) {
|
||||
System.out.println("Sie haben keine ausgeliehenen Medien.");
|
||||
Benutzer benutzer = fassade.anmeldenBenutzer(kundennummer);
|
||||
if (benutzer != null) {
|
||||
System.out.println("Ausstehende Gebühren: " + benutzer.getGebuehren() + "€");
|
||||
} else {
|
||||
System.out.println("Benutzer nicht gefunden.");
|
||||
}
|
||||
}
|
||||
|
||||
private void zeitVerschieben() {
|
||||
System.out.println("Aktuelles Datum: " + aktuelleZeit);
|
||||
System.out.print("Geben Sie das neue Datum im Format JJJJ-MM-TT ein: ");
|
||||
String neuesDatum = scanner.nextLine();
|
||||
|
||||
try {
|
||||
aktuelleZeit = LocalDate.parse(neuesDatum);
|
||||
System.out.println("Die Zeit wurde erfolgreich auf " + aktuelleZeit + " geändert.");
|
||||
} catch (Exception e) {
|
||||
System.out.println("Ungültiges Datum. Bitte versuchen Sie es erneut.");
|
||||
}
|
||||
System.out.print("Neue Zeit (yyyy-MM-dd): ");
|
||||
String datum = scanner.nextLine();
|
||||
fassade.zeitVerschieben(LocalDate.parse(datum));
|
||||
System.out.println("Aktuelles Datum wurde auf " + datum + " geändert.");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -164,11 +164,11 @@ public class Verwaltung {
|
|||
}
|
||||
|
||||
|
||||
public void verlängern(Medien medien, Benutzer benutzer) {
|
||||
public void verlängern(Medien medien, Benutzer benutzer) {
|
||||
for (Aausleihe aausleihe : ausliste) {
|
||||
// Überprüfen, ob das richtige Medium und der richtige Benutzer vorliegen
|
||||
if (aausleihe.getMedien().equals(medien) && aausleihe.getBenutzer().equals(benutzer)) {
|
||||
if (medien.verlängern()&& medien.kannVerlängern()) { // Medien.verlängern() prüft, ob noch Verlängerungen möglich sind
|
||||
if (medien.verlängern() && medien.kannVerlängern()) { // Medien.verlängern() prüft, ob noch Verlängerungen möglich sind
|
||||
System.out.println("Das Medium wurde erfolgreich verlängert. Aktuelle Verlängerungen: " + medien.getMaxVerlängerungen());
|
||||
medien.maxVerlängerungen--;
|
||||
medien.aktuelleVerlängerungen++;
|
||||
|
@ -187,6 +187,7 @@ public class Verwaltung {
|
|||
|
||||
|
||||
|
||||
|
||||
public double berechneGebuehren(Aausleihe aausleihe, LocalDate aktuellesDatum) {
|
||||
long tageÜberfällig = ChronoUnit.DAYS.between(aausleihe.getRueckgabeDatum(), aktuellesDatum);
|
||||
if (tageÜberfällig <= 0) {
|
||||
|
|
Loading…
Reference in New Issue