Jtest für Auto mit Schulden und nachuzahlung
parent
6c391d73f6
commit
1b028fd1cf
|
@ -24,6 +24,14 @@ public class 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) {
|
||||||
this.kennzeichen = kennzeichen;
|
this.kennzeichen = kennzeichen;
|
||||||
this.einfahrt = einfahrt;
|
this.einfahrt = 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() {
|
||||||
|
@ -78,6 +90,4 @@ public class Fahrzeug {
|
||||||
this.istVerschuldet = istVerschuldet;
|
this.istVerschuldet = istVerschuldet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -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();
|
||||||
|
@ -95,7 +100,10 @@ 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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,21 +129,49 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.");
|
||||||
|
|
Loading…
Reference in New Issue