Compare commits
3 Commits
f032e96668
...
612e67aa83
Author | SHA1 | Date |
---|---|---|
ioana | 612e67aa83 | |
ioana | 8890403af8 | |
ioana | a5ef6f34f9 |
|
@ -6,49 +6,27 @@ import java.util.Random;
|
|||
|
||||
public class PKW {
|
||||
private String kennzeichen;
|
||||
Date einfahrt;
|
||||
private boolean hatBezahlt;
|
||||
double gebuehrenkonto;
|
||||
|
||||
public PKW() {
|
||||
this.kennzeichen = generiereKennzeichen();
|
||||
this.einfahrt = new Date();
|
||||
this.hatBezahlt = false;
|
||||
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 boolean hatBezahlt() {
|
||||
return hatBezahlt;
|
||||
}
|
||||
|
||||
public void setBezahlt(boolean bezahlt) {
|
||||
this.hatBezahlt = bezahlt;
|
||||
}
|
||||
|
||||
public String gebeAktuelleZeit() {
|
||||
var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
|
||||
return sdf.format(new Date());
|
||||
}
|
||||
|
||||
public String generiereKennzeichen() {
|
||||
Random random = new Random();
|
||||
|
|
|
@ -24,15 +24,52 @@ 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() + " Cent.");
|
||||
this.kapazitaet--;
|
||||
this.belegt++;
|
||||
} 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,7 +93,15 @@ 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) {
|
||||
|
||||
Date ausfahrt = new Date();
|
||||
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:");
|
||||
|
@ -65,26 +110,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");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -114,7 +158,6 @@ public class Parkhaus {
|
|||
} catch (ParseException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
long minDiff = (d2.getTime() - d1.getTime()) / 60000;
|
||||
|
||||
return minDiff;
|
||||
|
@ -128,7 +171,6 @@ public class Parkhaus {
|
|||
if (parkdauer <= 15) {
|
||||
parkdauer = 0;
|
||||
gebuehr = 0;
|
||||
|
||||
}
|
||||
|
||||
// Parkdauer nach den 15 Minuten
|
||||
|
@ -149,14 +191,11 @@ public class Parkhaus {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// Prüfe, ob es sich um ein E-Auto handelt (Kennzeichen endet mit "E")
|
||||
if (kennzeichen.endsWith("E")) {
|
||||
gebuehr *= 0.8; // 20% Rabatt für E-Autos
|
||||
}
|
||||
|
||||
return gebuehr;
|
||||
|
||||
}
|
||||
|
||||
// Methode zur Überprüfung der Kreditkartennummer mit dem Luhn-Algorithmus
|
||||
|
@ -164,7 +203,6 @@ public class Parkhaus {
|
|||
if (kreditkartenNummer.length() != 16 || !kreditkartenNummer.startsWith("4")) {
|
||||
return false; // Ungültige Karte
|
||||
}
|
||||
|
||||
int sum = 0;
|
||||
boolean alternate = false;
|
||||
for (int i = kreditkartenNummer.length() - 1; i >= 0; i--) {
|
||||
|
@ -180,7 +218,6 @@ public class Parkhaus {
|
|||
}
|
||||
return (sum % 10 == 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
@ -50,13 +53,10 @@ public class UI {
|
|||
|
||||
// Methode für die Ausfahrt und Bezahlung
|
||||
public void ausfahrtPKW() {
|
||||
Date ausfahrt = new Date();
|
||||
|
||||
System.out.println("Geben Sie das Kennzeichen des ausfahrenden PKWs ein: ");
|
||||
String kennzeichen = scan.nextLine().toUpperCase();
|
||||
|
||||
System.out.println("Parkdauer in Minuten: " + parkhaus1.berechneParkdauer(kennzeichen, ausfahrt));
|
||||
System.out.println("Parkgebühren in Cent: " + parkhaus1.berechneGebuehren(kennzeichen, ausfahrt));
|
||||
parkhaus1.ausfahren(kennzeichen);
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue