diff --git a/PR2GitDemo/src/defaultt/Parkhaus.java b/PR2GitDemo/src/defaultt/Parkhaus.java new file mode 100644 index 0000000..377a1ac --- /dev/null +++ b/PR2GitDemo/src/defaultt/Parkhaus.java @@ -0,0 +1,139 @@ +package defaultt; + +import java.text.SimpleDateFormat; +import java.time.*; +import java.util.*; +import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; + + class Parkhaus { + public static void main(String[] args) { + new Parkhaus(); + TUI.start(); + } + + static Scanner sc = new Scanner(System.in); + private static int maxParkplaetze = 180; + static public List geparkteAutos; + static public List nichtzahlerListe; + + public Parkhaus() { + geparkteAutos = new ArrayList<>(); + nichtzahlerListe = new ArrayList<>(); + } + + public static void einfahrt(String kennzeichen, LocalDateTime uhrzeit) { + maxParkplaetze -= 1; + System.out.println("Freie Plätze: " + maxParkplaetze); + Auto a = new Auto(kennzeichen, uhrzeit); + geparkteAutos.add(a); + } + + private static Auto findeAuto(String kennzeichen) { + for (Auto a : geparkteAutos) { + String a1 = a.findeKennzeichen().trim(); + String a2 = kennzeichen.trim(); + if(a1.equals(a2)) { + return a; + } + } + return null; + } + + public static void ausfahrt(String kennzeichen, LocalDateTime zeit) { + maxParkplaetze += 1; + System.out.println("Freie Plätze: " + maxParkplaetze); + Auto a = findeAuto(kennzeichen); + Duration parkdauer = Duration.between(a.findeEinfahrtUhrzeit(), zeit); + double parkdauerInMinuten = parkdauer.toMinutes(); + double zwischenschulden = berechneParkgebuehren(parkdauerInMinuten); + double euros = zwischenschulden / 100; + double cents = zwischenschulden % 100; + System.out.println("Sie schulden beim nächsten mal " + euros + "€ und " + cents + " cents."); + a.schulden += zwischenschulden; + if(a.findeSchulden() > 0) { + Nichtzahler n = new Nichtzahler(kennzeichen, a.findeSchulden()); + nichtzahlerListe.add(n); + } + geparkteAutos.remove(a); + TUI.start(); + } + + public static void zahlung(String[] zahlungsDaten) { + String kennzeichen = zahlungsDaten[0]; + String ausfahrtZeit = zahlungsDaten[1]; + Auto a = findeAuto(kennzeichen); + LocalDateTime uhrzeit1 = a.findeEinfahrtUhrzeit(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm"); + LocalDateTime uhrzeit2 = LocalDateTime.parse(ausfahrtZeit, formatter); + Duration parkdauer = Duration.between(uhrzeit1, uhrzeit2); + double parkdauerInMinuten = parkdauer.toMinutes(); + double kosten = berechneParkgebuehren(parkdauerInMinuten); + if(a.eAuto == true) { + kosten *= 0.8; + } + double euros = kosten / 100; + double cents = kosten % 100; + System.out.println("Sie müssen " + euros + "€ und " + cents + " cents zahlen."); + System.out.print("Kreditkartennummer: "); + String kreditkartennummer = sc.nextLine(); + boolean kreditkarteGültig = prüfzifferBerechnen(kreditkartennummer); + if(kreditkarteGültig == false) { + System.exit(0); + } else if(kreditkarteGültig == true) { + a.schulden = 0; + System.out.println("Schulden wurden bezahlt."); + } + } + + public static boolean prüfzifferBerechnen(String kreditkartennummer) { + int testZahl = 0; + boolean geradeZahl = false; + + for (int i = kreditkartennummer.length() - 1; i >= 0; i--) { + char zahlChar = kreditkartennummer.charAt(i); + int zahl = Character.getNumericValue(zahlChar); + if (geradeZahl) { + zahl *= 2; + if (zahl > 9) { + zahl -= 9; + } + } + testZahl += zahl; + geradeZahl = !geradeZahl; + } + return (testZahl % 10 == 0); + } + + private static double berechneParkgebuehren(double parkdauerInMinuten) { + double kostenInCent = 0; + parkdauerInMinuten -= 15; + while(parkdauerInMinuten >= 1440) { + kostenInCent += 1500; + parkdauerInMinuten -= 1440; + + } + while(parkdauerInMinuten >= 60 && parkdauerInMinuten < 1440) { + kostenInCent += 100; + parkdauerInMinuten -= 60; + } + if(parkdauerInMinuten < 60) { + kostenInCent += 100; + parkdauerInMinuten = 0; + } + return kostenInCent; + } + + private static boolean checkBalance(Auto a) { + if(a.schulden > 0) { + return false; + } + return true; + } + + + + } + + + \ No newline at end of file