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 backend.benutzer.*;
import fassade.*; import fassade.*;
import backend.creator.Creator;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Scanner; import java.util.Scanner;
import backend.creator.Creator;
public class Ui {
public class Ui {
private final Fassade fassade; private final Fassade fassade;
private final Scanner scanner; private final Scanner scanner;
@ -21,15 +21,16 @@ public class Ui {
boolean weiter = true; boolean weiter = true;
while (weiter) { while (weiter) {
System.out.println("Bitte wählen Sie eine Option:"); 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("2. Benutzer registrieren");
System.out.println("3. Benutzer anmelden"); 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("5. Medien zurückgeben");
System.out.println("6. Medien verlängern"); System.out.println("6. Medien verlängern");
System.out.println("7. Gebühren einsehen"); System.out.println("7. Gebühren einsehen");
System.out.println("8. Zeit verschieben"); 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(); int auswahl = scanner.nextInt();
scanner.nextLine(); // Puffer leeren scanner.nextLine(); // Puffer leeren
@ -43,23 +44,26 @@ public class Ui {
case 6: verlaengern(); break; case 6: verlaengern(); break;
case 7: gebuehrenEinsehen(); break; case 7: gebuehrenEinsehen(); break;
case 8: zeitVerschieben(); 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; default: System.out.println("Ungültige Auswahl."); break;
} }
} }
} }
// Medien durchsuchen
private void durchsuchenMedien() { 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(); String suchbegriff = scanner.nextLine();
var ergebnisse = fassade.durchsuchenMedien(suchbegriff); var ergebnisse = fassade.durchsuchenMedien(suchbegriff);
if (ergebnisse.isEmpty()) { if (ergebnisse.isEmpty()) {
System.out.println("Keine backend.medium.Medien gefunden."); System.out.println("Keine Medien gefunden.");
} else { } else {
ergebnisse.forEach(m -> System.out.println(m)); ergebnisse.forEach(m -> System.out.println(m));
} }
} }
// Benutzer registrieren
private void registrierenBenutzer() { private void registrierenBenutzer() {
System.out.print("Vorname: "); System.out.print("Vorname: ");
String vorname = scanner.nextLine(); 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): "); System.out.print("Benutzertyp (e für Erwachsener, s für Schüler/Student): ");
String art = scanner.nextLine(); 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. Benutzer benutzer = Creator.factoryBenutzer(vorname, nachname, 0, art); // Kundennummer könnte hier 0 sein, wenn sie noch nicht vergeben wurde.
if (benutzer != null) { if (benutzer != null) {
@ -79,7 +83,7 @@ public class Ui {
} }
} }
// Benutzer anmelden
private void anmeldenBenutzer() { private void anmeldenBenutzer() {
System.out.print("Kundennummer: "); System.out.print("Kundennummer: ");
int kundennummer = scanner.nextInt(); int kundennummer = scanner.nextInt();
@ -92,8 +96,9 @@ public class Ui {
} }
} }
// Medien ausleihen
private void ausleihen() { private void ausleihen() {
System.out.print("backend.medium.Medien ID: "); System.out.print("Medien ID: ");
int medienId = scanner.nextInt(); int medienId = scanner.nextInt();
System.out.print("Kundennummer: "); System.out.print("Kundennummer: ");
int kundennummer = scanner.nextInt(); int kundennummer = scanner.nextInt();
@ -110,8 +115,9 @@ public class Ui {
} }
} }
// Medien zurückgeben
private void rueckgabe() { private void rueckgabe() {
System.out.print("backend.medium.Medien ID: "); System.out.print("Medien ID: ");
int medienId = scanner.nextInt(); int medienId = scanner.nextInt();
System.out.print("Kundennummer: "); System.out.print("Kundennummer: ");
int kundennummer = scanner.nextInt(); int kundennummer = scanner.nextInt();
@ -128,8 +134,9 @@ public class Ui {
} }
} }
// Medien verlängern
private void verlaengern() { private void verlaengern() {
System.out.print("backend.medium.Medien ID: "); System.out.print("Medien ID: ");
int medienId = scanner.nextInt(); int medienId = scanner.nextInt();
System.out.print("Kundennummer: "); System.out.print("Kundennummer: ");
int kundennummer = scanner.nextInt(); int kundennummer = scanner.nextInt();
@ -143,6 +150,7 @@ public class Ui {
} }
} }
// Gebühren einsehen
private void gebuehrenEinsehen() { private void gebuehrenEinsehen() {
System.out.print("Kundennummer: "); System.out.print("Kundennummer: ");
int kundennummer = scanner.nextInt(); int kundennummer = scanner.nextInt();
@ -156,10 +164,26 @@ public class Ui {
} }
} }
// Zeit verschieben
private void zeitVerschieben() { private void zeitVerschieben() {
System.out.print("Neue Zeit (yyyy-MM-dd): "); System.out.print("Neue Zeit (yyyy-MM-dd): ");
String datum = scanner.nextLine(); String datum = scanner.nextLine();
fassade.zeitVerschieben(LocalDate.parse(datum)); fassade.zeitVerschieben(LocalDate.parse(datum));
System.out.println("Aktuelles Datum wurde auf " + datum + " geändert."); 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 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 // Getter- und Setter-Methoden
public String getName() { public String getName() {

View File

@ -2,14 +2,22 @@ package fassade;
import backend.medium.Medien; import backend.medium.Medien;
import backend.benutzer.*; import backend.benutzer.*;
import fassade.Aausleihe;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import java.time.temporal.ChronoUnit;
public class Fassade { public class Fassade {
private final Verwaltung verwaltung; private final Verwaltung verwaltung;
private LocalDate aktuellesDatum; private LocalDate aktuellesDatum;
// Dummy Admin-Zugangsdaten
private static final String ADMIN_USERNAME = "admin";
private static final String ADMIN_PASSWORD = "admin123";
// Konstruktor // Konstruktor
public Fassade(Verwaltung verwaltung) { public Fassade(Verwaltung verwaltung) {
this.verwaltung = verwaltung; this.verwaltung = verwaltung;
@ -31,11 +39,9 @@ public class Fassade {
// backend.medium.Medien durchsuchen // backend.medium.Medien durchsuchen
public List<Medien> durchsuchenMedien(String suchbegriff) { public List<Medien> durchsuchenMedien(String suchbegriff) {
// Rufe die Methode in der fassade.Verwaltung auf und übergebe die medienListe
return verwaltung.durchsuchenMedien(verwaltung.mediensListe, suchbegriff); return verwaltung.durchsuchenMedien(verwaltung.mediensListe, suchbegriff);
} }
// backend.medium.Medien ausleihen // backend.medium.Medien ausleihen
public void ausleihen(int medienId, Benutzer benutzer, LocalDate ausleihDatum, LocalDate rueckgabeDatum) { public void ausleihen(int medienId, Benutzer benutzer, LocalDate ausleihDatum, LocalDate rueckgabeDatum) {
Medien medien = verwaltung.mediensListe.stream() Medien medien = verwaltung.mediensListe.stream()
@ -78,4 +84,27 @@ public class Fassade {
public LocalDate getAktuellesDatum() { public LocalDate getAktuellesDatum() {
return aktuellesDatum; // Gibt das aktuelle Datum zurück 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) return new Random().ints(7, 0, 10)
.reduce(0, (acc, digit) -> acc * 10 + digit); .reduce(0, (acc, digit) -> acc * 10 + digit);
} }
public List<Aausleihe> getAlleAusleihen() {
return new ArrayList<>(ausliste); // gibt alle Ausleihen zurück
}
public int generiereEindeutigeKundennummer() { public int generiereEindeutigeKundennummer() {