168 lines
4.3 KiB
Plaintext
168 lines
4.3 KiB
Plaintext
|
package ph;
|
||
|
import java.text.ParseException;
|
||
|
import java.text.SimpleDateFormat;
|
||
|
import java.util.Date;
|
||
|
|
||
|
public class AUTO {
|
||
|
private String kennzeichen;
|
||
|
private int parkplaetze;
|
||
|
private double schulden;
|
||
|
private Date einfahrt;
|
||
|
private Date ausfahrt;
|
||
|
|
||
|
public AUTO(String kennzeichen,int parkplaetze,double schulden,Date einfahrt,Date ausfahrt) {
|
||
|
this.kennzeichen=kennzeichen;
|
||
|
this.parkplaetze=parkplaetze;
|
||
|
this.schulden=schulden;
|
||
|
this.einfahrt=einfahrt;
|
||
|
this.ausfahrt=ausfahrt;
|
||
|
}
|
||
|
public AUTO(Date einfahrt,Date ausfahrt) {//für simulator
|
||
|
this.einfahrt=einfahrt;
|
||
|
this.ausfahrt=ausfahrt;
|
||
|
|
||
|
}
|
||
|
public Date getEinfahrt() {
|
||
|
return einfahrt;
|
||
|
}
|
||
|
public Date getAusfahrt() {
|
||
|
return ausfahrt;
|
||
|
}
|
||
|
public String getKennzeichen() {
|
||
|
return kennzeichen;
|
||
|
}
|
||
|
public double getSchulden() {
|
||
|
return schulden;
|
||
|
}
|
||
|
public int getParkplaetze() {
|
||
|
return parkplaetze;
|
||
|
}
|
||
|
public void einfahren() {
|
||
|
if(parkplaetze<=0) {
|
||
|
System.err.println("Parkhaus ist voll");
|
||
|
}else {
|
||
|
parkplaetze--;
|
||
|
}
|
||
|
}
|
||
|
public void ausfahren() {
|
||
|
boolean Eauto=istEauto();
|
||
|
double schulden=parkgebuehren(Eauto);
|
||
|
long sek=Parkzeit();
|
||
|
double min=sek/60;
|
||
|
if(schulden>0 && min>15) {
|
||
|
System.err.println("Sie haben noch nicht gezahlt.");
|
||
|
}else {
|
||
|
parkplaetze--;
|
||
|
System.out.println("Auf Wiedersehen");
|
||
|
}}
|
||
|
public void cardlength(String visa) {
|
||
|
if(visa.length()!=16) {
|
||
|
System.err.println("Die Eingabe stimmt nicht");
|
||
|
}
|
||
|
}
|
||
|
public void validCard(String visa) {
|
||
|
int pz = 0;
|
||
|
int gewichtung = 1;
|
||
|
int quersumme = 0;
|
||
|
|
||
|
for (int i = 15; i >= 0; i--) {
|
||
|
int zahl = Character.getNumericValue(visa.charAt(i));
|
||
|
quersumme += zahl * gewichtung;
|
||
|
gewichtung = (gewichtung % 2 == 0) ? gewichtung - 1 : gewichtung + 1;
|
||
|
}
|
||
|
|
||
|
pz = 10 - (quersumme % 10);
|
||
|
if (pz != Character.getNumericValue(visa.charAt(15))) {
|
||
|
System.err.println("Dies ist keine echte VISA Karte.");
|
||
|
}
|
||
|
}
|
||
|
public void pay() throws InterruptedException {
|
||
|
System.out.println("Legen Sie die Karte ein.");
|
||
|
System.out.println(".");
|
||
|
Thread.sleep(1000);
|
||
|
System.out.println("..");
|
||
|
Thread.sleep(1000);
|
||
|
System.out.println("...");
|
||
|
Thread.sleep(1000);
|
||
|
System.out.println("....");
|
||
|
Thread.sleep(1000);
|
||
|
System.out.println(".....");
|
||
|
Thread.sleep(1000);
|
||
|
System.out.println("Kauf abgeschlossen Sie können die Karte nun entfernen.");
|
||
|
schulden=0;
|
||
|
parkplaetze--;
|
||
|
}
|
||
|
|
||
|
public Date Zeitformat(String datum) throws ParseException {
|
||
|
if (datum.isEmpty()) {
|
||
|
Date aktuellesDatum = new Date();
|
||
|
System.out.println("Aktuelles Datum: " + aktuellesDatum);
|
||
|
return aktuellesDatum;
|
||
|
}
|
||
|
|
||
|
|
||
|
String pattern = "dd.MM.yyyy,HH:mm";
|
||
|
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
|
||
|
|
||
|
try {
|
||
|
Date formatiertesDatum = sdf.parse(datum);
|
||
|
return formatiertesDatum;
|
||
|
} catch (ParseException e) {
|
||
|
|
||
|
System.err.println("Ungültiges Datumsformat. Bitte verwenden Sie das Format");
|
||
|
return new Date();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
public long Parkzeit() {
|
||
|
return (ausfahrt.getTime() - einfahrt.getTime()) / 1000;
|
||
|
}
|
||
|
|
||
|
public double parkgebuehren(boolean Eauto) {
|
||
|
long sekunden = Parkzeit();
|
||
|
long minuten = sekunden / 60;
|
||
|
double stunden = minuten / 60.0;
|
||
|
if (minuten <= 15) {
|
||
|
return 0;
|
||
|
}
|
||
|
int aufgerundeteStunden = (int) stunden;
|
||
|
if (stunden > aufgerundeteStunden) {
|
||
|
aufgerundeteStunden++;
|
||
|
}
|
||
|
double gesamtgebuehr = 0.0;
|
||
|
for (int i = 0; i < aufgerundeteStunden; i++) {
|
||
|
int stunde = (i % 24);
|
||
|
if (stunde >= 20 || stunde < 6) {
|
||
|
gesamtgebuehr += 5;
|
||
|
} else {
|
||
|
gesamtgebuehr += 1;
|
||
|
}
|
||
|
|
||
|
if (gesamtgebuehr >= 15) {
|
||
|
gesamtgebuehr = 15;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
if (Eauto) {
|
||
|
gesamtgebuehr *= 0.8;
|
||
|
}
|
||
|
return schuldenaufrechnen(gesamtgebuehr);
|
||
|
}
|
||
|
|
||
|
public boolean istEauto() {
|
||
|
if(kennzeichen.charAt(kennzeichen.length()-1)=='E') {
|
||
|
return true;
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
public double schuldenaufrechnen(double gebuehr) {
|
||
|
if(schulden>0) {
|
||
|
System.err.println("Sie haben noch ungezahlte Schulden");
|
||
|
}
|
||
|
schulden+=gebuehr;
|
||
|
return schulden;
|
||
|
|
||
|
}
|
||
|
}
|