1  import java.io.IOException;
  2  import java.util.Scanner;
  3  
  4  /**
  5     A text-based simulation of an automatic teller machine.
  6  */
  7  public class ATMSimulator
  8  {  
  9     public static void main(String[] args)
 10     {  
 11        ATM theATM;
 12        try
 13        {  
 14           Bank theBank = new Bank();
 15           theBank.readCustomers("customers.txt");
 16           theATM = new ATM(theBank);
 17        }
 18        catch(IOException e)
 19        {  
 20           System.out.println("Error opening accounts file.");
 21           return;
 22        }
 23  
 24        Scanner in = new Scanner(System.in);
 25  
 26        while (true)
 27        {
 28           int state = theATM.getState();
 29           if (state == ATM.START)
 30           {
 31              System.out.print("Enter customer number: ");
 32              int number = in.nextInt();
 33              theATM.setCustomerNumber(number);            
 34           }
 35           else if (state == ATM.PIN)
 36           {
 37              System.out.print("Enter PIN: ");
 38              int pin = in.nextInt();
 39              theATM.selectCustomer(pin);
 40           }
 41           else if (state == ATM.ACCOUNT)
 42           {
 43              System.out.print("A=Checking, B=Savings, C=Quit: ");
 44              String command = in.next();
 45              if (command.equalsIgnoreCase("A"))
 46              {
 47                 theATM.selectAccount(ATM.CHECKING);
 48              }
 49              else if (command.equalsIgnoreCase("B"))
 50              {
 51                 theATM.selectAccount(ATM.SAVINGS);
 52              }
 53              else if (command.equalsIgnoreCase("C"))
 54              {
 55                 theATM.reset();
 56              }
 57              else
 58              {
 59                 System.out.println("Illegal input!");                        
 60              }
 61           }
 62           else if (state == ATM.TRANSACT)
 63           {
 64              System.out.println("Balance=" + theATM.getBalance());
 65              System.out.print("A=Deposit, B=Withdrawal, C=Cancel: ");
 66              String command = in.next();
 67              if (command.equalsIgnoreCase("A"))
 68              {
 69                 System.out.print("Amount: ");
 70                 double amount = in.nextDouble();
 71                 theATM.deposit(amount);
 72                 theATM.back();
 73              }
 74              else if (command.equalsIgnoreCase("B"))
 75              {
 76                 System.out.print("Amount: ");
 77                 double amount = in.nextDouble();
 78                 theATM.withdraw(amount);
 79                 theATM.back();
 80              }
 81              else if (command.equalsIgnoreCase("C"))
 82              {
 83                 theATM.back();
 84              }
 85              else
 86              {
 87                 System.out.println("Illegal input!");                                    
 88              }
 89           }         
 90        }
 91     }
 92  }
 93