Jtest für Auto mit Schulden und nachuzahlung

main
3009594 2024-10-07 23:42:44 +02:00
parent 6c391d73f6
commit 1b028fd1cf
4 changed files with 127 additions and 20 deletions

View File

@ -21,7 +21,15 @@ public class Fahrzeug {
private double betrag; private double betrag;
Fahrzeug() { Fahrzeug() {
this(kennzeichenzufaelliggenerieren.kennzeichengenerieren(),new Date()); this(kennzeichenzufaelliggenerieren.kennzeichengenerieren(), new Date());
}
Fahrzeug(String kennzeichen) {
this(kennzeichen, new Date());
}
Fahrzeug(Date einfahrt) {
this(kennzeichenzufaelliggenerieren.kennzeichengenerieren(), einfahrt);
} }
Fahrzeug(String kennzeichen, Date einfahrt) { Fahrzeug(String kennzeichen, Date einfahrt) {
@ -46,6 +54,10 @@ public class Fahrzeug {
return einfahrt; return einfahrt;
} }
public void setEinfahrt(Date einfahrt) {
this.einfahrt = einfahrt;
}
public Date getAusfahrt() { public Date getAusfahrt() {
return ausfahrt; return ausfahrt;
} }
@ -67,7 +79,7 @@ public class Fahrzeug {
} }
public void setBetrag(double betrag) { public void setBetrag(double betrag) {
this.betrag = betrag; this.betrag += betrag;
} }
public boolean IstVerschuldet() { public boolean IstVerschuldet() {
@ -77,7 +89,5 @@ public class Fahrzeug {
public void setIstVerschuldet(boolean istVerschuldet) { public void setIstVerschuldet(boolean istVerschuldet) {
this.istVerschuldet = istVerschuldet; this.istVerschuldet = istVerschuldet;
} }
} }

View File

@ -0,0 +1,52 @@
package Parkhaus;
import static org.junit.jupiter.api.Assertions.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class JTest_AutoMitSchulden {
private Parkhaus parkhaus;
private SimpleDateFormat sdf;
@BeforeEach
void start() throws ParseException {
parkhaus = new Parkhaus();
sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
}
@Test
public void test_AutoMitSchulden() throws Exception {
String kennzeichen = "MA-SH 4077";
String einfahrt = "01.10.2024, 12:30";
String ausfahrt = "01.10.2024, 13:00";
parkhaus.einfahren(kennzeichen, einfahrt);
parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt);
parkhaus.setVerschuldet(kennzeichen);
parkhaus.ausfahren(kennzeichen, ausfahrt);
einfahrt = "01.10.2024, 13:30";
ausfahrt = "01.10.2024, 14:00";
parkhaus.einfahren(kennzeichen, einfahrt);
parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt);
parkhaus.setVerschuldet(kennzeichen);
parkhaus.ausfahren(kennzeichen, ausfahrt);
einfahrt = "01.10.2024, 14:30";
ausfahrt = "01.10.2024, 15:00";
parkhaus.einfahren(kennzeichen, einfahrt);
parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt);
parkhaus.setBezahlt(kennzeichen);
parkhaus.ausfahren(kennzeichen, ausfahrt);
}
}

View File

@ -5,6 +5,8 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.HashSet;
import java.util.Set;
/* Parkhaus klasse /* Parkhaus klasse
* - Extern klasse dient als System * - Extern klasse dient als System
@ -13,17 +15,17 @@ import java.util.Date;
*/ */
public class Parkhaus { public class Parkhaus {
private ArrayList<Fahrzeug> fahrzeuge; private ArrayList<Fahrzeug> fahrzeuge;
private ArrayList<Fahrzeug> fahrzeugeMitSchulden; private Set<Fahrzeug> fahrzeugeMitSchulden;
private int maxPlaetze; private int maxPlaetze;
private SimpleDateFormat sdf; private SimpleDateFormat sdf;
private Fahrzeug fahrzeug; private Fahrzeug fahrzeug;
private double betragAktuellesAuto; private double betragAktuellesAuto;
Parkhaus() { Parkhaus() {
fahrzeuge = new ArrayList<>(); this.fahrzeuge = new ArrayList<>();
fahrzeugeMitSchulden = new ArrayList<>(); this.fahrzeugeMitSchulden = new HashSet<>();
maxPlaetze = 180; this.maxPlaetze = 180;
sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm"); this.sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
} }
public String einfahren(String kennzeichen, String einfahrtzeit) throws ParseException { public String einfahren(String kennzeichen, String einfahrtzeit) throws ParseException {
@ -31,12 +33,14 @@ public class Parkhaus {
if (kennzeichen.isEmpty() && einfahrtzeit.isEmpty()) if (kennzeichen.isEmpty() && einfahrtzeit.isEmpty())
fahrzeug = new Fahrzeug(); fahrzeug = new Fahrzeug();
else if (kennzeichen.isEmpty())
fahrzeug = new Fahrzeug(einfahrtzeit);
else if (einfahrtzeit.isEmpty())
fahrzeug = new Fahrzeug(kennzeichen);
else { else {
einfahrt = sdf.parse(einfahrtzeit); einfahrt = sdf.parse(einfahrtzeit);
fahrzeug = new Fahrzeug(kennzeichen, einfahrt); fahrzeug = new Fahrzeug(kennzeichen, einfahrt);
} }
fahrzeuge.add(fahrzeug); fahrzeuge.add(fahrzeug);
// reduziere ich die Anzahl der verfügbare Parkplätze im Parkhaus // reduziere ich die Anzahl der verfügbare Parkplätze im Parkhaus
@ -70,8 +74,9 @@ public class Parkhaus {
int maxTagBetrag = 15; int maxTagBetrag = 15;
betragAktuellesAuto = 0; betragAktuellesAuto = 0;
// Erstellung von Calendar-Objekten für Einfahrt und Ausfahrt //gibt eine Kalenderinstanz zurück, die auf das aktuelle Datum und die Uhrzeit eingestellt ist
Calendar calEinfahrt = Calendar.getInstance(); Calendar calEinfahrt = Calendar.getInstance();
calEinfahrt.setTime(einfahrt); calEinfahrt.setTime(einfahrt);
Calendar calAusfahrt = Calendar.getInstance(); Calendar calAusfahrt = Calendar.getInstance();
@ -94,8 +99,11 @@ public class Parkhaus {
} }
if (isEauto) if (isEauto)
betragAktuellesAuto -= rabattFuerEauto(betragAktuellesAuto); betragAktuellesAuto -= rabattFuerEauto(betragAktuellesAuto);
betragAktuellesAuto += sendSchulden(kennzeichen);
fahrzeug.setBetrag(betragAktuellesAuto); fahrzeug.setBetrag(betragAktuellesAuto);
System.out.println("Betrag: " + fahrzeug.getBetrag());
return fahrzeug.getBetrag(); return fahrzeug.getBetrag();
} }
@ -120,22 +128,50 @@ public class Parkhaus {
return false; return false;
} }
public String getkennzeichenAktuellesAuto() {
return this.fahrzeug.getKennzeichen();
}
public boolean setBezahlt(String kennzeichen) throws AutoNichtGefundenException { public boolean setBezahlt(String kennzeichen) throws AutoNichtGefundenException {
fahrzeug = findeFahrzeug(kennzeichen); fahrzeug = findeFahrzeug(kennzeichen);
fahrzeug.setBezahlt(true); fahrzeug.setBezahlt(true);
fahrzeug.setIstVerschuldet(false); fahrzeug.setIstVerschuldet(false);
if (fahrzeugeMitSchulden.contains(fahrzeug))
fahrzeugeMitSchulden.remove(fahrzeug);
return fahrzeug.isBezahlt(); return fahrzeug.isBezahlt();
} }
public boolean setVerschuldet(String kennzeichen) throws AutoNichtGefundenException { public boolean setVerschuldet(String kennzeichen) throws AutoNichtGefundenException {
/* - Speichere das Auto, welches Schulden hat
* - Wenn das Auto nochmal Schuldne hat,
* lösche das alte Objekt und speichere das neue mit dem neuen Betrag
*
*/
fahrzeug = findeFahrzeug(kennzeichen); fahrzeug = findeFahrzeug(kennzeichen);
fahrzeug.setIstVerschuldet(true); fahrzeug.setIstVerschuldet(true);
fahrzeug.setBezahlt(false); fahrzeug.setBezahlt(false);
Fahrzeug zuEntfernendesFahrzeug = null;
for (Fahrzeug f : fahrzeugeMitSchulden)
if (f.getKennzeichen().equalsIgnoreCase(kennzeichen)) {
//Markiere das Auto, das wir löschen wollen
zuEntfernendesFahrzeug = f;
break;
}
if (zuEntfernendesFahrzeug != null) {
fahrzeugeMitSchulden.remove(zuEntfernendesFahrzeug);
}
fahrzeugeMitSchulden.add(fahrzeug); fahrzeugeMitSchulden.add(fahrzeug);
return fahrzeug.IstVerschuldet(); return fahrzeug.IstVerschuldet();
} }
public boolean gebuerenNehmen(double betrag) { public boolean gebuerenNehmen(double betrag) {
return betragAktuellesAuto == betrag; return betragAktuellesAuto == betrag;
@ -171,6 +207,14 @@ public class Parkhaus {
return false; return false;
} }
private double sendSchulden(String kennzeichen) {
for (Fahrzeug sc : fahrzeugeMitSchulden)
if (sc.getKennzeichen().equals(kennzeichen)) {
return sc.getBetrag();
}
return 0.0;
}
public int getMaxPlaetze() { public int getMaxPlaetze() {
return maxPlaetze; return maxPlaetze;
} }

View File

@ -35,14 +35,15 @@ public class TextUI {
switch (auswhal) { switch (auswhal) {
case "1": // Einfahren case "1": // Einfahren
if (!system.checkParkplatze()) if (!system.checkParkplatze())
System.out.println("Es gibt im Parkhaus keine genug Parkplätze"); System.out.println("Es gibt im Parkhaus keine Parkplätze");
else { else {
System.out.println("geben Sie bitte das Kennzeichen Ihres Autos ein (optional): "); System.out.println("geben Sie bitte das Kennzeichen Ihres Autos ein (optional): ");
System.out.print("> ");
kennzeichen = eingabe.nextLine(); kennzeichen = eingabe.nextLine();
if (system.checkSchulden(kennzeichen)) if (system.checkSchulden(kennzeichen))
System.out.println("Das Auto mit dem Kennzeichen: " + kennzeichen+ " ist im Parkhaus mit Schulden eingefahren!"); System.out.println("Das Auto mit dem Kennzeichen: " + system.getkennzeichenAktuellesAuto() + " ist im Parkhaus mit Schulden eingefahren!");
System.out System.out.println("geben Sie nun bitte die Einfahrtszeit ein (oder lassen Sie das für das System):");
.println("geben Sie nun bitte die Einfahrtszeit ein (oder lassen Sie das für das System):"); System.out.print("> ");
einfahrtzeit = eingabe.nextLine(); einfahrtzeit = eingabe.nextLine();
System.out.println(system.einfahren(kennzeichen, einfahrtzeit)); System.out.println(system.einfahren(kennzeichen, einfahrtzeit));
} }
@ -96,7 +97,7 @@ public class TextUI {
System.out.print(">"); System.out.print(">");
ausfahrtzeit = eingabe.nextLine(); ausfahrtzeit = eingabe.nextLine();
if (!system.ausfahren(kennzeichen, ausfahrtzeit)) if (!system.ausfahren(kennzeichen, ausfahrtzeit))
System.err.println("Das Auto mit dem Kennzeichen fährt ohne Zahlung aus"); System.err.println("Das Auto mit dem Kennzeichen: " + system.getkennzeichenAktuellesAuto() + " fährt ohne Zahlung aus");
break; break;
case "4": case "4":
System.out.println("Das Programm wird beendet."); System.out.println("Das Programm wird beendet.");