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; } }