added parkhaus main java class
parent
ca2175dfcd
commit
a6a50a359c
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue