Compare commits

..

No commits in common. "612e67aa83323b40d698606ef42bf471731dbf69" and "f032e96668d5ecf8ad1e6094ab5b0db20859b907" have entirely different histories.

3 changed files with 51 additions and 66 deletions

View File

@ -6,27 +6,49 @@ import java.util.Random;
public class PKW {
private String kennzeichen;
Date einfahrt;
private boolean hatBezahlt;
double gebuehrenkonto;
public PKW() {
this.kennzeichen = "HD-MA 1967";
this.gebuehrenkonto = 0.0;
this.kennzeichen = generiereKennzeichen();
this.einfahrt = new Date();
this.hatBezahlt = false;
this.gebuehrenkonto = 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();

View File

@ -24,52 +24,15 @@ public class Parkhaus {
}
// Methode zum Einfahren eines PKWs
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) {
public void einfahren(PKW pkw) {
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
}
@ -93,15 +56,7 @@ 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:");
@ -110,25 +65,26 @@ 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.");
System.out.println("Ungültige Kreditkartennummer. Zahlung fehlgeschlagen. Ausfahrt verweigert.");
zuEntfernen.setGebuehrenkonto(gebuehren);
System.out.println("Gebührenkonto: " + zuEntfernen.getGebuehrenkonto());
System.out.println(" ");
}
} else {
// Gebührenfrei (unter 15 Minuten oder andere Ausnahme)
System.out.println("PKW mit Kennzeichen " + kennzeichen + " darf gebührenfrei ausfahren.\n");
parkendePkws.remove(zuEntfernen);
this.kapazitaet++;
this.belegt--;
System.out.println("PKW mit Kennzeichen " + kennzeichen + " darf gebührenfrei ausfahren.");
}
// 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.\n");
System.out.println("Kein PKW mit diesem Kennzeichen gefunden.");
}
}
@ -158,6 +114,7 @@ public class Parkhaus {
} catch (ParseException e) {
throw new RuntimeException(e);
}
long minDiff = (d2.getTime() - d1.getTime()) / 60000;
return minDiff;
@ -171,6 +128,7 @@ public class Parkhaus {
if (parkdauer <= 15) {
parkdauer = 0;
gebuehr = 0;
}
// Parkdauer nach den 15 Minuten
@ -191,11 +149,14 @@ 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
@ -203,6 +164,7 @@ 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--) {
@ -218,6 +180,7 @@ public class Parkhaus {
}
return (sum % 10 == 0);
}
}

View File

@ -1,6 +1,5 @@
package QualifierTeil2;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
@ -12,13 +11,11 @@ public class UI {
// Methode für die Einfahrt eines PKWs
public void einfahrtPKW() {
System.out.println("Bitte geben Sie das Kennzeichen ein:");
String kennzeichen = scan.nextLine();
PKW pkw = new PKW();
System.out.println("Aktuell verfügbare Parkplätze: " + parkhaus1.kapazitaet);
parkhaus1.einfahren(kennzeichen);
parkhaus1.einfahren(pkw);
System.out.println("weitere verfügbare Parkplätze: " + parkhaus1.kapazitaet);
var einfahrt = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
System.out.println("Einfahrt: " + einfahrt.format(new Date()));
System.out.println("Einfahrt: " + pkw.getEinfahrtAlsString());
//Debugging
// System.out.println("belegt: " + parkhaus1.belegt);
@ -53,10 +50,13 @@ 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);