Compare commits
3 Commits
41d21e4149
...
07a48dba0d
Author | SHA1 | Date |
---|---|---|
dustineversmann | 07a48dba0d | |
dustineversmann | b1aca00ebd | |
dustineversmann | 45105f3426 |
|
@ -1,50 +1,46 @@
|
||||||
package de.deversmann;
|
package de.deversmann;
|
||||||
|
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
public class Auto {
|
public class Auto {
|
||||||
|
|
||||||
|
|
||||||
public Auto(String kennzeichen) {
|
public Auto(String kennzeichen) {
|
||||||
this.kennzeichen = kennzeichen;
|
this.kennzeichen = kennzeichen;
|
||||||
this.einfahrtZeit = new Date();
|
this.einfahrtZeit = einfahrtZeit;
|
||||||
this.bezahlt = false;
|
this.bezahlt = bezahlt;
|
||||||
this.ausfahrtZeit = new Date();
|
this.ausfahrtZeit = ausfahrtZeit;
|
||||||
this.bezahlZeit = new Date();
|
this.eAuto = iseAuto();
|
||||||
}
|
}
|
||||||
private Calendar calendar = Calendar.getInstance();
|
|
||||||
|
|
||||||
private final String kennzeichen;
|
private final String kennzeichen;
|
||||||
private Date einfahrtZeit;
|
private String einfahrtZeit;
|
||||||
private Date bezahlZeit;
|
|
||||||
private Date ausfahrtZeit;
|
private String ausfahrtZeit;
|
||||||
private boolean bezahlt;
|
private boolean bezahlt;
|
||||||
|
private boolean eAuto;
|
||||||
|
|
||||||
public String getKennzeichen() {
|
public String getKennzeichen() {
|
||||||
return kennzeichen;
|
return kennzeichen;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Date getEinfahrtZeit() {
|
public void setEinfahrtZeit(String einfahrtZeit) {
|
||||||
|
this.einfahrtZeit = einfahrtZeit;
|
||||||
|
}
|
||||||
|
public String getEinfahrtZeit() {
|
||||||
return einfahrtZeit;
|
return einfahrtZeit;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setEinfahrtZeit() {
|
|
||||||
this.einfahrtZeit = calendar.getTime() ;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getBezahlZeit() {
|
|
||||||
return bezahlZeit;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBezahlZeit(Date bezahlZeit) {
|
|
||||||
this.bezahlZeit = bezahlZeit;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getAusfahrtZeit() {
|
|
||||||
|
public String getAusfahrtZeit() {
|
||||||
return ausfahrtZeit;
|
return ausfahrtZeit;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAusfahrtZeit(Date ausfahrtZeit) {
|
public void setAusfahrtZeit(String ausfahrtZeit) {
|
||||||
this.ausfahrtZeit = ausfahrtZeit;
|
this.ausfahrtZeit = ausfahrtZeit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,4 +51,12 @@ public class Auto {
|
||||||
public void setBezahlt(boolean bezahlt) {
|
public void setBezahlt(boolean bezahlt) {
|
||||||
this.bezahlt = bezahlt;
|
this.bezahlt = bezahlt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean iseAuto() {
|
||||||
|
|
||||||
|
return eAuto = kennzeichen.endsWith("E");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,20 +1,87 @@
|
||||||
package de.deversmann;
|
package de.deversmann;
|
||||||
|
|
||||||
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.time.Duration;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
|
|
||||||
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
|
|
||||||
public class Main {
|
public class Main {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) throws ParseException {
|
||||||
|
|
||||||
|
|
||||||
Parkhaus parkhaus = new Parkhaus();
|
Parkhaus parkhaus = new Parkhaus();
|
||||||
Auto auto1 = new Auto("D-DL-2023");
|
HashMap<String, Auto> autos = new HashMap<>();
|
||||||
System.out.println(parkhaus.isGeöffnet());
|
boolean schleife = true;
|
||||||
System.out.println(auto1.getEinfahrtZeit());
|
Scanner scanner = new Scanner(System.in);
|
||||||
var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
|
|
||||||
System.out.println(sdf.format(new Date()));
|
|
||||||
|
|
||||||
|
var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
|
||||||
|
sdf.setLenient(false);
|
||||||
|
|
||||||
|
Auto test = new Auto("123E");
|
||||||
|
test.setEinfahrtZeit("10.10.2000, 05:00");
|
||||||
|
test.setAusfahrtZeit("11.10.2000, 13:00");
|
||||||
|
System.out.println(parkhaus.berechnePreis(test));
|
||||||
|
|
||||||
|
while (schleife) {
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println("Willkommen im Parkhaus Eversmann");
|
||||||
|
|
||||||
|
System.out.println("Bitte wählen Sie durch Eingabe der Zahl aus:");
|
||||||
|
System.out.println("1. Einfahrt");
|
||||||
|
System.out.println("2. Kosten prüfen");
|
||||||
|
System.out.println("3. Ausfahren");
|
||||||
|
System.out.println("4. Bezahlen und ausfahren");
|
||||||
|
System.out.println("5. Geparkte Autos anzeigen");
|
||||||
|
System.out.println("6. Beenden");
|
||||||
|
int auswahl = Integer.parseInt(scanner.nextLine());
|
||||||
|
|
||||||
|
if (auswahl == 1) {
|
||||||
|
System.out.println("Bitte geben Sie ihr Kennzeichen ein: Format (MA-DL 1234) oder (MA-DL 1234E)");
|
||||||
|
String kennzeichen = scanner.nextLine();
|
||||||
|
System.out.println("Bitte geben Sie ihre Einfahrtszeit ein: Format (dd.MM.yyyy, HH:mm) (12.12.2023, 10:12)");
|
||||||
|
String einfahrtsZeit = scanner.nextLine();
|
||||||
|
/*if (autos.containsKey(kennzeichen)) {
|
||||||
|
|
||||||
|
}*/
|
||||||
|
autos.put(kennzeichen, new Auto(kennzeichen));
|
||||||
|
autos.get(kennzeichen).setEinfahrtZeit(einfahrtsZeit);
|
||||||
|
} else if (auswahl == 2) {
|
||||||
|
|
||||||
|
Auto gewünschtesAuto = parkhaus.getAutoFromKennzeichen(autos);
|
||||||
|
|
||||||
|
System.out.println("Der Preis für das eingegebene Kennzeichen \n" + gewünschtesAuto.getKennzeichen() + "\n" + "ist " + parkhaus.berechnePreis(gewünschtesAuto) + "€");
|
||||||
|
|
||||||
|
} else if (auswahl == 3) {
|
||||||
|
parkhaus.ausfahren(autos);
|
||||||
|
System.out.println("Vielen Dank für Ihr Vertrauen");
|
||||||
|
} else if (auswahl == 4) {
|
||||||
|
|
||||||
|
Auto ausgefahrenensAuto = parkhaus.ausfahren(autos);
|
||||||
|
parkhaus.bezahlePreisFürKennzeichen(ausgefahrenensAuto);
|
||||||
|
}
|
||||||
|
else if (auswahl == 5) {
|
||||||
|
|
||||||
|
for (Auto auto : autos.values()) {
|
||||||
|
if (auto.getAusfahrtZeit().isBlank()){
|
||||||
|
System.out.println(auto);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (auswahl == 6) {
|
||||||
|
schleife = false;
|
||||||
|
System.out.println("Auf Wiedersehen");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (schleife){
|
||||||
|
System.out.println("Weitermachen?");
|
||||||
|
String weiter = scanner.nextLine();
|
||||||
|
if (weiter.equals("")) {
|
||||||
|
schleife = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,22 +1,22 @@
|
||||||
package de.deversmann;
|
package de.deversmann;
|
||||||
|
|
||||||
|
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.time.Duration;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
public class Parkhaus {
|
public class Parkhaus {
|
||||||
|
|
||||||
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
|
||||||
|
Scanner scanner = new Scanner(System.in);
|
||||||
private boolean geöffnet;
|
private boolean geöffnet;
|
||||||
private int anzahlParkplätze;
|
private int anzahlParkplätze;
|
||||||
|
private final double ANGEFANGENE_STUNDE_PREIS = 1.00;
|
||||||
|
private final double TAGES_MAX_PREIS = 15.00;
|
||||||
public int getBelegteParkplätze() {
|
private final double NACHT_MAX_PREIS = 5.00;
|
||||||
return belegteParkplätze;
|
private final double E_AUTO_RABATT = 0.8;
|
||||||
}
|
private final int FREIE_MINUTEN = 15;
|
||||||
|
|
||||||
public void setBelegteParkplätze(int belegteParkplätze) {
|
|
||||||
this.belegteParkplätze = belegteParkplätze;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int belegteParkplätze;
|
private int belegteParkplätze;
|
||||||
private double kosten;
|
private double kosten;
|
||||||
|
@ -67,5 +67,106 @@ public class Parkhaus {
|
||||||
this.maxTagessatz = maxTagessatz;
|
this.maxTagessatz = maxTagessatz;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getBelegteParkplätze() {
|
||||||
|
return belegteParkplätze;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBelegteParkplätze(int belegteParkplätze) {
|
||||||
|
this.belegteParkplätze = belegteParkplätze;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ArrayList berechneParkdauer(String einfahrtZeit, String ausfahrZeit) {
|
||||||
|
ArrayList parkdauer = new ArrayList();
|
||||||
|
simpleDateFormat.setLenient(false);
|
||||||
|
try {
|
||||||
|
Date einfahrtZeitDate = simpleDateFormat.parse(einfahrtZeit);
|
||||||
|
Date ausfahrZeitDate = simpleDateFormat.parse(ausfahrZeit);
|
||||||
|
Duration duration = Duration.ofMillis(Math.abs(ausfahrZeitDate.getTime() - einfahrtZeitDate.getTime()));
|
||||||
|
long days = duration.toDays();
|
||||||
|
long hours = duration.toHours() % 24;
|
||||||
|
long minutes = duration.toMinutes() % 60;
|
||||||
|
|
||||||
|
Collections.addAll(parkdauer, days, hours, minutes);
|
||||||
|
} catch (ParseException e) {
|
||||||
|
System.out.println("Fehler beim Parsen der Daten" + e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
return parkdauer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double berechnePreis(Auto auto) throws ParseException {
|
||||||
|
double preis = 0;
|
||||||
|
simpleDateFormat.setLenient(false);
|
||||||
|
Date einfahrtZeitDate = simpleDateFormat.parse(auto.getEinfahrtZeit());
|
||||||
|
Date ausfahrtZeitDate = simpleDateFormat.parse(auto.getAusfahrtZeit());
|
||||||
|
int einfahrtStunde = einfahrtZeitDate.getHours();
|
||||||
|
int ausfahrtStunde = ausfahrtZeitDate.getHours();
|
||||||
|
long parkdauerInMinuten = (ausfahrtZeitDate.getTime() - einfahrtZeitDate.getTime()) / (60 * 1000);
|
||||||
|
|
||||||
|
if (parkdauerInMinuten < FREIE_MINUTEN) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
long kostenpflichtigeMinuten = parkdauerInMinuten - FREIE_MINUTEN;
|
||||||
|
double kostenPflichtigeStunden = Math.ceil(kostenpflichtigeMinuten / 60);
|
||||||
|
|
||||||
|
long parkdauerInTagen = (long) Math.ceil(parkdauerInMinuten / (60.0 * 24));
|
||||||
|
|
||||||
|
if (parkdauerInTagen >= 1) {
|
||||||
|
long kostenpflichtigeGanzeTage = (long) Math.floor(kostenPflichtigeStunden / 24);
|
||||||
|
preis = kostenpflichtigeGanzeTage * TAGES_MAX_PREIS;
|
||||||
|
long übrigenStunden = (long) (kostenPflichtigeStunden - kostenpflichtigeGanzeTage * 24);
|
||||||
|
if (übrigenStunden <= 5) {
|
||||||
|
preis = preis + (übrigenStunden * ANGEFANGENE_STUNDE_PREIS);
|
||||||
|
} else if (einfahrtStunde >= 20) {
|
||||||
|
long stundenImAltenTag = (einfahrtStunde + übrigenStunden) - 24;
|
||||||
|
long stundenImNeuenTag = übrigenStunden - stundenImAltenTag;
|
||||||
|
if (stundenImNeuenTag <= 5) {
|
||||||
|
preis += 5;
|
||||||
|
} else {
|
||||||
|
preis += 5 + stundenImNeuenTag - 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (einfahrtStunde <= 5) {
|
||||||
|
long angebrocheneStundenAusserhalbDerNacht = (long) 6 - einfahrtStunde;
|
||||||
|
long übrigeStundenAusserhalb = (long) Math.abs(einfahrtStunde - 6);
|
||||||
|
if (angebrocheneStundenAusserhalbDerNacht == 6) {
|
||||||
|
preis += 5;
|
||||||
|
} else {
|
||||||
|
preis += 5 + übrigeStundenAusserhalb;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (auto.iseAuto()) {
|
||||||
|
preis = preis * E_AUTO_RABATT;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return preis;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Auto getAutoFromKennzeichen(HashMap<String, Auto> autos) {
|
||||||
|
System.out.println("Bitte gib dein Kennzeichen ein: Format (MA-DL 1234) oder (MA-DL 1234E)");
|
||||||
|
String kennzeichen = scanner.nextLine();
|
||||||
|
Auto gewünschtesAuto = autos.get(kennzeichen);
|
||||||
|
return gewünschtesAuto;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Auto ausfahren(HashMap<String, Auto> autos) {
|
||||||
|
|
||||||
|
Auto ausfahrendesAuto = getAutoFromKennzeichen(autos);
|
||||||
|
System.out.println("Bitte geben Sie ihre Ausfahrtzeit an: Format (dd.MM.yyyy, HH:mm)");
|
||||||
|
String ausfahrtZeit = scanner.nextLine();
|
||||||
|
ausfahrendesAuto.setAusfahrtZeit(ausfahrtZeit);
|
||||||
|
return ausfahrendesAuto;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public Auto bezahlePreisFürKennzeichen(Auto zuBezahlendesAuto) {
|
||||||
|
zuBezahlendesAuto.setBezahlt(true);
|
||||||
|
return zuBezahlendesAuto;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue