111 lines
4.1 KiB
Java
111 lines
4.1 KiB
Java
import java.util.*; // Für LinkedList, List, ArrayList, Scanner und andere grundlegende Klassen
|
|
import java.util.stream.Collectors; // Für die Collectors-Funktionalität in Streams
|
|
import java.text.ParseException; // Für Ausnahmebehandlung beim Parsen von Daten
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.function.Predicate;
|
|
// Für die Verarbeitung von Datumsformaten
|
|
|
|
public class Ui {
|
|
private Scanner scanner = new Scanner(System.in);
|
|
private Verwaltung verwaltung;
|
|
|
|
// Konstruktor, der eine Verwaltung-Instanz annimmt
|
|
public Ui(Verwaltung verwaltung) {
|
|
this.verwaltung = verwaltung;
|
|
}
|
|
|
|
void anmeldung() {
|
|
boolean running = true;
|
|
|
|
while (running) {
|
|
System.out.println("Willkommen! Bitte wählen Sie eine Option:");
|
|
System.out.println("1: Registrieren");
|
|
System.out.println("2: Anmelden mit Kundennummer");
|
|
System.out.println("3: Suchen nach Objekten");
|
|
System.out.println("0: Programm beenden");
|
|
|
|
int menue = scanner.nextInt();
|
|
scanner.nextLine(); // Leert den Puffer nach nextInt()
|
|
|
|
switch (menue) {
|
|
case 1:
|
|
registrieren();
|
|
break;
|
|
|
|
case 2:
|
|
anmelden();
|
|
break;
|
|
|
|
case 3:
|
|
suchenNachMedien();
|
|
break;
|
|
case 4:
|
|
|
|
|
|
case 0:
|
|
System.out.println("Programm wird beendet. Auf Wiedersehen!");
|
|
running = false;
|
|
break;
|
|
|
|
default:
|
|
System.out.println("Ungültige Auswahl. Bitte versuchen Sie es erneut.");
|
|
}
|
|
}
|
|
}
|
|
|
|
private void registrieren() {
|
|
System.out.print("Geben Sie Ihren Vornamen ein: ");
|
|
String name = scanner.nextLine();
|
|
|
|
System.out.print("Geben Sie Ihren Nachnamen ein: ");
|
|
String nachname = scanner.nextLine();
|
|
|
|
System.out.print("Geben Sie Ihr Geburtsdatum ein (Format: TT.MM.JJJJ): ");
|
|
String dateInput = scanner.nextLine();
|
|
|
|
SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy");
|
|
formatter.setLenient(false);
|
|
|
|
try {
|
|
Date geburtsdatum = formatter.parse(dateInput);
|
|
int genkundennummer = verwaltung.generiereEindeutigeKundennummer();
|
|
|
|
Benutzer neuerBenutzer = Creator.factoryBenutzer(name, nachname, genkundennummer, geburtsdatum);
|
|
verwaltung.benutzerListe.add(neuerBenutzer);
|
|
|
|
System.out.println("Registrierung erfolgreich! Ihre Kundennummer lautet: " + genkundennummer);
|
|
} catch (ParseException e) {
|
|
System.out.println("Ungültiges Datum. Bitte verwenden Sie das Format TT.MM.JJJJ.");
|
|
}
|
|
}
|
|
|
|
private void anmelden() {
|
|
System.out.print("Geben Sie Ihre Kundennummer zur Anmeldung ein: ");
|
|
int eingabeKundennummer = scanner.nextInt();
|
|
Predicate<Benutzer> isKundennummerGleich = benutzer -> benutzer.getKundennummer() == eingabeKundennummer;
|
|
|
|
if (verwaltung.benutzerListe.stream().anyMatch(isKundennummerGleich)) {
|
|
System.out.println("Willkommen zurück, Benutzer mit Kundennummer: " + eingabeKundennummer + "!");
|
|
} else {
|
|
System.out.println("Kundennummer '" + eingabeKundennummer + "' nicht gefunden. Bitte registrieren Sie sich.");
|
|
}
|
|
}
|
|
|
|
private void suchenNachMedien() {
|
|
System.out.println("Bitte geben Sie stichwortartig an, wonach Sie suchen:");
|
|
String suchbegriff = scanner.nextLine();
|
|
|
|
// Die Methode durchsuchenMedien in der Verwaltungsklasse wird aufgerufen
|
|
List<Medien> gefundeneMedien = Verwaltung.durchsuchenMedien(verwaltung.mediensListe, suchbegriff);
|
|
|
|
if (gefundeneMedien.isEmpty()) {
|
|
System.out.println("Keine Medien gefunden.");
|
|
} else {
|
|
System.out.println("Gefundene Medien:");
|
|
gefundeneMedien.forEach(System.out::println); // Nutzt die toString()-Methode jeder Medienklasse zur Ausgabe
|
|
}
|
|
}
|
|
|
|
}
|
|
|