diff --git a/AUTO b/AUTO new file mode 100644 index 0000000..4f7725b --- /dev/null +++ b/AUTO @@ -0,0 +1,167 @@ +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; + + } +}