Parkhaus aktualisiert
parent
20d966b788
commit
46ecc9bef3
163
Parkhaus
163
Parkhaus
|
@ -3,122 +3,127 @@ 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() {
|
|
||||||
|
|
||||||
String nummernschild = in.nextLine()
|
|
||||||
;
|
|
||||||
return nummernschild;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date zeitErkennen() {
|
|
||||||
|
|
||||||
|
public String nummernschildErkennen() {
|
||||||
|
String nummernschild = in.nextLine();
|
||||||
|
return nummernschild;
|
||||||
|
}
|
||||||
|
|
||||||
|
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();
|
||||||
|
Date zeit = null;
|
||||||
|
try {
|
||||||
|
zeit = sdf.parse(eingabe);
|
||||||
|
} catch (ParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return zeit;
|
||||||
|
}
|
||||||
|
|
||||||
String eingabe = in.nextLine();
|
public int autoParken(String nummernschild, Date einfahrtszeit) {
|
||||||
Date zeit = null;
|
|
||||||
try {
|
|
||||||
zeit = sdf.parse(eingabe);
|
|
||||||
} catch (ParseException e) {
|
|
||||||
|
|
||||||
e.printStackTrace();
|
Auto auto = new Auto(nummernschild, einfahrtszeit);
|
||||||
}
|
|
||||||
|
|
||||||
return zeit;
|
for (Parkplatz platz : plaetze) {
|
||||||
|
|
||||||
}
|
if (!platz.isSlotFree()) {
|
||||||
|
|
||||||
public int autoParken(String nummernschild, Date einfahrtszeit) {
|
platz.allocateSlot(auto); //Fahrzeug auf dem Platz speichern
|
||||||
|
|
||||||
Auto auto = new Auto(nummernschild, einfahrtszeit);
|
return platz.getPlatzNummer(); //Nummer des Platzes zurückgeben
|
||||||
|
|
||||||
for (Parkplatz platz : plaetze) {
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!platz.isSlotFree()) {
|
return -1; //kein freier Parkplatz vorhanden
|
||||||
|
}
|
||||||
|
|
||||||
platz.allocateSlot(auto); //Fahrzeug auf dem Platz speichern
|
public double parkhausVerlassen(String nummernschild, Date ausfahrtszeit) {
|
||||||
|
|
||||||
return platz.getPlatzNummer(); //Nummer des Platzes zurück geben
|
double gebuehrInCent = 0.0;
|
||||||
|
long secDiff = 0;
|
||||||
|
|
||||||
}
|
for (int i = 0; i < anzahlParkplaetze; i++) {
|
||||||
}
|
|
||||||
|
|
||||||
return -1; //kein freier Parkplatz vorhanden
|
Auto auto = plaetze[i].welchesAuto();
|
||||||
}
|
|
||||||
|
|
||||||
public double parkhausVerlassen(String nummernschild, Date ausfahrtszeit) {
|
if (plaetze[i] != null && auto != null && auto.getNummernschild().equals(nummernschild)) { //Suche, wo das Auto steht
|
||||||
|
|
||||||
double gebuehrInCent = 0.0;
|
plaetze[i].platzFreigeben(auto);
|
||||||
long secDiff = 0;
|
Date einfahrtszeit = auto.getEinfahrtszeit();
|
||||||
|
|
||||||
for (int i=0; i<anzahlParkplaetze; i++) {
|
Date d1 = einfahrtszeit;
|
||||||
|
Date d2 = ausfahrtszeit;
|
||||||
|
|
||||||
Auto auto = plaetze[i].welchesAuto();
|
secDiff = ((d2.getTime() - d1.getTime()) / 1000) - 900;
|
||||||
|
|
||||||
|
System.out.println("Ihre kostenpflichtige Parkdauer in Sekunden beträgt: " + secDiff);
|
||||||
|
|
||||||
if (plaetze[i] != null && auto != null && auto.getNummernschild().equals(nummernschild)) { //Suche wo das Auto steht
|
gebuehrInCent = berechneGebuehr(secDiff);
|
||||||
|
|
||||||
plaetze[i].platzFreigeben(auto);
|
// Rabatt für E-Autos
|
||||||
Date einfahrtszeit = auto.getEinfahrtszeit();
|
if (auto.getNummernschild().charAt(auto.getNummernschild().length() - 1) == 'E') {
|
||||||
|
gebuehrInCent = gebuehrInCent * 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
Date d1 = einfahrtszeit;
|
// Schulden aus der Vergangenheit hinzufügen, falls vorhanden
|
||||||
Date d2 = ausfahrtszeit;
|
if (schuldenListe.containsKey(nummernschild)) {
|
||||||
|
gebuehrInCent += schuldenListe.get(nummernschild);
|
||||||
|
schuldenListe.remove(nummernschild); // Alte Schulden löschen, da sie verrechnet werden
|
||||||
|
}
|
||||||
|
|
||||||
secDiff = ((d2.getTime() - d1.getTime()) / 1000) - 900;
|
return gebuehrInCent / 100; // Gebühr in Euro zurückgeben
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1; // Auto nicht gefunden
|
||||||
|
}
|
||||||
|
|
||||||
//int platznummer = plaetze[i].getPlatzNummer();
|
public double berechneGebuehr(long zuZahlendeZeit) {
|
||||||
|
|
||||||
System.out.println("Ihre Kostenpflichtige Parkdauer in Sekunden beträgt: " + secDiff);
|
double gebuehr = 0;
|
||||||
|
long angebrocheneStunden;
|
||||||
|
|
||||||
}
|
angebrocheneStunden = zuZahlendeZeit / 3600;
|
||||||
|
|
||||||
gebuehrInCent = berechneGebuehr(secDiff);
|
gebuehr = angebrocheneStunden * 100; // Umrechnen in Cent
|
||||||
|
|
||||||
//Rabatt für E-Autos
|
|
||||||
if (auto != null && auto.getNummernschild().charAt(auto.getNummernschild().length() - 1) == 'E') {
|
|
||||||
gebuehrInCent = gebuehrInCent*0.8;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return gebuehrInCent;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double berechneGebuehr(long zuZahlendeZeit) {
|
|
||||||
|
|
||||||
double gebuehr = 0;
|
|
||||||
long angebrocheneStunden;
|
|
||||||
|
|
||||||
angebrocheneStunden = zuZahlendeZeit / 3600;
|
|
||||||
|
|
||||||
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.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue