Verbesserungen + Kommentare, prompt6.txt hinzugefügt
parent
9376a096e0
commit
5c689a0d10
|
@ -0,0 +1,136 @@
|
|||
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");
|
||||
}
|
||||
}
|
|
@ -10,9 +10,9 @@ public class PKW {
|
|||
double gebuehrenkonto;
|
||||
|
||||
|
||||
public PKW(String kennzeichen) {
|
||||
public PKW(String kennzeichen, Date einfahrt) {
|
||||
this.kennzeichen = kennzeichen;
|
||||
this.einfahrt = new Date();
|
||||
this.einfahrt = einfahrt;
|
||||
this.gebuehrenkonto = 0.0;
|
||||
}
|
||||
|
||||
|
@ -20,6 +20,9 @@ public class PKW {
|
|||
return kennzeichen;
|
||||
}
|
||||
|
||||
public void setEinfahrt(Date einfahrt) {
|
||||
this.einfahrt = einfahrt;
|
||||
}
|
||||
|
||||
public Date getEinfahrt() {
|
||||
return einfahrt;
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package QualifierTeil2;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
public class Parkhaus {
|
||||
|
@ -17,7 +19,7 @@ public class Parkhaus {
|
|||
|
||||
|
||||
// Methode zum Einfahren eines PKWs
|
||||
public void einfahren(String kennzeichen) {
|
||||
public void einfahren(String kennzeichen, Date einfahrtZeit) {
|
||||
PKW existierenderPKW = null;
|
||||
|
||||
// Überprüfen, ob das Auto mit demselben Kennzeichen bereits existiert
|
||||
|
@ -31,9 +33,11 @@ public class Parkhaus {
|
|||
// Falls angegebenen PKW sich schon im Parkhaus befindet oder schonmal da war und Schulden hat
|
||||
if (existierenderPKW != null) {
|
||||
System.out.println("Der PKW mit dem Kennzeichen " + kennzeichen + " hat noch Schulden in Höhe von " + existierenderPKW.getGebuehrenkonto() + " Cent.");
|
||||
this.kapazitaetVerfuegbar--;
|
||||
this.belegt++;
|
||||
} else {
|
||||
// Neuen PKW erstellen und Schulden übernehmen, falls vorhanden
|
||||
PKW neuerPKW = new PKW(kennzeichen);
|
||||
PKW neuerPKW = new PKW(kennzeichen, einfahrtZeit);
|
||||
double schulden = sucheSchulden(kennzeichen); // Funktion, die die alten Schulden findet (falls vorhanden)
|
||||
neuerPKW.setGebuehrenkonto(schulden); // Vorherige Schulden hinzufügen
|
||||
parkendePkws.add(neuerPKW);
|
||||
|
@ -42,7 +46,6 @@ public class Parkhaus {
|
|||
System.out.println("Neuer PKW mit Kennzeichen " + kennzeichen + " eingefahren. Schulden: " + schulden + " Cent.");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -61,20 +64,42 @@ public class Parkhaus {
|
|||
// Falls Auto zum Entfernen gibt
|
||||
if (zuEntfernen != null) {
|
||||
// Berechnung der Gebühren
|
||||
double gebuehren = berechneGebuehren(kennzeichen, new Date()); // Nimmt die aktuelle Zeit an
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
|
||||
Date ausfahrtZeit;
|
||||
|
||||
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();
|
||||
|
||||
if (ausfahrtInput.isEmpty()){
|
||||
ausfahrtZeit = new Date();//Aktuelle Zeit nehmen
|
||||
System.out.println("Ausfahrtszeit: " + sdf.format(ausfahrtZeit));
|
||||
} else {
|
||||
try {
|
||||
ausfahrtZeit = sdf.parse(ausfahrtInput); // Manuelle Eingabe verarbeiten
|
||||
System.out.println("Ausfahrtszeit: " + sdf.format(ausfahrtZeit));
|
||||
} catch (ParseException e) {
|
||||
System.out.println("Ungültiges Datum, benutze aktuelle Zeit.");
|
||||
ausfahrtZeit = new Date();
|
||||
System.out.println("Ausfahrtszeit: " + sdf.format(ausfahrtZeit));
|
||||
}
|
||||
}
|
||||
|
||||
double aktuelleGebuehren = berechneGebuehren(kennzeichen, ausfahrtZeit);
|
||||
double gesamtGebuehren = zuEntfernen.getGebuehrenkonto() + aktuelleGebuehren; // Summe der Schulden + aktuelle Gebühren
|
||||
|
||||
|
||||
// Gebührenkonto aktualisieren
|
||||
zuEntfernen.setGebuehrenkonto(gebuehren); // Schulden für unbezahlte Gebühren hinzufügen
|
||||
zuEntfernen.setGebuehrenkonto(aktuelleGebuehren); // Schulden für unbezahlte Gebühren hinzufügen
|
||||
|
||||
// Falls Gebühren vorhanden sind
|
||||
if (gebuehren > 0) {
|
||||
if (gesamtGebuehren > 0) {
|
||||
|
||||
Date ausfahrt = new Date(); //aktuelle Zeit für Ausfahrt
|
||||
System.out.println("Parkdauer in Minuten: " + berechneParkdauer(kennzeichen, ausfahrt));
|
||||
System.out.println("Parkdauer in Minuten: " + berechneParkdauer(kennzeichen, ausfahrtZeit));
|
||||
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();
|
||||
|
||||
|
@ -91,8 +116,8 @@ public class Parkhaus {
|
|||
}
|
||||
} 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("Parkdauer in Minuten: " + berechneParkdauer(kennzeichen, ausfahrtZeit));
|
||||
System.out.println("Parkgebühren in Cent: " + zuEntfernen.getGebuehrenkonto());
|
||||
System.out.println("PKW mit Kennzeichen " + kennzeichen + " darf gebührenfrei ausfahren.");
|
||||
}
|
||||
|
@ -111,29 +136,19 @@ public class Parkhaus {
|
|||
public long berechneParkdauer(String kennzeichen, Date ausfahrt) {
|
||||
long minDiff = 0;
|
||||
|
||||
// Berechnung der parkdauer des PKWs anhand des Kennzeichens
|
||||
// Überprüfen, ob das Auto mit dem angegebenen Kennzeichen existiert
|
||||
for (PKW pkw : parkendePkws) {
|
||||
if (pkw.getKennzeichen().equals(kennzeichen)) {
|
||||
minDiff = (ausfahrt.getTime() - pkw.getEinfahrt().getTime()) / 60000;
|
||||
Date einfahrt = pkw.getEinfahrt();
|
||||
|
||||
|
||||
// Parkdauer in Minuten berechnen (Differenz zwischen Ausfahrt und Einfahrt)
|
||||
minDiff = (ausfahrt.getTime() - einfahrt.getTime() ) / 60000;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return minDiff;
|
||||
|
||||
//Debugging mit selbst ausgewählten Zeiten
|
||||
|
||||
/*SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
|
||||
Date einfahrtszeit = null;
|
||||
try {
|
||||
// Beispiel für manuelle Eingabe, kann angepasst werden
|
||||
einfahrtszeit = sdf.parse("01.10.2024, 20:00");
|
||||
ausfahrt = sdf.parse("02.10.2024, 02:00");
|
||||
} catch (ParseException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
minDiff = (ausfahrt.getTime() - einfahrtszeit.getTime()) / 60000;
|
||||
|
||||
return minDiff;*/
|
||||
}
|
||||
|
||||
public double berechneGebuehren(String kennzeichen, Date ausfahrt) {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package QualifierTeil2;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Scanner;
|
||||
|
@ -24,18 +25,39 @@ public class UI {
|
|||
if (kennzeichen.isEmpty()) {
|
||||
kennzeichen = parkhaus1.generiereKennzeichen();
|
||||
System.out.println("Generiertes Kennzeichen: " + kennzeichen);
|
||||
System.out.println(" ");
|
||||
}
|
||||
|
||||
// manuelle oder automatische Eingabe der Einfahrtszeit
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
|
||||
Date einfahrtZeit;
|
||||
|
||||
System.out.println("Bitte geben Sie die Einfahrtszeit ein (leer lassen, um die aktuelle Zeit zu verwenden, Format: dd.MM.yyyy, HH:mm):");
|
||||
String einfahrtInput = scan.nextLine();
|
||||
|
||||
// Falls die Eingabe leer ist, wird die aktuelle Zeit verwendet
|
||||
if (einfahrtInput.isEmpty()) {
|
||||
einfahrtZeit = new Date(); // aktuelle Zeit
|
||||
System.out.println("Einfahrtszeit: " + sdf.format(einfahrtZeit));
|
||||
} else {
|
||||
// Falls eine manuelle Zeit eingegeben wurde
|
||||
try {
|
||||
einfahrtZeit = sdf.parse(einfahrtInput);
|
||||
System.out.println("Manuell eingegebene Einfahrtszeit: " + sdf.format(einfahrtZeit));
|
||||
} catch (ParseException e) {
|
||||
System.out.println("Ungültiges Format. Die aktuelle Zeit wird verwendet.");
|
||||
einfahrtZeit = new Date();
|
||||
System.out.println("Einfahrtszeit: " + sdf.format(einfahrtZeit));
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("Aktuell verfügbare Parkplätze: " + parkhaus1.kapazitaetVerfuegbar);
|
||||
|
||||
// Methodenaufruf vom Parkhaus für die Einfahrt
|
||||
parkhaus1.einfahren(kennzeichen);
|
||||
parkhaus1.einfahren(kennzeichen, einfahrtZeit);
|
||||
|
||||
System.out.println("weitere verfügbare Parkplätze: " + parkhaus1.kapazitaetVerfuegbar);
|
||||
|
||||
// Ausgabe aktuelle Zeit als Einfahrtszeit
|
||||
var einfahrt = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
|
||||
System.out.println("Einfahrt: " + einfahrt.format(new Date()));
|
||||
|
||||
//Debugging
|
||||
// System.out.println("belegt: " + parkhaus1.belegt);
|
||||
|
|
Loading…
Reference in New Issue