个人简单通信录

编写如下图界面的个人简单通信录,具有如下功能。 

1、 定义一个类,包含姓名、邮编、地址、电话、手机、邮箱和QQ等成量。

2、 添加:把界面上输入的信息写入文件中去。若有相同的姓名加入,则弹出对话框显示该记录已存在。

3、 查找:根据姓名或QQ在文件中查找个人信息,如找到则在界面中显示出来,没找到,则弹出找不到的对话框。


提示参考:

可定义ArrayList类的数组。ArrayList类实现的是大小可变的数组,从文件中读入的数据先存入一个数组中,添加或查找都在数组中进行。最后将数组中的内容写回文件中保存。


package 通讯录;

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class AdressList {

	JFrame jframe;
	JPanel jp1, jp2, jp3;
	JButton jbtn1, jbtn2, jbtn3,jbtn4;
	JLabel jl1, jl2, jl3, jl4, jl5, jl6, jl7, jl8;
	JTextField jt1, jt2, jt3, jt4, jt5, jt6, jt7;
	Box box;
	JOptionPane jop;
	UserInfo[] ui;
	int index;

	public void go() {
		index = -1;
		ui = new UserInfo[100];

		jframe = new JFrame("通讯录");

		jl1 = new JLabel("个人通讯录");
		jl2 = new JLabel(" 姓 名 :");
		jl3 = new JLabel(" 邮 编 :");
		jl4 = new JLabel(" 地 址 :");
		jl5 = new JLabel(" 电 话 :");
		jl6 = new JLabel(" 手 机 :");
		jl7 = new JLabel(" 邮 箱  :");
		jl8 = new JLabel(" Q Q    :");

		/* 设置字体,第一个参数是字体的名称,第二个参数是字体的风格,第三参数是字体的大小 */
		jl1.setFont(new Font("Dialog", Font.PLAIN, 25));
		jl2.setFont(new Font("Dialog", Font.PLAIN, 17));
		jl3.setFont(new Font("Dialog", Font.PLAIN, 17));
		jl4.setFont(new Font("Dialog", Font.PLAIN, 17));
		jl5.setFont(new Font("Dialog", Font.PLAIN, 17));
		jl6.setFont(new Font("Dialog", Font.PLAIN, 17));
		jl7.setFont(new Font("Dialog", Font.PLAIN, 17));
		jl8.setFont(new Font("Dialog", Font.PLAIN, 17));

		jbtn1 = new JButton(" 添  加 ");
		jbtn2 = new JButton(" 查  找 ");
		jbtn3 = new JButton(" 清  除 ");
		jbtn4 = new JButton(" 退  出 ");

		jt1 = new JTextField(25);
		jt2 = new JTextField(25);
		jt3 = new JTextField(25);
		jt4 = new JTextField(25);
		jt5 = new JTextField(25);
		jt6 = new JTextField(25);
		jt7 = new JTextField(25);

		jp1 = new JPanel();
		jp2 = new JPanel();
		jp3 = new JPanel();

		jp1.add(jl1);
		jp2.add(jl2);
		jp2.add(jt1);
		jp2.add(jl3);
		jp2.add(jt2);
		jp2.add(jl4);
		jp2.add(jt3);
		jp2.add(jl5);
		jp2.add(jt4);
		jp2.add(jl6);
		jp2.add(jt5);
		jp2.add(jl7);
		jp2.add(jt6);
		jp2.add(jl8);
		jp2.add(jt7);
		box = Box.createHorizontalBox();
		box.add(jbtn1);
		box.add(Box.createHorizontalStrut(10));
		box.add(jbtn2);
		box.add(Box.createHorizontalStrut(10));
		box.add(jbtn3);
		box.add(Box.createHorizontalStrut(10));
		box.add(jbtn4);
		jp3.add(box);

		jframe.add(jp1, BorderLayout.NORTH);
		jframe.add(jp2, BorderLayout.CENTER);
		jframe.add(jp3, BorderLayout.SOUTH);
		jframe.setLocation(400, 150);
		jframe.setSize(400, 350);
		jframe.setResizable(false);
		jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jframe.setVisible(true);

		Text();

		
		/**
		 * 添加按钮注册事件
		 */
		jbtn1.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				if (jt1.getText().length() == 0) {

					JOptionPane.showMessageDialog(jframe, "名字不能为空,请重新输入!",
							"警告", JOptionPane.WARNING_MESSAGE);
				} else if (exist(jt1.getText()) == true) {

					JOptionPane.showMessageDialog(jframe, "名字已存在,请重新输入!", "警告",
							JOptionPane.WARNING_MESSAGE);
				} else {
					index++;
					ui[index] = new UserInfo(jt1.getText(), jt2.getText(), jt3
							.getText(), jt4.getText(), jt5.getText(), jt6
							.getText(), jt7.getText());

					JOptionPane.showMessageDialog(jframe, "用户添加成功!", "提示",
							JOptionPane.INFORMATION_MESSAGE);
				}
				Clear();
			}
		});

		
		/**
		 * 查找按钮注册事件
		 */
		jbtn2.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				if (jt1.getText().length() == 0) {
					JOptionPane.showMessageDialog(jframe,
							"查找失败,用户名不能为空,请重新输入!", "警告",
							JOptionPane.WARNING_MESSAGE);
				} else if (exist(jt1.getText()) == true) {
					for (int n = 0; n <= index; n++) {
						if (ui[n].Name.equals(jt1.getText())) {
							jt1.setText(ui[n].Name);
							jt2.setText(ui[n].Post);
							jt3.setText(ui[n].Addr);
							jt4.setText(ui[n].Phone);
							jt5.setText(ui[n].Tel);
							jt6.setText(ui[n].E_Mail);
							jt7.setText(ui[n].QQ);
						}
					}
				} else {
					JOptionPane.showMessageDialog(jframe, "查找失败,用户名不存在,请重新输入!",
							"警告", JOptionPane.WARNING_MESSAGE);
					Clear();
				}
				
			}
		});

		
		/**
		 * 清除按钮添加事件
		 */
		jbtn3.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				Clear();				
			}
		});
		

		/**
		 * 退出按钮注册事件
		 */
		jbtn4.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				try {
					FileOutputStream fos = new FileOutputStream("data.dat");
					ObjectOutputStream oos = new ObjectOutputStream(fos);
					for (int n = 0; n <= index; n++)
						oos.writeObject(ui[n]);
					fos.close();
					System.exit(0);
				} catch (FileNotFoundException e1) {
					// TODO 自动生成的 catch 块
					e1.printStackTrace();
				} catch (IOException e1) {
					// TODO 自动生成的 catch 块
					e1.printStackTrace();
				}

			}
		});
						
	}

	protected boolean exist(String text) {
		// TODO 自动生成的方法存根
		for (int n = 0; n <= index; n++) {
			if (ui[n].Name.equals(text))
			{
				return true;
				}
			}
		return false;
		}

	
	/**
	 * 清除文本框内容
	 */
	protected void Clear() {
		// TODO 自动生成的方法存根
		jt1.setText(null);
		jt2.setText(null);
		jt3.setText(null);
		jt4.setText(null);
		jt5.setText(null);
		jt6.setText(null);
		jt7.setText(null);

	}


	/**
	 * 文本信息
	 * 
	 * @param args
	 */
	public void Text() {
		try {
			FileInputStream fis = new FileInputStream("data.dat");
			ObjectInputStream ois = new ObjectInputStream(fis);
			while (fis.available() > 0) {
				index++;
				ui[index] = new UserInfo((UserInfo) ois.readObject());
			}
			fis.close();

		} catch (FileNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} catch (IOException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}

	}

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		AdressList al = new AdressList();
		al.go();

	}
}




package 通讯录;

import java.io.*;

public class UserInfo implements Serializable{
	
	public String Name,Post,Addr,Phone,Tel,E_Mail,QQ;

	public UserInfo(String name, String post, String addr, String phone,
			String tel, String e_mail, String qq) {
		// TODO 自动生成的构造函数存根
		Name = name;
		Post = post;
		Addr = addr;
		Phone = phone;
		Tel = tel;
		E_Mail = e_mail;
		QQ = qq;		
	}

	public UserInfo(UserInfo u) {
		// TODO 自动生成的构造函数存根
		this.Name = u.Name;
		this.Post = u.Post;
		this.Addr = u.Addr;
		this.Phone = u.Phone;
		this.Tel = u.Tel;
		this.E_Mail = u.E_Mail;
		this.QQ = u.QQ;
	}

	public String getName() {
		return Name;
	}

	public void setName(String name) {
		Name = name;
	}

	public String getPost() {
		return Post;
	}

	public void setPost(String post) {
		Post = post;
	}

	public String getAddr() {
		return Addr;
	}

	public void setAddr(String addr) {
		Addr = addr;
	}

	public String getPhone() {
		return Phone;
	}

	public void setPhone(String phone) {
		Phone = phone;
	}

	public String getTel() {
		return Tel;
	}

	public void setTel(String tel) {
		Tel = tel;
	}

	public String getE_Mail() {
		return E_Mail;
	}

	public void setE_Mail(String e_Mail) {
		E_Mail = e_Mail;
	}

	public String getQQ() {
		return QQ;
	}

	public void setQQ(String qQ) {
		QQ = qQ;
	}

	UserInfo() {
		Name = null;
		Post = null;
		Addr = null;
		Phone = null;
		Tel = null;
		E_Mail = null;
		QQ = null;
	}

}

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值