Dateien nach "/" hochladen
parent
91c89d2d60
commit
46aebf1a04
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
package parkhaus;
|
||||||
|
|
||||||
|
public class Zahlen {
|
||||||
|
private String VISA;
|
||||||
|
public Zahlen(String VISA) {
|
||||||
|
this.VISA=VISA;
|
||||||
|
}
|
||||||
|
public String getVISA(){
|
||||||
|
return VISA;
|
||||||
|
}
|
||||||
|
public int PZ() {
|
||||||
|
int pz=0;
|
||||||
|
int gewichtung=1;
|
||||||
|
int quersumme=0;
|
||||||
|
for(int i=16;i>=0;i-- ) {
|
||||||
|
char ch=VISA.charAt(i);
|
||||||
|
quersumme+=((int)ch)*gewichtung;
|
||||||
|
|
||||||
|
if(gewichtung%2==0) {
|
||||||
|
gewichtung--;
|
||||||
|
}if(gewichtung%2!=0){
|
||||||
|
gewichtung++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pz=10-(quersumme%10);
|
||||||
|
return pz;
|
||||||
|
}
|
||||||
|
public boolean bezahlt() 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.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,89 @@
|
||||||
|
package parkhaus;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.Scanner;
|
||||||
|
public class ParkhausUI{
|
||||||
|
public static void main(String[] args) throws ParseException, IOException, InterruptedException {
|
||||||
|
Scanner scanner=new Scanner(System.in);
|
||||||
|
boolean run=true;
|
||||||
|
while(run) {
|
||||||
|
System.out.println("Parkhaus");
|
||||||
|
System.out.println("1. Einfahren.");
|
||||||
|
System.out.println("2. Ausfahren.");
|
||||||
|
System.out.println("3. Zahlen.");
|
||||||
|
System.out.println("4. Parksimulator.");
|
||||||
|
System.out.println("5. Beenden");
|
||||||
|
int wahl=scanner.nextInt();
|
||||||
|
scanner.nextLine();
|
||||||
|
if(wahl<0 && wahl>5) {
|
||||||
|
System.err.println("Falsche Eingabe.");
|
||||||
|
}
|
||||||
|
System.out.println("Kennzeichen: ");
|
||||||
|
String kz=scanner.nextLine();
|
||||||
|
System.out.println("Ihr Kennzeichen"+kz+" wurde eingescannt");
|
||||||
|
PKW auto=new PKW(kz,180);
|
||||||
|
switch(wahl){
|
||||||
|
case 1:{
|
||||||
|
System.out.println("Einfahrt(dd,mm,yyyy HH:mm): ");
|
||||||
|
String einfahrt=scanner.nextLine();
|
||||||
|
Date datum=auto.Zeitformat(einfahrt);
|
||||||
|
auto.Einfahrt(datum);
|
||||||
|
auto.eingefahren();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:{
|
||||||
|
double schulden=auto.Schulden();
|
||||||
|
auto.Update(scanner, schulden);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 3:{
|
||||||
|
double schulden=auto.Schulden();
|
||||||
|
if(schulden !=-1 && schulden >0) {
|
||||||
|
System.out.println("Geben Sie Ihre Kartennummer ohne Leerzeichen ein");
|
||||||
|
String kn=scanner.nextLine();
|
||||||
|
if(kn.length()==16) {
|
||||||
|
Zahlen visa=new Zahlen(kn);
|
||||||
|
int pz=visa.PZ();
|
||||||
|
System.out.println("Prüfziffer="+pz);
|
||||||
|
boolean istbezahlt=visa.bezahlt();
|
||||||
|
auto.ausgefahren(istbezahlt);
|
||||||
|
}else {
|
||||||
|
System.err.println("Falsche Kreditkartennummer");
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
System.err.println("Sie haben keine Schulden");
|
||||||
|
auto.ausgefahren(true);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 4:{
|
||||||
|
System.out.println("Parksimulator");
|
||||||
|
System.out.println("Geben Sie Ein- und Ausfahrt ein.");
|
||||||
|
System.out.print("Einfahrt(dd,mm,yyyy HH:mm): ");
|
||||||
|
String einfahrt=scanner.nextLine();
|
||||||
|
System.out.print("Ausfahrt(dd,mm,yyyy HH:mm): ");
|
||||||
|
String ausfahrt=scanner.nextLine();
|
||||||
|
Date e=auto.Zeitformat(einfahrt);
|
||||||
|
Date a=auto.Zeitformat(ausfahrt);
|
||||||
|
System.err.println("Ist ihr auto ein E-Auto (j/n)");
|
||||||
|
String jn=scanner.nextLine();
|
||||||
|
boolean eauto;
|
||||||
|
if(jn.equals("j")) {
|
||||||
|
eauto=true;
|
||||||
|
}else {
|
||||||
|
eauto=false;
|
||||||
|
}
|
||||||
|
double gebuehr=auto.Parksimulator(e,a,eauto);
|
||||||
|
System.out.println("Ihre Gebühr beträgt "+gebuehr+"€");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 5:{
|
||||||
|
System.out.println("Programm beendet");
|
||||||
|
run =false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue