Kreditkartenvalidierung hinzugefügt

main
dustineversmann 2024-10-08 02:42:55 +02:00
parent 8c32155f6d
commit 79c954d24b
3 changed files with 74 additions and 30 deletions

View File

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

View File

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

View File

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