Java Concepts 5th Edition and 6th phần 8 pdf

111 369 0
Java Concepts 5th Edition and 6th phần 8 pdf

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Java Concepts, 5th Edition 99 { 100 assert state == TRANSACT; 101 return currentAccount.getBalance(); 102 } 103 104 /** 105Moves back to the previous state. 106 */ 107 public void back() 108 { 109 if (state == TRANSACT) 110 state = ACCOUNT; 111 else if (state == ACCOUNT) 112 state = PIN; 113 else if (state == PIN) 114 state = START; 115 } 116 117 /** 118Gets the current state of this ATM. 119 @return the current state 120 */ 121 public int getState() 122 { 123 return state; 124 } 125 126 private int state; 127 private int customerNumber; 128 private Customer currentCustomer; 129 private BankAccount currentAccount; 130 private Bank theBank; 131 132 public static final int START = 1; 133 public static final int PIN = 2; 134 public static final int ACCOUNT = 3; 135 public static final int TRANSACT = 4; 136 137 public static final int CHECKING = 1; 138 public static final int SAVINGS = 2; 139 } 566 567 Chapter 12 Object-Oriented Design Page 51 of 77 Java Concepts, 5th Edition ch12/atm/Bank.java 1 import java.io.FileReader; 2 import java.io.IOException; 3 import java.util.ArrayList; 4 import java.util.Scanner; 5 6 /** 7A bank contains customers with bank accounts. 8 */ 9 public class Bank 10 { 11 /** 12Constructs a bank with no customers. 13 */ 14 public Bank() 15 { 16 customers = new ArrayList<Customer>(); 17 } 18 19 /** 20Reads the customer numbers and pins 21and initializes the bank accounts. 22 @param filename the name of the customer file 23 */ 24 public void readCustomers(String filename) 25 throws IOException 26 { 27 Scanner in = new Scanner(new FileReader(filename)); 28 while (in.hasNext()) 29 { 30 int number = in.nextInt(); 31 int pin = in.nextInt(); 32 Customer c = new Customer(number, pin); 33 addCustomer(c); 34 } 35 in.close(); 36 } 37 567 568 Chapter 12 Object-Oriented Design Page 52 of 77 Java Concepts, 5th Edition 38 /** 39Adds a customer to the bank. 40 @param c the customer to add 41 */ 42 public void addCustomer(Customer c) 43 { 44 customers.add(c); 45 } 46 47 /** 48Finds a customer in the bank. 49 @param aNumber a customer number 50 @param aPin a personal identification number 51 @return the matching customer, or null if no customer 52matches 53 */ 54 public Customer findCustomer(int aNumber, int aPin) 55 { 56 for (Customer c : customers) 57 { 58 if (c.match(aNumber, aPin)) 59 return c; 60 } 61 return null; 62 } 63 64 private ArrayList<Customer> customers; 65 } ch12/atm/Customer.java 1 /** 2A bank customer with a checking and a savings account. 3 */ 4 public class Customer 5 { 6 /** 7Constructs a customer with a given number and PIN. 8 @param aNumber the customer number Chapter 12 Object-Oriented Design Page 53 of 77 Java Concepts, 5th Edition 9 @param aPinthe personal identification number 10 */ 11 public Customer(int aNumber, int aPin) 12 { 13 customerNumber = aNumber; 14 pin = aPin; 15 checkingAccount = new BankAccount(); 16 savingsAccount = new BankAccount(); 17 } 18 19 /** 20Tests if this customer matches a customer number 21and PIN. 22 @param aNumber a customer number 23 @param aPin a personal identification number 24 @return true if the customer number and PIN match 25 */ 26 public boolean match(int aNumber, int aPin) 27 { 28 return customerNumber == aNumber && pin == aPin; 29 } 30 31 /** 32Gets the checking account of this customer. 33 @return the checking account 34 */ 35 public BankAccount getCheckingAccount() 36 { 37 return checkingAccount; 38 } 39 40 /** 41Gets the savings account of this customer. 42 @return the checking account 43 */ 44 public BankAccount getSavingsAccount() 45 { 46 return savingsAccount; 47 } 48 568 569 Chapter 12 Object-Oriented Design Page 54 of 77 Java Concepts, 5th Edition 49 private int customerNumber; 50 private int pin; 51 private BankAccount checkingAccount; 52 private BankAccount savingsAccount; 53 } The following class implements a console user interface for the ATM. ch12/atm/ATMSimulator.java 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 { 569 570 Chapter 12 Object-Oriented Design Page 55 of 77 Java Concepts, 5th Edition 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 theATM.selectAccount(ATM.CHECKING); 47 else if (command.equalsIgnoreCase(“B”)) 48 theATM.selectAccount(ATM.SAVINGS); 49 else if (command.equalsIgnoreCase(“C”)) 50 theATM.reset(); 51 else 52 System.out.println(“Illegal input!”); 53 } 54 else if (state == ATM.TRANSACT) 55 { 56 System.out.println(“Balance=” + theATM.getBalance()); 57 System.out.print(“A=Deposit, B=Withdrawal, C=Cancel: ”); 58 String command = in.next(); 59 if (command.equalsIgnoreCase(“A”)) 60 { 61 System.out.print(“Amount: ”); 62 double amount = in.nextDouble(); 63 theATM.deposit(amount); 64 theATM.back(); 65 } Chapter 12 Object-Oriented Design Page 56 of 77 Java Concepts, 5th Edition 66 else if (command.equalsIgnoreCase(“B”)) 67 { 68 System.out.print(“Amount: ”); 69 double amount = in.nextDouble(); 70 theATM.withdraw(amount); 71 theATM.back(); 72 } 73 else if (command.equalsIgnoreCase(“C”)) 74 theATM.back(); 75 else 76 System.out.println(“Illegal input!”); 77 } 78 } 79 } 80 } Output Enter account number: 1 Enter PIN: 1234 A=Checking, B=Savings, C=Quit: A Balance=0.0 A=Deposit, B=Withdrawal, C=Cancel: A Amount: 1000 A=Checking, B=Savings, C=Quit: C . . . Here are the user interface classes for the GUI version of the user interface. ch12/atm/ATMViewer.java 1 import java.io.IOException; 2 import javax.swing.JFrame; 3 import javax.swing.JOptionPane; 4 5 /** 6A graphical simulation of an automatic teller machine. 7 */ 8 public class ATMViewer 570 571 Chapter 12 Object-Oriented Design Page 57 of 77 Java Concepts, 5th Edition 9 { 10 public static void main(String[] args) 11 { 12 ATM theATM; 13 14 try 15 { 16 Bank theBank = new Bank(); 17 theBank.readCustomers(“customers.txt”); 18 theATM = new ATM(theBank); 19 } 20 catch(IOException e) 21 { 22 JOptionPane.showMessageDialog(null, 23 “Error opening accounts file.”); 24 return; 25 } 26 27 JFrame frame = new ATMFrame(theATM); 28 frame.setTitle(“First National Bank of Java”); 29 frame.setDefaultCloseOperation(JFrame.EXIT_ ON 30 frame.setVisible(true); 31 } 32 } ch12/atm/ATMFrame.java 1 import java.awt.FlowLayout; 2 import java.awt.GridLayout; 3 import java.awt.event.ActionEvent; 4 import java.awt.event.ActionListener; 5 import javax.swing.JButton; 6 import javax.swing.JFrame; 7 import javax.swing.JPanel; 8 import javax.swing.JTextArea; 9 10 /** 11A frame displaying the components of an ATM. 12 */ 13 public class ATMFrame extends JFrame 571 572 Chapter 12 Object-Oriented Design Page 58 of 77 Java Concepts, 5th Edition 14 { 15 /** 16Constructs the user interface of the ATM frame. 17 */ 18 public ATMFrame(ATM anATM) 19 { 20 theATM = anATM; 21 22// Construct components 23 pad = new KeyPad(); 24 25 display = new JTextArea(4, 20); 26 27 aButton = new JButton(“ A ”); 28 aButton.addActionListener(new AButtonListener()); 29 30 bButton = new JButton(“ B ”); 31 bButton.addActionListener(new BButtonListener()); 32 33 cButton = new JButton(“ C ”); 34 cButton.addActionListener(new CButtonListener()); 35 36// Add components 37 38 JPanel buttonPanel = new JPanel(); 39 buttonPanel.add(aButton); 40 buttonPanel.add(bButton); 41 buttonPanel.add(cButton); 42 43 setLayout(new FlowLayout()); 44 add(pad); 45 add(display); 46 add(buttonPanel); 47 showState(); 48 49 setSize(FRAME_WIDTH, FRAME_HEIGHT); 50 } 51 52 /** 572 573 Chapter 12 Object-Oriented Design Page 59 of 77 Java Concepts, 5th Edition 53Updates display message. 54 */ 55 public void showState() 56 { 57 int state = theATM.getState(); 58 pad.clear(); 59 if (state == ATM.START) 60 display.setText(“Enter customer number\nA = OK”); 61 else if (state == ATM.PIN) 62 display.setText(“Enter PIN\nA = OK”); 63 else if (state == ATM.ACCOUNT) 64 display.setText(“Select Account\n” 65 + “A = Checking\nB = Savings\nC = Exit”); 66 else if (state == ATM.TRANSACT) 67 display.setText(“Balance = ” 68 + theATM.getBalance() 69 + “\nEnter amount and select transaction\n” 70 + “A = Withdraw\nB = Deposit\nC = Cancel”); 71 } 72 73 private class AButtonListener implements ActionListener 74 { 75 public void actionPerformed(ActionEvent event) 76 { 77 int state = theATM.getState(); 78 if (state == ATM.START) 79 theATM.setCustomerNumber((int) pad.getValue()); 80 else if (state == ATM.PIN) 81 theATM.selectCustomer((int) pad.getValue()); 82 else if (state == ATM.ACCOUNT) 83 theATM.selectAccount(ATM.CHECKING); 84 else if (state == ATM.TRANSACT) 85 { 86 theATM.withdraw(pad.getValue()); 87 theATM.back(); Chapter 12 Object-Oriented Design Page 60 of 77 [...]... actionPerformed(ActionEvent event) 75 { 76 77 // Don't add two decimal points 78 if (label.equals(“.”) 79 && display.getText().indexOf(“.”) != -1) return; 80 81 82 // Append label text to button 83 display.setText(display.getText() + label); 84 } 85 } 86 87 JButton button = new JButton (label); 88 buttonPanel.add(button); 89 ActionListener listener = new DigitButtonListener(); 90 button.addActionListener(listener);... 77 Java Concepts, 5th Edition 127 1 28 129 130 131 132 300; 133 private JTextArea display; private ATM theATM; private static final int FRAME_WIDTH = 300; private static final int FRAME_HEIGHT = } This class uses layout managers to arrange the text field and the keypad buttons See Chapter 18 for more information about layout managers ch12/atm/KeyPad .java 1 import java. awt.BorderLayout; 2 import java. awt.GridLayout;... it be a good idea? 579 580 ★ Exercise R12.9 Write CRC cards for the Coin and CashRegister classes described in Section 8. 2 ★ Exercise R12.10 Write CRC cards for the Bank and BankAccount classes in Section 7.2 Chapter 12 Object-Oriented Design Page 69 of 77 Java Concepts, 5th Edition ★★ Exercise R12.11 Draw a UML diagram for the Coin and CashRegister classes described in Section 8. 2 ★★★ Exercise R12.12.. .Java Concepts, 5th Edition 88 } 89 showState(); 90 } 91 } 92 93 private class BButtonListener implements ActionListener 94 { 95 public void actionPerformed(ActionEvent event) 96 { 97 int state = theATM.getState(); 98 if (state == ATM.ACCOUNT) 99 theATM.selectAccount(ATM.SAVINGS); 100 else if (state == ATM.TRANSACT)... such as knowledge of materials and of project planning The same is true for computing A software engineer needs to know about planning, budgeting, design, test automation, documentation, and source Chapter 12 Object-Oriented Design 577 5 78 Page 66 of 77 Java Concepts, 5th Edition code control, in addition to computer science subjects, such as programming, algorithm design, and database technologies In... 62 of 77 Java Concepts, 5th Edition 28 29 buttonPanel = new JPanel(); 30 buttonPanel.setLayout(new GridLayout(4, 3)); 31 32 //Add digit buttons 33 34 addButton(“7”); 35 addButton( 8 ); 36 addButton(“9”); 37 addButton(“4”); 38 addButton(“5”); 39 addButton(“6”); 40 addButton(“1”); 41 addButton(“2”); 42 addButton(“3”); 43 addButton(“0”); 44 addButton(“.”); 45 46 // Add clear entry button 47 48 clearButton... suppose that X = computer and O = human Suppose the current combination is 583 584 Now it is the human's turn, who will of course choose Chapter 12 Object-Oriented Design Page 75 of 77 Java Concepts, 5th Edition The computer should then remember the preceding combination as a losing combination As a result, the computer will never again choose that combination from or Discover classes and supply a UML diagram... 12 Object-Oriented Design Page 65 of 77 Java Concepts, 5th Edition Except possibly for librarians and sociologists, few people believe that library science and social science are scientific endeavors A scientific discipline aims to discover certain fundamental principles dictated by the laws of nature It operates on the scientific method: by posing hypotheses and testing them with experiments that are... message has a recipient, a sender, and a message text A mailbox can store messages Supply a number of mailboxes for different users and a user interface for users to log in, send messages to other users, read their own messages, and log out Follow the design process that was described in this chapter Chapter 12 Object-Oriented Design Page 71 of 77 Java Concepts, 5th Edition ★★ Exercise P12.6 Write a... editor that allows users to add a mixture of shapes (ellipses, rectangles, and lines in different colors) to a panel Supply commands to load and save the Chapter 12 Object-Oriented Design Page 74 of 77 Java Concepts, 5th Edition picture Discover classes, supply a UML diagram, and implement your program Additional programming exercises are available in WileyPLUS PROGRAMMING PROJECTS ★★★ Project 12.1 Produce . 1 38 public static final int SAVINGS = 2; 139 } 566 567 Chapter 12 Object-Oriented Design Page 51 of 77 Java Concepts, 5th Edition ch12/atm/Bank .java 1 import java. io.FileReader; 2 import java. io.IOException; . 83 theATM.selectAccount(ATM.CHECKING); 84 else if (state == ATM.TRANSACT) 85 { 86 theATM.withdraw(pad.getValue()); 87 theATM.back(); Chapter 12 Object-Oriented Design Page 60 of 77 Java Concepts, . points 78 if (label.equals(“.”) 79 && display.getText().indexOf(“.”) != -1) 80 return; 81 82 // Append label text to button 83 display.setText(display.getText() + label); 84 } 85

Ngày đăng: 12/08/2014, 19:21

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan