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.util.Random;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
public class Main extends UI {
|
public class Main extends UI {
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
||||||
einfahrtPKW();
|
UI ui = new UI();
|
||||||
ausfahrtPKW();
|
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;
|
import java.util.Random;
|
||||||
|
|
||||||
public class PKW {
|
public class PKW {
|
||||||
String kennzeichen;
|
private String kennzeichen;
|
||||||
String einfahrt;
|
Date einfahrt;
|
||||||
|
//String ausfahrt;
|
||||||
|
private boolean hatBezahlt;
|
||||||
|
|
||||||
public PKW() {
|
public PKW() {
|
||||||
this.kennzeichen = generiereKennzeichen();
|
this.kennzeichen = generiereKennzeichen();
|
||||||
this.einfahrt = gebeAktuelleZeit();
|
this.einfahrt = new Date();
|
||||||
|
//this.ausfahrt = gebeAktuelleZeit();
|
||||||
|
this.hatBezahlt = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getKennzeichen() {
|
public String getKennzeichen() {
|
||||||
return kennzeichen;
|
return kennzeichen;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getEinfahrt() {
|
public Date getEinfahrt() {
|
||||||
return einfahrt;
|
return einfahrt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getEinfahrtAlsString(){
|
||||||
|
return gebeAktuelleZeit();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hatBezahlt() {
|
||||||
|
return hatBezahlt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBezahlt(boolean bezahlt) {
|
||||||
|
this.hatBezahlt = bezahlt;
|
||||||
|
}
|
||||||
|
|
||||||
public String gebeAktuelleZeit(){
|
public String gebeAktuelleZeit(){
|
||||||
var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
|
var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
|
||||||
return sdf.format(new Date());
|
return sdf.format(new Date());
|
||||||
|
|
|
@ -1,31 +1,51 @@
|
||||||
package QualifierTeil2;
|
package QualifierTeil2;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class Parkhaus {
|
public class Parkhaus {
|
||||||
Map<String, PKW> parkendePkws;
|
private List<PKW> parkendePkws;
|
||||||
int kapazität;
|
int kapazität;
|
||||||
int belegt;
|
int belegt;
|
||||||
long parkdauer;
|
|
||||||
double parkgebühren;
|
double parkgebühren;
|
||||||
|
|
||||||
public Parkhaus() {
|
public Parkhaus() {
|
||||||
this.parkendePkws = new HashMap<>();
|
this.parkendePkws = new ArrayList<>();
|
||||||
this.kapazität = randomAnzahlParkplätze();
|
this.kapazität = randomAnzahlParkplätze();
|
||||||
this.belegt = 0;
|
this.belegt = 0;
|
||||||
this.parkdauer = berechneParkdauer();
|
this.parkgebühren = 0;
|
||||||
this.parkgebühren = berechneParkgebuehr();
|
}
|
||||||
|
|
||||||
|
public List<PKW> getParkendePkws() {
|
||||||
|
return parkendePkws;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int randomAnzahlParkplätze(){
|
public static int randomAnzahlParkplätze(){
|
||||||
return (int) (Math.random() * 200) + 1;
|
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");
|
var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
|
||||||
|
|
||||||
Date d1 = null;
|
Date d1 = null;
|
||||||
|
@ -36,7 +56,7 @@ public class Parkhaus {
|
||||||
}
|
}
|
||||||
Date d2 = null;
|
Date d2 = null;
|
||||||
try {
|
try {
|
||||||
d2 = sdf.parse("01.10.2024, 11:45");
|
d2 = sdf.parse("02.10.2024, 9:45");
|
||||||
} catch (ParseException e) {
|
} catch (ParseException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
@ -46,8 +66,42 @@ public class Parkhaus {
|
||||||
return minDiff;
|
return minDiff;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int berechneParkgebuehr(){
|
public long berechneGebühren(String kennzeichen, Date ausfahrt){
|
||||||
long pd = this.parkdauer;
|
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;
|
int gebuehr = 0;
|
||||||
|
|
||||||
if (pd == 1440){
|
if (pd == 1440){
|
||||||
|
@ -68,7 +122,7 @@ public class Parkhaus {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return gebuehr;
|
return gebuehr;
|
||||||
}
|
}*/
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,31 +1,53 @@
|
||||||
package QualifierTeil2;
|
package QualifierTeil2;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
public class UI {
|
public class UI {
|
||||||
static Parkhaus parkhaus1 = new Parkhaus();
|
private Parkhaus parkhaus1 = new Parkhaus();
|
||||||
static PKW pkw1 = new PKW();
|
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!");
|
public void einfahrtPKW() {
|
||||||
if(parkhaus1.belegt < parkhaus1.kapazität){
|
|
||||||
|
System.out.println("Willkommen im Parkhaus BYE am Hauptbahnhof!\n");
|
||||||
|
|
||||||
System.out.println("Verfügbare Parkplätze: " + parkhaus1.kapazität);
|
System.out.println("Verfügbare Parkplätze: " + parkhaus1.kapazität);
|
||||||
parkhaus1.parkendePkws.put(pkw1.getKennzeichen(), pkw1);
|
parkhaus1.einfahren(pkw1);
|
||||||
parkhaus1.belegt++;
|
|
||||||
System.out.println("Kennzeichen " + pkw1.getKennzeichen() + " wurde erfasst.");
|
System.out.println("Kennzeichen " + pkw1.getKennzeichen() + " wurde erfasst.");
|
||||||
System.out.println("Einfahrt: " + pkw1.getEinfahrt());
|
System.out.println("Einfahrt: " + pkw1.getEinfahrtAlsString());
|
||||||
System.out.println("Schranke öffnet sich.");
|
System.out.println("Schranke öffnet sich.\n");
|
||||||
} else{
|
|
||||||
System.out.println("Parkhaus ist voll!");
|
//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