Kreditkartenvalidierung hinzugefügt
parent
8c32155f6d
commit
79c954d24b
|
@ -11,12 +11,14 @@ public class Auto {
|
||||||
this.bezahlt = bezahlt;
|
this.bezahlt = bezahlt;
|
||||||
this.ausfahrtZeit = ausfahrtZeit;
|
this.ausfahrtZeit = ausfahrtZeit;
|
||||||
this.eAuto = iseAuto();
|
this.eAuto = iseAuto();
|
||||||
|
this.saldo = saldo;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private final String kennzeichen;
|
private final String kennzeichen;
|
||||||
private String einfahrtZeit;
|
private String einfahrtZeit;
|
||||||
|
private double saldo;
|
||||||
private String ausfahrtZeit;
|
private String ausfahrtZeit;
|
||||||
private boolean bezahlt;
|
private boolean bezahlt;
|
||||||
private boolean eAuto;
|
private boolean eAuto;
|
||||||
|
@ -32,6 +34,13 @@ public class Auto {
|
||||||
return einfahrtZeit;
|
return einfahrtZeit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSaldo(double saldo) {
|
||||||
|
this.saldo = saldo;
|
||||||
|
}
|
||||||
|
public double getSaldo() {
|
||||||
|
return saldo;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -17,11 +17,11 @@ public class Main {
|
||||||
var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
|
var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
|
||||||
sdf.setLenient(false);
|
sdf.setLenient(false);
|
||||||
|
|
||||||
Auto test = new Auto("123");
|
/* Auto test = new Auto("123");
|
||||||
test.setEinfahrtZeit("10.10.2000, 04:00");
|
test.setEinfahrtZeit("10.10.2000, 04:00");
|
||||||
test.setAusfahrtZeit("10.10.2000, 10:30");
|
test.setAusfahrtZeit("10.10.2000, 10:30");
|
||||||
System.out.println(parkhaus.berechnePreis(test));
|
System.out.println(parkhaus.berechnePreis(test));
|
||||||
|
*/
|
||||||
while (schleife) {
|
while (schleife) {
|
||||||
|
|
||||||
|
|
||||||
|
@ -41,9 +41,12 @@ public class Main {
|
||||||
String kennzeichen = scanner.nextLine();
|
String kennzeichen = scanner.nextLine();
|
||||||
System.out.println("Bitte geben Sie ihre Einfahrtszeit ein: Format (dd.MM.yyyy, HH:mm) (12.12.2023, 10:12)");
|
System.out.println("Bitte geben Sie ihre Einfahrtszeit ein: Format (dd.MM.yyyy, HH:mm) (12.12.2023, 10:12)");
|
||||||
String einfahrtsZeit = scanner.nextLine();
|
String einfahrtsZeit = scanner.nextLine();
|
||||||
/*if (autos.containsKey(kennzeichen)) {
|
if (einfahrtsZeit.equals("")) {
|
||||||
|
einfahrtsZeit = new SimpleDateFormat("dd.MM.yyyy, HH:mm").format(new Date());
|
||||||
|
}
|
||||||
|
if (autos.containsKey(kennzeichen)) {
|
||||||
|
|
||||||
}*/
|
}
|
||||||
autos.put(kennzeichen, new Auto(kennzeichen));
|
autos.put(kennzeichen, new Auto(kennzeichen));
|
||||||
autos.get(kennzeichen).setEinfahrtZeit(einfahrtsZeit);
|
autos.get(kennzeichen).setEinfahrtZeit(einfahrtsZeit);
|
||||||
} else if (auswahl == 2) {
|
} else if (auswahl == 2) {
|
||||||
|
@ -53,35 +56,26 @@ public class Main {
|
||||||
System.out.println("Der Preis für das eingegebene Kennzeichen \n" + gewünschtesAuto.getKennzeichen() + "\n" + "ist " + parkhaus.berechnePreis(gewünschtesAuto) + "€");
|
System.out.println("Der Preis für das eingegebene Kennzeichen \n" + gewünschtesAuto.getKennzeichen() + "\n" + "ist " + parkhaus.berechnePreis(gewünschtesAuto) + "€");
|
||||||
|
|
||||||
} else if (auswahl == 3) {
|
} else if (auswahl == 3) {
|
||||||
parkhaus.ausfahren(autos);
|
Auto ausgefahrenenesAuto = parkhaus.ausfahren(autos);
|
||||||
System.out.println("Vielen Dank für Ihr Vertrauen");
|
System.out.println("Sie haben einen Betrag von " + ausgefahrenenesAuto.getSaldo() + "€, der noch fällig ist.");
|
||||||
} else if (auswahl == 4) {
|
} else if (auswahl == 4) {
|
||||||
|
|
||||||
Auto ausgefahrenensAuto = parkhaus.ausfahren(autos);
|
Auto ausgefahrenensAuto = parkhaus.ausfahren(autos);
|
||||||
parkhaus.bezahlePreisFürKennzeichen(ausgefahrenensAuto);
|
parkhaus.bezahlePreisFürKennzeichen(ausgefahrenensAuto);
|
||||||
}
|
} else if (auswahl == 5) {
|
||||||
else if (auswahl == 5) {
|
|
||||||
|
|
||||||
for (Auto auto : autos.values()) {
|
for (Auto auto : autos.values()) {
|
||||||
if (auto.getAusfahrtZeit().isBlank()){
|
if (auto.getAusfahrtZeit().isBlank()) {
|
||||||
System.out.println(auto);
|
System.out.println(auto);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
} else if (auswahl == 6) {
|
||||||
else if (auswahl == 6) {
|
|
||||||
schleife = false;
|
schleife = false;
|
||||||
System.out.println("Auf Wiedersehen");
|
System.out.println("Auf Wiedersehen");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (schleife){
|
|
||||||
System.out.println("Weitermachen?");
|
|
||||||
String weiter = scanner.nextLine();
|
|
||||||
if (weiter.equals("")) {
|
|
||||||
schleife = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -109,7 +109,7 @@ public class Parkhaus {
|
||||||
}
|
}
|
||||||
|
|
||||||
long kostenpflichtigeMinuten = parkdauerInMinuten - FREIE_MINUTEN;
|
long kostenpflichtigeMinuten = parkdauerInMinuten - FREIE_MINUTEN;
|
||||||
double kostenPflichtigeStunden = Math.ceil(((double)kostenpflichtigeMinuten / 60));
|
double kostenPflichtigeStunden = Math.ceil(((double) kostenpflichtigeMinuten / 60));
|
||||||
|
|
||||||
long parkdauerInTagen = (long) Math.ceil(parkdauerInMinuten / (60.0 * 24));
|
long parkdauerInTagen = (long) Math.ceil(parkdauerInMinuten / (60.0 * 24));
|
||||||
|
|
||||||
|
@ -140,8 +140,7 @@ public class Parkhaus {
|
||||||
preis += 5 + übrigeStundenAusserhalb;
|
preis += 5 + übrigeStundenAusserhalb;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
|
|
||||||
long übrigenStunden = (long) (kostenPflichtigeStunden - kostenpflichtigeGanzeTage * 24);
|
long übrigenStunden = (long) (kostenPflichtigeStunden - kostenpflichtigeGanzeTage * 24);
|
||||||
if (übrigenStunden <= 5) {
|
if (übrigenStunden <= 5) {
|
||||||
|
@ -158,14 +157,16 @@ public class Parkhaus {
|
||||||
|
|
||||||
} else if (einfahrtStunde <= 5) {
|
} else if (einfahrtStunde <= 5) {
|
||||||
long angebrocheneStundenAusserhalbDerNacht = (long) 6 - einfahrtStunde;
|
long angebrocheneStundenAusserhalbDerNacht = (long) 6 - einfahrtStunde;
|
||||||
long übrigeStundenAusserhalb = übrigenStunden ;
|
long übrigeStundenAusserhalb = übrigenStunden;
|
||||||
if (angebrocheneStundenAusserhalbDerNacht == 6) {
|
if (angebrocheneStundenAusserhalbDerNacht == 6) {
|
||||||
preis += 5 + übrigeStundenAusserhalb - 6;
|
preis += 5 + übrigeStundenAusserhalb - 6;
|
||||||
} else {
|
} else {
|
||||||
preis += übrigeStundenAusserhalb;
|
preis += übrigeStundenAusserhalb;
|
||||||
preis = preis > 15 ? 15 : preis;
|
preis = preis > 15 ? 15 : preis;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
preis = preis == 0 ? kostenPflichtigeStunden : preis;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (auto.iseAuto()) {
|
if (auto.iseAuto()) {
|
||||||
|
@ -183,19 +184,59 @@ public class Parkhaus {
|
||||||
return gewünschtesAuto;
|
return gewünschtesAuto;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Auto ausfahren(HashMap<String, Auto> autos) {
|
public Auto ausfahren(HashMap<String, Auto> autos) throws ParseException {
|
||||||
|
|
||||||
Auto ausfahrendesAuto = getAutoFromKennzeichen(autos);
|
Auto ausfahrendesAuto = getAutoFromKennzeichen(autos);
|
||||||
System.out.println("Bitte geben Sie ihre Ausfahrtzeit an: Format (dd.MM.yyyy, HH:mm)");
|
System.out.println("Bitte geben Sie ihre Ausfahrtzeit an: Format (dd.MM.yyyy, HH:mm)");
|
||||||
String ausfahrtZeit = scanner.nextLine();
|
String ausfahrtZeit = scanner.nextLine();
|
||||||
|
if (ausfahrtZeit.equals("")) {
|
||||||
|
ausfahrtZeit = new SimpleDateFormat("dd.MM.yyyy, HH:mm").format(new Date());
|
||||||
|
}
|
||||||
ausfahrendesAuto.setAusfahrtZeit(ausfahrtZeit);
|
ausfahrendesAuto.setAusfahrtZeit(ausfahrtZeit);
|
||||||
|
ausfahrendesAuto.setSaldo(ausfahrendesAuto.getSaldo() + berechnePreis(ausfahrendesAuto));
|
||||||
return ausfahrendesAuto;
|
return ausfahrendesAuto;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Auto bezahlePreisFürKennzeichen(Auto zuBezahlendesAuto) {
|
public Auto bezahlePreisFürKennzeichen(Auto zuBezahlendesAuto) {
|
||||||
|
while (true) {
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println("Bitte geben Sie Ihre korrekte 16-stellige Kreditkartennummer ein:");
|
||||||
|
String kreditkartennummer = scanner.nextLine();
|
||||||
|
if (kreditkarteIstGültig(kreditkartennummer)) {
|
||||||
|
|
||||||
zuBezahlendesAuto.setBezahlt(true);
|
zuBezahlendesAuto.setBezahlt(true);
|
||||||
|
|
||||||
|
zuBezahlendesAuto.setSaldo(0);
|
||||||
return zuBezahlendesAuto;
|
return zuBezahlendesAuto;
|
||||||
|
} else {
|
||||||
|
System.out.println("Falsche Kreditkartennummer");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean kreditkarteIstGültig(String kreditkartennummer) {
|
||||||
|
|
||||||
|
int summe = 0;
|
||||||
|
boolean verdoppeln = false;
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = kreditkartennummer.length() - 1; i >= 0; i--) {
|
||||||
|
int ziffer = Character.getNumericValue(kreditkartennummer.charAt(i));
|
||||||
|
|
||||||
|
if (verdoppeln) {
|
||||||
|
ziffer *= 2;
|
||||||
|
if (ziffer > 9) {
|
||||||
|
ziffer -= 9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
summe += ziffer;
|
||||||
|
verdoppeln = !verdoppeln;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (summe % 10 == 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue