diff --git a/src/Parkhaus/Allgemeine_Test.java b/src/Parkhaus/Allgemeine_Test.java new file mode 100644 index 0000000..ad73c53 --- /dev/null +++ b/src/Parkhaus/Allgemeine_Test.java @@ -0,0 +1,47 @@ +package Parkhaus; + +import static org.junit.jupiter.api.Assertions.*; + +import java.text.SimpleDateFormat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +class Allgemeine_Test { + + private Parkhaus system; + private SimpleDateFormat sdf; + + @BeforeEach + void setUp() throws Exception { + system = new Parkhaus(); + sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm"); + } + + @Test + void test_Parkhaus() throws Exception { + String kennzeichen = "MA-SH 4077"; + String einfahrt = "01.10.2024, 14:30"; + String ausfahrt = "01.10.2024, 14:50"; + String GueltigeVISAKartennummer = "9823192757222993"; + + // Einfahren: True => Beide assertTrue Tests. + String einfahren = system.einfahren(kennzeichen, einfahrt); + assertTrue(einfahren.contains(kennzeichen)); + assertTrue(einfahren.contains(einfahrt)); + assertEquals(179,system.getMaxPlaetze()); + + // Parkgebühren berechnen: True => da nur eine Stunde + double betrag = system.berechneParkgebuehren(kennzeichen, ausfahrt); + assertEquals(1,betrag); + + //Parkgebühren sofort Bezahlen mit Visa-karte: True => Beide assertTrue Tests. + assertTrue(system.checkVisakarteNummer(GueltigeVISAKartennummer)); + assertTrue(system.setBezahlt(kennzeichen)); + + // Ausfahren: True => Beide assertTrue Tests. + assertTrue(system.ausfahren(kennzeichen, ausfahrt)); + assertEquals(180,system.getMaxPlaetze()); + } + +} diff --git a/src/Parkhaus/Fahrzeug.java b/src/Parkhaus/Fahrzeug.java index 712e2d6..b77f7d0 100644 --- a/src/Parkhaus/Fahrzeug.java +++ b/src/Parkhaus/Fahrzeug.java @@ -24,8 +24,6 @@ public class Fahrzeug { this.kennzeichen = kennzeichenzufaelliggenerieren.kennzeichengenerieren(); this.einfahrt = new Date(); this.betrag = 0.0; - - } Fahrzeug(String kennzeichen, Date einfahrt) { diff --git a/src/Parkhaus/Parkhaus.java b/src/Parkhaus/Parkhaus.java index fa13f79..3e87b44 100644 --- a/src/Parkhaus/Parkhaus.java +++ b/src/Parkhaus/Parkhaus.java @@ -43,15 +43,16 @@ public class Parkhaus { return "Das Fahrzeug mit dem Kennzeichen: " + fahrzeug.getKennzeichen() + "\n" + "wurde um: " + fahrzeug.getEinfahrtFormatted() + " im Parkhaus eingefahren."; } - - public double berechneParkgebuehren(String kennzeichen, String ausfahrtzeit) throws AutoNichtGefundenException, ParseException { + + public double berechneParkgebuehren(String kennzeichen, String ausfahrtzeit) + throws AutoNichtGefundenException, ParseException { if (kennzeichen.isEmpty()) throw new AutoNichtGefundenException("Sie müssen bitte das Kennzeichen Ihres Autos eingeben."); - + boolean isEauto = false; - if (kennzeichen.endsWith("E")) + if (kennzeichen.endsWith("E")) isEauto = true; - + fahrzeug = findeFahrzeug(kennzeichen); Date einfahrt = fahrzeug.getEinfahrt(); Date ausfahrt; @@ -90,17 +91,18 @@ public class Parkhaus { betragAktuellesAuto = maxTagBetrag; } } - if (isEauto) + if (isEauto) betragAktuellesAuto -= rabattFuerEauto(betragAktuellesAuto); - + fahrzeug.setBetrag(betragAktuellesAuto); return fahrzeug.getBetrag(); } - - public boolean ausfahren(String kennzeichen, String ausfahrtzeit) throws AutoNichtGefundenException, ParseException { + + public boolean ausfahren(String kennzeichen, String ausfahrtzeit) + throws AutoNichtGefundenException, ParseException { if (kennzeichen.isEmpty()) throw new AutoNichtGefundenException("Sie müssen bitte das Kennzeichen Ihres Autos eingeben."); - + fahrzeug = findeFahrzeug(kennzeichen); Date ausfahrt; if (ausfahrtzeit.isEmpty()) { @@ -108,28 +110,23 @@ public class Parkhaus { ausfahrt = sdf.parse(aktuelleZeitString); } else ausfahrt = sdf.parse(ausfahrtzeit); - + if (fahrzeug.isBezahlt() == true || fahrzeug.IstVerschuldet() == true) { fahrzeuge.remove(fahrzeug); - maxPlaetze++; + maxPlaetze++; return true; } - - + return false; } - - public boolean setBezahlt(String kennzeichen) throws AutoNichtGefundenException { fahrzeug = findeFahrzeug(kennzeichen); fahrzeug.setBezahlt(true); fahrzeug.setIstVerschuldet(false); return true; } - - - + public boolean setVerschuldet(String kennzeichen) throws AutoNichtGefundenException { fahrzeug = findeFahrzeug(kennzeichen); fahrzeug.setIstVerschuldet(true); @@ -137,24 +134,20 @@ public class Parkhaus { fahrzeugeMitSchulden.add(fahrzeug); return true; } - + public boolean gebuerenNehmen(double betrag) { - + return betragAktuellesAuto == betrag; } - - + public boolean checkVisakarteNummer(String visakarteNummer) throws Exception { return Zahlung.checkVisaKarte(visakarteNummer); } - - + public boolean checkParkplatze() { return maxPlaetze > 0; } - - - + private Fahrzeug findeFahrzeug(String kennzeichen) throws AutoNichtGefundenException { for (Fahrzeug auto : fahrzeuge) @@ -165,11 +158,10 @@ public class Parkhaus { } - private double rabattFuerEauto(double betrag) { return betrag * 0.2; } - + public boolean checkSchulden(String kennzeichen) { for (Fahrzeug sc : fahrzeugeMitSchulden) if (sc.getKennzeichen().equals(kennzeichen)) @@ -181,7 +173,5 @@ public class Parkhaus { public int getMaxPlaetze() { return maxPlaetze; } - - - + } \ No newline at end of file diff --git a/src/Parkhaus/TextUI.java b/src/Parkhaus/TextUI.java index 682edeb..933db12 100644 --- a/src/Parkhaus/TextUI.java +++ b/src/Parkhaus/TextUI.java @@ -5,12 +5,12 @@ import java.util.Scanner; public class TextUI { private Parkhaus system; - - TextUI() throws ParseException, AutoNichtGefundenException, Exception{ + + TextUI() throws ParseException, AutoNichtGefundenException, Exception { system = new Parkhaus(); startprogramm(); } - + private void startprogramm() throws Exception { Scanner eingabe = new Scanner(System.in); boolean aktiv = true; @@ -31,7 +31,7 @@ public class TextUI { String ausfahrtzeit; double betrag; String visaKarteNummer; - + switch (auswhal) { case "1": // Einfahren if (!system.checkParkplatze()) @@ -40,14 +40,15 @@ public class TextUI { System.out.println("geben Sie bitte das Kennzeichen Ihres Autos ein (optional): "); kennzeichen = eingabe.nextLine(); if (system.checkSchulden(kennzeichen)) - System.out.println("Das Auto mit dem Kennzeichen: " + kennzeichen + " ist im Parkhaus mit Schulden eingefahren!" ); - System.out.println("geben Sie nun bitte die Einfahrtszeit ein (oder lassen Sie das für das System):"); + System.out.println("Das Auto mit dem Kennzeichen: " + kennzeichen+ " ist im Parkhaus mit Schulden eingefahren!"); + System.out + .println("geben Sie nun bitte die Einfahrtszeit ein (oder lassen Sie das für das System):"); einfahrtzeit = eingabe.nextLine(); System.out.println(system.einfahren(kennzeichen, einfahrtzeit)); } break; - case "2": // Parkgebühren berechnen lassen + case "2": // Parkgebühren berechnen lassen System.out.println("Geben Sie erneut das Kennzeichnes Ihres Autos an"); kennzeichen = eingabe.nextLine(); System.out.println("Geben Sie bitte die Ausfahrtzeit ein (oder lassen Sie das für das System)"); @@ -61,43 +62,46 @@ public class TextUI { System.out.println("2.Betrag als Schulden hinterlassen"); System.out.print(">"); zahlungsOptions = eingabe.nextLine(); - switch(zahlungsOptions) { - case "1": - System.out.println("Geben Sie bitte Ihre 16-stellige Visa-karte Nummer ein: "); - System.out.print(">"); - visaKarteNummer = eingabe.nextLine().trim(); - // Also wenn die Visakarte korrekt ist, markiert das System das Auto mit dem Kennzeichen als Bezahlt - if (system.checkVisakarteNummer(visaKarteNummer)) - if (system.gebuerenNehmen(betrag)) { - system.setBezahlt(kennzeichen); - System.out.println("Ihre Auszahlung war erfolgreich"); - System.out.println("Vielen Dank"); - } - - break; - - case "2": - // System markiert das Auto als verschuldet und speichert es dann im System - system.setVerschuldet(kennzeichen); - System.out.println("Vielen Dank"); - break; - default: - System.out.println("Das war leider keine gültige Eingabe"); + switch (zahlungsOptions) { + case "1": + System.out.println("Geben Sie bitte Ihre 16-stellige Visa-karte Nummer ein: "); + System.out.print(">"); + visaKarteNummer = eingabe.nextLine().trim(); + // Also wenn die Visakarte korrekt ist, markiert das System das Auto mit dem + // Kennzeichen als Bezahlt + if (system.checkVisakarteNummer(visaKarteNummer)) + if (system.gebuerenNehmen(betrag)) { + system.setBezahlt(kennzeichen); + System.out.println("Ihre Auszahlung war erfolgreich"); + } else + System.out.println("Die eingegebene Visa-Kartennummer ist ungültig."); + + break; + + case "2": + // System markiert das Auto als verschuldet und speichert es dann im System + system.setVerschuldet(kennzeichen); + break; + default: + System.out.println("Das war leider keine gültige Eingabe"); } - + } break; case "3": // Ausfahren - System.out.println("Um ausfahren zu können, sollen Sie das Kennzeichen Ihres Auto sowie die Ausfahrtzeit eingeben" ); + System.out.println("Um ausfahren zu können, sollen Sie das Kennzeichen Ihres Auto sowie die Ausfahrtzeit eingeben"); System.out.print(">"); kennzeichen = eingabe.nextLine(); System.out.println("Geben Sie nun die Ausfahrtzeit an: "); System.out.print(">"); ausfahrtzeit = eingabe.nextLine(); - system.ausfahren(kennzeichen, ausfahrtzeit); + if (!system.ausfahren(kennzeichen, ausfahrtzeit)) + System.err.println("Das Auto mit dem Kennzeichen fährt ohne Zahlung aus"); break; case "4": - // TODO + System.out.println("Das Programm wird beendet."); + aktiv = false; + eingabe.close(); break; default: System.out.println("Das war leider keine gültige Eingabe");