编写如下图界面的个人简单通信录,具有如下功能。
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;
}
}