diff --git a/PKW b/PKW new file mode 100644 index 0000000..06cf413 --- /dev/null +++ b/PKW @@ -0,0 +1,241 @@ +package parkhaus; + +import java.io.*; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Scanner; + +public class PKW { + private String kennzeichen; + private int parkplaetze; + + public PKW(String kennzeichen, int parkplaetze) { + this.kennzeichen = kennzeichen; + this.parkplaetze = parkplaetze; + } + + public int getParkplaetze() { + return parkplaetze; + } + + public String getKennzeichen() { + return kennzeichen; + } + + public void Einfahrt(Date einfahrt) throws IOException { + File alte = new File(kennzeichen+".txt"); + if(alte.exists()) { + BufferedReader reader = new BufferedReader(new FileReader(alte)); + String line; + line = reader.readLine(); + reader.close(); + String[] autoData = line.split(","); + if (autoData[0].equals(kennzeichen)) { + if (autoData[2].isEmpty()&& !autoData[1].isEmpty()) { + System.err.println("Das Fahrzeug mit Kennzeichen " + kennzeichen + " ist bereits eingeparkt."); + return; + } + if(autoData[1].isEmpty()&& autoData[2].isEmpty()) { + System.err.println("Sie haben noch eine Zahlung offen."); + } + if(autoData[1].isEmpty()&& !autoData[2].isEmpty()) { + System.err.println("Da ist wohl ein Fehler unterlaufen."); + } + } //exisistiert keine Datei dann soll eine neue angelegt werden + if(!alte.exists()) { + BufferedWriter writer = new BufferedWriter(new FileWriter(kennzeichen+".txt", true)); + SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy,HH:mm"); + String einfahrtFormatted = dateFormat.format(einfahrt); + writer.write(kennzeichen + "," + einfahrtFormatted + ",false,0.0"); + writer.close(); + } + } + } + public void Update(Scanner scanner,double schulden) throws IOException { + File alte = new File(kennzeichen+".txt"); + File neue = new File(kennzeichen+".txt(1)"); + BufferedReader reader = new BufferedReader(new FileReader(alte)); + BufferedWriter writer = new BufferedWriter(new FileWriter(neue)); + SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy,HH:mm"); + System.out.print("Ausfahrt: "); + String ausfahrt=scanner.nextLine(); + String ausfahrtinString = sdf.format(ausfahrt); + String line; + if(alte.exists()) { + line = reader.readLine(); + String[] autoData = line.split(","); + + + line = kennzeichen + "," + autoData[1] + "," + ausfahrtinString + "," + autoData[3] + "," + schulden; + //kennzeichen einfahrt ausfahrt istbezahlt schulden + writer.write(line); + + + reader.close(); + writer.close(); + + }else { + System.err.println("Fahrzeug mit Kennzeichen " + kennzeichen + " wurde nicht gefunden."); + } + + // Datei überschreiben + alte.delete(); + neue.renameTo(alte); + } + + public long Parkzeit(Date einfahrt, Date ausfahrt) { + return (ausfahrt.getTime() - einfahrt.getTime()) / 1000; + } + + + + public Date Zeitformat(String datum) throws ParseException { + //aktuelles Datum ausgeben + if (datum.isEmpty()) { + return new Date(); + } + + // Falls der Benutzer ein Datum eingegeben hat, dieses formatieren und zurückgeben + SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy,HH:mm"); + try { + + Date formatiertesDatum=sdf.parse(datum); // Datum aus der Eingabe parsen + return formatiertesDatum; + } catch (ParseException e) { + System.err.println("Ungültiges Datumsformat. Das aktuelle Datum wird verwendet."); + return new Date(); + } + } + + + public void eingefahren() { + this.parkplaetze--; + } + public void ausgefahren(boolean istbezahlt) throws IOException { + File alte = new File(kennzeichen + ".txt"); + if(alte.exists()) { + alte.delete(); + this.parkplaetze++; + System.out.println("Haben Sie einen schönen Tag."); + } + } + public void ausfahrenohneZahlen() throws IOException { + File alte = new File(kennzeichen+".txt"); + File neue = new File(kennzeichen+".txt(1)"); + BufferedReader reader = new BufferedReader(new FileReader(alte)); + BufferedWriter writer = new BufferedWriter(new FileWriter(neue)); + String line; + if(alte.exists()) { + System.err.println("Sie haben noch nicht gezahlt."); + line = reader.readLine(); + String[] autoData = line.split(","); + + + line = kennzeichen + "," + ""+ "," +""+ "," + autoData[3] + "," + autoData[4]; + writer.write(line); + + + reader.close(); + writer.close(); + + }else { + System.err.println("Fahrzeug mit Kennzeichen " + kennzeichen + " wurde nicht gefunden."); + } + + // Datei überschreiben + alte.delete(); + neue.renameTo(alte); + } + + public double Schulden() throws ParseException, IOException { + File alte = new File(kennzeichen+".txt"); + SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy,HH:mm"); + if(alte.exists()) { + String line; + BufferedReader reader = new BufferedReader(new FileReader(alte)); + line = reader.readLine(); + reader.close(); + String[] autoData = line.split(","); + Date einfahrt=sdf.parse(autoData[1]); + Date ausfahrt=sdf.parse(autoData[2]); + long sekunden=Parkzeit(einfahrt,ausfahrt); + double alteschulden=Double.parseDouble(autoData[4]); + long minute=sekunden/60; + double stunde=minute/60; + boolean Eauto=kennzeichen.endsWith("E"); + if(minute<=15) { + return 0; + } + double gesamtgebuehr = 0.0; + long stundenBerechnet = 0; + while (stundenBerechnet < stunde) { + if (stunde >= 20 || stunde < 6) { + + gesamtgebuehr += 5; + break; + } else { + + gesamtgebuehr += 1; + } + + if (gesamtgebuehr > 15) { + gesamtgebuehr = 15; + break; + } + + stundenBerechnet++; + } + + + if (Eauto) { + gesamtgebuehr *= 0.8; + } + + return gesamtgebuehr+=alteschulden; + } + + else { + System.err.println("Datei existiert nicht"); + return -1; + } + } + public double Parksimulator(Date einfahrt, Date ausfahrt, boolean Eauto) { + long sekunden=Parkzeit(einfahrt,ausfahrt); + long stunde=(sekunden/60)/60; + long minute=sekunden/60; + if(minute<=15) { + return 0; + } + double gesamtgebuehr = 0.0; + long stundenBerechnet = 0; + while (stundenBerechnet < stunde) { + if (stunde >= 20 || stunde < 6) { + + gesamtgebuehr += 5; + break; + } else { + + gesamtgebuehr += 1; + } + + if (gesamtgebuehr > 15) { + gesamtgebuehr = 15; + break; + } + + stundenBerechnet++; + } + + + if (Eauto) { + gesamtgebuehr *= 0.8; + } + + return gesamtgebuehr; + } + } + + + +