diff --git a/src/main/java/de/deversmann/Auto.java b/src/main/java/de/deversmann/Auto.java index 76b2005..39edbbf 100644 --- a/src/main/java/de/deversmann/Auto.java +++ b/src/main/java/de/deversmann/Auto.java @@ -11,12 +11,14 @@ public class Auto { this.bezahlt = bezahlt; this.ausfahrtZeit = ausfahrtZeit; this.eAuto = iseAuto(); + this.saldo = saldo; + } private final String kennzeichen; private String einfahrtZeit; - + private double saldo; private String ausfahrtZeit; private boolean bezahlt; private boolean eAuto; @@ -32,6 +34,13 @@ public class Auto { return einfahrtZeit; } + public void setSaldo(double saldo) { + this.saldo = saldo; + } + public double getSaldo() { + return saldo; + } + diff --git a/src/main/java/de/deversmann/Main.java b/src/main/java/de/deversmann/Main.java index 38815f7..2ad8232 100644 --- a/src/main/java/de/deversmann/Main.java +++ b/src/main/java/de/deversmann/Main.java @@ -17,11 +17,11 @@ public class Main { var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm"); sdf.setLenient(false); - Auto test = new Auto("123"); + /* Auto test = new Auto("123"); test.setEinfahrtZeit("10.10.2000, 04:00"); test.setAusfahrtZeit("10.10.2000, 10:30"); System.out.println(parkhaus.berechnePreis(test)); - +*/ while (schleife) { @@ -41,9 +41,12 @@ public class Main { 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)) { + if (einfahrtsZeit.equals("")) { + einfahrtsZeit = new SimpleDateFormat("dd.MM.yyyy, HH:mm").format(new Date()); + } + if (autos.containsKey(kennzeichen)) { - }*/ + } autos.put(kennzeichen, new Auto(kennzeichen)); autos.get(kennzeichen).setEinfahrtZeit(einfahrtsZeit); } else if (auswahl == 2) { @@ -53,35 +56,26 @@ public class Main { 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"); + Auto ausgefahrenenesAuto = parkhaus.ausfahren(autos); + System.out.println("Sie haben einen Betrag von " + ausgefahrenenesAuto.getSaldo() + "€, der noch fällig ist."); } else if (auswahl == 4) { - Auto ausgefahrenensAuto = parkhaus.ausfahren(autos); + Auto ausgefahrenensAuto = parkhaus.ausfahren(autos); parkhaus.bezahlePreisFürKennzeichen(ausgefahrenensAuto); - } - else if (auswahl == 5) { + } else if (auswahl == 5) { for (Auto auto : autos.values()) { - if (auto.getAusfahrtZeit().isBlank()){ + if (auto.getAusfahrtZeit().isBlank()) { System.out.println(auto); } } - } - else if (auswahl == 6) { + } 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; - } - } - } + } -} \ No newline at end of file +} diff --git a/src/main/java/de/deversmann/Parkhaus.java b/src/main/java/de/deversmann/Parkhaus.java index affe8bf..a9d8fb3 100644 --- a/src/main/java/de/deversmann/Parkhaus.java +++ b/src/main/java/de/deversmann/Parkhaus.java @@ -109,7 +109,7 @@ public class Parkhaus { } long kostenpflichtigeMinuten = parkdauerInMinuten - FREIE_MINUTEN; - double kostenPflichtigeStunden = Math.ceil(((double)kostenpflichtigeMinuten / 60)); + double kostenPflichtigeStunden = Math.ceil(((double) kostenpflichtigeMinuten / 60)); long parkdauerInTagen = (long) Math.ceil(parkdauerInMinuten / (60.0 * 24)); @@ -133,15 +133,14 @@ public class Parkhaus { } else if (einfahrtStunde <= 5) { long angebrocheneStundenAusserhalbDerNacht = (long) 6 - einfahrtStunde; - long übrigeStundenAusserhalb = übrigenStunden - einfahrtStunde; + long übrigeStundenAusserhalb = übrigenStunden - einfahrtStunde; if (angebrocheneStundenAusserhalbDerNacht == 6) { preis += 5; } else { preis += 5 + übrigeStundenAusserhalb; } } - } - else{ + } else { long übrigenStunden = (long) (kostenPflichtigeStunden - kostenpflichtigeGanzeTage * 24); if (übrigenStunden <= 5) { @@ -158,14 +157,16 @@ public class Parkhaus { } else if (einfahrtStunde <= 5) { long angebrocheneStundenAusserhalbDerNacht = (long) 6 - einfahrtStunde; - long übrigeStundenAusserhalb = übrigenStunden ; + long übrigeStundenAusserhalb = übrigenStunden; if (angebrocheneStundenAusserhalbDerNacht == 6) { preis += 5 + übrigeStundenAusserhalb - 6; } else { preis += übrigeStundenAusserhalb; preis = preis > 15 ? 15 : preis; + } } + preis = preis == 0 ? kostenPflichtigeStunden : preis; } } if (auto.iseAuto()) { @@ -183,19 +184,59 @@ public class Parkhaus { return gewünschtesAuto; } - public Auto ausfahren(HashMap autos) { + public Auto ausfahren(HashMap autos) throws ParseException { Auto ausfahrendesAuto = getAutoFromKennzeichen(autos); System.out.println("Bitte geben Sie ihre Ausfahrtzeit an: Format (dd.MM.yyyy, HH:mm)"); String ausfahrtZeit = scanner.nextLine(); + if (ausfahrtZeit.equals("")) { + ausfahrtZeit = new SimpleDateFormat("dd.MM.yyyy, HH:mm").format(new Date()); + } ausfahrendesAuto.setAusfahrtZeit(ausfahrtZeit); + ausfahrendesAuto.setSaldo(ausfahrendesAuto.getSaldo() + berechnePreis(ausfahrendesAuto)); return ausfahrendesAuto; } public Auto bezahlePreisFürKennzeichen(Auto zuBezahlendesAuto) { - zuBezahlendesAuto.setBezahlt(true); - return zuBezahlendesAuto; + while (true) { + + + System.out.println("Bitte geben Sie Ihre korrekte 16-stellige Kreditkartennummer ein:"); + String kreditkartennummer = scanner.nextLine(); + if (kreditkarteIstGültig(kreditkartennummer)) { + + zuBezahlendesAuto.setBezahlt(true); + + zuBezahlendesAuto.setSaldo(0); + return zuBezahlendesAuto; + } else { + System.out.println("Falsche Kreditkartennummer"); + + } + } + } + + public boolean kreditkarteIstGültig(String kreditkartennummer) { + + int summe = 0; + boolean verdoppeln = false; + + + for (int i = kreditkartennummer.length() - 1; i >= 0; i--) { + int ziffer = Character.getNumericValue(kreditkartennummer.charAt(i)); + + if (verdoppeln) { + ziffer *= 2; + if (ziffer > 9) { + ziffer -= 9; + } + } + summe += ziffer; + verdoppeln = !verdoppeln; + } + + return (summe % 10 == 0); } }