package com.sinosuperman.example; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.StringTokenizer; import java.util.TreeMap; import javax.swing.JOptionPane; public class PhoneNoteBook { private final File phoneNoteBookFile; private TreeMap<String, String> phoneNoteBookMap; public PhoneNoteBook(String fileName) throws IOException { phoneNoteBookMap = new TreeMap<String, String>(); phoneNoteBookFile = new File(fileName); loadAllRecords(); } private void loadAllRecords() throws IOException { BufferedReader reader = new BufferedReader(new FileReader(phoneNoteBookFile)); String line = reader.readLine(); while (line != null) { StringTokenizer str = new StringTokenizer(line, "\t"); String name = str.nextToken(); String phone = str.nextToken(); phoneNoteBookMap.put(name, phone); line = reader.readLine(); } reader.close(); } private void addRecord() { String name = JOptionPane.showInputDialog("Please enter the name:\n"); String phone = JOptionPane.showInputDialog("Please enter the phone:\n"); if (JOptionPane.showConfirmDialog(null, "Are you sure?") == JOptionPane.YES_OPTION) { phoneNoteBookMap.put(name, phone); } else { JOptionPane.showMessageDialog(null, "Operation has been canceled"); } } private void updateRecord() { String name = JOptionPane.showInputDialog("Please enter the name:\n"); String phone = JOptionPane.showInputDialog("Please enter his/her new phone name:\n"); if (!phoneNoteBookMap.containsKey(name)) { if (JOptionPane.showConfirmDialog(null, "This name does not exist. Do you want to create a new one?") == JOptionPane.YES_OPTION) { phoneNoteBookMap.put(name, phone); } else { JOptionPane.showMessageDialog(null, "Operation has been canceled"); } } if (JOptionPane.showConfirmDialog(null, "Are you sure to modify his/her phone number?") == JOptionPane.YES_OPTION) { phoneNoteBookMap.put(name, phone); } else { JOptionPane.showMessageDialog(null, "Operation has been canceled"); } } private void searchRecord() { String name = JOptionPane.showInputDialog("Please the name for searching"); if (phoneNoteBookMap.containsKey(name)) { JOptionPane.showMessageDialog(null, phoneNoteBookMap.get(name)); } else { JOptionPane.showMessageDialog(null, "The name you are searching does not exists."); } } private void removeRecord() { String name = JOptionPane.showInputDialog("Please enter the name:\n"); if (!phoneNoteBookMap.containsKey(name)) { JOptionPane.showConfirmDialog(null, "This name does not exist. So you don't need to remove it."); } else if (JOptionPane.showConfirmDialog(null, "Are you sure to remove his/her record?") == JOptionPane.YES_OPTION) { phoneNoteBookMap.remove(name); } else { JOptionPane.showMessageDialog(null, "Operation has been canceled"); } } public void display() { String message = "Please select an operation:\n" + "Enter \"1\" to add a new record;\n" + "Enter \"2\" to update a existing record;\n" + "Enter \"3\" to find a phone number;\n" + "Enter \"4\" to remove a existing record.\n"; int choice = 0; try { choice = Integer.parseInt(JOptionPane.showInputDialog(message)); switch (choice) { case 1: addRecord(); break; case 2: updateRecord(); break; case 3: searchRecord(); break; case 4: removeRecord(); break; default: } } catch (NumberFormatException e) { } if (JOptionPane.showConfirmDialog(null, "Would you want to continue?") != JOptionPane.YES_OPTION) { JOptionPane.showMessageDialog(null, "Thank you."); } else { display(); } } }
测试驱动程序:
package com.sinosuperman.driver; import java.io.IOException; import com.sinosuperman.example.PhoneNoteBook; public class Driver { public static void main(String[] args) throws IOException { PhoneNoteBook phoneNoteBook = new PhoneNoteBook("PhoneNoteBook.txt"); phoneNoteBook.display(); } }