(请在modifyContact()方法那直接添加语句)

import java.awt.Color;

import java.awt.event.*;

import java.util.ArrayList;


import javax.swing.*;


@SuppressWarnings("serial")

public class linkman extends JFrame implements ActionListener, //定义linkman类继承JFrame类,并实现ActionListener这个接口

  PhoneBookConstants {

  private PhoneBook phoneBook;

  JTextArea showArea;

 

 public linkman () {      

super("我的通讯录");

  phoneBook = new PhoneBookImpl();    //

  showArea = new JTextArea(20, 30);      //   创建一个文本域,显示联系人的信息

  showArea.setBackground(Color.lightGray);//文本域背景颜色,浅灰色

  showArea.setEditable(false);  //文本组件不可编辑状态

  BoxLayout layout = new BoxLayout(getContentPane(), BoxLayout.Y_AXIS);//布局为居中排列

  JPanel buttonPanel = new JPanel();  //创建一个面板,buttonPanel

  buttonPanel.setBackground(Color.green);

  

  JButton addButton = new JButton("添加");  //创建五个按钮,添加查找,刷新,修改,删除       

  JButton searchButton = new JButton("查找");

  JButton updateButton = new JButton("刷新");

  JButton modify = new JButton("修改");

  JButton removeButton = new JButton("删除");

  

  addButton.addActionListener(this); //添加事件监听器

  searchButton.addActionListener(this);

  updateButton.addActionListener(this); 

  modify.addActionListener(this);

  removeButton.addActionListener(this);


  

  buttonPanel.add(addButton);    //将五个按钮添加到面板buttonPanel中

  buttonPanel.add(searchButton);

  buttonPanel.add(updateButton);

  buttonPanel.add(modify);

  buttonPanel.add(removeButton);

  display();    

  add(showArea);

  add(buttonPanel);

  setLayout(layout);

 }


 @Override

 public void actionPerformed(ActionEvent e) {  //为按钮添加事件监听器

  if (e.getActionCommand().equals("添加")) {

   addContact(); //调用添加联系人的方法

  }

  else if (e.getActionCommand().equals("查找")) {

   searchContact(); //调用搜索联系人的方法

  }

  else if (e.getActionCommand().equals("刷新")) {

   updatePhoneBook(); //调用刷新的方法

  }

  else if (e.getActionCommand().equals("修改")) {

   modifyContact();

  }

  else if (e.getActionCommand().equals("删除")) {

   removeContact();//调用删除的方法

  }

 }



private void addContact() { //添加联系人的方法

  String name = JOptionPane.showInputDialog("请输入联系人的姓名:"); 

  String phone = JOptionPane.showInputDialog("请输入联系人的手机号:");

  if (name != null && !name.trim().equals("")) {   //如果名字不同则添加成功

   if (phoneBook.add(name, phone)) { 

    JOptionPane.showMessageDialog(null, "添加成功!");

   }

   else {

    JOptionPane.showMessageDialog(null, "抱歉,已经有同姓名的联系人存在!");

   }

   display();

  }

 }

 private void searchContact() {  //查询联系人的方法

  int option = -1;

  while (option == -1) {

   option = JOptionPane.showOptionDialog(null, "请选择一种方式", "",

     JOptionPane.DEFAULT_OPTION,    //默认通过姓名查找

     JOptionPane.INFORMATION_MESSAGE,

     null, SEARCH_OPTIONS, SEARCH_OPTIONS[0]); //查找方式以集合的形式存在

  }

  if (option == 0) {

   String name = JOptionPane.showInputDialog("通过姓名");

   Contact c = phoneBook.getByName(name);

   if (c != null) {  //若联系人的姓名不为空,则输出姓名及手机号

    JOptionPane.showMessageDialog(null, phoneBook.getByName(name));

   }

   else {

    JOptionPane.showMessageDialog(null, "该联系人不存在");

   }

  }

  else {

   String phone = JOptionPane.showInputDialog("通过手机号");

   Contact c = phoneBook.getByPhone(phone);

   if (c != null && !c.getPhone().equals(ContactImpl.EMPTY_PHONE)) {

    JOptionPane.showMessageDialog(null, c);

   }

   else {

    JOptionPane.showMessageDialog(null, "该联系人不存在");

   }

  }

 }

 private void updatePhoneBook() {  //对联系人刷新的方法

 

  phoneBook.update();

  display();

 }

 

private void modifyContact(){  //修改联系人的方法

String name = JOptionPane.showInputDialog("请输入要修改的联系人姓名");

 if (name != null && !name.trim().equals("")) 

 {

  int option = JOptionPane.showConfirmDialog(null, "确定要修改联系人:"

    + name +" "+ "吗?", "确定", JOptionPane.YES_NO_OPTION);

  if (option == 0) {

   if (!phoneBook.remove(name)) {

    JOptionPane.showMessageDialog(null, "该联系人不存在!");

   }

   else {

    String n = JOptionPane.showInputDialog("请输入新的联系人姓名");

   }

  }

 }

 display();

 }

 private void removeContact() {  //删除联系人的方法

  String name = JOptionPane.showInputDialog("请输入要删除的联系人姓名");

  if (name != null && !name.trim().equals("")) 

  {

   int option = JOptionPane.showConfirmDialog(null, "确定要删除联系人:"

     + name +" "+ "吗?", "确定", JOptionPane.YES_NO_OPTION);

   if (option == 0) {

    if (!phoneBook.remove(name)) {

     JOptionPane.showMessageDialog(null, "该联系人不存在!");

    }

    else {

     JOptionPane.showMessageDialog(null, "删除成功");

    }

   }

  }

  display();

 }

 private void display() {  //显示的方法

  showArea.selectAll();

  showArea.replaceSelection(""); //用给定的内容替换当前选定的内容

  for (Contact c : phoneBook.getPhoneBook()) {   

   showArea.append(c.toString() + "\n");

  }

 }

 private static void createAndShowGUI() {  //创建主窗口

  JFrame mainFrame = new linkman();

  mainFrame.setLocation(400,200);

  mainFrame.setSize(20,20);

  mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置点击关闭按钮默认关闭窗口


  mainFrame.pack();

  mainFrame.setVisible(true);

 }


 public static void main(String[] args) { 

  createAndShowGUI();

 }

}


interface PhoneBookConstants { //选择数组赋值

 static final String SEARCH_OPTIONS[] = {"通过姓名", "通过手机号"};


}


interface Contact {   //定义Contact接口

 public String getName();     //定义抽象方法String getName()

 public void setName(String name);  //定义抽象方法setName(String name)

 public String getPhone();    //定义抽象方法String getphone()

 public void setPhone(String phone);//定义抽象方法setPhone(String phone

 public String toString();//定义抽象方法String toString()

}


interface PhoneBook {      //接口

 public ArrayList<Contact> getPhoneBook();

 public boolean add(String name); //向集合中添加姓名

 public boolean add(String name, String phone);//像集合中添加姓名,手机号

 public Contact getByName(String name);

 public Contact getByPhone(String phone);

 public void update();

 

 public boolean remove(String name);  //是否删除集合中的元素

 boolean isExist(String name);//判断是否存在该姓名的联系人

}


class ContactImpl implements Contact {

 static final String EMPTY_PHONE = "空";

 private String name;

 private String phone;


 public ContactImpl (String name) {

  this.name = name;

  this.phone = null;

 }

 public ContactImpl (String name, String phone) {

  this.name = name;

  this.phone = phone;

 }

 @Override

 public String getName() {

  return name;

 }

 @Override

 public void setName(String name) {

  this.name = name;

 }

 @Override

 public String getPhone() {  //得到手机号的方法,允许为空

if(phone == null){

return EMPTY_PHONE;

}else{

return phone;

}

 }

 @Override

 public void setPhone(String phone) {

  this.phone = phone;

 }

 @Override

 public String toString() {

  return getName() + ":       " + getPhone();   

 }

}


class PhoneBookImpl implements PhoneBook {

 ArrayList<Contact> phoneBook;   

 public PhoneBookImpl () {

  phoneBook = new ArrayList<Contact>(); //将phoneBook中的内容放在数组中

 }

 @Override

 public ArrayList<Contact> getPhoneBook() {

  return phoneBook;

 }

 @Override

 public boolean add(String name) {//判断联系人是否已经存在,如果不存在就添加到电话簿中

  if (isExist(name)) {

   return false;

  }

  else {

   phoneBook.add(new ContactImpl(name));

   return true;

  }

 }

 @Override

 public boolean add(String name, String phone) {   //判断联系人是否存在

  if (isExist(name)) {

   return false;

  }

  else {

   if (phone == null || phone.equals("") || phone.trim().equals("")) {

    add(name);

   }

   else {

    phoneBook.add(new ContactImpl(name, phone));

   }

   return true;

  }

 }

 @Override

 public Contact getByName(String name) {  //通过姓名查找联系人的方法

  for (Contact c : phoneBook) {

   if (c.getName().equals(name)) {

    return c;

   }

  }

  return null;

 }

 @Override

 public Contact getByPhone(String phone) { //通过手机号查找联系人的方法

  for (Contact c : phoneBook) {

   if (c.getPhone().equals(phone)) {

    return c;

   }

  }

  return null;

 }

 @Override

 public boolean remove(String name) { //删除的方法

  for (Contact c : phoneBook) {

   if (c.getName().equals(name)) {

    phoneBook.remove(c);

    return true;

   }

  }

  return false;

 }

 @Override

 public void update() {                 //刷新的方法

  for (int i = 0; i < phoneBook.size() - 1; i++) {

   for (int j = i + 1; j < phoneBook.size(); j++) {

    if (phoneBook.get(i).getName().toLowerCase().compareTo(

      phoneBook.get(j).getName().toLowerCase()) > 0) {

     Contact c = phoneBook.get(i);

     phoneBook.set(i, phoneBook.get(j));

     phoneBook.set(j, c);

    }

   }

  }

 }

 @Override

 public boolean isExist(String name) { //如果联系人存在,则输出该联系人

  for (Contact n : phoneBook) {

   if (n.getName().equals(name)) {

    return true;

   }

  }

  return false;

 }

}