Parkhaus aktualisiert

main
Ruwen Bürger 2024-10-08 10:19:11 +02:00
parent 20d966b788
commit 46ecc9bef3
1 changed files with 115 additions and 110 deletions

View File

@ -3,50 +3,44 @@ package pr2parkhaus;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.Scanner; import java.util.Scanner;
public class Parkhaus { public class Parkhaus {
private int anzahlParkplaetze; //Gesamtanzahl aller Parkplätze private int anzahlParkplaetze; //Gesamtanzahl aller Parkplätze
private Parkplatz[] plaetze; //Array von Parkplätzen private Parkplatz[] plaetze; //Array von Parkplätzen
private HashMap<String, Double> schuldenListe; // Schuldenliste der Autos
Scanner in = new Scanner(System.in); Scanner in = new Scanner(System.in);
//Konstruktor // Konstruktor
public Parkhaus(int anzahlParkplaetze) { public Parkhaus(int anzahlParkplaetze) {
this.anzahlParkplaetze = anzahlParkplaetze; this.anzahlParkplaetze = anzahlParkplaetze;
this.plaetze = new Parkplatz[anzahlParkplaetze]; this.plaetze = new Parkplatz[anzahlParkplaetze];
this.schuldenListe = new HashMap<>(); // Initialisiere die Schuldenliste
for (int i = 0; i < anzahlParkplaetze; i++) { for (int i = 0; i < anzahlParkplaetze; i++) {
plaetze[i] = new Parkplatz(i+1); plaetze[i] = new Parkplatz(i + 1);
} }
} }
public String nummernschildErkennen() { public String nummernschildErkennen() {
String nummernschild = in.nextLine();
String nummernschild = in.nextLine()
;
return nummernschild; return nummernschild;
} }
public Date zeitErkennen() { public Date zeitErkennen() {
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm"); SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
String eingabe = in.nextLine(); String eingabe = in.nextLine();
Date zeit = null; Date zeit = null;
try { try {
zeit = sdf.parse(eingabe); zeit = sdf.parse(eingabe);
} catch (ParseException e) { } catch (ParseException e) {
e.printStackTrace(); e.printStackTrace();
} }
return zeit; return zeit;
} }
public int autoParken(String nummernschild, Date einfahrtszeit) { public int autoParken(String nummernschild, Date einfahrtszeit) {
@ -59,7 +53,7 @@ public class Parkhaus {
platz.allocateSlot(auto); //Fahrzeug auf dem Platz speichern platz.allocateSlot(auto); //Fahrzeug auf dem Platz speichern
return platz.getPlatzNummer(); //Nummer des Platzes zurück geben return platz.getPlatzNummer(); //Nummer des Platzes zurückgeben
} }
} }
@ -72,12 +66,11 @@ public class Parkhaus {
double gebuehrInCent = 0.0; double gebuehrInCent = 0.0;
long secDiff = 0; long secDiff = 0;
for (int i=0; i<anzahlParkplaetze; i++) { for (int i = 0; i < anzahlParkplaetze; i++) {
Auto auto = plaetze[i].welchesAuto(); Auto auto = plaetze[i].welchesAuto();
if (plaetze[i] != null && auto != null && auto.getNummernschild().equals(nummernschild)) { //Suche, wo das Auto steht
if (plaetze[i] != null && auto != null && auto.getNummernschild().equals(nummernschild)) { //Suche wo das Auto steht
plaetze[i].platzFreigeben(auto); plaetze[i].platzFreigeben(auto);
Date einfahrtszeit = auto.getEinfahrtszeit(); Date einfahrtszeit = auto.getEinfahrtszeit();
@ -87,23 +80,25 @@ public class Parkhaus {
secDiff = ((d2.getTime() - d1.getTime()) / 1000) - 900; secDiff = ((d2.getTime() - d1.getTime()) / 1000) - 900;
//int platznummer = plaetze[i].getPlatzNummer(); System.out.println("Ihre kostenpflichtige Parkdauer in Sekunden beträgt: " + secDiff);
System.out.println("Ihre Kostenpflichtige Parkdauer in Sekunden beträgt: " + secDiff);
}
gebuehrInCent = berechneGebuehr(secDiff); gebuehrInCent = berechneGebuehr(secDiff);
//Rabatt für E-Autos // Rabatt für E-Autos
if (auto != null && auto.getNummernschild().charAt(auto.getNummernschild().length() - 1) == 'E') { if (auto.getNummernschild().charAt(auto.getNummernschild().length() - 1) == 'E') {
gebuehrInCent = gebuehrInCent*0.8; gebuehrInCent = gebuehrInCent * 0.8;
}
} }
// Schulden aus der Vergangenheit hinzufügen, falls vorhanden
if (schuldenListe.containsKey(nummernschild)) {
gebuehrInCent += schuldenListe.get(nummernschild);
schuldenListe.remove(nummernschild); // Alte Schulden löschen, da sie verrechnet werden
}
return gebuehrInCent / 100; // Gebühr in Euro zurückgeben
return gebuehrInCent; }
}
return -1; // Auto nicht gefunden
} }
public double berechneGebuehr(long zuZahlendeZeit) { public double berechneGebuehr(long zuZahlendeZeit) {
@ -113,12 +108,22 @@ public class Parkhaus {
angebrocheneStunden = zuZahlendeZeit / 3600; angebrocheneStunden = zuZahlendeZeit / 3600;
gebuehr = angebrocheneStunden * 100; //Umrechnen in Cent gebuehr = angebrocheneStunden * 100; // Umrechnen in Cent
return gebuehr; return gebuehr;
} }
// Methode, um die Schulden eines bestimmten Fahrzeugs zu prüfen
public double getSchulden(String nummernschild) {
return schuldenListe.getOrDefault(nummernschild, 0.0);
}
// Merke Schulden, wenn nicht gezahlt wird
public void merkeSchulden(String nummernschild, double schulden) {
double aktuelleSchulden = schuldenListe.getOrDefault(nummernschild, 0.0);
schuldenListe.put(nummernschild, aktuelleSchulden + schulden);
System.out.println("Schulden von " + (schulden / 100) + " Euro wurden für das Auto " + nummernschild + " gespeichert.");
}
} }