Erweiterung der Klassen um weitere Methoden und Attributen

devIoana
ioana 2024-10-03 12:51:02 +02:00
parent adfe0e333a
commit ba09391490
4 changed files with 166 additions and 1 deletions

View File

@ -1,4 +1,30 @@
package QualifierTeil2;
import java.text.ParseException;
import java.util.Random;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main extends UI {
public static void main(String[] args) throws ParseException {
einfahrtPKW();
ausfahrtPKW();
}
// --------------------------------Hilfsmethoden--------------------------------------
public class Main {
}

View File

@ -1,4 +1,54 @@
package QualifierTeil2;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
public class PKW {
String kennzeichen;
String einfahrt;
String ausfahrt;
public PKW() {
this.kennzeichen = generiereKennzeichen();
this.einfahrt = gebeAktuelleZeit();
this.ausfahrt = gebeAktuelleZeit();
}
public String gebeAktuelleZeit(){
var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
return sdf.format(new Date());
}
public String generiereKennzeichen(){
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();
}
}

View File

@ -1,4 +1,68 @@
package QualifierTeil2;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Parkhaus {
int anzahlParkplätze;
long parkdauer;
double parkgebühren;
public Parkhaus() {
this.anzahlParkplätze = randomAnzahlParkplätze();
this.parkdauer = berechneParkdauer();
this.parkgebühren = berechneParkgebuehr();
}
public static int randomAnzahlParkplätze(){
return (int) (Math.random() * 200) + 1;
}
public static long berechneParkdauer(){
var sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
Date d1 = null;
try {
d1 = sdf.parse("01.10.2024, 9:45");
} catch (ParseException e) {
throw new RuntimeException(e);
}
Date d2 = null;
try {
d2 = sdf.parse("01.10.2024, 11:45");
} catch (ParseException e) {
throw new RuntimeException(e);
}
long minDiff = (d2.getTime() - d1.getTime()) / 60000;
return minDiff;
}
public int berechneParkgebuehr(){
long pd = this.parkdauer;
int gebuehr = 0;
if (pd == 1440){
gebuehr = 1500;
pd = 0;
}
//Wenn zu zahlenden Parkdauer vorhanden ist, sind die ersten 15 min kostenlos
if (pd > 0){
pd = pd - 15;
}
//Wenn noch zu zahlenden Parkdauer vorhanden ist, wird der Rest mit 1€ pro 1h angerechnet.
if (pd > 0){
while (pd > 0) {
gebuehr += 100;
pd -= 60;
}
}
return gebuehr;
}
}

View File

@ -0,0 +1,25 @@
package QualifierTeil2;
import java.text.ParseException;
public class UI {
static Parkhaus parkhaus1 = new Parkhaus();
static PKW pkw1 = new PKW();
public static void einfahrtPKW() {
System.out.println("Willkommen im Parkhaus BYE am Hauptbahnhof!");
System.out.println("Kennzeichen " + pkw1.kennzeichen + " wurde erfasst.");
System.out.println("Einfahrt: " + pkw1.einfahrt);
System.out.println("Schranke öffnet sich.");
System.out.println("Verfügbare Parkplätze: " + parkhaus1.anzahlParkplätze);
}
public static void ausfahrtPKW(){
System.out.println("Parkdauer in Minuten: " + parkhaus1.parkdauer);
System.out.println("Parkgebühren in Cent: " + parkhaus1.parkgebühren);
}
}