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 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;
|
||||||
|
@ -24,12 +24,13 @@ public class Ui {
|
||||||
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.");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
Loading…
Reference in New Issue