2024-10-08 15:19:51 +02:00
|
|
|
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
|
2024-10-08 14:58:40 +02:00
|
|
|
|
|
|
|
public class Main {
|
|
|
|
public static void main(String[] args) {
|
2024-10-08 15:19:51 +02:00
|
|
|
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
|
2024-10-08 14:58:40 +02:00
|
|
|
|
2024-10-08 15:19:51 +02:00
|
|
|
System.out.println("Willkommen im Parkhaus!"); // Begrüßungsnachricht
|
2024-10-08 14:58:40 +02:00
|
|
|
|
2024-10-08 15:19:51 +02:00
|
|
|
// Endlosschleife für die Menüauswahl
|
2024-10-08 14:58:40 +02:00
|
|
|
while (true) {
|
2024-10-08 15:19:51 +02:00
|
|
|
// Anzeige der Menüoptionen
|
2024-10-08 14:58:40 +02:00
|
|
|
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");
|
|
|
|
|
2024-10-08 15:19:51 +02:00
|
|
|
String auswahl = scanner.nextLine(); // Liest die Auswahl des Benutzers
|
2024-10-08 14:58:40 +02:00
|
|
|
|
|
|
|
switch (auswahl) {
|
2024-10-08 15:19:51 +02:00
|
|
|
case "1": // Fall für die Einfahrt eines Fahrzeugs
|
2024-10-08 14:58:40 +02:00
|
|
|
System.out.println("Geben Sie das Kennzeichen des Autos ein (z.B. MA-SH 4077):");
|
2024-10-08 15:19:51 +02:00
|
|
|
String kennzeichen = scanner.nextLine(); // Liest das Kennzeichen
|
2024-10-08 14:58:40 +02:00
|
|
|
|
2024-10-08 15:19:51 +02:00
|
|
|
// Prüft, ob das Kennzeichen dem definierten Regex entspricht
|
2024-10-08 14:58:40 +02:00
|
|
|
Matcher kennzeichenMatcher = kennzeichenPattern.matcher(kennzeichen);
|
|
|
|
if (!kennzeichenMatcher.matches()) {
|
|
|
|
System.out.println("Ungültiges Kennzeichenformat. Bitte versuchen Sie es erneut.");
|
2024-10-08 15:19:51 +02:00
|
|
|
break; // Wenn das Format ungültig ist, wird die Schleife erneut durchlaufen
|
2024-10-08 14:58:40 +02:00
|
|
|
}
|
|
|
|
|
2024-10-08 15:19:51 +02:00
|
|
|
// Versuch, das Fahrzeug im Parkhaus einzuparken
|
2024-10-08 14:58:40 +02:00
|
|
|
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;
|
|
|
|
|
2024-10-08 15:19:51 +02:00
|
|
|
case "2": // Fall für die Ausfahrt eines Fahrzeugs
|
2024-10-08 14:58:40 +02:00
|
|
|
System.out.println("Geben Sie Ihr Kennzeichen ein:");
|
2024-10-08 15:19:51 +02:00
|
|
|
String kennzeichenAus = scanner.nextLine(); // Liest das Kennzeichen für die Ausfahrt
|
|
|
|
float parkgebuehren = parkhaus.ausfahrt(kennzeichenAus); // Berechnet die Parkgebühren
|
2024-10-08 14:58:40 +02:00
|
|
|
|
2024-10-08 15:19:51 +02:00
|
|
|
// Überprüft, ob das Fahrzeug im Parkhaus gefunden wurde
|
2024-10-08 14:58:40 +02:00
|
|
|
if (parkgebuehren == -1) {
|
|
|
|
System.out.println("Fahrzeug nicht im Parkhaus gefunden.");
|
|
|
|
} else {
|
2024-10-08 15:19:51 +02:00
|
|
|
// Gibt die Parkgebühren aus und fordert zur Zahlung auf
|
2024-10-08 14:58:40 +02:00
|
|
|
System.out.println("Die Parkgebühren betragen: " + parkgebuehren + " Euro");
|
|
|
|
System.out.println("Bitte geben Sie Ihre 16-stellige Kreditkartennummer zur Bezahlung ein:");
|
2024-10-08 15:19:51 +02:00
|
|
|
String kreditkartennummer = scanner.nextLine(); // Liest die Kreditkartennummer
|
2024-10-08 14:58:40 +02:00
|
|
|
|
2024-10-08 15:19:51 +02:00
|
|
|
// Validiert die Kreditkartennummer
|
2024-10-08 14:58:40 +02:00
|
|
|
if (Zahlungsabwicklung.validiereKreditkarte(kreditkartennummer)) {
|
|
|
|
System.out.println("Bezahlung erfolgreich. Vielen Dank!");
|
|
|
|
} else {
|
|
|
|
System.out.println("Ungültige Kreditkartennummer. Fahrzeug wird als schuldig markiert.");
|
2024-10-08 15:19:51 +02:00
|
|
|
// Markiert das Fahrzeug als schuldig, wenn die Kreditkartennummer ungültig ist
|
|
|
|
parkhaus.addFahrzeugMitSchulden(new Pkw(kennzeichenAus, LocalDateTime.now()));
|
2024-10-08 14:58:40 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
2024-10-08 15:19:51 +02:00
|
|
|
case "3": // Fall für die Anzeige der geparkten Fahrzeuge
|
2024-10-08 14:58:40 +02:00
|
|
|
System.out.println("Aktuell geparkte Fahrzeuge:");
|
2024-10-08 15:19:51 +02:00
|
|
|
for (Pkw auto : parkhaus.getFahrzeugListe()) { // Iteriert über die Liste der geparkten Fahrzeuge
|
|
|
|
// Gibt Kennzeichen und Eingangszeit jedes Fahrzeugs aus
|
2024-10-08 14:58:40 +02:00
|
|
|
System.out.println("Kennzeichen: " + auto.getKennzeichen() + ", Eingefahren am: " + auto.getEinfahrzeit());
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
2024-10-08 15:19:51 +02:00
|
|
|
case "4": // Fall für das Beenden des Programms
|
2024-10-08 14:58:40 +02:00
|
|
|
System.out.println("Programm wird beendet. Auf Wiedersehen!");
|
2024-10-08 15:19:51 +02:00
|
|
|
scanner.close(); // Schließt den Scanner
|
|
|
|
return; // Beendet das Programm
|
2024-10-08 14:58:40 +02:00
|
|
|
|
2024-10-08 15:19:51 +02:00
|
|
|
default: // Fall für ungültige Eingaben
|
2024-10-08 14:58:40 +02:00
|
|
|
System.out.println("Ungültige Auswahl. Bitte versuchen Sie es erneut.");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|