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 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 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 } } }