Kommentare wurden hinzugefügt
parent
7737315b18
commit
f95b975a8f
|
@ -9,6 +9,12 @@ public class Auto {
|
|||
private boolean eAuto;
|
||||
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) {
|
||||
this.kennzeichen = kennzeichen;
|
||||
this.einfahrtZeit = einfahrtZeit;
|
||||
|
@ -69,6 +75,12 @@ public class Auto {
|
|||
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() {
|
||||
String letztesSymbol = kennzeichen.charAt(kennzeichen.length() - 1) + "";
|
||||
return (letztesSymbol.equals("E") || letztesSymbol.equals("e"));
|
||||
|
|
|
@ -43,6 +43,15 @@ public class Parkhaus {
|
|||
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() {
|
||||
this.ausgefahrene = new ArrayList<Auto>();
|
||||
this.preis = 1.0;
|
||||
|
@ -53,6 +62,13 @@ public class Parkhaus {
|
|||
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) {
|
||||
for (Auto ausgefahrenesAuto : ausgefahrene) {
|
||||
if (ausgefahrenesAuto.getKennzeichen().equals(auto.getKennzeichen())) {
|
||||
|
@ -69,6 +85,13 @@ public class Parkhaus {
|
|||
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) {
|
||||
for (Auto auto : autos) {
|
||||
|
@ -84,6 +107,19 @@ public class Parkhaus {
|
|||
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) {
|
||||
Auto auto = autoFinden(kennzeichen);
|
||||
|
@ -107,6 +143,16 @@ public class Parkhaus {
|
|||
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) {
|
||||
if (kreditkartenNummer.length() != 16 || !kreditkartenNummer.startsWith("4")) {
|
||||
return false;
|
||||
|
@ -114,10 +160,20 @@ public class Parkhaus {
|
|||
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) {
|
||||
int summe = 0;
|
||||
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));
|
||||
if (verdoppeln) {
|
||||
ziffer *= 2;
|
||||
|
@ -128,9 +184,20 @@ public class Parkhaus {
|
|||
summe += ziffer;
|
||||
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) {
|
||||
Auto auto = autoFinden(kennzeichen);
|
||||
if (auto == null) {
|
||||
|
@ -148,6 +215,19 @@ public class Parkhaus {
|
|||
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) {
|
||||
Date einfahrtZeit = auto.getEinfahrtZeit();
|
||||
long parkMinuten = (ausfahrtZeit.getTime() - einfahrtZeit.getTime()) / 60000;
|
||||
|
|
Loading…
Reference in New Issue