Erweiterung der Klassen und Funktionalitäten, u.a. Methode zur Überprüfung der Kreditkartennummer
parent
1de5a38609
commit
413c10a2c0
|
@ -6,13 +6,15 @@ import java.util.Random;
|
|||
|
||||
public class PKW {
|
||||
private String kennzeichen;
|
||||
Date einfahrt;
|
||||
Date einfahrt;
|
||||
private boolean hatBezahlt;
|
||||
double gebuehrenkonto;
|
||||
|
||||
public PKW() {
|
||||
this.kennzeichen = generiereKennzeichen();
|
||||
this.einfahrt = new Date();
|
||||
this.hatBezahlt = false;
|
||||
this.gebuehrenkonto = 0;
|
||||
}
|
||||
|
||||
public String getKennzeichen() {
|
||||
|
@ -27,6 +29,14 @@ public class PKW {
|
|||
return gebeAktuelleZeit();
|
||||
}
|
||||
|
||||
public double getGebuehrenkonto() {
|
||||
return gebuehrenkonto;
|
||||
}
|
||||
|
||||
public void setGebuehrenkonto(double gebuehrenkonto) {
|
||||
this.gebuehrenkonto = gebuehrenkonto;
|
||||
}
|
||||
|
||||
public boolean hatBezahlt() {
|
||||
return hatBezahlt;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
package QualifierTeil2;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
@ -18,7 +19,7 @@ public class Parkhaus {
|
|||
return parkendePkws;
|
||||
}
|
||||
|
||||
public static int randomAnzahlParkplätze(){
|
||||
public static int randomAnzahlParkplätze() {
|
||||
return (int) (Math.random() * 200) + 1;
|
||||
}
|
||||
|
||||
|
@ -52,10 +53,34 @@ public class Parkhaus {
|
|||
}
|
||||
|
||||
if (zuEntfernen != null) {
|
||||
parkendePkws.remove(zuEntfernen);
|
||||
this.kapazitaet++;
|
||||
this.belegt--;
|
||||
System.out.println("PKW mit Kennzeichen " + kennzeichen + " hat die Gebühren bezahlt und darf rausfahren.");
|
||||
// Berechnung der Gebühren
|
||||
double gebuehren = berechneGebuehren(kennzeichen, new Date()); // Nimmt die aktuelle Zeit an
|
||||
|
||||
if (gebuehren > 0) {
|
||||
// Kreditkartenvalidierung vor Ausfahrt
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
System.out.println("Bitte geben Sie Ihre 16-stellige VISA-Kreditkartennummer ein:");
|
||||
String kreditkartenNummer = scanner.nextLine();
|
||||
|
||||
if (pruefeKreditkarte(kreditkartenNummer)) {
|
||||
System.out.println("Zahlung erfolgreich. Sie dürfen ausfahren.");
|
||||
zuEntfernen.setGebuehrenkonto(0); // Gebühren auf 0 setzen
|
||||
parkendePkws.remove(zuEntfernen);
|
||||
this.kapazitaet++;
|
||||
this.belegt--;
|
||||
System.out.println("PKW mit Kennzeichen " + kennzeichen + " hat die Gebühren bezahlt und darf rausfahren.");
|
||||
} else {
|
||||
System.out.println("Ungültige Kreditkartennummer. Zahlung fehlgeschlagen. Ausfahrt verweigert.");
|
||||
zuEntfernen.setGebuehrenkonto(gebuehren);
|
||||
System.out.println("Gebührenkonto: " + zuEntfernen.getGebuehrenkonto());
|
||||
}
|
||||
} else {
|
||||
// Gebührenfrei (unter 15 Minuten oder andere Ausnahme)
|
||||
parkendePkws.remove(zuEntfernen);
|
||||
this.kapazitaet++;
|
||||
this.belegt--;
|
||||
System.out.println("PKW mit Kennzeichen " + kennzeichen + " darf gebührenfrei ausfahren.");
|
||||
}
|
||||
} else {
|
||||
System.out.println("Kein PKW mit diesem Kennzeichen gefunden.");
|
||||
}
|
||||
|
@ -93,46 +118,45 @@ public class Parkhaus {
|
|||
return minDiff;
|
||||
}
|
||||
|
||||
public double berechneGebuehren(String kennzeichen, Date ausfahrt){
|
||||
long parkdauer = berechneParkdauer(kennzeichen, ausfahrt);
|
||||
double gebuehr = 0;
|
||||
public double berechneGebuehren(String kennzeichen, Date ausfahrt) {
|
||||
long parkdauer = berechneParkdauer(kennzeichen, ausfahrt);
|
||||
double gebuehr = 0;
|
||||
|
||||
// Falls die Parkdauer 15 Minuten oder weniger beträgt, ist das Parken kostenlos
|
||||
if (parkdauer <= 15) {
|
||||
parkdauer = 0;
|
||||
gebuehr =0;
|
||||
|
||||
}
|
||||
|
||||
// Parkdauer nach den 15 Minuten
|
||||
long parkdauerOhneFreiminuten = parkdauer - 15;
|
||||
|
||||
// Tageslimit: Maximal 15 Euro pro Tag
|
||||
if (parkdauerOhneFreiminuten == 1440){
|
||||
gebuehr = 1500;
|
||||
parkdauerOhneFreiminuten = 0;
|
||||
|
||||
}
|
||||
|
||||
// 1 Euro pro angefangene Stunde
|
||||
if (parkdauerOhneFreiminuten > 0 && parkdauerOhneFreiminuten < 1440 ){
|
||||
while(parkdauerOhneFreiminuten > 0){
|
||||
gebuehr += 100;
|
||||
parkdauerOhneFreiminuten-=60;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Prüfe, ob es sich um ein E-Auto handelt (Kennzeichen endet mit "E")
|
||||
if (kennzeichen.endsWith("E")) {
|
||||
gebuehr *= 0.8; // 20% Rabatt für E-Autos
|
||||
}
|
||||
|
||||
return gebuehr;
|
||||
// Falls die Parkdauer 15 Minuten oder weniger beträgt, ist das Parken kostenlos
|
||||
if (parkdauer <= 15) {
|
||||
parkdauer = 0;
|
||||
gebuehr = 0;
|
||||
|
||||
}
|
||||
|
||||
// Parkdauer nach den 15 Minuten
|
||||
long parkdauerOhneFreiminuten = parkdauer - 15;
|
||||
|
||||
// Tageslimit: Maximal 15 Euro pro Tag
|
||||
if (parkdauerOhneFreiminuten == 1440) {
|
||||
gebuehr = 1500;
|
||||
parkdauerOhneFreiminuten = 0;
|
||||
|
||||
}
|
||||
|
||||
// 1 Euro pro angefangene Stunde
|
||||
if (parkdauerOhneFreiminuten > 0 && parkdauerOhneFreiminuten < 1440) {
|
||||
while (parkdauerOhneFreiminuten > 0) {
|
||||
gebuehr += 100;
|
||||
parkdauerOhneFreiminuten -= 60;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Prüfe, ob es sich um ein E-Auto handelt (Kennzeichen endet mit "E")
|
||||
if (kennzeichen.endsWith("E")) {
|
||||
gebuehr *= 0.8; // 20% Rabatt für E-Autos
|
||||
}
|
||||
|
||||
return gebuehr;
|
||||
|
||||
}
|
||||
|
||||
// Methode zur Überprüfung der Kreditkartennummer mit dem Luhn-Algorithmus
|
||||
public boolean pruefeKreditkarte(String kreditkartenNummer) {
|
||||
if (kreditkartenNummer.length() != 16 || !kreditkartenNummer.startsWith("4")) {
|
||||
|
@ -155,7 +179,7 @@ public class Parkhaus {
|
|||
return (sum % 10 == 0);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -54,17 +54,8 @@ public class UI {
|
|||
|
||||
System.out.println("Parkdauer in Minuten: " + parkhaus1.berechneParkdauer(kennzeichen, ausfahrt));
|
||||
System.out.println("Parkgebühren in Cent: " + parkhaus1.berechneGebuehren(kennzeichen, ausfahrt));
|
||||
System.out.print("Bitte geben Sie Ihre 16-stellige VISA-Kreditkartennummer ein: ");
|
||||
String kreditkartennummer = scan.nextLine();
|
||||
parkhaus1.ausfahren(kennzeichen);
|
||||
|
||||
// Prüfziffer der Kreditkarte validieren
|
||||
if (parkhaus1.pruefeKreditkarte(kreditkartennummer)) {
|
||||
System.out.println("Die Kreditkartennummer ist gültig.");
|
||||
parkhaus1.ausfahren(kennzeichen);
|
||||
} else {
|
||||
System.out.println("Ungültige Kreditkartennummer. Zahlung fehlgeschlagen.");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue