Check Visakarte klasse mit einem JTest
parent
1a3a3b7730
commit
2c607bedf0
|
@ -105,3 +105,19 @@ int hours = dateTime.getHour();
|
|||
System.out.println(hours); // Ausgabe: 14
|
||||
Fazit:
|
||||
Vermeide die Verwendung der veralteten getHours()-Methode und nutze entweder Calendar oder, noch besser, die java.time-API, die in Java 8
|
||||
-----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
Ich : erzeuge mir zwei muster viskartennummer die erste Nummer sollte richtig sein also / 10 teilbar
|
||||
und die Zweite sollte falsch
|
||||
|
||||
CahtGPT:
|
||||
Hier sind zwei Muster für VISA-Kartennummern:
|
||||
|
||||
Gültige VISA-Kartennummer: 9823 1927 5722 2993 (durch 10 teilbar)
|
||||
Ungültige VISA-Kartennummer: 1462 8275 1074 2151 (nicht durch 10 teilbar)
|
||||
Du kannst sie für Tests oder zur weiteren Verwendung einsetzen.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -13,17 +13,18 @@ import java.util.Date;
|
|||
*/
|
||||
public class Fahrzeug {
|
||||
|
||||
private final String kennzeichen;
|
||||
private String kennzeichen;
|
||||
private Date einfahrt;
|
||||
private Date ausfahrt;
|
||||
private boolean bezahlt;
|
||||
private boolean istBezahlt;
|
||||
private boolean istVerschuldet;
|
||||
private double betrag;
|
||||
|
||||
Fahrzeug() {
|
||||
this.kennzeichen = kennzeichenzufaelliggenerieren.kennzeichengenerieren();
|
||||
this.einfahrt = new Date();
|
||||
this.betrag = 0.0;
|
||||
this.bezahlt = false;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
@ -31,7 +32,7 @@ public class Fahrzeug {
|
|||
this.kennzeichen = kennzeichen;
|
||||
this.einfahrt = einfahrt;
|
||||
this.betrag = 0.0;
|
||||
this.bezahlt = false;
|
||||
|
||||
}
|
||||
|
||||
public String getKennzeichen() {
|
||||
|
@ -57,11 +58,11 @@ public class Fahrzeug {
|
|||
}
|
||||
|
||||
public boolean isBezahlt() {
|
||||
return bezahlt;
|
||||
return istBezahlt;
|
||||
}
|
||||
|
||||
public void setBezahlt(boolean bezahlt) {
|
||||
this.bezahlt = bezahlt;
|
||||
this.istBezahlt = bezahlt;
|
||||
}
|
||||
|
||||
public double getBetrag() {
|
||||
|
@ -72,4 +73,14 @@ public class Fahrzeug {
|
|||
this.betrag = betrag;
|
||||
}
|
||||
|
||||
public boolean IstVerschuldet() {
|
||||
return istVerschuldet;
|
||||
}
|
||||
|
||||
public void setIstVerschuldet(boolean istVerschuldet) {
|
||||
this.istVerschuldet = istVerschuldet;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
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.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class JTest_checkVisakarte {
|
||||
|
||||
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_visakarteNummer() throws Exception{
|
||||
String kennzeichen = "MA-SH 4077";
|
||||
String einfahrt = "01.10.2024, 14:30";
|
||||
String ausfahrt = "01.10.2024, 14:50";
|
||||
parkhaus.einfahren(kennzeichen, einfahrt);
|
||||
parkhaus.berechneParkgebuehren(kennzeichen, ausfahrt);
|
||||
|
||||
String GueltigeVISAKartennummer = "9823192757222993";
|
||||
// Gültige Nummer => True
|
||||
assertTrue(parkhaus.checkVisakarteNummer(GueltigeVISAKartennummer));
|
||||
|
||||
// Ungültige Nummer => True (da der Test False testet)
|
||||
String ungueltigeVISAKartennummer = "1462 8275 1074 2151";
|
||||
assertFalse(parkhaus.checkVisakarteNummer(ungueltigeVISAKartennummer));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -5,9 +5,10 @@ import java.text.SimpleDateFormat;
|
|||
import java.util.Date;
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) throws ParseException, AutoNichtGefundenException {
|
||||
public static void main(String[] args) throws ParseException, AutoNichtGefundenException, Exception {
|
||||
|
||||
new TextUI();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ public class Parkhaus {
|
|||
private ArrayList<Fahrzeug> fahrzeugeMitSchulden;
|
||||
private int maxPlaetze;
|
||||
private SimpleDateFormat sdf;
|
||||
private Fahrzeug fahrzeug;
|
||||
|
||||
Parkhaus() {
|
||||
fahrzeuge = new ArrayList<>();
|
||||
|
@ -26,7 +27,6 @@ public class Parkhaus {
|
|||
|
||||
public String einfahren(String kennzeichen, String einfahrtzeit) throws ParseException {
|
||||
Date einfahrt;
|
||||
Fahrzeug fahrzeug;
|
||||
if (kennzeichen.isEmpty() && einfahrtzeit.isEmpty())
|
||||
fahrzeug = new Fahrzeug();
|
||||
|
||||
|
@ -43,10 +43,7 @@ public class Parkhaus {
|
|||
+ 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.");
|
||||
|
||||
|
@ -54,7 +51,7 @@ public class Parkhaus {
|
|||
if (kennzeichen.endsWith("E"))
|
||||
isEauto = true;
|
||||
|
||||
Fahrzeug fahrzeug = findeFahrzeug(kennzeichen);
|
||||
fahrzeug = findeFahrzeug(kennzeichen);
|
||||
Date einfahrt = fahrzeug.getEinfahrt();
|
||||
Date ausfahrt;
|
||||
|
||||
|
@ -99,10 +96,35 @@ public class Parkhaus {
|
|||
return fahrzeug.getBetrag();
|
||||
}
|
||||
|
||||
private double rabattFuerEauto(double betrag) {
|
||||
return betrag * 0.2;
|
||||
|
||||
|
||||
public void setBezahlt(String kennzeichen) throws AutoNichtGefundenException {
|
||||
fahrzeug = findeFahrzeug(kennzeichen);
|
||||
fahrzeug.setBezahlt(true);
|
||||
fahrzeug.setIstVerschuldet(false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void setVerschuldet(String kennzeichen) throws AutoNichtGefundenException {
|
||||
fahrzeug = findeFahrzeug(kennzeichen);
|
||||
fahrzeug.setIstVerschuldet(true);
|
||||
fahrzeug.setBezahlt(false);
|
||||
fahrzeugeMitSchulden.add(fahrzeug);
|
||||
}
|
||||
|
||||
|
||||
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)
|
||||
|
@ -114,8 +136,8 @@ public class Parkhaus {
|
|||
}
|
||||
|
||||
|
||||
public boolean checkParkplatze() {
|
||||
return maxPlaetze > 0;
|
||||
private double rabattFuerEauto(double betrag) {
|
||||
return betrag * 0.2;
|
||||
}
|
||||
|
||||
public boolean checkSchulden(String kennzeichen) {
|
||||
|
@ -126,6 +148,8 @@ public class Parkhaus {
|
|||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Getter methoden:
|
||||
public ArrayList<Fahrzeug> getFahrzeuge() {
|
||||
return fahrzeuge;
|
||||
|
|
|
@ -6,12 +6,12 @@ import java.util.Scanner;
|
|||
public class TextUI {
|
||||
private Parkhaus system;
|
||||
|
||||
TextUI() throws ParseException, AutoNichtGefundenException{
|
||||
TextUI() throws ParseException, AutoNichtGefundenException, Exception{
|
||||
system = new Parkhaus();
|
||||
startprogramm();
|
||||
}
|
||||
|
||||
private void startprogramm() throws ParseException, AutoNichtGefundenException {
|
||||
private void startprogramm() throws Exception {
|
||||
Scanner eingabe = new Scanner(System.in);
|
||||
boolean aktiv = true;
|
||||
|
||||
|
@ -20,16 +20,18 @@ public class TextUI {
|
|||
System.out.println();
|
||||
System.out.println("Bitte Wählen Sie ein Option ein: ");
|
||||
System.out.println("1.Einfahren");
|
||||
System.out.println("2. Parkgebühren berechnen lassen");
|
||||
System.out.println("3. Parkgebühren bezahlen");
|
||||
System.out.println("4.Ausfahren");
|
||||
System.out.println("5. Beenden");
|
||||
System.out.println("2.Parkgebühren berechnen lassen");
|
||||
System.out.println("3.Ausfahren");
|
||||
System.out.println("4.Beenden");
|
||||
|
||||
System.out.print("> ");
|
||||
String auswhal = eingabe.nextLine();
|
||||
String kennzeichen;
|
||||
String einfahrtzeit;
|
||||
String ausfahrtzeit;
|
||||
double betrag;
|
||||
String visaKarteNummer;
|
||||
|
||||
switch (auswhal) {
|
||||
case "1": // Einfahren
|
||||
if (!system.checkParkplatze())
|
||||
|
@ -45,12 +47,38 @@ public class TextUI {
|
|||
}
|
||||
break;
|
||||
|
||||
case "2":
|
||||
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)");
|
||||
ausfahrtzeit = eingabe.nextLine();
|
||||
system.berechneParkgebuehren(kennzeichen, ausfahrtzeit);
|
||||
betrag = system.berechneParkgebuehren(kennzeichen, ausfahrtzeit);
|
||||
if (betrag > 0.0) {
|
||||
String zahlungsOptions;
|
||||
System.out.println("Bitte wählen Sie ein Option aus, was Sie mit dem Ihrem Betrag machen möchten: ");
|
||||
System.out.println("1.Sofort bezahlen");
|
||||
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))
|
||||
system.setBezahlt(kennzeichen);
|
||||
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":
|
||||
// TODO
|
||||
|
@ -58,10 +86,6 @@ public class TextUI {
|
|||
case "4":
|
||||
// TODO
|
||||
break;
|
||||
|
||||
case "5":
|
||||
break;
|
||||
|
||||
default:
|
||||
System.out.println("Das war leider keine gültige Eingabe");
|
||||
|
||||
|
|
|
@ -1,12 +1,34 @@
|
|||
package Parkhaus;
|
||||
|
||||
public class Zahlung {
|
||||
// Hier werde ich die Zalhungsprozess behandlen
|
||||
|
||||
public boolean checkVisaKarte(String visaNummer) {
|
||||
// TODO
|
||||
public static boolean checkVisaKarte(String visakarteNummer) throws Exception {
|
||||
if (visakarteNummer.length() < 16)
|
||||
throw new Exception("Die Nummer Ihre Visakart ist falsch");
|
||||
|
||||
return false;
|
||||
char[] arr = visakarteNummer.toCharArray();
|
||||
|
||||
int index = 0;
|
||||
int summe = 0;
|
||||
// Umwandle jede charZiffer alse integer Ziffer
|
||||
// Verdopple jede zweite Ziffer
|
||||
for (int i = arr.length - 1; i >= 0; i--) {
|
||||
arr[i] -= '0';
|
||||
|
||||
if (index == 0)
|
||||
index++;
|
||||
|
||||
else {
|
||||
index--;
|
||||
arr[i] *= 2;
|
||||
// Wenn ziffer > 9, ziehe 9 einfach ab
|
||||
if (arr[i] > 9)
|
||||
arr[i] -= 9;
|
||||
}
|
||||
summe += arr[i];
|
||||
}
|
||||
|
||||
return (summe / 10) % 2 == 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue