diff --git a/QualifierTeil2/PKW.java b/QualifierTeil2/PKW.java index f7c74d7..fae8434 100644 --- a/QualifierTeil2/PKW.java +++ b/QualifierTeil2/PKW.java @@ -6,41 +6,28 @@ import java.util.Random; public class PKW { private String kennzeichen; - Date einfahrt; double gebuehrenkonto; public PKW() { - this.kennzeichen = generiereKennzeichen(); - this.einfahrt = new Date(); - this.gebuehrenkonto = 0; + this.kennzeichen = "HD-MA 1967"; + this.gebuehrenkonto = 0.0; } public String getKennzeichen() { return kennzeichen; } - public Date getEinfahrt() { - return einfahrt; - } - public String getEinfahrtAlsString() { - return gebeAktuelleZeit(); - } public double getGebuehrenkonto() { return gebuehrenkonto; } public void setGebuehrenkonto(double gebuehrenkonto) { - this.gebuehrenkonto = gebuehrenkonto; + this.gebuehrenkonto += gebuehrenkonto; } - public String gebeAktuelleZeit() { - var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm"); - return sdf.format(new Date()); - } - public String generiereKennzeichen() { Random random = new Random(); diff --git a/QualifierTeil2/Parkhaus.java b/QualifierTeil2/Parkhaus.java index 4d4b8b3..bbed495 100644 --- a/QualifierTeil2/Parkhaus.java +++ b/QualifierTeil2/Parkhaus.java @@ -24,15 +24,50 @@ public class Parkhaus { } // Methode zum Einfahren eines PKWs - public void einfahren(PKW pkw) { - if (parkendePkws.size() < kapazitaet) { + public void einfahren(String kennzeichen) { + PKW existierenderPKW = null; + + // Überprüfen, ob das Auto mit demselben Kennzeichen bereits existiert (Schulden hat) + for (PKW pkw : parkendePkws) { + if (pkw.getKennzeichen().equals(kennzeichen)) { + existierenderPKW = pkw; + break; + } + } + if (existierenderPKW != null) { + System.out.println("Der PKW mit dem Kennzeichen " + kennzeichen + " hat noch Schulden von " + existierenderPKW.getGebuehrenkonto() + " Euro."); + } else { + // Neuen PKW erstellen und Schulden übernehmen, falls vorhanden + PKW neuerPKW = new PKW(); + double schulden = sucheSchulden(kennzeichen); // Funktion, die die alten Schulden findet (falls vorhanden) + neuerPKW.setGebuehrenkonto(schulden); // Vorherige Schulden hinzufügen + parkendePkws.add(neuerPKW); + this.kapazitaet--; + this.belegt++; + System.out.println("Neuer PKW mit Kennzeichen " + kennzeichen + " eingefahren. Schulden: " + schulden + " Euro."); + } + + + /*if (parkendePkws.size() < kapazitaet) { parkendePkws.add(pkw); this.kapazitaet--; this.belegt++; System.out.println("PKW mit Kennzeichen " + pkw.getKennzeichen() + " ist eingefahren."); } else { System.out.println("Parkhaus voll."); + }*/ + + } + + public double sucheSchulden(String kennzeichen) { + // Durchsuche die Liste oder Datenbank nach alten Schulden + // Beispiel: Wenn der PKW schon einmal ausgefahren ist, seine Schulden zurückgeben + for (PKW pkw : parkendePkws) { + if (pkw.getKennzeichen().equals(kennzeichen)) { + return pkw.getGebuehrenkonto(); // Alte Schulden finden + } } + return 0.0; // Keine Schulden gefunden } @@ -56,6 +91,9 @@ public class Parkhaus { // 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 + if (gebuehren > 0) { // Kreditkartenvalidierung vor Ausfahrt Scanner scanner = new Scanner(System.in); @@ -65,26 +103,25 @@ public class Parkhaus { if (pruefeKreditkarte(kreditkartenNummer)) { System.out.println("Zahlung erfolgreich. Sie dürfen ausfahren."); zuEntfernen.setGebuehrenkonto(0); // Gebühren auf 0 setzen - parkendePkws.remove(zuEntfernen); - this.kapazitaet++; - this.belegt--; System.out.println("Gebührenkonto: " + zuEntfernen.getGebuehrenkonto()); 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. Ausfahrt verweigert."); - zuEntfernen.setGebuehrenkonto(gebuehren); + System.out.println("Ungültige Kreditkartennummer. Zahlung fehlgeschlagen."); System.out.println("Gebührenkonto: " + zuEntfernen.getGebuehrenkonto()); - System.out.println(" "); } } else { // Gebührenfrei (unter 15 Minuten oder andere Ausnahme) - parkendePkws.remove(zuEntfernen); - this.kapazitaet++; - this.belegt--; - System.out.println("PKW mit Kennzeichen " + kennzeichen + " darf gebührenfrei ausfahren."); + System.out.println("PKW mit Kennzeichen " + kennzeichen + " darf gebührenfrei ausfahren.\n"); } + + // PKW aus der Liste entfernen und Kapazität aktualisieren + parkendePkws.remove(zuEntfernen); + this.kapazitaet++; + 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."); + System.out.println("Kein PKW mit diesem Kennzeichen gefunden.\n"); } } diff --git a/QualifierTeil2/UI.java b/QualifierTeil2/UI.java index c183688..dac5fd2 100644 --- a/QualifierTeil2/UI.java +++ b/QualifierTeil2/UI.java @@ -1,5 +1,6 @@ package QualifierTeil2; +import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; @@ -11,11 +12,13 @@ public class UI { // Methode für die Einfahrt eines PKWs public void einfahrtPKW() { - PKW pkw = new PKW(); + System.out.println("Bitte geben Sie das Kennzeichen ein:"); + String kennzeichen = scan.nextLine(); System.out.println("Aktuell verfügbare Parkplätze: " + parkhaus1.kapazitaet); - parkhaus1.einfahren(pkw); + parkhaus1.einfahren(kennzeichen); System.out.println("weitere verfügbare Parkplätze: " + parkhaus1.kapazitaet); - System.out.println("Einfahrt: " + pkw.getEinfahrtAlsString()); + var einfahrt = new SimpleDateFormat("dd.MM.yyyy, HH:mm"); + System.out.println("Einfahrt: " + einfahrt.format(new Date())); //Debugging // System.out.println("belegt: " + parkhaus1.belegt);