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
|
private double gebuehren; // Aktuelle ausstehende Gebühren des Benutzers
|
||||||
|
|
||||||
// Konstruktor
|
// 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.name = name;
|
||||||
this.nachname = nachname;
|
this.nachname = nachname;
|
||||||
this.kundennummer = kundennummer;
|
this.kundennummer = kundennummer;
|
||||||
|
|
13
Creator.java
13
Creator.java
|
@ -1,15 +1,16 @@
|
||||||
class Creator {
|
class Creator {
|
||||||
|
// Factory-Methode für Benutzer
|
||||||
static Benutzer factoryBenutzer(String name, String nachname, int kundennummer, String art) {
|
static Benutzer factoryBenutzer(String name, String nachname, int kundennummer, String art) {
|
||||||
if (art.equals("e")) {
|
if (art.equalsIgnoreCase("e")) {
|
||||||
return new Benutzer.Erwachsener(name, nachname, kundennummer);
|
return new Benutzer.Erwachsener(name, nachname, kundennummer); // Erstelle einen Erwachsenen
|
||||||
} else if (art.equals("s")) {
|
} else if (art.equalsIgnoreCase("s")) {
|
||||||
return new Benutzer.SchuelerStudent(name, nachname, kundennummer, art);
|
return new Benutzer.SchuelerStudent(name, nachname, kundennummer, art); // Erstelle einen Schüler/Studenten
|
||||||
} else {
|
} 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) {
|
public static Medien factoryMedien(String name, String regisseur, int id, String art, int erscheinungsjahr) {
|
||||||
switch (art.toLowerCase()) {
|
switch (art.toLowerCase()) {
|
||||||
case "buch":
|
case "buch":
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
13
Main.java
13
Main.java
|
@ -1,9 +1,9 @@
|
||||||
public class Main {
|
public class Main {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
// Erstelle die Instanzen
|
||||||
Creator creator = new Creator();
|
Creator creator = new Creator();
|
||||||
Verwaltung verwaltung = new Verwaltung();
|
Verwaltung verwaltung = new Verwaltung();
|
||||||
|
|
||||||
|
|
||||||
// Medienobjekte hinzufügen
|
// Medienobjekte hinzufügen
|
||||||
verwaltung.mediensListe.add(creator.factoryMedien("Java Programmierung", "Max Mustermann", 1, "buch", 2020));
|
verwaltung.mediensListe.add(creator.factoryMedien("Java Programmierung", "Max Mustermann", 1, "buch", 2020));
|
||||||
verwaltung.mediensListe.add(creator.factoryMedien("Datenstrukturen", "Julia Schmidt", 2, "buch", 2018));
|
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("Minecraft", "Mojang", 9, "videospiel", 0));
|
||||||
verwaltung.mediensListe.add(creator.factoryMedien("The Witcher 3", "CD Projekt", 10, "videospiel", 0));
|
verwaltung.mediensListe.add(creator.factoryMedien("The Witcher 3", "CD Projekt", 10, "videospiel", 0));
|
||||||
|
|
||||||
// Ui mit der Verwaltung-Instanz initialisieren7
|
// Erstelle die Fassade mit der Verwaltung
|
||||||
Ui ui = new Ui(verwaltung);
|
Fassade fassade = new Fassade(verwaltung);
|
||||||
ui.anmeldung();
|
|
||||||
|
// 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.LocalDate;
|
||||||
import java.time.temporal.ChronoUnit;
|
import java.util.Scanner;
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
public class Ui {
|
public class Ui {
|
||||||
private final Scanner scanner = new Scanner(System.in);
|
|
||||||
private final Verwaltung verwaltung;
|
|
||||||
|
|
||||||
// Zeitversatz für Tests
|
private final Fassade fassade;
|
||||||
private LocalDate aktuelleZeit = LocalDate.now();
|
private final Scanner scanner;
|
||||||
|
|
||||||
public Ui(Verwaltung verwaltung) {
|
public Ui(Fassade fassade) {
|
||||||
this.verwaltung = verwaltung;
|
this.fassade = fassade;
|
||||||
|
this.scanner = new Scanner(System.in);
|
||||||
}
|
}
|
||||||
|
|
||||||
void anmeldung() {
|
public void starten() {
|
||||||
boolean running = true;
|
boolean weiter = true;
|
||||||
while (running) {
|
while (weiter) {
|
||||||
System.out.println("Willkommen! Bitte wählen Sie eine Option:");
|
System.out.println("Bitte wählen Sie eine Option:");
|
||||||
System.out.println("1: Durchsuchen der Medien");
|
System.out.println("1. Medien durchsuchen");
|
||||||
System.out.println("2: Ausleihen eines Gegenstandes");
|
System.out.println("2. Benutzer registrieren");
|
||||||
System.out.println("3: Rückgabe eines Gegenstandes");
|
System.out.println("3. Benutzer anmelden");
|
||||||
System.out.println("4: Ausgeliehene Gegenstände und Gebühren anzeigen");
|
System.out.println("4. Medien ausleihen");
|
||||||
System.out.println("5: Verlängern der Leihfrist");
|
System.out.println("5. Medien zurückgeben");
|
||||||
System.out.println("6: Verbuchen von überfälligen Gebühren (Admin)");
|
System.out.println("6. Medien verlängern");
|
||||||
System.out.println("7: Registrieren");
|
System.out.println("7. Gebühren einsehen");
|
||||||
System.out.println("8: Anmelden");
|
System.out.println("8. Zeit verschieben");
|
||||||
System.out.println("9: Zeit verschieben (Testoption)");
|
System.out.println("9. Beenden");
|
||||||
System.out.println("0: Programm beenden");
|
|
||||||
|
|
||||||
int menue = scanner.nextInt();
|
int auswahl = scanner.nextInt();
|
||||||
scanner.nextLine(); // Leert den Puffer nach nextInt()
|
scanner.nextLine(); // Puffer leeren
|
||||||
|
|
||||||
switch (menue) {
|
switch (auswahl) {
|
||||||
case 1 -> suchenNachMedien();
|
case 1: durchsuchenMedien(); break;
|
||||||
case 2 -> ausleihen();
|
case 2: registrierenBenutzer(); break;
|
||||||
case 3 -> rueckgabeDurchfuehren();
|
case 3: anmeldenBenutzer(); break;
|
||||||
case 4 -> gebuehrenEinsehen();
|
case 4: ausleihen(); break;
|
||||||
case 5 -> verlaengern();
|
case 5: rueckgabe(); break;
|
||||||
case 6 -> adminrechte();
|
case 6: verlaengern(); break;
|
||||||
case 7 -> registrieren();
|
case 7: gebuehrenEinsehen(); break;
|
||||||
case 8 -> anmelden();
|
case 8: zeitVerschieben(); break;
|
||||||
case 9 -> zeitVerschieben();
|
case 9: weiter = false; break;
|
||||||
case 0 -> {
|
default: System.out.println("Ungültige Auswahl."); break;
|
||||||
System.out.println("Programm wird beendet. Auf Wiedersehen!");
|
|
||||||
running = false;
|
|
||||||
}
|
|
||||||
default -> System.out.println("Ungültige Auswahl. Bitte versuchen Sie es erneut.");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void suchenNachMedien() {
|
private void durchsuchenMedien() {
|
||||||
System.out.println("Bitte geben Sie stichwortartig an, wonach Sie suchen:");
|
System.out.print("Suchbegriff (oder 'all' für alle Medien): ");
|
||||||
String suchbegriff = scanner.nextLine();
|
String suchbegriff = scanner.nextLine();
|
||||||
|
var ergebnisse = fassade.durchsuchenMedien(suchbegriff);
|
||||||
List<Medien> gefundeneMedien = Verwaltung.durchsuchenMedien(verwaltung.mediensListe, suchbegriff);
|
if (ergebnisse.isEmpty()) {
|
||||||
|
|
||||||
if (gefundeneMedien.isEmpty()) {
|
|
||||||
System.out.println("Keine Medien gefunden.");
|
System.out.println("Keine Medien gefunden.");
|
||||||
} else {
|
} else {
|
||||||
System.out.println("Gefundene Medien:");
|
ergebnisse.forEach(m -> System.out.println(m));
|
||||||
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.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registrieren() {
|
private void registrierenBenutzer() {
|
||||||
System.out.print("Geben Sie Ihren Vornamen ein: ");
|
System.out.print("Vorname: ");
|
||||||
String name = scanner.nextLine();
|
String vorname = scanner.nextLine();
|
||||||
|
System.out.print("Nachname: ");
|
||||||
System.out.print("Geben Sie Ihren Nachnamen ein: ");
|
|
||||||
String nachname = scanner.nextLine();
|
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: ");
|
// Erstelle den Benutzer über die Creator-Fabrikmethode
|
||||||
String artInput = scanner.nextLine();
|
Benutzer benutzer = Creator.factoryBenutzer(vorname, nachname, 0, art); // Kundennummer könnte hier 0 sein, wenn sie noch nicht vergeben wurde.
|
||||||
|
|
||||||
int genkundennummer = verwaltung.generiereEindeutigeKundennummer();
|
if (benutzer != null) {
|
||||||
Benutzer neuerBenutzer = Creator.factoryBenutzer(name, nachname, genkundennummer, artInput.toLowerCase());
|
fassade.registriereBenutzer(benutzer);
|
||||||
|
System.out.println("Benutzer erfolgreich registriert.");
|
||||||
if (neuerBenutzer != null) {
|
|
||||||
verwaltung.benutzerListe.add(neuerBenutzer);
|
|
||||||
System.out.println("Registrierung erfolgreich! Ihre Kundennummer lautet: " + genkundennummer);
|
|
||||||
} else {
|
} 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()
|
private void anmeldenBenutzer() {
|
||||||
.filter(benutzer -> benutzer.getKundennummer() == eingabeKundennummer)
|
System.out.print("Kundennummer: ");
|
||||||
.findFirst();
|
int kundennummer = scanner.nextInt();
|
||||||
|
scanner.nextLine(); // Puffer leeren
|
||||||
if (benutzerOpt.isPresent()) {
|
Benutzer benutzer = fassade.anmeldenBenutzer(kundennummer);
|
||||||
System.out.println("Willkommen zurück, " + benutzerOpt.get().getName());
|
if (benutzer != null) {
|
||||||
return benutzerOpt.get();
|
System.out.println("Benutzer angemeldet: " + benutzer.getName() + " " + benutzer.getNachname());
|
||||||
} else {
|
} else {
|
||||||
System.out.println("Kundennummer nicht gefunden.");
|
System.out.println("Benutzer nicht gefunden.");
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ausleihen() {
|
private void ausleihen() {
|
||||||
Benutzer benutzer = anmelden();
|
System.out.print("Medien ID: ");
|
||||||
if (benutzer == null) {
|
int medienId = scanner.nextInt();
|
||||||
System.out.println("Sie müssen sich zuerst anmelden.");
|
System.out.print("Kundennummer: ");
|
||||||
return;
|
int kundennummer = scanner.nextInt();
|
||||||
}
|
|
||||||
|
|
||||||
System.out.print("Geben Sie die ID des gewünschten Mediums ein: ");
|
|
||||||
int id = scanner.nextInt();
|
|
||||||
scanner.nextLine(); // Puffer leeren
|
scanner.nextLine(); // Puffer leeren
|
||||||
|
|
||||||
Optional<Medien> optionalMedien = verwaltung.mediensListe.stream()
|
Benutzer benutzer = fassade.anmeldenBenutzer(kundennummer);
|
||||||
.filter(medien -> medien.getId() == id)
|
if (benutzer != null) {
|
||||||
.findFirst();
|
System.out.print("Rückgabedatum (yyyy-MM-dd): ");
|
||||||
|
LocalDate rueckgabeDatum = LocalDate.parse(scanner.nextLine());
|
||||||
if (optionalMedien.isPresent()) {
|
fassade.ausleihen(medienId, benutzer, LocalDate.now(), rueckgabeDatum);
|
||||||
Medien medien = optionalMedien.get();
|
System.out.println("Ausleihe erfolgreich.");
|
||||||
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.");
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
System.out.println("Medium mit dieser ID nicht gefunden.");
|
System.out.println("Benutzer nicht gefunden.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void rueckgabeDurchfuehren() {
|
private void rueckgabe() {
|
||||||
Benutzer benutzer = anmelden();
|
System.out.print("Medien ID: ");
|
||||||
if (benutzer == null) {
|
int medienId = scanner.nextInt();
|
||||||
System.out.println("Sie müssen sich zuerst anmelden.");
|
System.out.print("Kundennummer: ");
|
||||||
return;
|
int kundennummer = scanner.nextInt();
|
||||||
}
|
|
||||||
|
|
||||||
System.out.print("Geben Sie die ID des Mediums ein, das Sie zurückgeben möchten: ");
|
|
||||||
int id = scanner.nextInt();
|
|
||||||
scanner.nextLine(); // Puffer leeren
|
scanner.nextLine(); // Puffer leeren
|
||||||
|
|
||||||
Optional<Medien> optionalMedien = verwaltung.mediensListe.stream()
|
Benutzer benutzer = fassade.anmeldenBenutzer(kundennummer);
|
||||||
.filter(medien -> medien.getId() == id)
|
if (benutzer != null) {
|
||||||
.findFirst();
|
System.out.print("Rückgabedatum (yyyy-MM-dd): ");
|
||||||
|
LocalDate rueckgabeDatum = LocalDate.parse(scanner.nextLine());
|
||||||
if (optionalMedien.isPresent()) {
|
fassade.rueckgabe(medienId, benutzer, rueckgabeDatum);
|
||||||
verwaltung.rueckgabe(id, benutzer, aktuelleZeit);
|
System.out.println("Rückgabe erfolgreich.");
|
||||||
System.out.println("Das Medium wurde erfolgreich zurückgegeben.");
|
|
||||||
} else {
|
} else {
|
||||||
System.out.println("Medium mit dieser ID nicht gefunden.");
|
System.out.println("Benutzer nicht gefunden.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void verlaengern() {
|
private void verlaengern() {
|
||||||
Benutzer benutzer = anmelden();
|
System.out.print("Medien ID: ");
|
||||||
if (benutzer == null) {
|
int medienId = scanner.nextInt();
|
||||||
System.out.println("Sie müssen sich zuerst anmelden.");
|
System.out.print("Kundennummer: ");
|
||||||
return;
|
int kundennummer = scanner.nextInt();
|
||||||
}
|
|
||||||
|
|
||||||
System.out.print("Geben Sie die ID des Mediums ein, das Sie verlängern möchten: ");
|
|
||||||
int id = scanner.nextInt();
|
|
||||||
scanner.nextLine(); // Puffer leeren
|
scanner.nextLine(); // Puffer leeren
|
||||||
|
|
||||||
Optional<Medien> optionalMedien = verwaltung.mediensListe.stream()
|
Benutzer benutzer = fassade.anmeldenBenutzer(kundennummer);
|
||||||
.filter(medien -> medien.getId() == id)
|
if (benutzer != null) {
|
||||||
.findFirst();
|
fassade.verlaengern(medienId, benutzer);
|
||||||
|
|
||||||
if (optionalMedien.isPresent()) {
|
|
||||||
verwaltung.verlängern(optionalMedien.get(), benutzer);
|
|
||||||
System.out.println("Das Medium wurde verlängert.");
|
|
||||||
} else {
|
} 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() {
|
private void gebuehrenEinsehen() {
|
||||||
Benutzer benutzer = anmelden();
|
System.out.print("Kundennummer: ");
|
||||||
if (benutzer == null) {
|
int kundennummer = scanner.nextInt();
|
||||||
System.out.println("Sie müssen sich zuerst anmelden.");
|
scanner.nextLine(); // Puffer leeren
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
System.out.println("Ihre ausstehenden Gebühren:");
|
Benutzer benutzer = fassade.anmeldenBenutzer(kundennummer);
|
||||||
List<Aausleihe> ausleihen = verwaltung.getAusleihenByBenutzer(benutzer);
|
if (benutzer != null) {
|
||||||
|
System.out.println("Ausstehende Gebühren: " + benutzer.getGebuehren() + "€");
|
||||||
if (ausleihen.isEmpty()) {
|
} else {
|
||||||
System.out.println("Sie haben keine ausgeliehenen Medien.");
|
System.out.println("Benutzer nicht gefunden.");
|
||||||
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.");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void zeitVerschieben() {
|
private void zeitVerschieben() {
|
||||||
System.out.println("Aktuelles Datum: " + aktuelleZeit);
|
System.out.print("Neue Zeit (yyyy-MM-dd): ");
|
||||||
System.out.print("Geben Sie das neue Datum im Format JJJJ-MM-TT ein: ");
|
String datum = scanner.nextLine();
|
||||||
String neuesDatum = scanner.nextLine();
|
fassade.zeitVerschieben(LocalDate.parse(datum));
|
||||||
|
System.out.println("Aktuelles Datum wurde auf " + datum + " geändert.");
|
||||||
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.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
for (Aausleihe aausleihe : ausliste) {
|
||||||
// Überprüfen, ob das richtige Medium und der richtige Benutzer vorliegen
|
// Überprüfen, ob das richtige Medium und der richtige Benutzer vorliegen
|
||||||
if (aausleihe.getMedien().equals(medien) && aausleihe.getBenutzer().equals(benutzer)) {
|
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());
|
System.out.println("Das Medium wurde erfolgreich verlängert. Aktuelle Verlängerungen: " + medien.getMaxVerlängerungen());
|
||||||
medien.maxVerlängerungen--;
|
medien.maxVerlängerungen--;
|
||||||
medien.aktuelleVerlängerungen++;
|
medien.aktuelleVerlängerungen++;
|
||||||
|
@ -187,6 +187,7 @@ public class Verwaltung {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public double berechneGebuehren(Aausleihe aausleihe, LocalDate aktuellesDatum) {
|
public double berechneGebuehren(Aausleihe aausleihe, LocalDate aktuellesDatum) {
|
||||||
long tageÜberfällig = ChronoUnit.DAYS.between(aausleihe.getRueckgabeDatum(), aktuellesDatum);
|
long tageÜberfällig = ChronoUnit.DAYS.between(aausleihe.getRueckgabeDatum(), aktuellesDatum);
|
||||||
if (tageÜberfällig <= 0) {
|
if (tageÜberfällig <= 0) {
|
||||||
|
|
Loading…
Reference in New Issue