Erweiterung und Bearbeitung des Projekts Parkhaus, u.a. Parkdauer und Parkgebühren
parent
01146077ed
commit
5270166070
|
@ -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.");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue