01: import java.io.IOException;
02: import java.sql.SQLException;
03: import java.util.Scanner;
04: 
05: /**
06:    A text-based simulation of an automatic teller machine
07: */
08: public class ATMTester
09: {  
10:    public static void main(String[] args)
11:          throws IOException, SQLException, ClassNotFoundException
12:    {  
13:       if (args.length == 0)
14:       {   
15:          System.out.println(
16:                "Usage: ATMTester propertiesFile");
17:          return;
18:       }
19:       else 
20:          SimpleDataSource.init(args[0]);
21: 
22:       Bank theBank = new Bank();
23:       ATM theATM = new ATM(theBank);
24: 
25:       Scanner in = new Scanner(System.in);
26: 
27:       while (true)
28:       {
29:          int state = theATM.getState();
30:          if (state == ATM.START)
31:          {
32:             System.out.print("Enter account number: ");
33:             int number = in.nextInt();
34:             theATM.setCustomerNumber(number);            
35:          }
36:          else if (state == ATM.PIN)
37:          {
38:             System.out.print("Enter PIN: ");
39:             int pin = in.nextInt();
40:             theATM.selectCustomer(pin);
41:          }
42:          else if (state == ATM.ACCOUNT)
43:          {
44:             System.out.print("A=Checking, B=Savings, C=Quit: ");
45:             String command = in.next();
46:             if (command.equalsIgnoreCase("A"))
47:                theATM.selectAccount(ATM.CHECKING);
48:             else if (command.equalsIgnoreCase("B"))
49:                theATM.selectAccount(ATM.SAVINGS);
50:             else if (command.equalsIgnoreCase("C"))
51:                theATM.reset();
52:             else
53:                System.out.println("Illegal input!");                        
54:          }
55:          else if (state == ATM.TRANSACT)
56:          {
57:             System.out.println("Balance=" + theATM.getBalance());
58:             System.out.print("A=Deposit, B=Withdrawal, C=Cancel: ");
59:             String command = in.next();
60:             if (command.equalsIgnoreCase("A"))
61:             {
62:                System.out.print("Amount: ");
63:                double amount = in.nextDouble();
64:                theATM.deposit(amount);
65:                theATM.back();
66:             }
67:             else if (command.equalsIgnoreCase("B"))
68:             {
69:                System.out.print("Amount: ");
70:                double amount = in.nextDouble();
71:                theATM.withdraw(amount);
72:                theATM.back();
73:             }
74:             else if (command.equalsIgnoreCase("C"))
75:                theATM.back();
76:             else
77:                System.out.println("Illegal input!");                                    
78:          }         
79:       }
80:    }
81: }
82: