Erweiterung und Bearbeitung des Projekts Parkhaus, u.a. Parkdauer und Parkgebühren

devIoana
ioana 2024-10-04 19:52:44 +02:00
parent 01146077ed
commit 5270166070
5 changed files with 191 additions and 35 deletions

View File

@ -3,14 +3,29 @@ import java.text.ParseException;
import java.util.Random;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Main extends UI {
public static void main(String[] args) {
einfahrtPKW();
ausfahrtPKW();
UI ui = new UI();
Scanner scanner = new Scanner(System.in);
ui.einfahrtPKW();
System.out.println("Möchten Sie die Parkgebühren bezahlen und ausfahren?");
switch (scanner.nextLine()) {
case "ja":
ui.ausfahrtPKW();
break;
case "Abbruch":
System.out.println("Vorgang abgebrochen.");
break;
default:
System.out.println("Ungültige Eingabe.");
}
}

View File

@ -5,22 +5,38 @@ import java.util.Date;
import java.util.Random;
public class PKW {
String kennzeichen;
String einfahrt;
private String kennzeichen;
Date einfahrt;
//String ausfahrt;
private boolean hatBezahlt;
public PKW() {
this.kennzeichen = generiereKennzeichen();
this.einfahrt = gebeAktuelleZeit();
this.einfahrt = new Date();
//this.ausfahrt = gebeAktuelleZeit();
this.hatBezahlt = false;
}
public String getKennzeichen() {
return kennzeichen;
}
public String getEinfahrt() {
public Date getEinfahrt() {
return einfahrt;
}
public String getEinfahrtAlsString(){
return gebeAktuelleZeit();
}
public boolean hatBezahlt() {
return hatBezahlt;
}
public void setBezahlt(boolean bezahlt) {
this.hatBezahlt = bezahlt;
}
public String gebeAktuelleZeit(){
var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
return sdf.format(new Date());

View File

@ -1,31 +1,51 @@
package QualifierTeil2;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.*;
public class Parkhaus {
Map<String, PKW> parkendePkws;
private List<PKW> parkendePkws;
int kapazität;
int belegt;
long parkdauer;
double parkgebühren;
public Parkhaus() {
this.parkendePkws = new HashMap<>();
this.parkendePkws = new ArrayList<>();
this.kapazität = randomAnzahlParkplätze();
this.belegt = 0;
this.parkdauer = berechneParkdauer();
this.parkgebühren = berechneParkgebuehr();
this.parkgebühren = 0;
}
public List<PKW> getParkendePkws() {
return parkendePkws;
}
public static int randomAnzahlParkplätze(){
return (int) (Math.random() * 200) + 1;
}
public void einfahren(PKW pkw) {
if (parkendePkws.size() < kapazität) {
parkendePkws.add(pkw);
this.kapazität--;
this.belegt++;
} else {
System.out.println("Parkhaus voll.");
}
}
public long berechneParkdauer(String kennzeichen, Date ausfahrt) {
/*long minDiff = 0;
for (PKW pkw : parkendePkws) {
if (pkw.getKennzeichen().equals(kennzeichen) && !pkw.hatBezahlt()) {
minDiff = (ausfahrt.getTime() - pkw.einfahrt.getTime()) / 60000;
}
}
return minDiff;*/
public static long berechneParkdauer(){
var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
Date d1 = null;
@ -36,7 +56,7 @@ public class Parkhaus {
}
Date d2 = null;
try {
d2 = sdf.parse("01.10.2024, 11:45");
d2 = sdf.parse("02.10.2024, 9:45");
} catch (ParseException e) {
throw new RuntimeException(e);
}
@ -46,8 +66,42 @@ public class Parkhaus {
return minDiff;
}
public int berechneParkgebuehr(){
long pd = this.parkdauer;
public long berechneGebühren(String kennzeichen, Date ausfahrt){
long parkdauer = berechneParkdauer(kennzeichen, ausfahrt);;
long gebuehr = 0;
// Falls die Parkdauer 15 Minuten oder weniger beträgt, ist das Parken kostenlos
if (parkdauer <= 15) {
gebuehr = 0;
parkdauer = 0;
}
if (parkdauer == 1440){
gebuehr = 1500;
parkdauer = 0;
}
if (parkdauer > 0 && parkdauer < 1440 ){
while(parkdauer > 0){
gebuehr += 100;
parkdauer-=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
}
return gebuehr;
}
}
/*public int berechneParkgebuehr(){
long pd = this.berechneParkdauer();
int gebuehr = 0;
if (pd == 1440){
@ -68,7 +122,7 @@ public class Parkhaus {
}
}
return gebuehr;
}
}
}*/

View File

@ -1,31 +1,53 @@
package QualifierTeil2;
import java.util.Date;
import java.util.Scanner;
public class UI {
static Parkhaus parkhaus1 = new Parkhaus();
static PKW pkw1 = new PKW();
private Parkhaus parkhaus1 = new Parkhaus();
private PKW pkw1 = new PKW();
private Scanner scan = new Scanner(System.in);
public static void einfahrtPKW() {
System.out.println("Willkommen im Parkhaus BYE am Hauptbahnhof!");
if(parkhaus1.belegt < parkhaus1.kapazität){
public void einfahrtPKW() {
System.out.println("Willkommen im Parkhaus BYE am Hauptbahnhof!\n");
System.out.println("Verfügbare Parkplätze: " + parkhaus1.kapazität);
parkhaus1.parkendePkws.put(pkw1.getKennzeichen(), pkw1);
parkhaus1.belegt++;
parkhaus1.einfahren(pkw1);
System.out.println("Kennzeichen " + pkw1.getKennzeichen() + " wurde erfasst.");
System.out.println("Einfahrt: " + pkw1.getEinfahrt());
System.out.println("Schranke öffnet sich.");
} else{
System.out.println("Parkhaus ist voll!");
System.out.println("Einfahrt: " + pkw1.getEinfahrtAlsString());
System.out.println("Schranke öffnet sich.\n");
//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 ausfahrtPKW(){
System.out.println("Bezahlung der Parkgebühren\n");
System.out.println("Geben Sie Ihr Kennzeichen ein: ");
String kennzeichen = scan.nextLine().toUpperCase();
Date ausfahrt = new Date();
if (kennzeichen.equals(pkw1.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.berechneGebühren(kennzeichen, ausfahrt));
} else {
System.out.println("Das eingegebene Kennzeichen existiert nicht, bitte erneut eingeben: ");
}
}
public static void ausfahrtPKW(){
System.out.println("Parkdauer in Minuten: " + parkhaus1.parkdauer);
System.out.println("Parkgebühren in Cent: " + parkhaus1.parkgebühren);
}
}

View File

@ -0,0 +1,49 @@
ich: erstelle eine methode, die ein kennzeichen generieren soll in java, indem die random Methode verwendet wird
antwort: Hier ist eine Java-Methode, die ein Kennzeichen gemäß den von dir angegebenen Regeln generiert:
Anforderungen:
2 bis 3 Buchstaben für die Stadt/Region.
1 bis 2 Buchstaben für die Fahrzeugklasse.
1 bis 4 Ziffern.
Optional ein "E" am Ende für Elektrofahrzeuge.
import java.util.Random;
public class KennzeichenGenerator {
// Methode zum Generieren des Kennzeichens
public static String kennzeichenGenerieren() {
Random random = new Random();
// 2 bis 3 Buchstaben für Stadt/Region
String stadtRegion = randomString(random, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", random.nextInt(2) + 2);
// 1 bis 2 Buchstaben für Fahrzeugklasse
String fahrzeugKlasse = randomString(random, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", random.nextInt(2) + 1);
// 1 bis 4 Ziffern für die Nummer
String nummer = randomString(random, "0123456789", random.nextInt(4) + 1);
// Optional ein "E" für Elektrofahrzeuge
String elektro = random.nextBoolean() ? "E" : "";
// Zusammenfügen des Kennzeichens
return stadtRegion + "-" + fahrzeugKlasse + " " + nummer + elektro;
}
// Hilfsmethode zur Erzeugung einer zufälligen Zeichenkette
private static String randomString(Random random, String zeichen, int laenge) {
StringBuilder sb = new StringBuilder(laenge);
for (int i = 0; i < laenge; i++) {
sb.append(zeichen.charAt(random.nextInt(zeichen.length())));
}
return sb.toString();
}
// Hauptmethode zum Testen
public static void main(String[] args) {
// Generiere und gib ein zufälliges Kennzeichen aus
String kennzeichen = kennzeichenGenerieren();
System.out.println("Generiertes Kennzeichen: " + kennzeichen);
}
}