PR2_3015836/AUTO

168 lines
4.3 KiB
Plaintext
Raw Normal View History

2024-10-08 12:41:28 +02:00
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;
}
}