PR2-Testate/QualifierTeil2/UI.java

108 lines
3.9 KiB
Java

package QualifierTeil2;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class UI {
private Parkhaus parkhaus1 = new Parkhaus();
private Scanner scan = new Scanner(System.in);
// Methode für die Einfahrt eines PKWs
public void einfahrtPKW() {
// Überprüfen, ob das Parkhaus voll ist
if (parkhaus1.istVoll()) {
System.out.println("Das Parkhaus ist voll. Keine weiteren Einfahrten möglich.");
return; // Methode beenden, wenn keine Parkplätze mehr verfügbar sind
}
// Eingabe von Kennzeichen; wenn leer, Kennzeichen wird automatisch generiert
System.out.println("Bitte geben Sie das Kennzeichen ein (leer lassen, um ein Kennzeichen zu generieren):");
String kennzeichen = scan.nextLine();
if (kennzeichen.isEmpty()) {
kennzeichen = parkhaus1.generiereKennzeichen();
System.out.println("Generiertes Kennzeichen: " + kennzeichen);
System.out.println(" ");
}
// manuelle oder automatische Eingabe der Einfahrtszeit
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
Date einfahrtZeit;
System.out.println("Bitte geben Sie die Einfahrtszeit ein (leer lassen, um die aktuelle Zeit zu verwenden, Format: dd.MM.yyyy, HH:mm):");
String einfahrtInput = scan.nextLine();
// Falls die Eingabe leer ist, wird die aktuelle Zeit verwendet
if (einfahrtInput.isEmpty()) {
einfahrtZeit = new Date(); // aktuelle Zeit
System.out.println("Einfahrtszeit: " + sdf.format(einfahrtZeit));
} else {
// Falls eine manuelle Zeit eingegeben wurde
try {
einfahrtZeit = sdf.parse(einfahrtInput);
System.out.println("Manuell eingegebene Einfahrtszeit: " + sdf.format(einfahrtZeit));
} catch (ParseException e) {
System.out.println("Ungültiges Format. Die aktuelle Zeit wird verwendet.");
einfahrtZeit = new Date();
System.out.println("Einfahrtszeit: " + sdf.format(einfahrtZeit));
}
}
System.out.println("Aktuell verfügbare Parkplätze: " + parkhaus1.kapazitaetVerfuegbar);
// Methodenaufruf vom Parkhaus für die Einfahrt
parkhaus1.einfahren(kennzeichen, einfahrtZeit);
System.out.println("weitere verfügbare Parkplätze: " + parkhaus1.kapazitaetVerfuegbar);
//Debugging
// System.out.println("belegt: " + parkhaus1.belegt);
// System.out.println("Liste pkws: " + parkhaus1.getParkendePkws());
}
// Methode für die Einfahrt von mehreren PKWs
public void mehrereEinfahrten() {
while (true) {
if (parkhaus1.istVoll()) {
System.out.println("Das Parkhaus ist voll. Keine weiteren Einfahrten möglich.");
break;
}
// PKW einfahren
einfahrtPKW();
// Frage, ob der Benutzer weitere PKWs einfahren lassen möchte
System.out.println("Möchten Sie einen weiteren PKW einfahren lassen? (j/n)");
String weiter = scan.nextLine();
// Wenn der Benutzer "n" eingibt, wird die Schleife beendet
if (!weiter.equalsIgnoreCase("j")) {
break;
}
}
}
// Methode zum Anzeigen der verfügbaren Plätze
public void zeigeVerfügbarePlätze() {
System.out.println("Verfügbare Plätze: " + parkhaus1.kapazitaetVerfuegbar);
System.out.println(" ");
}
// Methode für die Ausfahrt und Bezahlung
public void ausfahrtPKW() {
System.out.println("Geben Sie das Kennzeichen des ausfahrenden PKWs ein: ");
String kennzeichen = scan.nextLine().toUpperCase();
//Methodenaufruf vom Parkhaus für die Ausfahrt
parkhaus1.ausfahren(kennzeichen);
}
}