Kommentare wurden hinzugefügt
parent
7737315b18
commit
f95b975a8f
|
@ -9,6 +9,12 @@ public class Auto {
|
||||||
private boolean eAuto;
|
private boolean eAuto;
|
||||||
private double schulden;
|
private double schulden;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param kennzeichen
|
||||||
|
* @param einfahrtZeit
|
||||||
|
* Wird genutzt um ein Auto zu erstellen mit den aus der Main Klasse übergebenen Einfahrtszeit und dem Kennzeichen
|
||||||
|
*/
|
||||||
public Auto(String kennzeichen, Date einfahrtZeit) {
|
public Auto(String kennzeichen, Date einfahrtZeit) {
|
||||||
this.kennzeichen = kennzeichen;
|
this.kennzeichen = kennzeichen;
|
||||||
this.einfahrtZeit = einfahrtZeit;
|
this.einfahrtZeit = einfahrtZeit;
|
||||||
|
@ -69,6 +75,12 @@ public class Auto {
|
||||||
this.schulden += betrag;
|
this.schulden += betrag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*Überprüft ob im eingegebenen Kennzeichen am Ende ein E oder e steht für E-Auto wenn
|
||||||
|
* das der Fall wird der Boolean E-Auto auf wahr gesetzt um so den
|
||||||
|
* Preis zu senken
|
||||||
|
*/
|
||||||
|
|
||||||
private boolean iseAuto() {
|
private boolean iseAuto() {
|
||||||
String letztesSymbol = kennzeichen.charAt(kennzeichen.length() - 1) + "";
|
String letztesSymbol = kennzeichen.charAt(kennzeichen.length() - 1) + "";
|
||||||
return (letztesSymbol.equals("E") || letztesSymbol.equals("e"));
|
return (letztesSymbol.equals("E") || letztesSymbol.equals("e"));
|
||||||
|
|
|
@ -43,6 +43,15 @@ public class Parkhaus {
|
||||||
this.platz = platz;
|
this.platz = platz;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Erstellt ein Parkhaus mit dem Studenpreis 1 Euro
|
||||||
|
* 180 maximalen Parkplätzen
|
||||||
|
* eine Nachtpauschale von 5 Euro
|
||||||
|
* Tagespauschale von 15 Euro
|
||||||
|
* eine Liste der ausgefahrenen Autos
|
||||||
|
* Liste mit geparkten Autos
|
||||||
|
*/
|
||||||
|
|
||||||
public Parkhaus() {
|
public Parkhaus() {
|
||||||
this.ausgefahrene = new ArrayList<Auto>();
|
this.ausgefahrene = new ArrayList<Auto>();
|
||||||
this.preis = 1.0;
|
this.preis = 1.0;
|
||||||
|
@ -53,6 +62,13 @@ public class Parkhaus {
|
||||||
this.autos = new ArrayList<Auto>();
|
this.autos = new ArrayList<Auto>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bekommt den Parameter Auto übergeben aus der Main Klasse von der auswahl einer Einfahrt aus der Main.
|
||||||
|
* Wenn das Auto mit dem eingegebnen Kennzeichen schon einmal eingefahren war, werden die Schulden aus der ausgefahrenen Liste gesammelt und angezeigt.
|
||||||
|
* Wenn Auto schon aktuell eingefahren ist, kann es nicht erneut einfahren da in Deutschland kein Kennzeichen zweimal an einem Auto verwendet werden kann.
|
||||||
|
* Wenn Auto weder eingefahren noch schon eingefahren war, wird ein neues Auto erstellt
|
||||||
|
*/
|
||||||
|
|
||||||
public void addAuto(Auto auto) {
|
public void addAuto(Auto auto) {
|
||||||
for (Auto ausgefahrenesAuto : ausgefahrene) {
|
for (Auto ausgefahrenesAuto : ausgefahrene) {
|
||||||
if (ausgefahrenesAuto.getKennzeichen().equals(auto.getKennzeichen())) {
|
if (ausgefahrenesAuto.getKennzeichen().equals(auto.getKennzeichen())) {
|
||||||
|
@ -69,6 +85,13 @@ public class Parkhaus {
|
||||||
System.out.println("Auto mit dem Kennzeichen " + auto.getKennzeichen() + " ist eingefahren.");
|
System.out.println("Auto mit dem Kennzeichen " + auto.getKennzeichen() + " ist eingefahren.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param kennzeichen
|
||||||
|
* @return
|
||||||
|
*
|
||||||
|
* Mit der eingabe eines Kennzeichens wird nach einem Auto gesucht. In der liste der eingefahrenen Autos als auch in der Liste
|
||||||
|
* der ausgefahrenen Autos
|
||||||
|
*/
|
||||||
|
|
||||||
public Auto autoFinden(String kennzeichen) {
|
public Auto autoFinden(String kennzeichen) {
|
||||||
for (Auto auto : autos) {
|
for (Auto auto : autos) {
|
||||||
|
@ -84,6 +107,19 @@ public class Parkhaus {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param kennzeichen
|
||||||
|
* @param bezahltZeit
|
||||||
|
* @param kreditkartennummer
|
||||||
|
*
|
||||||
|
* Es wird nach einem Auto gesucht und wenn dieses nicht gefunden wird, wird ein fehler ausgegeben.
|
||||||
|
* Wenn das Auto gefunden wurde, werden die einfahrtszeit mit der ausfahrtszeit verglichen, die Kosten für die Parkdauer berechnet und
|
||||||
|
* dem Kunden ausgegeben
|
||||||
|
* Der Kunde wird aufgefordert seine 16 stellige Visa Kartennummer einzugeben
|
||||||
|
* Dann wird die Kartennummer auf plausibilität geprüft
|
||||||
|
* Wenn die Zahlung funktioniert wird ein Platz im Parkhaus frei und die Schulden des Autos beglichen
|
||||||
|
*/
|
||||||
|
|
||||||
public void bezahlen(String kennzeichen, Date bezahltZeit, String kreditkartennummer) {
|
public void bezahlen(String kennzeichen, Date bezahltZeit, String kreditkartennummer) {
|
||||||
Auto auto = autoFinden(kennzeichen);
|
Auto auto = autoFinden(kennzeichen);
|
||||||
|
@ -107,6 +143,16 @@ public class Parkhaus {
|
||||||
System.out.println("Nun sind im Parkhaus wieder " + platz + " Plätze frei");
|
System.out.println("Nun sind im Parkhaus wieder " + platz + " Plätze frei");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param kreditkartenNummer
|
||||||
|
* @return
|
||||||
|
*
|
||||||
|
*Prüft ob eine Kreditkartennummer plausibel ist, also ob die Länge auch wirklich 16 zeichen sind und sie mit 4 beginnt
|
||||||
|
* Wenn ja wird der Prüfalgo durchlaufen
|
||||||
|
* Wenn nein wird ein fehler ausgeworfen
|
||||||
|
*/
|
||||||
private boolean istGueltigeVisaKarte(String kreditkartenNummer) {
|
private boolean istGueltigeVisaKarte(String kreditkartenNummer) {
|
||||||
if (kreditkartenNummer.length() != 16 || !kreditkartenNummer.startsWith("4")) {
|
if (kreditkartenNummer.length() != 16 || !kreditkartenNummer.startsWith("4")) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -114,10 +160,20 @@ public class Parkhaus {
|
||||||
return algoPruf(kreditkartenNummer);
|
return algoPruf(kreditkartenNummer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param kartennummer
|
||||||
|
* @return
|
||||||
|
* Algo zum prüfen ob die Prüfziffer der Kreditkarte korrekt ist durch abwechselndes verdoppeln der Zahlen
|
||||||
|
* bis zur 15.ten stelle aufaddieren
|
||||||
|
* prüfziffer die es sein sollte wird berechnet
|
||||||
|
* berechnete Prüfziffer mit tatsächlicher Prüfziffer verglichen
|
||||||
|
*/
|
||||||
|
|
||||||
private boolean algoPruf(String kartennummer) {
|
private boolean algoPruf(String kartennummer) {
|
||||||
int summe = 0;
|
int summe = 0;
|
||||||
boolean verdoppeln = false;
|
boolean verdoppeln = false;
|
||||||
for (int i = kartennummer.length() - 1; i >= 0; i--) {
|
for (int i = kartennummer.length() - 2; i >= 0; i--) {
|
||||||
int ziffer = Character.getNumericValue(kartennummer.charAt(i));
|
int ziffer = Character.getNumericValue(kartennummer.charAt(i));
|
||||||
if (verdoppeln) {
|
if (verdoppeln) {
|
||||||
ziffer *= 2;
|
ziffer *= 2;
|
||||||
|
@ -128,9 +184,20 @@ public class Parkhaus {
|
||||||
summe += ziffer;
|
summe += ziffer;
|
||||||
verdoppeln = !verdoppeln;
|
verdoppeln = !verdoppeln;
|
||||||
}
|
}
|
||||||
return summe % 10 == 0;
|
int berechnetePrufziffer = (10 - (summe % 10)) % 10;
|
||||||
|
int gegebenePrufziffer = Character.getNumericValue(kartennummer.charAt(kartennummer.length() - 1));
|
||||||
|
return berechnetePrufziffer == gegebenePrufziffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param kennzeichen
|
||||||
|
* @param ausfahrtZeit
|
||||||
|
* Wird genutzt um auto ohne bezahlen ausfahren zu lassen
|
||||||
|
* Preis wird mit der ausfahrtzeit berechnet und werden auf schulden aufaddiert
|
||||||
|
* schulden werden dem Auto zugespeichert und auto fährt aus, wird in ausgefahrene Autos hinzugefügt um schulden speichern zu können
|
||||||
|
*/
|
||||||
public void ausfahrt(String kennzeichen, Date ausfahrtZeit) {
|
public void ausfahrt(String kennzeichen, Date ausfahrtZeit) {
|
||||||
Auto auto = autoFinden(kennzeichen);
|
Auto auto = autoFinden(kennzeichen);
|
||||||
if (auto == null) {
|
if (auto == null) {
|
||||||
|
@ -148,6 +215,19 @@ public class Parkhaus {
|
||||||
platz += 1;
|
platz += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param auto
|
||||||
|
* @param ausfahrtZeit
|
||||||
|
* @return
|
||||||
|
*
|
||||||
|
* Um Parkkosten korrekt zu berechnen wird auf parkzeit <15 min geprüft um Kiss and Ride zu gewährleisten
|
||||||
|
* Parktage werden mit dem Tagespreis multipliziert und angefangene Stunden werden berücksichtigt und müssen bezahlt werden
|
||||||
|
* Kosten fangen erst nach 15 minuten für Kiss and Ride an
|
||||||
|
* Wenn die Einfahrtszeit nach 20 und vor 06 Uhr liegen kostet es nur 5 euro durch die maximale nachtpauschale
|
||||||
|
* Wenn es sich um ein E-Auto handelt kostet es 20% weniger zu parken
|
||||||
|
*/
|
||||||
|
|
||||||
public double berechneParkKosten(Auto auto, Date ausfahrtZeit) {
|
public double berechneParkKosten(Auto auto, Date ausfahrtZeit) {
|
||||||
Date einfahrtZeit = auto.getEinfahrtZeit();
|
Date einfahrtZeit = auto.getEinfahrtZeit();
|
||||||
long parkMinuten = (ausfahrtZeit.getTime() - einfahrtZeit.getTime()) / 60000;
|
long parkMinuten = (ausfahrtZeit.getTime() - einfahrtZeit.getTime()) / 60000;
|
||||||
|
|
Loading…
Reference in New Issue