Parkhaus2/Main.java

92 lines
5.2 KiB
Java

import java.util.Scanner; // Importiert die Scanner-Klasse für die Benutzereingabe
import java.util.regex.Pattern; // Importiert die Pattern-Klasse für reguläre Ausdrücke
import java.util.regex.Matcher; // Importiert die Matcher-Klasse für das Matching von regulären Ausdrücken
import java.time.LocalDateTime; // Importiert die LocalDateTime-Klasse für Zeitstempel
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // Initialisiert einen Scanner für die Eingabe
Parkhaus parkhaus = new Parkhaus(); // Erstellt ein neues Parkhaus-Objekt
// Regex für deutsches Kennzeichen mit optionalem 'E'
String kennzeichenRegex = "^[A-ZÄÖÜ]{1,3}-[A-Z]{1,2} \\d{1,4}E?$";
Pattern kennzeichenPattern = Pattern.compile(kennzeichenRegex); // Kompiliert den Regex zu einem Pattern
System.out.println("Willkommen im Parkhaus!"); // Begrüßungsnachricht
// Endlosschleife für die Menüauswahl
while (true) {
// Anzeige der Menüoptionen
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(); // Liest die Auswahl des Benutzers
switch (auswahl) {
case "1": // Fall für die Einfahrt eines Fahrzeugs
System.out.println("Geben Sie das Kennzeichen des Autos ein (z.B. MA-SH 4077):");
String kennzeichen = scanner.nextLine(); // Liest das Kennzeichen
// Prüft, ob das Kennzeichen dem definierten Regex entspricht
Matcher kennzeichenMatcher = kennzeichenPattern.matcher(kennzeichen);
if (!kennzeichenMatcher.matches()) {
System.out.println("Ungültiges Kennzeichenformat. Bitte versuchen Sie es erneut.");
break; // Wenn das Format ungültig ist, wird die Schleife erneut durchlaufen
}
// Versuch, das Fahrzeug im Parkhaus einzuparken
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": // Fall für die Ausfahrt eines Fahrzeugs
System.out.println("Geben Sie Ihr Kennzeichen ein:");
String kennzeichenAus = scanner.nextLine(); // Liest das Kennzeichen für die Ausfahrt
float parkgebuehren = parkhaus.ausfahrt(kennzeichenAus); // Berechnet die Parkgebühren
// Überprüft, ob das Fahrzeug im Parkhaus gefunden wurde
if (parkgebuehren == -1) {
System.out.println("Fahrzeug nicht im Parkhaus gefunden.");
} else {
// Gibt die Parkgebühren aus und fordert zur Zahlung auf
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(); // Liest die Kreditkartennummer
// Validiert die Kreditkartennummer
if (Zahlungsabwicklung.validiereKreditkarte(kreditkartennummer)) {
System.out.println("Bezahlung erfolgreich. Vielen Dank!");
} else {
System.out.println("Ungültige Kreditkartennummer. Fahrzeug wird als schuldig markiert.");
// Markiert das Fahrzeug als schuldig, wenn die Kreditkartennummer ungültig ist
parkhaus.addFahrzeugMitSchulden(new Pkw(kennzeichenAus, LocalDateTime.now()));
}
}
break;
case "3": // Fall für die Anzeige der geparkten Fahrzeuge
System.out.println("Aktuell geparkte Fahrzeuge:");
for (Pkw auto : parkhaus.getFahrzeugListe()) { // Iteriert über die Liste der geparkten Fahrzeuge
// Gibt Kennzeichen und Eingangszeit jedes Fahrzeugs aus
System.out.println("Kennzeichen: " + auto.getKennzeichen() + ", Eingefahren am: " + auto.getEinfahrzeit());
}
break;
case "4": // Fall für das Beenden des Programms
System.out.println("Programm wird beendet. Auf Wiedersehen!");
scanner.close(); // Schließt den Scanner
return; // Beendet das Programm
default: // Fall für ungültige Eingaben
System.out.println("Ungültige Auswahl. Bitte versuchen Sie es erneut.");
}
}
}
}