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