Lösungsvorschlag 8.4 - Aufgabe 1

Aus ComeniusWiki
Wechseln zu: Navigation, Suche
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;}  
}
 
}