java编写一个个人通信录程序

Java编写一个个人通信录程序,具有如下功能:
(1)定义一个类,包括姓名、邮政编码、通信地址等成员变量
(2)查找:根据姓名在文件中查找个人信息,如果找到则显示出来
(3)添加:向文件中写个人信息

一、class Note

package p1;

import java.io.Serializable;

class Note implements Serializable  
{
	public String name;
	public String zip;
	public String address;
	public String telephone;
	public String mobile;
	public String email;
	public Note(){}
	
}

二、class Communication

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编写一个个人通信录程序_第1张图片

你可能感兴趣的:(Java,code)