Parkhaus2/Main.java

82 lines
3.6 KiB
Java
Raw Normal View History

2024-10-08 14:58:40 +02:00
import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.time.LocalDateTime;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Parkhaus parkhaus = new Parkhaus();
String kennzeichenRegex = "^[A-ZÄÖÜ]{1,3}-[A-Z]{1,2} \\d{1,4}E?$"; // Regex für deutsches Kennzeichen mit optionalem 'E'
Pattern kennzeichenPattern = Pattern.compile(kennzeichenRegex);
System.out.println("Willkommen im Parkhaus!");
while (true) {
System.out.println("\nWählen Sie eine Option:");
System.out.println("1: Einfahrt");
System.out.println("2: Ausfahrt");
System.out.println("3: Liste der geparkten Fahrzeuge");
System.out.println("4: Programm beenden");
String auswahl = scanner.nextLine();
switch (auswahl) {
case "1":
System.out.println("Geben Sie das Kennzeichen des Autos ein (z.B. MA-SH 4077):");
String kennzeichen = scanner.nextLine();
Matcher kennzeichenMatcher = kennzeichenPattern.matcher(kennzeichen);
if (!kennzeichenMatcher.matches()) {
System.out.println("Ungültiges Kennzeichenformat. Bitte versuchen Sie es erneut.");
break;
}
boolean erfolgreich = parkhaus.einfahrt(kennzeichen);
if (erfolgreich) {
System.out.println("Fahrzeug erfolgreich eingetragen.");
} else {
System.out.println("Das Parkhaus ist voll. Einfahrt nicht möglich.");
}
break;
case "2":
System.out.println("Geben Sie Ihr Kennzeichen ein:");
String kennzeichenAus = scanner.nextLine();
float parkgebuehren = parkhaus.ausfahrt(kennzeichenAus);
if (parkgebuehren == -1) {
System.out.println("Fahrzeug nicht im Parkhaus gefunden.");
} else {
System.out.println("Die Parkgebühren betragen: " + parkgebuehren + " Euro");
System.out.println("Bitte geben Sie Ihre 16-stellige Kreditkartennummer zur Bezahlung ein:");
String kreditkartennummer = scanner.nextLine();
if (Zahlungsabwicklung.validiereKreditkarte(kreditkartennummer)) {
System.out.println("Bezahlung erfolgreich. Vielen Dank!");
} else {
System.out.println("Ungültige Kreditkartennummer. Fahrzeug wird als schuldig markiert.");
parkhaus.addFahrzeugMitSchulden(new Pkw(kennzeichenAus, LocalDateTime.now())); // Fahrzeug mit Schulden markieren
}
}
break;
case "3":
System.out.println("Aktuell geparkte Fahrzeuge:");
for (Pkw auto : parkhaus.getFahrzeugListe()) {
System.out.println("Kennzeichen: " + auto.getKennzeichen() + ", Eingefahren am: " + auto.getEinfahrzeit());
}
break;
case "4":
System.out.println("Programm wird beendet. Auf Wiedersehen!");
scanner.close();
return;
default:
System.out.println("Ungültige Auswahl. Bitte versuchen Sie es erneut.");
}
}
}
}