149 lines
5.6 KiB
Java
149 lines
5.6 KiB
Java
package LibrarySystem.UI;
|
|
|
|
import LibrarySystem.domain.benutzern.*;
|
|
import LibrarySystem.facade.BibliothekSystem;
|
|
|
|
import java.text.ParseException;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.Date;
|
|
import java.util.Scanner;
|
|
|
|
public class UI {
|
|
private BibliothekSystem system;
|
|
private Scanner scanner;
|
|
|
|
public UI(BibliothekSystem system) {
|
|
this.system = system;
|
|
this.scanner = new Scanner(System.in);
|
|
}
|
|
|
|
public void starten() {
|
|
while (true) {
|
|
System.out.println("Willkommen in der Bibliothek!\n");
|
|
System.out.println("1. Anmelden");
|
|
System.out.println("2. Medien durchsuchen");
|
|
System.out.println("3. Ausleihen eines Mediums");
|
|
System.out.println("4. Rückgabe eines Mediums");
|
|
System.out.println("5. Zeige ausgeliehene Medien und Gebühren");
|
|
System.out.println("6. Verlängern der Leihfrist");
|
|
System.out.println("7. Admin-Login (Überfällige Gebühren verbuchen)");
|
|
System.out.println("8. Systemdatum manuell ändern");
|
|
System.out.println("0. Beenden\n");
|
|
System.out.print("Bitte wählen Sie eine Option: ");
|
|
int auswahl = scanner.nextInt();
|
|
scanner.nextLine();
|
|
|
|
switch (auswahl) {
|
|
case 1 -> anmelden();
|
|
case 2 -> durchsuchenMedien();
|
|
case 3 -> ausleihenMedium();
|
|
case 4 -> rueckgabeMedium();
|
|
case 5 -> zeigeAusgelieheneMedienUndGebuehren();
|
|
case 6 -> verlaengernLeihfrist();
|
|
case 7 -> adminLogin();
|
|
case 8 -> aendernDatumManuell();
|
|
case 0 -> {
|
|
System.out.println("Auf Wiedersehen!");
|
|
return;
|
|
}
|
|
default -> System.out.println("Ungültige Auswahl, bitte erneut versuchen.");
|
|
}
|
|
}
|
|
}
|
|
|
|
//1. Anmelden
|
|
private void anmelden() {
|
|
System.out.print("Bitte geben Sie Ihre Kartennummer ein: ");
|
|
String kartennummer = scanner.nextLine();
|
|
Benutzer benutzer = system.anmelden(kartennummer);
|
|
if (benutzer != null) {
|
|
System.out.println("Willkommen! Erfolgreich angemeldet als: " + benutzer.getName() + ".");
|
|
} else {
|
|
System.out.println("Flasche Kartennummer. Bitte erneut versuchen!");
|
|
}
|
|
}
|
|
|
|
//2. Medien durchsuchen
|
|
private void durchsuchenMedien() {
|
|
System.out.println("Durchsuchen der Medien: (bitte nur Titel und Medienart eingeben)");
|
|
System.out.println("Titel: ");
|
|
String titel = scanner.nextLine();
|
|
System.out.println("Medienart: ");
|
|
String medienart = scanner.nextLine();
|
|
system.durchsuchenMedien(titel, medienart);
|
|
}
|
|
|
|
//3. Ausleihe eines Mediums
|
|
private void ausleihenMedium() {
|
|
System.out.println("Bitte melden Sie sich mit der Kartennummer ein: ");
|
|
String kartennummer = scanner.nextLine();
|
|
System.out.print("Bitte geben Sie die ID des Mediums ein, das Sie ausleihen möchten: ");
|
|
String mediumID = scanner.nextLine();
|
|
system.ausleiheMedium(kartennummer, mediumID);
|
|
}
|
|
|
|
//4. Rückgabe eines Mediums
|
|
private void rueckgabeMedium() {
|
|
System.out.print("Bitte geben Sie die ID des Mediums ein, das Sie zurückgeben möchten: ");
|
|
String mediumId = scanner.nextLine();
|
|
system.rueckgabeMedium(mediumId);
|
|
}
|
|
|
|
//5. Zeige ausgeliehene Medien und Gebühren
|
|
private void zeigeAusgelieheneMedienUndGebuehren() {
|
|
System.out.print("Bitte geben Sie Ihre Kartennummer ein: ");
|
|
String kartennummer = scanner.nextLine();
|
|
Benutzer benutzer = system.anmelden(kartennummer);
|
|
if (benutzer != null) {
|
|
system.zeigeGebuehrenkonto(kartennummer);
|
|
benutzer.anzeigenAusleihen();
|
|
}
|
|
}
|
|
|
|
//6. Verlängern der Leihfrist
|
|
private void verlaengernLeihfrist() {
|
|
System.out.println("Bitte melden Sie sich mit der Kartennummer ein: ");
|
|
String kartennummer = scanner.nextLine();
|
|
System.out.print("Bitte geben Sie die ID des Mediums ein, dessen Leihfrist Sie verlängern möchten: ");
|
|
String mediumId = scanner.nextLine();
|
|
system.verlaengernMedium(kartennummer,mediumId);
|
|
}
|
|
|
|
//7. Admin-Login
|
|
private void adminLogin() {
|
|
System.out.print("Bitte geben Sie Ihre Admin-Kartennummer ein: ");
|
|
String kartennummer = scanner.nextLine();
|
|
Benutzer admin = system.anmelden(kartennummer);
|
|
if (admin instanceof Admin) {
|
|
System.out.println("Admin erfolgreich eingeloggt.");
|
|
System.out.print("Bitte geben Sie die Kartennummer des Benutzers ein, dessen Gebühren Sie verbuchen möchten: ");
|
|
String benutzerKartennummer = scanner.nextLine();
|
|
Benutzer benutzer = system.anmelden(benutzerKartennummer);
|
|
if (benutzer != null) {
|
|
((Admin) admin).bestaetigeGebuehrenzahlung(benutzer);
|
|
}
|
|
} else {
|
|
System.out.println("Ungültige Admin-Kartennummer.");
|
|
}
|
|
}
|
|
|
|
//Methode zur manuellen Änderung des Datums für Testen
|
|
//Von AI generiert
|
|
private void aendernDatumManuell(){
|
|
System.out.println("Neues Datum eingeben (Format: yyyy-MM-dd)");
|
|
String datum = scanner.nextLine();
|
|
try{
|
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
|
|
Date neuesDatum = formatter.parse(datum);
|
|
system.setAktuellesDatum(neuesDatum);
|
|
} catch (ParseException e) {
|
|
System.out.println("Üngultiges Datum.");
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|