java编写个人通讯录

通讯录管理(字符或图形界面皆可)
编写一个简单的通讯录管理程序。通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四
项。
基本要求
程序应提供的基本基本管理功能有:
1) 添加:即增加一个人的记录到通信录中
2) 显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示。
3) 存储:即将通讯录信息保存在一个文件中。
4)
装入:即将文件中的信息读入程序。
5) 查询:可根据姓名查找某人的相关信息,若找到
显示其姓名、地址、电话号码和邮政编码。
6) 修改:可修改一个人的除姓名外其它信息。
实现提示
程序可用一个单向链表来管理人员信息,每个人员的生名,地址,电话号码和邮政编码用一个类Cperson来实现,作为链表的值指针指向这些Cperson类对象,通过链
表的遍历可以操作这些数据。

package com.csdn;
import java.util.*;
import java.text.*;
import java.io.*;
//联系人类
class Cperson {
Cperson() {phone = new String[10];}
private String name;//姓名
private String[] phone;//电话
private String work;//工作地址
private String call;//通信地址
private String email;//电子邮箱
private String birthday;//生日
private String remark;//备注
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public String[] getPhone() {return phone;}
public void setPhone(String[] phone) {this.phone = phone;}
public String getWork() {return work;}
public void setWork(String work) {this.work = work;}
public String getCall() {return call;}
public void setCall(String call) {this.call = call;}
public String getEmail() {return email;}
public void setEmail(String email) {this.email = email;}
public String getBirthday() {return birthday;}
public void setBirthday(String birthday) {this.birthday = birthday;}
public String getRemark() {return remark;}
public void setRemark(String remark) {this.remark = remark;}
}
//管理联系人类
class manageLinkman {
Cperson[] l = new Cperson[1000];
Scanner input = new Scanner(System.in);
manageLinkman() {
    for (int i = 0; i < l.length; i++) {
        if (l[i] == null)
            l[i] = new Cperson();
    }
}
Cperson[] list(Cperson x)//联系人列表
{
    for (int i = 0; i < l.length; i++) {
        if (l[i].getName() == null) {
            l[i] = x;
            break;
        }
    }
    return l;
}
void addLinkman()//添加实现
{
    Cperson l1 = new Cperson();
    boolean f = false;
    System.out.println("姓名:");
    String name = input.next();
    for (int i = 0; i < l.length && l[i].getName() != null; i++) {
        if (l[i].getName().equals(name))
            f = true;
    }
    if (f)
        System.out.println("添加失败,该联系人已存在!");
    else {
        l1.setName(name);
        String[] phone = new String[10];
        for (int i = 0; i < 10; i++) {
            System.out.println("电话号码" + (i + 1) + ":");
            phone[i] = input.next();
            System.out.print("是否还要添加其他号码:1.是 0.否");
            String x = input.next();
            if (x.equals("1"))
                System.out.println("请继续!");
            else if (x.equals("0")) {
                break;
            } else {
                System.out.println("指令错误,已退出!");
                break;
            }
        }
        l1.setPhone(phone);
        System.out.println("工作地址:");
        String work = input.next();
        l1.setWork(work);
        System.out.println("通讯地址:");
        String call = input.next();
        l1.setCall(call);
        System.out.println("电子邮箱:");
        String email = input.next();
        l1.setEmail(email);
        System.out.println("生日:");
        String birthday = input.next();
        l1.setBirthday(birthday);
        System.out.println("备注:");
        String remark = input.next();
        l1.setRemark(remark);
        list(l1);
        System.out.println("添加成功!");
    }
}
int nameFind(String name) {//按姓名查找实现
    int i;
    boolean f = false;
    for (i = 0; i < l.length && l[i].getName() != null; i++) {
        if (l[i].getName().equals(name)) {
            f = true;
            break;
        }
    }
    if (f)
        return i;
    else
        return -1;
}
void phoneFind(String phone) {//按号码查找实现
    int i;
    boolean f = false;
    String[] num = new String[10];
    for (i = 0; i < l.length; i++) {
        System.arraycopy(l[i].getPhone(), 0, num, 0, 10);
        for (int j = 0; j < 10 && num[j] != null; j++) {
            if (num[j].equals(phone)) {
                f = true;
                break;
            }
        }
        if (f)
            printLinkman(i);
        else {
            System.out.println("对不起,通讯录中没有此联系人!");
            System.out.println("是否添加为新联系人:1.YES 2.NO");
            String x = input.next();
            if (x.equals("1"))
                addLinkman();
        }
    }
}
void workFind(String work) {//按工作地址查找实现
    int i;
    boolean f = false;
    for (i = 0; i < l.length && l[i].getWork() != null; i++) {
        if (l[i].getWork().equals(work)) {
            f = true;
            break;
        }
    }
    if (f)
        printLinkman(i);
    else
        System.out.println("对不起,没有找到哦!肯定是你输错了!");
}
void callFind(String call) {//按通讯地址查找实现
    int i;
    boolean f = false;
    for (i = 0; i < l.length && l[i].getCall() != null; i++) {
        if (l[i].getCall().equals(call)) {
            f = true;
            break;
        }
    }
    if (f)
        printLinkman(i);
    else
        System.out.println("对不起,没有找到哦!肯定是你输错了!");
}
void emailFind(String email) {//按电子邮箱查找实现
    int i;
    boolean f = false;
    for (i = 0; i < l.length && l[i].getEmail() != null; i++) {
        if (l[i].getEmail().equals(email)) {
            f = true;
            break;
        }
    }
    if (f)
        printLinkman(i);
    else
        System.out.println("对不起,没有找到哦!肯定是你输错了!");
}
void birthdayFind(String b) {//按生日查找实现
    int i;
    boolean f = false;
    for (i = 0; i < l.length && l[i].getBirthday() != null; i++) {
        if (l[i].getBirthday().equals(b)) {
            f = true;
            break;
        }
    }
    if (f)
        printLinkman(i);
    else
        System.out.println("对不起,没有找到哦!肯定是你输错了!");
}
void remarkFind(String remark) {//按备注查找实现
    int i;
    boolean f = false;
    for (i = 0; i < l.length && l[i].getRemark() != null; i++) {
        if (l[i].getRemark().equals(remark)) {
            f = true;
            break;
        }
    }
    if (f)
        printLinkman(i);
    else
        System.out.println("对不起,没有找到哦!肯定是你输错了!");
}
void del(int i)//删除实现
{
    if (i == -1) {
        System.out.println("对不起,通讯录中没有此联系人!");
        System.out.println("是否添加为新联系人:1.YES 2.NO");
        String x = input.next();
        if (x.equals("1"))
            addLinkman();
    } else {
        System.out.println("请选择你要删除的内容:");
        System.out.println("1.该联系人  2.号码 3.工作地址 4.通讯地址 5.电子邮箱 6.生日 7.备注");
        String x = input.next();
        switch (x) {
            case "1": {
                System.out.println("已删除联系人" + l[i].getName() + "!");
                l[i].setName(" ");
                String[] phone = new String[10];
                System.arraycopy(l[i].getPhone(), 0, phone, 0, 10);
                for (int j = 0; j < phone.length && phone[j] != null; j++) {
                    phone[j] = " ";
                }
                l[i].setPhone(phone);
                l[i].setWork(" ");
                l[i].setCall(" ");
                l[i].setEmail(" ");
                l[i].setBirthday(" ");
                l[i].setRemark(" ");
            }
            break;
            case "2": {
                String[] phone = new String[10];
                System.arraycopy(l[i].getPhone(), 0, phone, 0, 10);
                for (int j = 0; j < phone.length && phone[j] != null; j++) {
                    System.out.print("是否要删除号码:" + phone[j] + " 1.是 0.否");
                    String c = input.next();
                    if (c.equals("1")) {
                        System.out.println("号码" + phone[j] + "已删除!");
                        phone[j] = " ";
                        System.out.println("1.继续 2.退出");
                        String b1 = input.next();
                        if (b1.equals("2"))
                            break;
                    } else
                        continue;
                }
                l[i].setPhone(phone);
            }
            ;
            break;
            case "3": {
                System.out.println("工作地址已删除!");
                l[i].setWork(" ");
            }
            break;
            case "4": {
                System.out.println("通讯地址已删除!");
                l[i].setCall(" ");
            }
            break;
            case "5": {
                System.out.println("电子邮箱已删除!");
                l[i].setEmail(" ");
            }
            break;
            case "6": {
                System.out.println("生日已删除!");
                l[i].setBirthday(" ");
            }
            break;
            case "7": {
                System.out.println("备注已删除!");
                l[i].setRemark(" ");
            }
            break;
            default:
                System.out.println("输入错误!");
        }
    }
}
void printLinkman(int i)//打印实现
{
    if (i == -1) {
        System.out.println("对不起,通讯录中没有此联系人!");
        System.out.println("是否添加为新联系人:1.YES 2.NO");
        String x = input.next();
        if (x.equals("1"))
            addLinkman();
    } else {
        System.out.println("已为你找到该联系人!");
        System.out.println("姓名:" + l[i].getName());
        String[] num = new String[10];
        System.arraycopy(l[i].getPhone(), 0, num, 0, 10);
        for (int j = 0; j < 10 && num[j] != null; j++) {
            System.out.println("电话" + (j + 1) + ":" + num[j]);
        }
        System.out.println("工作地址:" + l[i].getWork());
        System.out.println("通讯地址:" + l[i].getCall());
        System.out.println("电子邮箱:" + l[i].getEmail());
        System.out.println("生日:" + l[i].getBirthday());
        System.out.println("备注:" + l[i].getRemark());
    }
}
void updata(int i)//修改实现
{
    if (i == -1) {
        System.out.println("对不起,通讯录中没有此联系人!");
        System.out.println("是否添加为新联系人:1.YES 2.NO");
        String x = input.next();
        if (x.equals("1"))
            addLinkman();
    } else {
        System.out.println("请选择你要更新的内容:");
        System.out.println("1.姓名 2.号码 3.工作地址 4.通讯地址 5.电子邮箱 6.生日 7.备注");
        int x = input.nextInt();
        switch (x) {
            case 1: {
                System.out.println("输入你要更新的姓名:");
                String name = input.next();
                l[i].setName(name);
            }
            break;
            case 2: {
                String[] phone = new String[10];
                System.arraycopy(l[i].getPhone(), 0, phone, 0, 10);
                for (int j = 0; j < phone.length; j++) {
                    if (phone[j].equals(" ")) {
                        continue;
                    }
                    System.out.println("是否要更新号码:" + phone[j] + " 1.是 0.否");
                    String b = input.next();
                    if (b.equals("1")) {
                        System.out.println("请输入你要更新的号码:");
                        phone[j] = input.next();
                        System.out.print("原号码已更新为:" + phone[j]);
                        System.out.println("1.继续 2.退出");
                        String b1 = input.next();
                        if (b1.equals("2"))
                            break;
                    } else
                        continue;
                }
                l[i].setPhone(phone);
            }
            break;
            case 3: {
                System.out.println("输入你要更新的工作地址:");
                String work = input.next();
                System.out.print("你已修改工作地址" + l[i].getWork() + "为");
                l[i].setWork(work);
                System.out.println(l[i].getWork());
            }
            break;
            case 4: {
                System.out.println("输入你要更新的通讯地址:");
                String call = input.next();
                System.out.print("你已修改通讯地址:" + l[i].getCall() + "为");
                l[i].setCall(call);
                System.out.println(l[i].getCall());
            }
            break;
            case 5: {
                System.out.println("输入你要更新的电子邮箱:");
                String email = input.next();
                System.out.print("你已修改电子邮箱:" + l[i].getEmail() + "为");
                l[i].setEmail(email);
                System.out.print(l[i].getEmail());
            }
            break;
            case 6: {
                System.out.println("输入你要更新的生日:");
                String birthday = input.next();
                System.out.print("你已修改生日:" + l[i].getBirthday() + "为");
                l[i].setBirthday(birthday);
                System.out.print(l[i].getBirthday());
            }
            break;
            case 7: {
                System.out.println("输入你要更新的备注:");
                String remark = input.next();
                System.out.print("你已修改备注:" + l[i].getRemark() + "为");
                l[i].setRemark(remark);
                System.out.println(l[i].getRemark());
            }
            break;
            default:
                System.out.println("输入错误!");
        }
    }
}
void printFile(OutputStream out) {
    try {
        BufferedWriter output = new BufferedWriter(new OutputStreamWriter(out));
        for (int i = 0; i < l.length && l[i].getName() != null; i++) {
            if (l[i].getName().equals(" "))
                continue;
            else {
                {
                    output.write("姓名:" + l[i].getName() + " ");
                    String[] num = new String[10];
                    System.arraycopy(l[i].getPhone(), 0, num, 0, 10);
                    for (int j = 0; j < 10 && num[j] != null; j++) {
                        output.write("电话" + (j + 1) + ":" + num[j] + " ");
                    }
                    output.write("工作地址:" + l[i].getWork() + " ");
                    output.write("通讯地址:" + l[i].getCall() + " ");
                    output.write("电子邮箱" + l[i].getEmail() + " ");
                    output.write("生日:" + l[i].getBirthday() + " ");
                    output.write("备注" + l[i].getRemark() + " ");
                }
                output.write("\n");
            }
        }
        output.flush();
    } catch (IOException e) {
    }
}
void readFile()//从文件读入数据实现
{
    String[] str = new String[1000];
    try {
        BufferedReader input = new BufferedReader(new FileReader("通讯录"));
        int i = 0;
        while ((str[i] = input.readLine()) != null) {
            System.out.println(str[i]);
            if (str[i].equals(""))
                break;
        }
        input.close();
    } catch (IOException e) {
    }
    System.out.println("文件数据全部读取完毕!");
}
}
public class Test {//测试类
Scanner input = new Scanner(System.in);
manageLinkman m = new manageLinkman();
public void add()//添加执行
{
    System.out.println("开始添加联系人......");
    m.addLinkman();
}
public void find()//查找执行
{
    System.out.println("请选择你的查找方式:");
    System.out.println(" 1.按姓名 2.按号码 3.按工作地址 4.按通讯地址 5.按电子邮箱 6.按生日 7.按备注");
    String x = input.next();
    switch (x) {
        case "1": {
            System.out.println("输入你要查找联系人的姓名:");
            String name = input.next();
            m.printLinkman(m.nameFind(name));
        }
        break;
        case "2": {
            System.out.println("输入你要查找联系人的号码:");
            String phone = input.next();
            m.phoneFind(phone);
        }
        break;
        case "3": {
            System.out.println("输入你要查找联系人的工作地址:");
            String work = input.next();
            m.workFind(work);
        }
        break;
        case "4": {
            System.out.println("输入你要查找联系人的通讯地址:");
            String call = input.next();
            m.callFind(call);
        }
        break;
        case "5": {
            System.out.println("输入你要查找联系人的电子邮箱:");
            String email = input.next();
            m.emailFind(email);
        }
        break;
        case "6": {
            System.out.println("输入你要查找联系人的生日:");
            String bir = input.next();
            m.birthdayFind(bir);
        }
        break;
        case "7": {
            System.out.println("输入你要查找联系人的备注信息:");
            String remark = input.next();
            m.remarkFind(remark);
        }
        break;
        default:
            System.out.println("输入错误!");
    }
}
public void del()//删除执行
{
    System.out.println("输入你要删除联系人的姓名:");
    String name = input.next();
    m.del(m.nameFind(name));
}
public void up() {//修改执行
    System.out.println("输入你要修改联系人的姓名:");
    String name = input.next();
    m.updata((m.nameFind(name)));
}
public void cout()//打印执行
{
    System.out.println("输入你要打印联系人的姓名:");
    String name = input.next();
    m.printLinkman(m.nameFind(name));
    System.out.println("打印完毕!");
}
public void pFile() throws java.io.IOException//写入文件执行
{
   try(final FileOutputStream fileOutputStream = new FileOutputStream("通讯录")){
       m.printFile(fileOutputStream);
       System.out.println("文件创建成功!");
       System.out.println("向文件导入数据成功");
   }
}
public void pSystemOut() throws java.io.IOException//写入文件执行
{
    m.printFile(System.out);
}
public void rFile()//从文件读入数据执行
{
    System.out.println("正在为你读入数据......");
    m.readFile();
}
public void cool()//显示当前时间和贴心提醒
{
    SimpleDateFormat s = new SimpleDateFormat();
    SimpleDateFormat s1 = new SimpleDateFormat("HH");
    s.applyPattern("yyy-MM-dd HH:mm:ss a");
    Date date = new Date();
    String h = s1.format(date);
    int x = Integer.parseInt(h);
    System.out.println("现在时间:" + s.format(date));
    if (x == 23 || x == 0 || x == 1 || x == 2 || x == 3 || x == 4 || x == 5 || x == 6)
        System.out.println("该睡觉了!晚安,好梦!");
    else if (x >= 7 && x <= 11)
        System.out.println("一日之计在于晨!加油吧!");
    else if (x == 12)
        System.out.println("在忙也要记得吃饭哦!");
    else if (x == 13)
        System.out.println("该睡午觉了!午安!");
    else if (x >= 14 && x <= 17)
        System.out.println("下午也要加油啊!不要荒废每一天!");
    else if (x == 18 || x == 19)
        System.out.println("该吃晚饭了!");
    else if (x >= 20 && x < 23)
        System.out.println("忙了一天了!是时候给自己放会儿假了!");
}
public void Menu() throws java.io.IOException {//菜单
    do {
        System.out.println("-----------------欢迎使用通讯录管理系统!-----------------");
        System.out.println("                0.显示所有联系人                      ");
        System.out.println("                1.添加联系人                      ");
        System.out.println("                2.删除联系人                          ");
        System.out.println("                3.修改联系人                            ");
        System.out.println("                4.搜索联系人                            ");
        System.out.println("                5.显示单一联系人                            ");
        System.out.println("                6.导出通讯录到文件                 ");
        System.out.println("                7.从文件读入数据并打印通讯录列表   ");
        System.out.println("                8.贴心提醒 (特别)                        ");
        System.out.println("请输入指令数字进行操作:");
        String key = input.next();
        switch (key) {
            case "0":
                pSystemOut();
                break;
            case "1":
                add();
                break;
            case "2":
                del();
                break;
            case "3":
                up();
                break;
            case "4":
                find();
                break;
            case "5":
                cout();
                break;
            case "6":
                pFile();
                break;
            case "7":
                rFile();
                break;
            case "8":
                cool();
                break;
            default:
                System.out.println("输入错误!");
                continue;
        }
        break;
    } while (true);
}
public static void main(String[] args) throws java.io.IOException {
    Test t = new Test();
    while (true) {
        t.Menu();
    }
}
}

package p1;

import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.jar.Attributes.Name;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.border.Border;

import org.omg.CosNaming.NamingContextPackage.NotEmpty;

public class Communication extends JFrame
{
    //定义界面中必要的组件,包括标签、文本域、按钮等
    JLabel title=new JLabel("个人通信录");
    JLabel name=new JLabel("姓名");
    JLabel zip=new JLabel("邮政编码");
    JLabel address=new JLabel("通信地址");
    JLabel telephone=new JLabel("电话");
    JLabel mobile=new JLabel("手机");
    JLabel email=new JLabel("email");
    JTextField nametext=new JTextField();
    JTextField ziptext=new JTextField();
    JTextField addtext=new JTextField();
    JTextField teltext=new JTextField();
    JTextField mobtext =new JTextField();
    JTextField emailtext=new JTextField();
    
    
    Font font=new Font("TimersRoman",Font.ITALIC,40);//使用的字体
    
    JButton add =new JButton("添加");
    JButton find=new JButton("查找");
    JButton clear=new JButton("清空");
    JButton exit=new JButton("退出");
    
    ArrayList nameCardArray=new ArrayList();
    
    Communication(String s)
    {
        super(s);
        Container cp=getContentPane();
        cp.setLayout(null);
        
        //给个文本输入域设置边框
        nametext.setBorder(BorderFactory.createLoweredBevelBorder());
        ziptext.setBorder(BorderFactory.createLoweredBevelBorder());
        addtext.setBorder(BorderFactory.createLoweredBevelBorder());
        teltext.setBorder(BorderFactory.createLoweredBevelBorder());
        mobtext.setBorder(BorderFactory.createLoweredBevelBorder());
        emailtext.setBorder(BorderFactory.createLoweredBevelBorder());
        
        
        //给各按钮添加设置边框
        add.setBorder(BorderFactory.createLoweredBevelBorder());
        find.setBorder(BorderFactory.createLoweredBevelBorder());
        clear.setBorder(BorderFactory.createLoweredBevelBorder());
        exit.setBorder(BorderFactory.createLoweredBevelBorder());
        
        title.setFont(font);//设置文本域使用的字体
        //设置各组件的大小
        title.setBounds(130, 20, 300, 60);
        name.setBounds(50, 100, 75, 20);
        nametext.setBounds(150, 100, 100, 20);
        zip.setBounds(50,140 ,75,20 );
        ziptext.setBounds(150,140 ,100,20 );
        address.setBounds(50,180 ,75,20 );
        addtext.setBounds(150,180 ,250,20 );
        telephone.setBounds(50,220 ,75,20 );
        teltext.setBounds(150,220 ,150, 20);
        mobile.setBounds(50,260 ,75,20 );
        mobtext.setBounds(150,260 ,150, 20);
        email.setBounds(50, 300,75,20 );
        emailtext.setBounds(150,300 ,250, 20);
        
        //设置按钮的位置
        add.setBounds(50, 360, 75,25);
        find.setBounds(150, 360, 75,25);
        clear.setBounds(250, 360, 75,25);
        exit.setBounds(350, 360, 75,25);
        add.addActionListener(new ActionListener()//将添加按钮添加按钮监听器
        {
            
            @Override
            public void actionPerformed(ActionEvent e) 
            {
                if(nametext.getText().equalsIgnoreCase(""))
                {
                // TODO Auto-generated method stub
                JOptionPane.showMessageDialog(null, "无法添加名字为空的记录", "Message",JOptionPane.INFORMATION_MESSAGE);
                nametext.setText("");
                ziptext.setText("");
                addtext.setText("");
                teltext.setText("");
                mobtext.setText("");
                emailtext.setText("");
                return;
               }
                
                //从各文本域中获取新数据中
                Note note=new Note();
                note.name=nametext.getText();
                note.zip=ziptext.getText();
                note.address=addtext.getText();
                note.telephone=teltext.getText();
                note.mobile=mobtext.getText();
                note.email=emailtext.getText();
                try 
                {
                    ObjectInputStream in=new ObjectInputStream(new FileInputStream("note.dat"));
                    //从原文件中读入已有的数据
                    nameCardArray=(ArrayList) in.readObject();
                    in.close();
                } catch (Exception ex) {
                    // TODO: handle exception
                }
                try 
                {
                    ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("note.dat", true));
                    Note temp=new Note();
                    int i;
                    //判定是否存在相同的记录
                    for (i = 0; i <nameCardArray.size(); i++) 
                    {
                        temp=(Note)nameCardArray.get(i);
                        if(temp.name.equalsIgnoreCase(nametext.getText()));
                        break;
                    }
                    if(nameCardArray.size()!=0&&i!=nameCardArray.size()){
                        JOptionPane.showMessageDialog(null, "已经存在此记录","Message",JOptionPane.INFORMATION_MESSAGE);
                    }
                    else
                    {
                        nameCardArray.add(note);
                        //回写数据
                        out.writeObject(nameCardArray);
                    }
                    out.close();
                } catch (Exception ex) 
                {
                    // TODO: handle exception
                    
                }
                
                nametext.setText("");
                ziptext.setText("");
                addtext.setText("");
                teltext.setText("");
                mobtext.setText("");
                emailtext.setText("");
            }
        });
        find.addActionListener(new ActionListener()//给查找按钮注册监听器 
        {
            
            @Override
            public void actionPerformed(ActionEvent e) 
            {
                // TODO Auto-generated method stub
                try 
                {
                    ObjectInputStream in=new ObjectInputStream(new FileInputStream("note.dat"));
                    nameCardArray=(ArrayList) in.readObject();
                    in.close();
                } catch (Exception ex) {
                    // TODO: handle exception
                }
                Note temp=new Note();
                int i;
                for (i = 0;i  < nameCardArray.size();i ++)
                {
                    temp=(Note)nameCardArray.get(i);
                    if(temp.name.equalsIgnoreCase(nametext.getText()))
                        break;
                }
                if(nameCardArray.size()!=0&&i!=nameCardArray.size())
                {
                    ziptext.setText(temp.zip);
                    addtext.setText(temp.address);
                    teltext.setText(temp.telephone);
                    mobtext.setText(temp.mobile);
                    emailtext.setText(temp.email);
                }
                else
                {
                    nametext.setText("");
                    ziptext.setText("");
                    addtext.setText("");
                    teltext.setText("");
                    mobtext.setText("");
                    emailtext.setText("");
                    JOptionPane.showMessageDialog(null, "无此记录","Message",JOptionPane.INFORMATION_MESSAGE);
                }
            }
        });
            clear.addActionListener(new ActionListener()//给清空按钮注册监听器 
            {
                
                @Override
                public void actionPerformed(ActionEvent e) 
                {
                    // TODO Auto-generated method stub
                    try 
                    {
                        ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("note.dat"));
                        nameCardArray.clear();
                        out.close();
                    } catch (Exception e1){
                        // TODO: handle exception
                    }
                    nametext.setText("");
                    ziptext.setText("");
                    addtext.setText("");
                    teltext.setText("");
                    mobtext.setText("");
                    emailtext.setText("");
                    
                }
            });
                    
                exit.addActionListener(new ActionListener()//给退出按钮注册注册监听器
                {
                    
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        // TODO Auto-generated method stub
                        System.exit(1);
                    }
                });
                
                //布置按钮
                cp.add(title);
                cp.add(name);
                cp.add(zip);
                cp.add(address);
                cp.add(telephone);
                cp.add(mobile);
                cp.add(email);
                cp.add(nametext);
                cp.add(ziptext);
                cp.add(addtext);
                cp.add(teltext);
                cp.add(mobtext);
                cp.add(emailtext);
                cp.add(add);
                cp.add(find);
                cp.add(clear);
                cp.add(exit);
    }
    
    public static void main(String[] args)
    {
        Communication com=new Communication("通信录");
        com.addWindowListener(new WindowAdapter() 
        {
            public void windowClosing(WindowEvent e)
            {
                System.exit(0);
            }
            
        });
        com.setSize(480,460);
        com.setVisible(true);
    }
}


java基础ui可以采用javaFx,数据结构采用集合加自定义对象就可以了。功能还是比较简单,题主可以自己搭一个环境实验一下,刚好也是锻炼自己。

这有啥问题

可以采用javaFx

java web 简单的通讯录项目,下载下来改一改就行了
个人通讯录系统: 个人通讯录系统,我的作业。