added parkhaus main java class

main
Berat Kocak 2024-10-07 05:38:21 +02:00
parent ca2175dfcd
commit a6a50a359c
1 changed files with 139 additions and 0 deletions

View File

@ -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<Auto> geparkteAutos;
static public List<Nichtzahler> 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;
}
}