java通讯录管理_java通讯录管理

这是一个使用Java编写的简单通讯录管理程序,包含了文件操作、GUI界面和事件监听功能。用户可以查看、输入、修改和保存联系人信息,数据存储在文本文件中。

展开全部

大致写了一下,你可以看e68a843231313335323631343130323136353331333262343131看:

package noteBook;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.ArrayList;

import java.util.StringTokenizer;

import java.util.Vector;

import javax.swing.*;

import javax.swing.table.DefaultTableModel;

class guiView extends JFrame implements ActionListener {

JMenuBar jmb;

JMenu text;

JMenu edit;

JMenu help;

JMenuItem save;

JMenuItem change;

JMenuItem guide;

JLabel name;

JLabel address;

JLabel post;

JLabel mobilePhone;

JLabel email;

JTextField JT_name;

JTextField JT_address;

JTextField JT_post;

JTextField JT_mobilePhone;

JTextField JT_email;

JButton jOk;

JButton jCancel;

JTable table;

static DefaultTableModel dtm;

Vector head;

int row = 0; // 用于标记当前行的位置

public guiView() {

super("通讯录管理程序");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setSize(600, 700);

setVisible(true);

Container con = this.getContentPane();

jmb = new JMenuBar();

this.setJMenuBar(jmb);

text = new JMenu("文件", true);

edit = new JMenu("编辑", true);

help = new JMenu("帮助", true);

save = new JMenuItem("保存");

change = new JMenuItem("修改");

guide = new JMenuItem("指导");

save.addActionListener(this);save.setActionCommand("save");

change.addActionListener(this);change.setActionCommand("change");

guide.addActionListener(this);guide.setActionCommand("guide");

text.add(save);edit.add(change);help.add(guide);

jmb.add(text);jmb.add(edit);jmb.add(help);

name = new JLabel("姓名:", Label.RIGHT);

address = new JLabel("通信地址:", Label.RIGHT);

post = new JLabel("邮编:", Label.RIGHT);

mobilePhone = new JLabel("移动电话:", Label.RIGHT);

email = new JLabel("电子邮件:", Label.RIGHT);

JT_name = new JTextField(12);

JT_address = new JTextField(28);

JT_post = new JTextField(12);

JT_mobilePhone = new JTextField(12);

JT_email = new JTextField(12);

jOk = new JButton("确定");

jCancel = new JButton("取消");

jOk.addActionListener(this);

jOk.setActionCommand("ok");

jCancel.addActionListener(this);

jCancel.setActionCommand("cancel");

JPanel panelSOUTH = new JPanel();

JPanel panelCENTER = new JPanel();

JPanel panelCENTERSouth = new JPanel();

JPanel panelCENTERCenter = new JPanel();

JPanel panelCENTERNorth = new JPanel();

JPanel panelNorth = new JPanel();

JPanel panelNorthSouth = new JPanel();

head = new Vector();

head.addElement("姓名");

head.addElement("通信地址");

head.addElement("邮编");

head.addElement("移动电话");

head.addElement("电子邮件");

dtm = new DefaultTableModel(null, head);

showData();

table = new JTable(dtm);

table.addMouseListener(new MouseListener() {

public void mouseClicked(MouseEvent e) {

row = table.getSelectedRow();

System.out.println(row);

getData(row);

}

public void mouseEntered(MouseEvent e) {

}

public void mouseExited(MouseEvent e) {

}

public void mousePressed(MouseEvent e) {

}

public void mouseReleased(MouseEvent e) {

}

});

JScrollPane jsp = new JScrollPane(table);

panelNorthSouth.setLayout(new GridLayout(1, 5));

panelNorthSouth.add(name);

panelNorthSouth.add(address);

panelNorthSouth.add(post);

panelNorthSouth.add(mobilePhone);

panelNorthSouth.add(email);

panelNorth.setLayout(new BorderLayout());

panelNorth.add(jsp,BorderLayout.CENTER);

panelNorth.add(panelNorthSouth, BorderLayout.SOUTH);

panelCENTERNorth.add(name);

panelCENTERNorth.add(JT_name);

panelCENTERNorth.add(email);

panelCENTERNorth.add(JT_email);

panelCENTERCenter.add(post);

panelCENTERCenter.add(JT_post);

panelCENTERCenter.add(mobilePhone);

panelCENTERCenter.add(JT_mobilePhone);

panelCENTERSouth.add(address);

panelCENTERSouth.add(JT_address);

panelCENTER.add(panelCENTERNorth, BorderLayout.NORTH);

panelCENTER.add(panelCENTERCenter, BorderLayout.CENTER);

panelCENTER.add(panelCENTERSouth, BorderLayout.SOUTH);

panelSOUTH.add(jOk);

panelSOUTH.add(jCancel);

con.add(panelNorth, BorderLayout.NORTH);

con.add(panelCENTER, BorderLayout.CENTER);

con.add(panelSOUTH, BorderLayout.SOUTH);

}

// 对点击首行,上一行,下一行,最后一行按钮触发的操作进行事件响应处理

public void actionPerformed(ActionEvent e) {

String command = e.getActionCommand();

if (command.equals("ok")) {

String name = this.JT_name.getText();

String address = this.JT_address.getText();

String post = this.JT_post.getText();

String mobilePhone = this.JT_mobilePhone.getText();

String email = this.JT_email.getText();

saveData(name, address, post, mobilePhone, email);

showData();

table.setModel(dtm);

this.JT_name.setText("");

this.JT_address.setText("");

this.JT_post.setText("");

this.JT_mobilePhone.setText("");

this.JT_email.setText("");

}

else if (command.equals("cancel")) {

this.JT_name.setText("");

this.JT_address.setText("");

this.JT_post.setText("");

this.JT_mobilePhone.setText("");

this.JT_email.setText("");

}

else if(command.equals("save")){

// save all data in the table

}

else if(command.equals("change")){

// table allow to change some data

}

else if(command.equals("guide")){

// maybe show how to use it

}

else {

System.err.println("error!");

System.exit(-1);

}

}

private void showData() {

dtm = new DefaultTableModel(null, head);

File file = new File("F:/java/data.txt");

String str = null;

BufferedReader br = null;

try {

br = new BufferedReader(new FileReader(file));

str = br.readLine();

while (str != null) {

if (str == null) {

System.err.println("no data!");

break;

} else {

StringTokenizer st = new StringTokenizer(str, ",");// 每行信息的6个字段分别用空格隔开的

Vector v = new Vector();

v.addElement(st.nextToken());

v.addElement(st.nextToken());

v.addElement(st.nextToken());

v.addElement(st.nextToken());

v.addElement(st.nextToken());

dtm.addRow(v);

}

str = br.readLine();

}

br.close();// 一定要关闭资源

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

private void saveData(String name, String address, String post,

String mobilePhone, String email) {

File file = new File("F:/java/data.txt");

ArrayList list = null;

try {

BufferedReader br = new BufferedReader(new FileReader(file));

list = new ArrayList();

String ss = "";

while ((ss = br.readLine()) != null)

list.add(ss);

br.close();

} catch (Exception e) {

e.printStackTrace();

}

list.set(row, name + "," + address + "," + post + "," + mobilePhone

+ "," + email);

try {

PrintWriter pw = new PrintWriter(file);

for (int i = 0; i 

pw.println(list.get(i));

}

list.clear();

list = null;

pw.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

}

}

// 通过flag标记当前读到了文件的第几行。然后循环读至该行

private void getData(int row) {

File file = new File("F:/java/data.txt");

String str = null;

StringTokenizer st;

BufferedReader br = null;

try {

br = new BufferedReader(new FileReader(file));

for (int i = 0; i <= row; i++) {

str = br.readLine();

}

if (str == null) {

System.err.println("no data!");

} else {

st = new StringTokenizer(str, ",");// 每行信息的6个字段分别用空格隔开的

this.JT_name.setText(st.nextToken());

this.JT_address.setText(st.nextToken());

this.JT_post.setText(st.nextToken());

this.JT_mobilePhone.setText(st.nextToken());

this.JT_email.setText(st.nextToken());

}

br.close();// 一定要关闭资源

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] s) {

guiView c = new guiView();

c.setVisible(true);

}

}

0da4134159aa071d4cb8411fc43cfb00.png

实现了以下要求说明的功能: 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文件中只保存了图片的路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值