Erweiterung der Klassen und Funktionalitäten, .txt Dateien zu den prompt4

devIoana
ioana 2024-10-05 11:38:30 +02:00
parent 9523e1a8e1
commit 1de5a38609
4 changed files with 112 additions and 43 deletions

View File

@ -13,7 +13,6 @@ public class Main{
UI ui = new UI(); UI ui = new UI();
Scanner scanner = new Scanner(System.in); Scanner scanner = new Scanner(System.in);
PKW pkw1 = new PKW();
System.out.println("Willkommen im Parkhaus BYE am Hauptbahnhof!\n"); 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("Wählen Sie eine Option:");
System.out.println("1. PKW einfahren"); System.out.println("1. PKW einfahren");
System.out.println("2. Mehrere PKWs einfahren"); System.out.println("2. Mehrere PKWs einfahren");
System.out.println("3. Parkgebühren berechnen"); System.out.println("3. Parkgbühren bezahlen und ausfahren");
System.out.println("4. Parkgbühren bezahlen und ausfahren"); System.out.println("4. Verfügbare Parkplätze anzeigen");
System.out.println("5. Verfügbare Parkplätze anzeigen"); System.out.println("5. Beenden");
System.out.println("6. Beenden.");
int option = scanner.nextInt(); int option = scanner.nextInt();
scanner.nextLine(); // Consume newline scanner.nextLine(); // Consume newline
@ -41,20 +39,17 @@ public class Main{
break; break;
case 3: case 3:
//kommt gleich
break;
case 4:
System.out.println("Geben Sie das Kennzeichen des ausfahrenden PKWs ein: ");
ui.ausfahrtPKW(); ui.ausfahrtPKW();
break; break;
case 5: case 4:
ui.zeigeVerfügbarePlätze(); ui.zeigeVerfügbarePlätze();
break; break;
case 6:
case 5:
System.out.println("Programm beendet."); System.out.println("Programm beendet.");
return; return;
default: default:
System.out.println("Ungültige Auswahl."); System.out.println("Ungültige Auswahl.");

View File

@ -1,4 +1,6 @@
package QualifierTeil2; package QualifierTeil2;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
public class Parkhaus { public class Parkhaus {
@ -48,6 +50,7 @@ public class Parkhaus {
break; break;
} }
} }
if (zuEntfernen != null) { if (zuEntfernen != null) {
parkendePkws.remove(zuEntfernen); parkendePkws.remove(zuEntfernen);
this.kapazitaet++; this.kapazitaet++;
@ -60,58 +63,67 @@ public class Parkhaus {
public long berechneParkdauer(String kennzeichen, Date ausfahrt) { 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()) { if (pkw.getKennzeichen().equals(kennzeichen) && !pkw.hatBezahlt()) {
minDiff = (ausfahrt.getTime() - pkw.einfahrt.getTime()) / 60000; minDiff = (ausfahrt.getTime() - pkw.einfahrt.getTime()) / 60000;
} }
} }
return minDiff; return minDiff;*/
//Debugging mit selbst ausgewählten Zeiten //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; Date d1 = null;
try { try {
d1 = sdf.parse("01.10.2024, 9:45"); d1 = sdf.parse("01.10.2024, 10:00");
} catch (ParseException e) { } catch (ParseException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
Date d2 = null; Date d2 = null;
try { try {
d2 = sdf.parse("02.10.2024, 9:45"); d2 = sdf.parse("01.10.2024, 11:00");
} catch (ParseException e) { } catch (ParseException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
long minDiff = (d2.getTime() - d1.getTime()) / 60000; long minDiff = (d2.getTime() - d1.getTime()) / 60000;
return minDiff;*/ return minDiff;
} }
public long berechneGebuehren(String kennzeichen, Date ausfahrt){ public double berechneGebuehren(String kennzeichen, Date ausfahrt){
long parkdauer = berechneParkdauer(kennzeichen, ausfahrt);; long parkdauer = berechneParkdauer(kennzeichen, ausfahrt);
long gebuehr = 0; double gebuehr = 0;
// Falls die Parkdauer 15 Minuten oder weniger beträgt, ist das Parken kostenlos // Falls die Parkdauer 15 Minuten oder weniger beträgt, ist das Parken kostenlos
if (parkdauer <= 15) { if (parkdauer <= 15) {
gebuehr = 0;
parkdauer = 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; gebuehr = 1500;
parkdauer = 0; parkdauerOhneFreiminuten = 0;
} }
if (parkdauer > 0 && parkdauer < 1440 ){ // 1 Euro pro angefangene Stunde
while(parkdauer > 0){ if (parkdauerOhneFreiminuten > 0 && parkdauerOhneFreiminuten < 1440 ){
while(parkdauerOhneFreiminuten > 0){
gebuehr += 100; gebuehr += 100;
parkdauer-=60; parkdauerOhneFreiminuten-=60;
} }
} }
// Prüfe, ob es sich um ein E-Auto handelt (Kennzeichen endet mit "E") // Prüfe, ob es sich um ein E-Auto handelt (Kennzeichen endet mit "E")
if (kennzeichen.endsWith("E")) { if (kennzeichen.endsWith("E")) {
gebuehr *= 0.8; // 20% Rabatt für E-Autos 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);
}
} }

View File

@ -18,12 +18,12 @@ public class UI {
System.out.println("Einfahrt: " + pkw.getEinfahrtAlsString()); System.out.println("Einfahrt: " + pkw.getEinfahrtAlsString());
//Debugging //Debugging
// System.out.println("Verfügbar nach einfahrt: " + parkhaus1.kapazität);
// System.out.println("belegt: " + parkhaus1.belegt); // System.out.println("belegt: " + parkhaus1.belegt);
// System.out.println("Liste pkws: " + parkhaus1.getParkendePkws()); // System.out.println("Liste pkws: " + parkhaus1.getParkendePkws());
} }
public void mehrereEinfahrten(){ public void mehrereEinfahrten(){
while (true) { while (true) {
if (parkhaus1.istVoll()) { if (parkhaus1.istVoll()) {
System.out.println("Das Parkhaus ist voll. Keine weiteren Einfahrten möglich."); System.out.println("Das Parkhaus ist voll. Keine weiteren Einfahrten möglich.");
@ -39,7 +39,6 @@ public class UI {
// PKW einfahren // PKW einfahren
einfahrtPKW(); einfahrtPKW();
} }
} }
// Methode zum Anzeigen der verfügbaren Plätze // Methode zum Anzeigen der verfügbaren Plätze
@ -47,25 +46,26 @@ public class UI {
System.out.println("Verfügbare Plätze: " + parkhaus1.kapazitaet); System.out.println("Verfügbare Plätze: " + parkhaus1.kapazitaet);
} }
public void ausfahrtPKW(){ public void ausfahrtPKW(){
String kennzeichen = scan.nextLine().toUpperCase();
parkhaus1.ausfahren(kennzeichen);
/*
Date ausfahrt = new Date(); Date ausfahrt = new Date();
if (kennzeichen.equals(pkw.getKennzeichen())){
//System.out.println("Ihr Kennzeichen: " + kennzeichen); 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("Parkdauer in Minuten: " + parkhaus1.berechneParkdauer(kennzeichen, ausfahrt));
System.out.println("Parkgebühren in Cent: " + parkhaus1.berechneGebuehren(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 { } else {
System.out.println("Das eingegebene Kennzeichen existiert nicht, bitte erneut eingeben: "); System.out.println("Ungültige Kreditkartennummer. Zahlung fehlgeschlagen.");
} }
scan.close();*/
} }

View File

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