Erweiterung der Klassen und Funktionalitäten, .txt Dateien zu den prompts 2 und 3

devIoana
ioana 2024-10-05 10:01:10 +02:00
parent ea2de68d51
commit 9523e1a8e1
6 changed files with 151 additions and 36 deletions

View File

@ -5,7 +5,7 @@ import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Main extends UI {
public class Main{
@ -13,25 +13,53 @@ public class Main extends UI {
UI ui = new UI();
Scanner scanner = new Scanner(System.in);
PKW pkw1 = new PKW();
PKW pkw1 = new PKW();
ui.einfahrtPKW(pkw1);
System.out.println("Willkommen im Parkhaus BYE am Hauptbahnhof!\n");
while (true) {
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.");
int option = scanner.nextInt();
scanner.nextLine(); // Consume newline
switch (option) {
case 1:
ui.einfahrtPKW();
System.out.println("Schranke öffnet sich.\n");
break;
case 2:
ui.mehrereEinfahrten();
break;
case 3:
//kommt gleich
break;
case 4:
System.out.println("Geben Sie das Kennzeichen des ausfahrenden PKWs ein: ");
ui.ausfahrtPKW();
break;
case 5:
ui.zeigeVerfügbarePlätze();
break;
case 6:
System.out.println("Programm beendet.");
return;
default:
System.out.println("Ungültige Auswahl.");
System.out.println("Möchten Sie die Parkgebühren bezahlen und ausfahren?");
switch (scanner.nextLine()) {
case "ja":
ui.ausfahrtPKW(pkw1);
break;
case "Abbruch":
System.out.println("Vorgang abgebrochen.");
break;
default:
System.out.println("Ungültige Eingabe.");
}
scanner.close();
}
}
}

View File

@ -7,13 +7,11 @@ import java.util.Random;
public class PKW {
private String kennzeichen;
Date einfahrt;
//String ausfahrt;
private boolean hatBezahlt;
public PKW() {
this.kennzeichen = generiereKennzeichen();
this.einfahrt = new Date();
//this.ausfahrt = gebeAktuelleZeit();
this.hatBezahlt = false;
}

View File

@ -20,21 +20,18 @@ public class Parkhaus {
return (int) (Math.random() * 200) + 1;
}
// Methode zum Einfahren eines PKWs
public void einfahren(PKW pkw) {
if (parkendePkws.size() < kapazitaet) {
parkendePkws.add(pkw);
this.kapazitaet--;
this.belegt++;
System.out.println("PKW mit Kennzeichen " + pkw.getKennzeichen() + " ist eingefahren.");
} else {
System.out.println("Parkhaus voll.");
}
}
// Methode zum Anzeigen der verfügbaren Plätze
public void zeigeVerfügbarePlätze() {
System.out.println("Verfügbare Plätze: " + (kapazitaet - parkendePkws.size()));
}
// Methode zum Prüfen, ob das Parkhaus voll ist
public boolean istVoll() {
@ -42,6 +39,26 @@ public class Parkhaus {
}
// Methode zum Ausfahren eines PKWs anhand des Kennzeichens
public void ausfahren(String kennzeichen) {
PKW zuEntfernen = null;
for (PKW pkw : parkendePkws) {
if (pkw.getKennzeichen().equals(kennzeichen)) {
zuEntfernen = pkw;
break;
}
}
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.");
} else {
System.out.println("Kein PKW mit diesem Kennzeichen gefunden.");
}
}
public long berechneParkdauer(String kennzeichen, Date ausfahrt) {
long minDiff = 0;

View File

@ -9,15 +9,13 @@ public class UI {
public void einfahrtPKW(PKW pkw) {
public void einfahrtPKW() {
System.out.println("Willkommen im Parkhaus BYE am Hauptbahnhof!\n");
System.out.println("Verfügbare Parkplätze: " + parkhaus1.kapazitaet);
parkhaus1.einfahren(pkw);
System.out.println("Kennzeichen " + pkw.getKennzeichen() + " wurde erfasst.");
System.out.println("Einfahrt: " + pkw.getEinfahrtAlsString());
System.out.println("Schranke öffnet sich.\n");
PKW pkw = new PKW();
System.out.println("Aktuell verfügbare Parkplätze: " + parkhaus1.kapazitaet);
parkhaus1.einfahren(pkw);
System.out.println("weitere verfügbare Parkplätze: " + parkhaus1.kapazitaet);
System.out.println("Einfahrt: " + pkw.getEinfahrtAlsString());
//Debugging
// System.out.println("Verfügbar nach einfahrt: " + parkhaus1.kapazität);
@ -25,12 +23,37 @@ public class UI {
// 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.");
break;
}
public void ausfahrtPKW(PKW pkw){
System.out.println("Möchten Sie einen weiteren PKW einfahren lassen? (j/n)");
String weiter = scan.nextLine();
if (!weiter.equalsIgnoreCase("j")) {
break;
}
// PKW einfahren
einfahrtPKW();
}
}
// Methode zum Anzeigen der verfügbaren Plätze
public void zeigeVerfügbarePlätze() {
System.out.println("Verfügbare Plätze: " + parkhaus1.kapazitaet);
}
public void ausfahrtPKW(){
System.out.println("Bezahlung der Parkgebühren\n");
System.out.println("Geben Sie Ihr Kennzeichen ein: ");
String kennzeichen = scan.nextLine().toUpperCase();
parkhaus1.ausfahren(kennzeichen);
/*
Date ausfahrt = new Date();
if (kennzeichen.equals(pkw.getKennzeichen())){
//System.out.println("Ihr Kennzeichen: " + kennzeichen);
@ -42,7 +65,7 @@ public class UI {
System.out.println("Das eingegebene Kennzeichen existiert nicht, bitte erneut eingeben: ");
}
scan.close();
scan.close();*/
}

View File

@ -0,0 +1,20 @@
ich: schreibe eine Methode zum Ausfahren eines PKWs aus dem Parkhaus von einer Liste, indem man das Kennzeichen des PKWs
eingibt.
KI: hier ist ein Beispiel einer Methode zum Ausfahren eines PKWs anhand des Kennzeichens:
// Methode zum Ausfahren eines PKWs anhand des Kennzeichens
public void ausfahren(String kennzeichen) {
PKW zuEntfernen = null;
for (PKW pkw : pkwListe) {
if (pkw.getKennzeichen().equals(kennzeichen)) {
zuEntfernen = pkw;
break;
}
}
if (zuEntfernen != null) {
pkwListe.remove(zuEntfernen);
System.out.println("PKW mit Kennzeichen " + kennzeichen + " ist ausgefahren.");
} else {
System.out.println("Kein PKW mit diesem Kennzeichen gefunden.");
}
}

View File

@ -0,0 +1,29 @@
ich: wie kann ich mehrere PKW-Objekte einfahren lassen bzw. speichern
KI: Um mehrere PKW-Objekte einfahren zu lassen, kannst du eine Datenstruktur wie eine Liste (ArrayList oder LinkedList)
verwenden, die in der Parkhaus-Klasse die einzelnen PKW-Objekte speichert.
Die Parkhaus-Klasse sollte eine Liste von PKWs verwalten und Methoden zum Einfahren und Ausfahren bereitstellen:
private List<PKW> pkwListe = new ArrayList<>();
private final int maxPlätze = 180;
// Methode zum Einfahren eines PKWs
// Methode zum Ausfahren eines PKWs anhand des Kennzeichens
Du kannst in der UI-Klasse eine Schleife implementieren, die es erlaubt, mehrere PKWs nacheinander einzufahren, und
dabei jeweils ein neues PKW-Objekt erzeugen:
public void mehrereEinfahrten() {
while (true) {
if (parkhaus.istVoll()) {
System.out.println("Das Parkhaus ist voll. Keine weiteren Einfahrten möglich.");
break;
}
System.out.println("Möchten Sie einen weiteren PKW einfahren lassen? (j/n)");
String weiter = scanner.nextLine();
if (!weiter.equalsIgnoreCase("j")) {
break;
}
// PKW einfahren
einfahren();
}