Bib1/Ui.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
}
}
}