From 167f156e387a9b93cacd2904b645245f84830638 Mon Sep 17 00:00:00 2001 From: Marc3308 Date: Tue, 8 Oct 2024 08:43:24 +0200 Subject: [PATCH] added code to bezahlen und rausfharen --- .../java/org/example/optionen/ausfahren.java | 23 ++++++++++ .../java/org/example/optionen/bezahlen.java | 43 ++++++++++++++++++- .../java/org/example/optionen/einfahren.java | 9 ++++ 3 files changed, 73 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/example/optionen/ausfahren.java b/src/main/java/org/example/optionen/ausfahren.java index ba94715..61ed5f3 100644 --- a/src/main/java/org/example/optionen/ausfahren.java +++ b/src/main/java/org/example/optionen/ausfahren.java @@ -1,8 +1,31 @@ package org.example.optionen; +import org.example.ticketobjekt.parkticket; + +import static org.example.Main.*; + public class ausfahren { public static void rausfahren(){ + System.out.println("Bitte wählen sie ihr kenzeichen:"); + for (parkticket p : tiketliste) System.out.println((tiketliste.indexOf(p)+1)+": "+p.getNummerschild()); + int ticket=scanner.nextInt()-1; + parkticket p = tiketliste.get(ticket); + + System.out.println("Sind sie sicher das sie jetzt rausfahren wollen? Wenn sie ihr tiket nicht bezahlen wird das Konsequenesn habnen (y/n)"); + String yn=scanner.nextLine(); + + switch (yn){ + case "y": + System.out.println("Schande über sie, wenn sie zurückkommen wird das teuer!"); + tiketliste.remove(p); + unbezahlteticketliste.add(p); + break; + default: + System.out.println("Gute entscheidung"); + break; + } + } } diff --git a/src/main/java/org/example/optionen/bezahlen.java b/src/main/java/org/example/optionen/bezahlen.java index d8c4f5d..969f59b 100644 --- a/src/main/java/org/example/optionen/bezahlen.java +++ b/src/main/java/org/example/optionen/bezahlen.java @@ -3,6 +3,7 @@ package org.example.optionen; import org.example.ticketobjekt.parkticket; import java.text.ParseException; +import java.util.Calendar; import java.util.Date; import static org.example.Main.*; @@ -18,14 +19,52 @@ public class bezahlen { System.out.println("Sie haben "+p.getNummerschild()+" ausgewählt, bitte geben sie die ausfahrzeit ein (lehr für jetzt) (dd.MM.yyyy, HH:mm)"); String zeitstempelEingabe=scanner.nextLine(); - Date einfahrZeit = zeitstempelEingabe.isEmpty() ? new Date() : timeformat.parse(zeitstempelEingabe); + Date ausfartzeit = zeitstempelEingabe.isEmpty() ? new Date() : timeformat.parse(zeitstempelEingabe); + double gebuhren=gebühren(p.getEinfahtzeit(),ausfartzeit); + if(gebuhren<1){ + System.out.println("Sie dürfen gratis rausfahren, viel spaß!"); + tiketliste.remove(p); + return; + } + System.out.println("Parkgebühren: " + gebuhren + " Euro"); + System.out.print("Kreditkartennummer (16-stellige VISA): "); + String kreditkarte = scanner.nextLine(); + + if (kreditkarte.matches("\\d{16}") && istVisaGueltig(kreditkarte)) { + System.out.println("Zahlung erfolgreich, sie dürfen rausfahren, viel spaß!"); + tiketliste.remove(p); + } else { + System.out.println("Ungültige Kreditkarte. Zahlung fehlgeschlagen."); + } } - public double gebühren(Date einfahrt, Date ausfahrt){ + public static double gebühren(Date einfahrt, Date ausfahrt){ long diffinmin= (ausfahrt.getTime()- einfahrt.getTime())/(1000*60); + if(diffinmin<=15)return 0.0; + double geburen= (int) ((diffinmin-15)/60); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(einfahrt); + + if (calendar.get(Calendar.HOUR_OF_DAY) >= 20 || calendar.get(Calendar.HOUR_OF_DAY) < 6) { + geburen = Math.min(geburen, 5); + } + return geburen; + } + + private static boolean istVisaGueltig(String kreditkarte) { + int sum = 0; + for (int i = 0; i < kreditkarte.length(); i++) { + int ziffer = Integer.parseInt(String.valueOf(kreditkarte.charAt(i))); + if (i % 2 == 0) { + ziffer *= 2; + if (ziffer > 9) ziffer -= 9; + } + sum += ziffer; + } + return sum % 10 == 0; } } diff --git a/src/main/java/org/example/optionen/einfahren.java b/src/main/java/org/example/optionen/einfahren.java index 75ac637..ec61ec2 100644 --- a/src/main/java/org/example/optionen/einfahren.java +++ b/src/main/java/org/example/optionen/einfahren.java @@ -25,6 +25,15 @@ public class einfahren { : randombuchstabe()+randombuchstabe() + "-" + randombuchstabe()+randombuchstabe() + " " + (rand.nextInt(9000) + 1000) : kenzeichen; + for (parkticket p : unbezahlteticketliste)if(kenzeichen.equals(p.getNummerschild())){ + System.out.println("Wuste ichs doch das du wieder kommst, das wird tuer!"); + tiketliste.add(p); + unbezahlteticketliste.remove(p); + System.out.println("Auto: "+p.getNummerschild()); + System.out.println("Einfahtszeit: "+p.getEinfahtzeit()); + return; + } + System.out.print("Bitte geben sie die einfahtszeit ein (dd.MM.yyyy, HH:mm) (leer für aktuelle Zeit): "); String zeitstempelEingabe = scanner.nextLine(); Date einfahrZeit = zeitstempelEingabe.isEmpty() ? new Date() : timeformat.parse(zeitstempelEingabe);