packages hinzugefügt

main
Zabih Mansuri 2024-12-02 00:19:33 +01:00
parent 58ad27c0ba
commit e38e535f77
4 changed files with 77 additions and 16 deletions

View File

@ -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;
@ -21,15 +21,16 @@ public class Ui {
boolean weiter = true;
while (weiter) {
System.out.println("Bitte wählen Sie eine Option:");
System.out.println("1.Medien durchsuchen");
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("5.Medien zurückgeben");
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.");
}
}
}

View File

@ -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() {

View File

@ -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");
}
}
}

View File

@ -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() {