136 lines
6.7 KiB
Plaintext
136 lines
6.7 KiB
Plaintext
ich: passe die folgende Methode so an, sodass bei eine leere Eingabe die aktuelle Zeit genommen wird, ansonsten
|
|
soll eine schon festgelegte Einfahrts und Ausfahrtszeit gelten zum Testzwecken:
|
|
|
|
// Methode zum Ausfahren eines PKWs anhand des Kennzeichens
|
|
public void ausfahren(String kennzeichen) {
|
|
PKW zuEntfernen = null; //PKW, der rausfahren will
|
|
|
|
// Überprüfen, ob das Auto mit demselben Kennzeichen bereits existiert und setze das als zuEntfernen
|
|
for (PKW pkw : parkendePkws) {
|
|
if (pkw.getKennzeichen().equals(kennzeichen)) {
|
|
zuEntfernen = pkw;
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Falls Auto zum Entfernen gibt
|
|
if (zuEntfernen != null) {
|
|
// Berechnung der Gebühren
|
|
double gebuehren = berechneGebuehren(kennzeichen, new Date()); // Nimmt die aktuelle Zeit an
|
|
|
|
// Gebührenkonto aktualisieren
|
|
zuEntfernen.setGebuehrenkonto(gebuehren); // Schulden für unbezahlte Gebühren hinzufügen
|
|
|
|
// Falls Gebühren vorhanden sind
|
|
if (gebuehren > 0) {
|
|
|
|
Date ausfahrt = new Date(); //aktuelle Zeit für Ausfahrt
|
|
System.out.println("Parkdauer in Minuten: " + berechneParkdauer(kennzeichen, ausfahrt));
|
|
System.out.println("Parkgebühren in Cent: " + zuEntfernen.getGebuehrenkonto());
|
|
|
|
// Kreditkartenvalidierung vor Ausfahrt
|
|
Scanner scanner = new Scanner(System.in);
|
|
System.out.println("Bitte geben Sie Ihre 16-stellige VISA-Kreditkartennummer ein:");
|
|
String kreditkartenNummer = scanner.nextLine();
|
|
|
|
if (pruefeKreditkarte(kreditkartenNummer)) {
|
|
System.out.println("Zahlung erfolgreich. Sie dürfen ausfahren.");
|
|
zuEntfernen.setGebuehrenkonto(0); // Gebühren auf 0 setzen
|
|
System.out.println("Bezahlte Summe: " + zuEntfernen.getGebuehrenkonto());
|
|
// PKW aus der Liste entfernen
|
|
parkendePkws.remove(zuEntfernen); // Hier wird der PKW endgültig entfernt
|
|
System.out.println("PKW mit Kennzeichen " + kennzeichen + " hat die Gebühren bezahlt und darf rausfahren.\n");
|
|
} else {
|
|
System.out.println("Ungültige Kreditkartennummer. Zahlung fehlgeschlagen.");
|
|
System.out.println("Offenes Gebührenkonto: " + zuEntfernen.getGebuehrenkonto());
|
|
}
|
|
} else {
|
|
// Gebührenfrei (unter 15 Minuten oder andere Ausnahme)
|
|
Date ausfahrt = new Date();
|
|
System.out.println("Parkdauer in Minuten: " + berechneParkdauer(kennzeichen, ausfahrt));
|
|
System.out.println("Parkgebühren in Cent: " + zuEntfernen.getGebuehrenkonto());
|
|
System.out.println("PKW mit Kennzeichen " + kennzeichen + " darf gebührenfrei ausfahren.");
|
|
}
|
|
|
|
// PKW aus der Liste nicht entfernen und Kapazität aktualisieren
|
|
this.kapazitaetVerfuegbar++;
|
|
this.belegt--;
|
|
System.out.println("PKW mit Kennzeichen " + kennzeichen + " hat die Ausfahrt durchgeführt.\n");
|
|
|
|
} else {
|
|
System.out.println("Kein PKW mit diesem Kennzeichen gefunden.\n");
|
|
}
|
|
}
|
|
|
|
KI:Um die Methode so anzupassen, dass sie entweder die aktuelle Zeit oder manuell eingegebene Einfahrts- und
|
|
Ausfahrtszeiten für Debuggingzwecke nutzen, müssen wir die Zeit bei leerer Eingabe dynamisch übernehmen, aber die
|
|
Möglichkeit offen lassen, manuelle Zeiten für Testzwecke zu verwenden.
|
|
|
|
Hier ist die angepasste Version:
|
|
|
|
Angepasste Methode ausfahren:
|
|
|
|
public void ausfahren(String kennzeichen) {
|
|
PKW zuEntfernen = null; // PKW, der rausfahren will
|
|
|
|
// Überprüfen, ob das Auto mit demselben Kennzeichen existiert
|
|
for (PKW pkw : parkendePkws) {
|
|
if (pkw.getKennzeichen().equals(kennzeichen)) {
|
|
zuEntfernen = pkw;
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Falls Auto zum Entfernen gefunden wurde
|
|
if (zuEntfernen != null) {
|
|
Scanner scanner = new Scanner(System.in);
|
|
System.out.println("Bitte geben Sie die Ausfahrtszeit ein (leer lassen für aktuelle Zeit, Format: dd.MM.yyyy, HH:mm):");
|
|
String ausfahrtInput = scanner.nextLine();
|
|
|
|
Date ausfahrt;
|
|
if (ausfahrtInput.isEmpty()) {
|
|
ausfahrt = new Date(); // Aktuelle Zeit nehmen
|
|
} else {
|
|
try {
|
|
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
|
|
ausfahrt = sdf.parse(ausfahrtInput); // Manuelle Eingabe verarbeiten
|
|
} catch (ParseException e) {
|
|
System.out.println("Ungültiges Datum, benutze aktuelle Zeit.");
|
|
ausfahrt = new Date();
|
|
}
|
|
}
|
|
|
|
// Berechnung der Gebühren
|
|
double gebuehren = berechneGebuehren(kennzeichen, ausfahrt);
|
|
zuEntfernen.setGebuehrenkonto(gebuehren); // Gebührenkonto aktualisieren
|
|
|
|
// Falls Gebühren vorhanden sind
|
|
if (gebuehren > 0) {
|
|
System.out.println("Parkdauer in Minuten: " + berechneParkdauer(kennzeichen, ausfahrt));
|
|
System.out.println("Parkgebühren in Cent: " + zuEntfernen.getGebuehrenkonto());
|
|
|
|
// Kreditkartenvalidierung vor Ausfahrt
|
|
System.out.println("Bitte geben Sie Ihre 16-stellige VISA-Kreditkartennummer ein:");
|
|
String kreditkartenNummer = scanner.nextLine();
|
|
|
|
if (pruefeKreditkarte(kreditkartenNummer)) {
|
|
System.out.println("Zahlung erfolgreich. Sie dürfen ausfahren.");
|
|
zuEntfernen.setGebuehrenkonto(0); // Gebühren auf 0 setzen
|
|
parkendePkws.remove(zuEntfernen); // PKW entfernen
|
|
} else {
|
|
System.out.println("Ungültige Kreditkartennummer. Zahlung fehlgeschlagen.");
|
|
}
|
|
} else {
|
|
// Gebührenfrei
|
|
System.out.println("PKW mit Kennzeichen " + kennzeichen + " darf gebührenfrei ausfahren.");
|
|
}
|
|
|
|
// Kapazität aktualisieren
|
|
this.kapazitaetVerfuegbar++;
|
|
this.belegt--;
|
|
System.out.println("PKW mit Kennzeichen " + kennzeichen + " hat die Ausfahrt durchgeführt.\n");
|
|
|
|
} else {
|
|
System.out.println("Kein PKW mit diesem Kennzeichen gefunden.\n");
|
|
}
|
|
} |