java 通讯录

本文介绍了一个使用Java实现的简单通讯录应用程序。该程序通过GUI提供录入和显示联系人的功能,并利用RandomAccessFile进行文件读写操作来存储联系人信息。
package 通讯录;

public class Example10_21 {
	public static void main(String args[]){
		new CommFrame();
	}
}

package 通讯录;
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class CommFrame extends JFrame implements ActionListener{
	File file=null;
	JMenuBar bar;
	JMenu fileMenu;
	JMenuItem inputMenuItem,showMenuItem;
	JTextArea show;
	InputArea inputMessage;
	CardLayout card=null;
	JPanel pCenter;
	CommFrame(){
		file =new File("C:\\Users\\Administrator.XB-201509101154\\Desktop","通讯录.txt");
		inputMenuItem=new JMenuItem("录入");
		showMenuItem=new JMenuItem("显示");
		bar = new JMenuBar();
		fileMenu=new JMenu("菜单");
		fileMenu.add(inputMenuItem);
		fileMenu.add(showMenuItem);
		bar.add(fileMenu);
		setJMenuBar(bar);
		inputMenuItem.addActionListener(this);
		showMenuItem.addActionListener(this);
		inputMessage=new InputArea(file);
		show=new JTextArea(12,20);
		card=new CardLayout();
		pCenter=new JPanel();
		pCenter.setLayout(card);
		pCenter.add("inputMenuItem",inputMessage);
		pCenter.add("showMenuItem",show);
		add(pCenter,BorderLayout.CENTER);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		setBounds(100,50,420,380);
		validate();
	}
	public void actionPerformed(ActionEvent e){
		if(e.getSource()==inputMenuItem)
			card.show(pCenter, "inputMenuItem");
		else if(e.getSource()==showMenuItem){
			int number=1;
			show.setText(null);
			card.show(pCenter, "showMenuItem");
			try{
				RandomAccessFile in=new RandomAccessFile(file,"r");
				String name=null;
				while((name=in.readUTF())!=null){
					show.append("\n"+number+" "+name);
					show.append("\t "+in.readUTF());
					show.append("\t"+in.readUTF());
					show.append("\n - - - - - - - - - - - - - - - - - - - -");
					number++;
				}
				in.close();
			}
			catch(Exception ee){}
		}
	}

}

package 通讯录;
import java.io.*;

import javax.swing.*;

import java.awt.Color;
import java.awt.Color.*;
import java.awt.event.*;
public class InputArea extends JPanel implements ActionListener{
	File f=null;
	RandomAccessFile out;
	Box baseBox,boxV1,boxV2;
	JTextField name,email,phone;
	JButton button;
	InputArea(File f){
		setBackground(Color.cyan);
		this.f=f;
		name=new JTextField(12);
		email=new JTextField(12);
		phone=new JTextField(12);
		button=new JButton("录入");
		button.addActionListener(this);
		boxV1=Box.createVerticalBox();
		boxV1.add(new JLabel("输入姓名"));
		boxV1.add(Box.createVerticalStrut(8));
		boxV1.add(new JLabel("输入email"));
		boxV1.add(Box.createVerticalStrut(8));
		boxV1.add(new JLabel("输入电话"));
		boxV1.add(Box.createVerticalStrut(8));
		boxV1.add(new JLabel("单击录入"));
		boxV2=Box.createVerticalBox();
		boxV2.add(name);
		boxV2.add(Box.createVerticalStrut(8));
		boxV2.add(email);
		boxV2.add(Box.createVerticalStrut(8));
		boxV2.add(phone);
		boxV2.add(Box.createVerticalStrut(8));
		boxV2.add(button);
		baseBox=Box.createHorizontalBox();
		baseBox.add(boxV1);
		baseBox.add(Box.createHorizontalStrut(10));
		baseBox.add(boxV2);
		add(baseBox);
	}
	public void actionPerformed(ActionEvent e){
		try{
			RandomAccessFile out=new RandomAccessFile(f,"rw");
			if(f.exists()){
				long length=f.length();
				out.seek(length);
			}
			out.writeUTF("姓名:"+name.getText());
			out.writeUTF("email:"+email.getText());
			out.writeUTF("电话:"+phone.getText());
			out.close();
		}
		catch(IOException ee){}
	}

}

实现了以下要求说明的功能: 1.要求使用GUI,采用 Swing 技术数据存储采用文件系统(可以是文本 文件、xml 文件、vCard 文件或其他自定义格式文件,但不能是 Excel 文件)。不 使用数据库。 2. 通讯录中每个项目包括: ( 1)基本信息:姓名、手机号码、电子邮箱、生日、所属组、备注、像片。 ( 2)工作单位:国家、省份、城市、地址、工作单位、所属部门、职位、 邮编、电话、传真 ( 3)网络信息:个人主页、即时通信工具及号码、备用邮箱 ( 4)家庭资料:国家、省份、城市、地址、邮编、电话 3 .通讯录数据的录入功能:输入并存储新的通讯录数据,输入时如果有同 名或同电话号码时,应该给出提示。 4 .通讯录数据的查询功能: ( 1)默认列出所有条目。 ( 2)模糊查询,可以按:姓名、电话号码、手机、姓名的汉语拼音的声母 或全拼查询。支持模糊查询即输入部分数据后,可以查询出符合条件的全部条目。 如:输入“张”,列出所有名字中有“张”的条目;输入“ 2645”列出电话中有 该 4个数字的所有条目;输入“xl ”,列出声母为该 2 个字母的所有条目 ( 3)指定分组后,列出某分组的所有条目 说明:查询结果如果有多个条目,应按照姓名排序,并使用姓或姓的第一 个汉语拼音的字母分类。 5 .删除和修改功能:查询到一个条目后,可以删除该条目或修改条目内容。 6 .通信录内容的导入和导出功能。要求能够以CSV 格式和 vCard 格式导入 和导出通讯录的全部内容。并能够与主流手机或其他通讯录软件交换数据。 7 .通讯录显示设置,可以设置在显示查询结果时,一个条目可以显示或不 显示哪些内容。 注意:本系统实现了读取和保存csv文件,同时csv文件中只保存了图片的路径。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值