diff --git a/src/Parkhaus/Fahrzeug.java b/src/Parkhaus/Fahrzeug.java index f75b83a..feaa217 100644 --- a/src/Parkhaus/Fahrzeug.java +++ b/src/Parkhaus/Fahrzeug.java @@ -17,12 +17,12 @@ public class Fahrzeug { private Date einfahrt; private Date ausfahrt; private boolean bezahlt; - private int betrag; + private double betrag; Fahrzeug() { this.kennzeichen = kennzeichenzufaelliggenerieren.kennzeichengenerieren(); this.einfahrt = new Date(); - this.betrag = 0; + this.betrag = 0.0; this.bezahlt = false; } @@ -30,7 +30,7 @@ public class Fahrzeug { Fahrzeug(String kennzeichen, Date einfahrt) { this.kennzeichen = kennzeichen; this.einfahrt = einfahrt; - this.betrag = 0; + this.betrag = 0.0; this.bezahlt = false; } @@ -64,11 +64,11 @@ public class Fahrzeug { this.bezahlt = bezahlt; } - public int getBetrag() { + public double getBetrag() { return betrag; } - public void setBetrag(int betrag) { + public void setBetrag(double betrag) { this.betrag = betrag; } diff --git a/src/Parkhaus/JTest_berechneParkgebuehren.java b/src/Parkhaus/JTest_berechneParkgebuehren.java index 70e1e38..62f858a 100644 --- a/src/Parkhaus/JTest_berechneParkgebuehren.java +++ b/src/Parkhaus/JTest_berechneParkgebuehren.java @@ -7,6 +7,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; class JTest_berechneParkgebuehren { @@ -18,8 +19,38 @@ class JTest_berechneParkgebuehren { parkhaus = new Parkhaus(); sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm"); } - + @Test + public void test_EautoBetrag() throws ParseException, AutoNichtGefundenException { + String kennzeichen = "MA-SH 4077E"; + String einfahrt = "01.10.2024, 14:30"; + String ausfahrt = "01.10.2024, 14:45"; + parkhaus.einfahren(kennzeichen, einfahrt); + + // 15 Minuten => True + assertEquals(0,parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt)); + + // 16 Minuten => True + einfahrt = "01.10.2024, 14:30"; + ausfahrt = "01.10.2024, 14:50"; + parkhaus.einfahren(kennzeichen, einfahrt); + assertEquals(0.8,parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt)); + + // 2 Stunde => True + einfahrt = "01.10.2024, 14:00"; + ausfahrt = "01.10.2024, 16:00"; + parkhaus.einfahren(kennzeichen, einfahrt); + assertEquals(1.6, parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt)); + + // Zwischen 20 bis 6 Uhr => True + einfahrt = "01.10.2024, 22:00"; + ausfahrt = "02.10.2024, 04:00"; + parkhaus.einfahren(kennzeichen, einfahrt); + assertEquals(4, parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt)); + + } + + @Disabled public void test_berechneParkgebuehren() throws ParseException, AutoNichtGefundenException { String kennzeichen = "MA-SH 4077"; String einfahrt = "01.10.2024, 14:30"; @@ -32,26 +63,33 @@ class JTest_berechneParkgebuehren { // 16 Minuten => True einfahrt = "01.10.2024, 14:30"; ausfahrt = "01.10.2024, 14:46"; + parkhaus.einfahren(kennzeichen, einfahrt); assertEquals(1,parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt)); // 1 Stunde => True einfahrt = "01.10.2024, 14:30"; ausfahrt = "01.10.2024, 15:30"; + parkhaus.einfahren(kennzeichen, einfahrt); assertEquals(1, parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt)); - - + // 2 Stunden => True einfahrt = "01.10.2024, 14:00"; ausfahrt = "01.10.2024, 16:00"; + parkhaus.einfahren(kennzeichen, einfahrt); assertEquals(2, parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt)); - - // Zwischen 20 bis 6 Uhr => True + + // Zwischen 20 bis 6 Uhr => True einfahrt = "01.10.2024, 22:00"; ausfahrt = "02.10.2024, 04:00"; + parkhaus.einfahren(kennzeichen, einfahrt); assertEquals(5, parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt)); - - + + // 24 Stunden + einfahrt = "01.10.2024, 14:00"; + ausfahrt = "02.10.2024, 14:00"; + parkhaus.einfahren(kennzeichen, einfahrt); + assertEquals(15, parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt)); } diff --git a/src/Parkhaus/Main.java b/src/Parkhaus/Main.java index 8419650..3fc5f8d 100644 --- a/src/Parkhaus/Main.java +++ b/src/Parkhaus/Main.java @@ -7,12 +7,7 @@ public class Main { public static void main(String[] args) throws ParseException, AutoNichtGefundenException { - var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm"); - Date d1 = sdf.parse("01.10.2024, 14:00"); - Date d2 = sdf.parse("01.10.2024, 15:30"); - - - System.out.println( d1.getHours()); + new TextUI(); } } diff --git a/src/Parkhaus/Parkhaus.java b/src/Parkhaus/Parkhaus.java index 7930204..a59358e 100644 --- a/src/Parkhaus/Parkhaus.java +++ b/src/Parkhaus/Parkhaus.java @@ -45,58 +45,63 @@ public class Parkhaus { - public int berechneParkgebuehren(String kennzeichen, String ausfahrtzeit) throws AutoNichtGefundenException, ParseException { - if (kennzeichen.isEmpty()) { - throw new AutoNichtGefundenException("Sie müssen bitte das Kennzeichen Ihres Autos eingeben."); - } + public double berechneParkgebuehren(String kennzeichen, String ausfahrtzeit) + throws AutoNichtGefundenException, ParseException { + if (kennzeichen.isEmpty()) + throw new AutoNichtGefundenException("Sie müssen bitte das Kennzeichen Ihres Autos eingeben."); + + boolean isEauto = false; + if (kennzeichen.endsWith("E")) + isEauto = true; + + Fahrzeug fahrzeug = findeFahrzeug(kennzeichen); + Date einfahrt = fahrzeug.getEinfahrt(); + Date ausfahrt; - Fahrzeug fahrzeug = findeFahrzeug(kennzeichen); - Date einfahrt = fahrzeug.getEinfahrt(); - Date ausfahrt; + if (ausfahrtzeit.isEmpty()) { + String aktuelleZeitString = sdf.format(new Date()); + ausfahrt = sdf.parse(aktuelleZeitString); + } else + ausfahrt = sdf.parse(ausfahrtzeit); - if (ausfahrtzeit.isEmpty()) { - String aktuelleZeitString = sdf.format(new Date()); - ausfahrt = sdf.parse(aktuelleZeitString); - } else { - ausfahrt = sdf.parse(ausfahrtzeit); - } + double inMinuten = (ausfahrt.getTime() - einfahrt.getTime()) / 1000.0 / 60.0; + int inStunden = (int) Math.ceil(inMinuten / 60.0); + int maxNachtBetrag = 5; + int maxTagBetrag = 15; + double betrag = 0; - double inMinuten = (ausfahrt.getTime() - einfahrt.getTime()) / 1000.0 / 60.0; - int inStunden = (int) Math.ceil(inMinuten / 60.0); - int maxNachtBetrag = 5; - int maxTagBetrag = 15; - int betrag = 0; + // Erstellung von Calendar-Objekten für Einfahrt und Ausfahrt + Calendar calEinfahrt = Calendar.getInstance(); + calEinfahrt.setTime(einfahrt); - // Erstellung von Calendar-Objekten für Einfahrt und Ausfahrt - Calendar calEinfahrt = Calendar.getInstance(); - calEinfahrt.setTime(einfahrt); + Calendar calAusfahrt = Calendar.getInstance(); + calAusfahrt.setTime(ausfahrt); - Calendar calAusfahrt = Calendar.getInstance(); - calAusfahrt.setTime(ausfahrt); + int einfahrtStunde = calEinfahrt.get(Calendar.HOUR_OF_DAY); + int ausfahrtStunde = calAusfahrt.get(Calendar.HOUR_OF_DAY); - int einfahrtStunde = calEinfahrt.get(Calendar.HOUR_OF_DAY); - int ausfahrtStunde = calAusfahrt.get(Calendar.HOUR_OF_DAY); + if (inMinuten <= 15) + betrag = 0; - if (inMinuten <= 15) - betrag = 0; - - else if ((einfahrtStunde < 6 || einfahrtStunde >= 20) || (ausfahrtStunde < 6 || ausfahrtStunde >= 20)) { - betrag = (inStunden <= maxNachtBetrag) ? inStunden : maxNachtBetrag; - System.out.println(betrag); - } - - - else { - betrag = inStunden; - if (betrag > maxTagBetrag) { - betrag = maxTagBetrag; - } - } + else if ((einfahrtStunde < 6 || einfahrtStunde >= 20) || (ausfahrtStunde < 6 || ausfahrtStunde >= 20)) + betrag = (inStunden <= maxNachtBetrag) ? inStunden : maxNachtBetrag; - fahrzeug.setBetrag(betrag); - return fahrzeug.getBetrag(); + else { + betrag = inStunden; + if (betrag > maxTagBetrag) { + betrag = maxTagBetrag; + } + } + if (isEauto) + betrag -= rabattFuerEauto(betrag); + + fahrzeug.setBetrag(betrag); + return fahrzeug.getBetrag(); } + private double rabattFuerEauto(double betrag) { + return betrag * 0.2; + } private Fahrzeug findeFahrzeug(String kennzeichen) throws AutoNichtGefundenException {