Parkhaus2/Main.java

92 lines
5.2 KiB
Java
Raw Normal View History

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.");
}
}
}
}