Lösungsvorschlag 8.4 - Aufgabe 1
Aus ComeniusWiki
import java.util.Scanner;
public class Bankautomat{
//Mögliche Zustände werden als Aufzählungstyp enum vereinbart
//b=bereit
//ke="Karte eingegeben"
//pin="Pin angezeigt"
//betrag="Geldbetrag-Eingabe angezeigt"
//ka="Karte in der Ausgabe"
//ga="Geld in der Ausgabe"
private enum Schritt {b, ke, pin, betrag, ka, ga};
//Variable zum Aufnehmen des aktuellen Ampelzustands (Variable ist vom Typ Ampelzustand)
private Schritt z;
//Scanner erzeugen für die Eingaben
Scanner eingabe = new Scanner (System.in);
//Variable für Karteneingabe
String s;
//Variable für abgehobenen Geldbetrag
int geld;
//Kontostand
int kontostand = 1000;
public Bankautomat(){
//Der Konstruktor erzeugt eine Bankautomateninstanz im Zustand "bereit"
z=Schritt.b;
}
public void auszahlen(){
//Zustand "bereit"
if(z==Schritt.b){
System.out.println("Bitte geben Sie Ihre Karte ein.('k' eingeben.)");
s=eingabe.next();
z=Schritt.ke;
}
//Zustand "Karte eingegeben"
if(z==Schritt.ke){
if(karteErkennen(s)){z=Schritt.pin;
System.out.println(); }
else{System.out.println("Bitte entnehmen Sie Ihre Karte wieder.");
z=Schritt.b;
try{Thread.sleep(3000);}catch(InterruptedException ie){/*Nichts tun*/}
System.out.println();
auszahlen();}
}
//Zustand "PIN-Eingabe angezeigt"
if(z==Schritt.pin){
System.out.println("Bitte geben Sie Ihren PIN ein.");
String p=eingabe.next();
boolean test=pinPruefen(p);
if(test==true){z=Schritt.betrag; System.out.println();}
else{System.out.println("Falscher PIN. Bitte entnehmen Sie Ihre Karte wieder.");
z=Schritt.b;
try{Thread.sleep(3000);}catch(InterruptedException ie){/*Nichts tun*/}
System.out.println();
auszahlen();
}
}
//Zustand "Geldbetrag-Eingabe angezeigt"
if(z==Schritt.betrag){
System.out.println("Bitte geben Sie den gewünschten Betrag ein. (Maximal 1000 Euro. Nur 50iger Schritte.");
geld=eingabe.nextInt();
boolean test=betragPruefen(geld);
if(test==true){z=Schritt.ka; System.out.println();}
else{System.out.println("Ungültiger Betrag. Bitte entnehmen Sie Ihre Karte wieder.");
z=Schritt.b;
try{Thread.sleep(3000);}catch(InterruptedException ie){/*Nichts tun*/}
System.out.println();
auszahlen();
}
}
//Zustand "Karte in der Ausgabe"
if(z==Schritt.ka){
System.out.println("Bitte entnehmen Sie Ihre Karte.('e' eingeben.)");
s=eingabe.next();
System.out.println();
z=Schritt.ga;
}
//Zustand "Geld in der Ausgabe"
if(z==Schritt.ga){
System.out.println("Bitte Geld entnehmen.('e' eingeben.)");
s=eingabe.next();
System.out.println("Ihr neuer Kontostand:"+(kontostand-geld)+" Euro.");
try{Thread.sleep(3000);}catch(InterruptedException ie){/*Nichts tun*/}
System.out.println();
z=Schritt.b;
auszahlen();
}
}
private boolean karteErkennen(String s){
//weitere Prüfung der Gültigkeit
if(s.equals("k")){return true;}else{return false;}
}
private boolean pinPruefen(String p){
String pin="0815";
if(p.equals("0815")){return true;}else{return false;}
}
private boolean betragPruefen(int b){
if(b>1000||b%50!=0){return false;}else{return true;}
}
}
