packages hinzugefügt
parent
58ad27c0ba
commit
e38e535f77
48
UI/Ui.java
48
UI/Ui.java
|
@ -2,12 +2,12 @@ package UI;
|
|||
|
||||
import backend.benutzer.*;
|
||||
import fassade.*;
|
||||
import backend.creator.Creator;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Scanner;
|
||||
import backend.creator.Creator;
|
||||
public class Ui {
|
||||
|
||||
public class Ui {
|
||||
|
||||
private final Fassade fassade;
|
||||
private final Scanner scanner;
|
||||
|
@ -24,12 +24,13 @@ public class Ui {
|
|||
System.out.println("1. Medien durchsuchen");
|
||||
System.out.println("2. Benutzer registrieren");
|
||||
System.out.println("3. Benutzer anmelden");
|
||||
System.out.println("4. ausleihen");
|
||||
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");
|
||||
System.out.println("9. Admin-Login zur Gebührenverwaltung");
|
||||
System.out.println("10. Beenden");
|
||||
|
||||
int auswahl = scanner.nextInt();
|
||||
scanner.nextLine(); // Puffer leeren
|
||||
|
@ -43,23 +44,26 @@ public class Ui {
|
|||
case 6: verlaengern(); break;
|
||||
case 7: gebuehrenEinsehen(); break;
|
||||
case 8: zeitVerschieben(); break;
|
||||
case 9: weiter = false; break;
|
||||
case 9: adminLogin(); break;
|
||||
case 10: weiter = false; break;
|
||||
default: System.out.println("Ungültige Auswahl."); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Medien durchsuchen
|
||||
private void durchsuchenMedien() {
|
||||
System.out.print("Suchbegriff (oder 'all' für alle backend.medium.Medien): ");
|
||||
System.out.print("Suchbegriff (oder 'all' für alle Medien): ");
|
||||
String suchbegriff = scanner.nextLine();
|
||||
var ergebnisse = fassade.durchsuchenMedien(suchbegriff);
|
||||
if (ergebnisse.isEmpty()) {
|
||||
System.out.println("Keine backend.medium.Medien gefunden.");
|
||||
System.out.println("Keine Medien gefunden.");
|
||||
} else {
|
||||
ergebnisse.forEach(m -> System.out.println(m));
|
||||
}
|
||||
}
|
||||
|
||||
// Benutzer registrieren
|
||||
private void registrierenBenutzer() {
|
||||
System.out.print("Vorname: ");
|
||||
String vorname = scanner.nextLine();
|
||||
|
@ -68,7 +72,7 @@ public class Ui {
|
|||
System.out.print("Benutzertyp (e für Erwachsener, s für Schüler/Student): ");
|
||||
String art = scanner.nextLine();
|
||||
|
||||
// Erstelle den Benutzer über die backend.benutzer.Creator-Fabrikmethode
|
||||
// Benutzer über die Fassade registrieren
|
||||
Benutzer benutzer = Creator.factoryBenutzer(vorname, nachname, 0, art); // Kundennummer könnte hier 0 sein, wenn sie noch nicht vergeben wurde.
|
||||
|
||||
if (benutzer != null) {
|
||||
|
@ -79,7 +83,7 @@ public class Ui {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// Benutzer anmelden
|
||||
private void anmeldenBenutzer() {
|
||||
System.out.print("Kundennummer: ");
|
||||
int kundennummer = scanner.nextInt();
|
||||
|
@ -92,8 +96,9 @@ public class Ui {
|
|||
}
|
||||
}
|
||||
|
||||
// Medien ausleihen
|
||||
private void ausleihen() {
|
||||
System.out.print("backend.medium.Medien ID: ");
|
||||
System.out.print("Medien ID: ");
|
||||
int medienId = scanner.nextInt();
|
||||
System.out.print("Kundennummer: ");
|
||||
int kundennummer = scanner.nextInt();
|
||||
|
@ -110,8 +115,9 @@ public class Ui {
|
|||
}
|
||||
}
|
||||
|
||||
// Medien zurückgeben
|
||||
private void rueckgabe() {
|
||||
System.out.print("backend.medium.Medien ID: ");
|
||||
System.out.print("Medien ID: ");
|
||||
int medienId = scanner.nextInt();
|
||||
System.out.print("Kundennummer: ");
|
||||
int kundennummer = scanner.nextInt();
|
||||
|
@ -128,8 +134,9 @@ public class Ui {
|
|||
}
|
||||
}
|
||||
|
||||
// Medien verlängern
|
||||
private void verlaengern() {
|
||||
System.out.print("backend.medium.Medien ID: ");
|
||||
System.out.print("Medien ID: ");
|
||||
int medienId = scanner.nextInt();
|
||||
System.out.print("Kundennummer: ");
|
||||
int kundennummer = scanner.nextInt();
|
||||
|
@ -143,6 +150,7 @@ public class Ui {
|
|||
}
|
||||
}
|
||||
|
||||
// Gebühren einsehen
|
||||
private void gebuehrenEinsehen() {
|
||||
System.out.print("Kundennummer: ");
|
||||
int kundennummer = scanner.nextInt();
|
||||
|
@ -156,10 +164,26 @@ public class Ui {
|
|||
}
|
||||
}
|
||||
|
||||
// Zeit verschieben
|
||||
private void zeitVerschieben() {
|
||||
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.");
|
||||
}
|
||||
|
||||
// Admin-Login zur Gebührenverwaltung
|
||||
private void adminLogin() {
|
||||
System.out.print("Admin-Benutzername: ");
|
||||
String benutzername = scanner.nextLine();
|
||||
System.out.print("Admin-Passwort: ");
|
||||
String passwort = scanner.nextLine();
|
||||
|
||||
if (fassade.adminLogin(benutzername, passwort)) {
|
||||
System.out.println("Admin-Login erfolgreich.");
|
||||
fassade.verbucheUeberfaelligeGebuehren(); // Verbucht überfällige Gebühren
|
||||
} else {
|
||||
System.out.println("Falsche Admin-Zugangsdaten.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,6 +27,10 @@ public abstract class Benutzer {
|
|||
}
|
||||
this.gebuehren = 0.0; // Anfangs keine Gebühren
|
||||
}
|
||||
public void addGebuehr(double betrag) {
|
||||
this.gebuehren += betrag; // Beispiel: Der Betrag wird zur bestehenden Gebühr des Benutzers hinzugefügt
|
||||
}
|
||||
|
||||
|
||||
// Getter- und Setter-Methoden
|
||||
public String getName() {
|
||||
|
|
|
@ -2,14 +2,22 @@ package fassade;
|
|||
|
||||
import backend.medium.Medien;
|
||||
import backend.benutzer.*;
|
||||
import fassade.Aausleihe;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
|
||||
|
||||
public class Fassade {
|
||||
|
||||
private final Verwaltung verwaltung;
|
||||
private LocalDate aktuellesDatum;
|
||||
|
||||
// Dummy Admin-Zugangsdaten
|
||||
private static final String ADMIN_USERNAME = "admin";
|
||||
private static final String ADMIN_PASSWORD = "admin123";
|
||||
|
||||
// Konstruktor
|
||||
public Fassade(Verwaltung verwaltung) {
|
||||
this.verwaltung = verwaltung;
|
||||
|
@ -31,11 +39,9 @@ public class Fassade {
|
|||
|
||||
// backend.medium.Medien durchsuchen
|
||||
public List<Medien> durchsuchenMedien(String suchbegriff) {
|
||||
// Rufe die Methode in der fassade.Verwaltung auf und übergebe die medienListe
|
||||
return verwaltung.durchsuchenMedien(verwaltung.mediensListe, suchbegriff);
|
||||
}
|
||||
|
||||
|
||||
// backend.medium.Medien ausleihen
|
||||
public void ausleihen(int medienId, Benutzer benutzer, LocalDate ausleihDatum, LocalDate rueckgabeDatum) {
|
||||
Medien medien = verwaltung.mediensListe.stream()
|
||||
|
@ -78,4 +84,27 @@ public class Fassade {
|
|||
public LocalDate getAktuellesDatum() {
|
||||
return aktuellesDatum; // Gibt das aktuelle Datum zurück
|
||||
}
|
||||
|
||||
// Admin-Login-Methode
|
||||
public boolean adminLogin(String benutzername, String passwort) {
|
||||
return ADMIN_USERNAME.equals(benutzername) && ADMIN_PASSWORD.equals(passwort);
|
||||
}
|
||||
|
||||
// Methode zum Verbuchen überfälliger Gebühren
|
||||
public void verbucheUeberfaelligeGebuehren() {
|
||||
// Hole alle überfälligen Ausleihen
|
||||
List<Aausleihe> ueberfaelligAusleihen = verwaltung.getAlleAusleihen().stream()
|
||||
.filter(ausleihe -> LocalDate.now().isAfter(ausleihe.getRueckgabeDatum()) && !ausleihe.getMedien().istAusgeliehen())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// Gebühr für jede überfällige Ausleihe berechnen und dem Benutzer hinzufügen
|
||||
for (Aausleihe ausleihe : ueberfaelligAusleihen) {
|
||||
Benutzer benutzer = ausleihe.getBenutzer();
|
||||
long ueberfaelligeTage = ChronoUnit.DAYS.between(ausleihe.getRueckgabeDatum(), LocalDate.now());
|
||||
double gebuehr = ueberfaelligeTage * 2.0; // Beispiel: 2 EUR pro überfälligem Tag
|
||||
benutzer.addGebuehr(gebuehr); // Gebühr dem Benutzer hinzufügen
|
||||
System.out.println("Gebühr für " + benutzer.getName() + ": " + gebuehr + " EUR");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -32,6 +32,10 @@ public class Verwaltung {
|
|||
return new Random().ints(7, 0, 10)
|
||||
.reduce(0, (acc, digit) -> acc * 10 + digit);
|
||||
}
|
||||
public List<Aausleihe> getAlleAusleihen() {
|
||||
return new ArrayList<>(ausliste); // gibt alle Ausleihen zurück
|
||||
}
|
||||
|
||||
|
||||
|
||||
public int generiereEindeutigeKundennummer() {
|
||||
|
|
Loading…
Reference in New Issue