diff --git a/KIchatgpt/prompt6.txt b/KIchatgpt/prompt6.txt new file mode 100644 index 0000000..c53c35a --- /dev/null +++ b/KIchatgpt/prompt6.txt @@ -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"); + } + } \ No newline at end of file diff --git a/QualifierTeil2/PKW.java b/QualifierTeil2/PKW.java index 9fa51f5..3b48b0d 100644 --- a/QualifierTeil2/PKW.java +++ b/QualifierTeil2/PKW.java @@ -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; diff --git a/QualifierTeil2/Parkhaus.java b/QualifierTeil2/Parkhaus.java index f339287..b6d3fa2 100644 --- a/QualifierTeil2/Parkhaus.java +++ b/QualifierTeil2/Parkhaus.java @@ -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) { diff --git a/QualifierTeil2/UI.java b/QualifierTeil2/UI.java index 860183d..650612f 100644 --- a/QualifierTeil2/UI.java +++ b/QualifierTeil2/UI.java @@ -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);