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

View File

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

View File

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

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