Erweiterung der Klassen und Funktionalitäten, .txt Dateien zu den prompt4
parent
9523e1a8e1
commit
1de5a38609
|
@ -13,7 +13,6 @@ public class Main{
|
|||
|
||||
UI ui = new UI();
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
PKW pkw1 = new PKW();
|
||||
|
||||
System.out.println("Willkommen im Parkhaus BYE am Hauptbahnhof!\n");
|
||||
|
||||
|
@ -22,10 +21,9 @@ public class Main{
|
|||
System.out.println("Wählen Sie eine Option:");
|
||||
System.out.println("1. PKW einfahren");
|
||||
System.out.println("2. Mehrere PKWs einfahren");
|
||||
System.out.println("3. Parkgebühren berechnen");
|
||||
System.out.println("4. Parkgbühren bezahlen und ausfahren");
|
||||
System.out.println("5. Verfügbare Parkplätze anzeigen");
|
||||
System.out.println("6. Beenden.");
|
||||
System.out.println("3. Parkgbühren bezahlen und ausfahren");
|
||||
System.out.println("4. Verfügbare Parkplätze anzeigen");
|
||||
System.out.println("5. Beenden");
|
||||
|
||||
int option = scanner.nextInt();
|
||||
scanner.nextLine(); // Consume newline
|
||||
|
@ -41,20 +39,17 @@ public class Main{
|
|||
break;
|
||||
|
||||
case 3:
|
||||
//kommt gleich
|
||||
break;
|
||||
|
||||
case 4:
|
||||
System.out.println("Geben Sie das Kennzeichen des ausfahrenden PKWs ein: ");
|
||||
ui.ausfahrtPKW();
|
||||
break;
|
||||
|
||||
case 5:
|
||||
case 4:
|
||||
ui.zeigeVerfügbarePlätze();
|
||||
break;
|
||||
case 6:
|
||||
|
||||
case 5:
|
||||
System.out.println("Programm beendet.");
|
||||
return;
|
||||
|
||||
default:
|
||||
System.out.println("Ungültige Auswahl.");
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
package QualifierTeil2;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
public class Parkhaus {
|
||||
|
@ -48,6 +50,7 @@ public class Parkhaus {
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (zuEntfernen != null) {
|
||||
parkendePkws.remove(zuEntfernen);
|
||||
this.kapazitaet++;
|
||||
|
@ -60,58 +63,67 @@ public class Parkhaus {
|
|||
|
||||
|
||||
public long berechneParkdauer(String kennzeichen, Date ausfahrt) {
|
||||
long minDiff = 0;
|
||||
//long minDiff = 0;
|
||||
|
||||
for (PKW pkw : parkendePkws) {
|
||||
/*for (PKW pkw : parkendePkws) {
|
||||
if (pkw.getKennzeichen().equals(kennzeichen) && !pkw.hatBezahlt()) {
|
||||
minDiff = (ausfahrt.getTime() - pkw.einfahrt.getTime()) / 60000;
|
||||
}
|
||||
}
|
||||
return minDiff;
|
||||
return minDiff;*/
|
||||
|
||||
//Debugging mit selbst ausgewählten Zeiten
|
||||
/*var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
|
||||
var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
|
||||
|
||||
Date d1 = null;
|
||||
try {
|
||||
d1 = sdf.parse("01.10.2024, 9:45");
|
||||
d1 = sdf.parse("01.10.2024, 10:00");
|
||||
} catch (ParseException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
Date d2 = null;
|
||||
try {
|
||||
d2 = sdf.parse("02.10.2024, 9:45");
|
||||
d2 = sdf.parse("01.10.2024, 11:00");
|
||||
} catch (ParseException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
long minDiff = (d2.getTime() - d1.getTime()) / 60000;
|
||||
|
||||
return minDiff;*/
|
||||
return minDiff;
|
||||
}
|
||||
|
||||
public long berechneGebuehren(String kennzeichen, Date ausfahrt){
|
||||
long parkdauer = berechneParkdauer(kennzeichen, ausfahrt);;
|
||||
long 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) {
|
||||
gebuehr = 0;
|
||||
parkdauer = 0;
|
||||
gebuehr =0;
|
||||
|
||||
}
|
||||
|
||||
if (parkdauer == 1440){
|
||||
// Parkdauer nach den 15 Minuten
|
||||
long parkdauerOhneFreiminuten = parkdauer - 15;
|
||||
|
||||
// Tageslimit: Maximal 15 Euro pro Tag
|
||||
if (parkdauerOhneFreiminuten == 1440){
|
||||
gebuehr = 1500;
|
||||
parkdauer = 0;
|
||||
parkdauerOhneFreiminuten = 0;
|
||||
|
||||
}
|
||||
|
||||
if (parkdauer > 0 && parkdauer < 1440 ){
|
||||
while(parkdauer > 0){
|
||||
// 1 Euro pro angefangene Stunde
|
||||
if (parkdauerOhneFreiminuten > 0 && parkdauerOhneFreiminuten < 1440 ){
|
||||
while(parkdauerOhneFreiminuten > 0){
|
||||
gebuehr += 100;
|
||||
parkdauer-=60;
|
||||
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
|
||||
|
@ -121,6 +133,27 @@ public class Parkhaus {
|
|||
|
||||
}
|
||||
|
||||
// Methode zur Überprüfung der Kreditkartennummer mit dem Luhn-Algorithmus
|
||||
public boolean pruefeKreditkarte(String kreditkartenNummer) {
|
||||
if (kreditkartenNummer.length() != 16 || !kreditkartenNummer.startsWith("4")) {
|
||||
return false; // Ungültige Karte
|
||||
}
|
||||
|
||||
int sum = 0;
|
||||
boolean alternate = false;
|
||||
for (int i = kreditkartenNummer.length() - 1; i >= 0; i--) {
|
||||
int n = Integer.parseInt(kreditkartenNummer.substring(i, i + 1));
|
||||
if (alternate) {
|
||||
n *= 2;
|
||||
if (n > 9) {
|
||||
n = (n % 10) + 1;
|
||||
}
|
||||
}
|
||||
sum += n;
|
||||
alternate = !alternate;
|
||||
}
|
||||
return (sum % 10 == 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -18,12 +18,12 @@ public class UI {
|
|||
System.out.println("Einfahrt: " + pkw.getEinfahrtAlsString());
|
||||
|
||||
//Debugging
|
||||
// System.out.println("Verfügbar nach einfahrt: " + parkhaus1.kapazität);
|
||||
// System.out.println("belegt: " + parkhaus1.belegt);
|
||||
// System.out.println("Liste pkws: " + parkhaus1.getParkendePkws());
|
||||
}
|
||||
|
||||
public void mehrereEinfahrten(){
|
||||
|
||||
while (true) {
|
||||
if (parkhaus1.istVoll()) {
|
||||
System.out.println("Das Parkhaus ist voll. Keine weiteren Einfahrten möglich.");
|
||||
|
@ -39,7 +39,6 @@ public class UI {
|
|||
// PKW einfahren
|
||||
einfahrtPKW();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Methode zum Anzeigen der verfügbaren Plätze
|
||||
|
@ -47,25 +46,26 @@ public class UI {
|
|||
System.out.println("Verfügbare Plätze: " + parkhaus1.kapazitaet);
|
||||
}
|
||||
|
||||
|
||||
public void ausfahrtPKW(){
|
||||
|
||||
String kennzeichen = scan.nextLine().toUpperCase();
|
||||
parkhaus1.ausfahren(kennzeichen);
|
||||
|
||||
/*
|
||||
public void ausfahrtPKW(){
|
||||
Date ausfahrt = new Date();
|
||||
if (kennzeichen.equals(pkw.getKennzeichen())){
|
||||
//System.out.println("Ihr Kennzeichen: " + kennzeichen);
|
||||
|
||||
System.out.println("Parkdauer in Minuten: " + parkhaus1.berechneParkdauer(kennzeichen, ausfahrt));
|
||||
System.out.println("Parkgebühren in Cent: " + parkhaus1.berechneGebuehren(kennzeichen, ausfahrt));
|
||||
System.out.println("Geben Sie das Kennzeichen des ausfahrenden PKWs ein: ");
|
||||
String kennzeichen = scan.nextLine().toUpperCase();
|
||||
|
||||
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();
|
||||
|
||||
// Prüfziffer der Kreditkarte validieren
|
||||
if (parkhaus1.pruefeKreditkarte(kreditkartennummer)) {
|
||||
System.out.println("Die Kreditkartennummer ist gültig.");
|
||||
parkhaus1.ausfahren(kennzeichen);
|
||||
} else {
|
||||
System.out.println("Das eingegebene Kennzeichen existiert nicht, bitte erneut eingeben: ");
|
||||
System.out.println("Ungültige Kreditkartennummer. Zahlung fehlgeschlagen.");
|
||||
|
||||
}
|
||||
|
||||
scan.close();*/
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
ich: schreibe eine methode zur Validierung einer 16-stellige Visa Kreditkartennummer nach Luhn-Algorithmus
|
||||
KI: Hier ist eine Lösung, um die Methode zur Eingabe und Überprüfung der 16-stelligen Kreditkartennummer basierend auf
|
||||
dem Luhn-Algorithmus in deiner Parkhaus-Software zu implementieren:
|
||||
|
||||
// Methode zur Überprüfung der 16-stelligen VISA-Kreditkartennummer
|
||||
public static boolean pruefeKreditkartenNummer(String kreditkartenNummer) {
|
||||
if (kreditkartenNummer.length() != 16 || !kreditkartenNummer.matches("\\d+")) {
|
||||
return false; // Überprüft, ob die Nummer 16-stellig ist und nur Ziffern enthält
|
||||
}
|
||||
|
||||
int sum = 0;
|
||||
boolean alternate = false;
|
||||
|
||||
// Luhn-Algorithmus von rechts nach links anwenden
|
||||
for (int i = kreditkartenNummer.length() - 1; i >= 0; i--) {
|
||||
int n = Integer.parseInt(kreditkartenNummer.substring(i, i + 1));
|
||||
if (alternate) {
|
||||
n *= 2;
|
||||
if (n > 9) {
|
||||
n -= 9; // Wenn das Ergebnis größer als 9 ist, subtrahiere 9
|
||||
}
|
||||
}
|
||||
sum += n;
|
||||
alternate = !alternate;
|
||||
}
|
||||
|
||||
// Wenn die Summe durch 10 teilbar ist, ist die Kreditkartennummer gültig
|
||||
return (sum % 10 == 0);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
// Beispiel für eine gültige 16-stellige VISA-Kreditkartennummer
|
||||
String kreditkartenNummer = "4539148803436467";
|
||||
|
||||
if (pruefeKreditkartenNummer(kreditkartenNummer)) {
|
||||
System.out.println("Die Kreditkartennummer ist gültig.");
|
||||
} else {
|
||||
System.out.println("Die Kreditkartennummer ist ungültig.");
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue