通讯录管理(字符或图形界面皆可)
编写一个简单的通讯录管理程序。通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四
项。
基本要求
程序应提供的基本基本管理功能有:
1) 添加:即增加一个人的记录到通信录中
2) 显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示。
3) 存储:即将通讯录信息保存在一个文件中。
4)
装入:即将文件中的信息读入程序。
5) 查询:可根据姓名查找某人的相关信息,若找到
显示其姓名、地址、电话号码和邮政编码。
6) 修改:可修改一个人的除姓名外其它信息。
实现提示
程序可用一个单向链表来管理人员信息,每个人员的生名,地址,电话号码和邮政编码用一个类Cperson来实现,作为链表的值指针指向这些Cperson类对象,通过链
表的遍历可以操作这些数据。
package com.csdn;
import java.util.*;
import java.text.*;
import java.io.*;
//联系人类
class Cperson {
Cperson() {phone = new String[10];}
private String name;//姓名
private String[] phone;//电话
private String work;//工作地址
private String call;//通信地址
private String email;//电子邮箱
private String birthday;//生日
private String remark;//备注
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public String[] getPhone() {return phone;}
public void setPhone(String[] phone) {this.phone = phone;}
public String getWork() {return work;}
public void setWork(String work) {this.work = work;}
public String getCall() {return call;}
public void setCall(String call) {this.call = call;}
public String getEmail() {return email;}
public void setEmail(String email) {this.email = email;}
public String getBirthday() {return birthday;}
public void setBirthday(String birthday) {this.birthday = birthday;}
public String getRemark() {return remark;}
public void setRemark(String remark) {this.remark = remark;}
}
//管理联系人类
class manageLinkman {
Cperson[] l = new Cperson[1000];
Scanner input = new Scanner(System.in);
manageLinkman() {
for (int i = 0; i < l.length; i++) {
if (l[i] == null)
l[i] = new Cperson();
}
}
Cperson[] list(Cperson x)//联系人列表
{
for (int i = 0; i < l.length; i++) {
if (l[i].getName() == null) {
l[i] = x;
break;
}
}
return l;
}
void addLinkman()//添加实现
{
Cperson l1 = new Cperson();
boolean f = false;
System.out.println("姓名:");
String name = input.next();
for (int i = 0; i < l.length && l[i].getName() != null; i++) {
if (l[i].getName().equals(name))
f = true;
}
if (f)
System.out.println("添加失败,该联系人已存在!");
else {
l1.setName(name);
String[] phone = new String[10];
for (int i = 0; i < 10; i++) {
System.out.println("电话号码" + (i + 1) + ":");
phone[i] = input.next();
System.out.print("是否还要添加其他号码:1.是 0.否");
String x = input.next();
if (x.equals("1"))
System.out.println("请继续!");
else if (x.equals("0")) {
break;
} else {
System.out.println("指令错误,已退出!");
break;
}
}
l1.setPhone(phone);
System.out.println("工作地址:");
String work = input.next();
l1.setWork(work);
System.out.println("通讯地址:");
String call = input.next();
l1.setCall(call);
System.out.println("电子邮箱:");
String email = input.next();
l1.setEmail(email);
System.out.println("生日:");
String birthday = input.next();
l1.setBirthday(birthday);
System.out.println("备注:");
String remark = input.next();
l1.setRemark(remark);
list(l1);
System.out.println("添加成功!");
}
}
int nameFind(String name) {//按姓名查找实现
int i;
boolean f = false;
for (i = 0; i < l.length && l[i].getName() != null; i++) {
if (l[i].getName().equals(name)) {
f = true;
break;
}
}
if (f)
return i;
else
return -1;
}
void phoneFind(String phone) {//按号码查找实现
int i;
boolean f = false;
String[] num = new String[10];
for (i = 0; i < l.length; i++) {
System.arraycopy(l[i].getPhone(), 0, num, 0, 10);
for (int j = 0; j < 10 && num[j] != null; j++) {
if (num[j].equals(phone)) {
f = true;
break;
}
}
if (f)
printLinkman(i);
else {
System.out.println("对不起,通讯录中没有此联系人!");
System.out.println("是否添加为新联系人:1.YES 2.NO");
String x = input.next();
if (x.equals("1"))
addLinkman();
}
}
}
void workFind(String work) {//按工作地址查找实现
int i;
boolean f = false;
for (i = 0; i < l.length && l[i].getWork() != null; i++) {
if (l[i].getWork().equals(work)) {
f = true;
break;
}
}
if (f)
printLinkman(i);
else
System.out.println("对不起,没有找到哦!肯定是你输错了!");
}
void callFind(String call) {//按通讯地址查找实现
int i;
boolean f = false;
for (i = 0; i < l.length && l[i].getCall() != null; i++) {
if (l[i].getCall().equals(call)) {
f = true;
break;
}
}
if (f)
printLinkman(i);
else
System.out.println("对不起,没有找到哦!肯定是你输错了!");
}
void emailFind(String email) {//按电子邮箱查找实现
int i;
boolean f = false;
for (i = 0; i < l.length && l[i].getEmail() != null; i++) {
if (l[i].getEmail().equals(email)) {
f = true;
break;
}
}
if (f)
printLinkman(i);
else
System.out.println("对不起,没有找到哦!肯定是你输错了!");
}
void birthdayFind(String b) {//按生日查找实现
int i;
boolean f = false;
for (i = 0; i < l.length && l[i].getBirthday() != null; i++) {
if (l[i].getBirthday().equals(b)) {
f = true;
break;
}
}
if (f)
printLinkman(i);
else
System.out.println("对不起,没有找到哦!肯定是你输错了!");
}
void remarkFind(String remark) {//按备注查找实现
int i;
boolean f = false;
for (i = 0; i < l.length && l[i].getRemark() != null; i++) {
if (l[i].getRemark().equals(remark)) {
f = true;
break;
}
}
if (f)
printLinkman(i);
else
System.out.println("对不起,没有找到哦!肯定是你输错了!");
}
void del(int i)//删除实现
{
if (i == -1) {
System.out.println("对不起,通讯录中没有此联系人!");
System.out.println("是否添加为新联系人:1.YES 2.NO");
String x = input.next();
if (x.equals("1"))
addLinkman();
} else {
System.out.println("请选择你要删除的内容:");
System.out.println("1.该联系人 2.号码 3.工作地址 4.通讯地址 5.电子邮箱 6.生日 7.备注");
String x = input.next();
switch (x) {
case "1": {
System.out.println("已删除联系人" + l[i].getName() + "!");
l[i].setName(" ");
String[] phone = new String[10];
System.arraycopy(l[i].getPhone(), 0, phone, 0, 10);
for (int j = 0; j < phone.length && phone[j] != null; j++) {
phone[j] = " ";
}
l[i].setPhone(phone);
l[i].setWork(" ");
l[i].setCall(" ");
l[i].setEmail(" ");
l[i].setBirthday(" ");
l[i].setRemark(" ");
}
break;
case "2": {
String[] phone = new String[10];
System.arraycopy(l[i].getPhone(), 0, phone, 0, 10);
for (int j = 0; j < phone.length && phone[j] != null; j++) {
System.out.print("是否要删除号码:" + phone[j] + " 1.是 0.否");
String c = input.next();
if (c.equals("1")) {
System.out.println("号码" + phone[j] + "已删除!");
phone[j] = " ";
System.out.println("1.继续 2.退出");
String b1 = input.next();
if (b1.equals("2"))
break;
} else
continue;
}
l[i].setPhone(phone);
}
;
break;
case "3": {
System.out.println("工作地址已删除!");
l[i].setWork(" ");
}
break;
case "4": {
System.out.println("通讯地址已删除!");
l[i].setCall(" ");
}
break;
case "5": {
System.out.println("电子邮箱已删除!");
l[i].setEmail(" ");
}
break;
case "6": {
System.out.println("生日已删除!");
l[i].setBirthday(" ");
}
break;
case "7": {
System.out.println("备注已删除!");
l[i].setRemark(" ");
}
break;
default:
System.out.println("输入错误!");
}
}
}
void printLinkman(int i)//打印实现
{
if (i == -1) {
System.out.println("对不起,通讯录中没有此联系人!");
System.out.println("是否添加为新联系人:1.YES 2.NO");
String x = input.next();
if (x.equals("1"))
addLinkman();
} else {
System.out.println("已为你找到该联系人!");
System.out.println("姓名:" + l[i].getName());
String[] num = new String[10];
System.arraycopy(l[i].getPhone(), 0, num, 0, 10);
for (int j = 0; j < 10 && num[j] != null; j++) {
System.out.println("电话" + (j + 1) + ":" + num[j]);
}
System.out.println("工作地址:" + l[i].getWork());
System.out.println("通讯地址:" + l[i].getCall());
System.out.println("电子邮箱:" + l[i].getEmail());
System.out.println("生日:" + l[i].getBirthday());
System.out.println("备注:" + l[i].getRemark());
}
}
void updata(int i)//修改实现
{
if (i == -1) {
System.out.println("对不起,通讯录中没有此联系人!");
System.out.println("是否添加为新联系人:1.YES 2.NO");
String x = input.next();
if (x.equals("1"))
addLinkman();
} else {
System.out.println("请选择你要更新的内容:");
System.out.println("1.姓名 2.号码 3.工作地址 4.通讯地址 5.电子邮箱 6.生日 7.备注");
int x = input.nextInt();
switch (x) {
case 1: {
System.out.println("输入你要更新的姓名:");
String name = input.next();
l[i].setName(name);
}
break;
case 2: {
String[] phone = new String[10];
System.arraycopy(l[i].getPhone(), 0, phone, 0, 10);
for (int j = 0; j < phone.length; j++) {
if (phone[j].equals(" ")) {
continue;
}
System.out.println("是否要更新号码:" + phone[j] + " 1.是 0.否");
String b = input.next();
if (b.equals("1")) {
System.out.println("请输入你要更新的号码:");
phone[j] = input.next();
System.out.print("原号码已更新为:" + phone[j]);
System.out.println("1.继续 2.退出");
String b1 = input.next();
if (b1.equals("2"))
break;
} else
continue;
}
l[i].setPhone(phone);
}
break;
case 3: {
System.out.println("输入你要更新的工作地址:");
String work = input.next();
System.out.print("你已修改工作地址" + l[i].getWork() + "为");
l[i].setWork(work);
System.out.println(l[i].getWork());
}
break;
case 4: {
System.out.println("输入你要更新的通讯地址:");
String call = input.next();
System.out.print("你已修改通讯地址:" + l[i].getCall() + "为");
l[i].setCall(call);
System.out.println(l[i].getCall());
}
break;
case 5: {
System.out.println("输入你要更新的电子邮箱:");
String email = input.next();
System.out.print("你已修改电子邮箱:" + l[i].getEmail() + "为");
l[i].setEmail(email);
System.out.print(l[i].getEmail());
}
break;
case 6: {
System.out.println("输入你要更新的生日:");
String birthday = input.next();
System.out.print("你已修改生日:" + l[i].getBirthday() + "为");
l[i].setBirthday(birthday);
System.out.print(l[i].getBirthday());
}
break;
case 7: {
System.out.println("输入你要更新的备注:");
String remark = input.next();
System.out.print("你已修改备注:" + l[i].getRemark() + "为");
l[i].setRemark(remark);
System.out.println(l[i].getRemark());
}
break;
default:
System.out.println("输入错误!");
}
}
}
void printFile(OutputStream out) {
try {
BufferedWriter output = new BufferedWriter(new OutputStreamWriter(out));
for (int i = 0; i < l.length && l[i].getName() != null; i++) {
if (l[i].getName().equals(" "))
continue;
else {
{
output.write("姓名:" + l[i].getName() + " ");
String[] num = new String[10];
System.arraycopy(l[i].getPhone(), 0, num, 0, 10);
for (int j = 0; j < 10 && num[j] != null; j++) {
output.write("电话" + (j + 1) + ":" + num[j] + " ");
}
output.write("工作地址:" + l[i].getWork() + " ");
output.write("通讯地址:" + l[i].getCall() + " ");
output.write("电子邮箱" + l[i].getEmail() + " ");
output.write("生日:" + l[i].getBirthday() + " ");
output.write("备注" + l[i].getRemark() + " ");
}
output.write("\n");
}
}
output.flush();
} catch (IOException e) {
}
}
void readFile()//从文件读入数据实现
{
String[] str = new String[1000];
try {
BufferedReader input = new BufferedReader(new FileReader("通讯录"));
int i = 0;
while ((str[i] = input.readLine()) != null) {
System.out.println(str[i]);
if (str[i].equals(""))
break;
}
input.close();
} catch (IOException e) {
}
System.out.println("文件数据全部读取完毕!");
}
}
public class Test {//测试类
Scanner input = new Scanner(System.in);
manageLinkman m = new manageLinkman();
public void add()//添加执行
{
System.out.println("开始添加联系人......");
m.addLinkman();
}
public void find()//查找执行
{
System.out.println("请选择你的查找方式:");
System.out.println(" 1.按姓名 2.按号码 3.按工作地址 4.按通讯地址 5.按电子邮箱 6.按生日 7.按备注");
String x = input.next();
switch (x) {
case "1": {
System.out.println("输入你要查找联系人的姓名:");
String name = input.next();
m.printLinkman(m.nameFind(name));
}
break;
case "2": {
System.out.println("输入你要查找联系人的号码:");
String phone = input.next();
m.phoneFind(phone);
}
break;
case "3": {
System.out.println("输入你要查找联系人的工作地址:");
String work = input.next();
m.workFind(work);
}
break;
case "4": {
System.out.println("输入你要查找联系人的通讯地址:");
String call = input.next();
m.callFind(call);
}
break;
case "5": {
System.out.println("输入你要查找联系人的电子邮箱:");
String email = input.next();
m.emailFind(email);
}
break;
case "6": {
System.out.println("输入你要查找联系人的生日:");
String bir = input.next();
m.birthdayFind(bir);
}
break;
case "7": {
System.out.println("输入你要查找联系人的备注信息:");
String remark = input.next();
m.remarkFind(remark);
}
break;
default:
System.out.println("输入错误!");
}
}
public void del()//删除执行
{
System.out.println("输入你要删除联系人的姓名:");
String name = input.next();
m.del(m.nameFind(name));
}
public void up() {//修改执行
System.out.println("输入你要修改联系人的姓名:");
String name = input.next();
m.updata((m.nameFind(name)));
}
public void cout()//打印执行
{
System.out.println("输入你要打印联系人的姓名:");
String name = input.next();
m.printLinkman(m.nameFind(name));
System.out.println("打印完毕!");
}
public void pFile() throws java.io.IOException//写入文件执行
{
try(final FileOutputStream fileOutputStream = new FileOutputStream("通讯录")){
m.printFile(fileOutputStream);
System.out.println("文件创建成功!");
System.out.println("向文件导入数据成功");
}
}
public void pSystemOut() throws java.io.IOException//写入文件执行
{
m.printFile(System.out);
}
public void rFile()//从文件读入数据执行
{
System.out.println("正在为你读入数据......");
m.readFile();
}
public void cool()//显示当前时间和贴心提醒
{
SimpleDateFormat s = new SimpleDateFormat();
SimpleDateFormat s1 = new SimpleDateFormat("HH");
s.applyPattern("yyy-MM-dd HH:mm:ss a");
Date date = new Date();
String h = s1.format(date);
int x = Integer.parseInt(h);
System.out.println("现在时间:" + s.format(date));
if (x == 23 || x == 0 || x == 1 || x == 2 || x == 3 || x == 4 || x == 5 || x == 6)
System.out.println("该睡觉了!晚安,好梦!");
else if (x >= 7 && x <= 11)
System.out.println("一日之计在于晨!加油吧!");
else if (x == 12)
System.out.println("在忙也要记得吃饭哦!");
else if (x == 13)
System.out.println("该睡午觉了!午安!");
else if (x >= 14 && x <= 17)
System.out.println("下午也要加油啊!不要荒废每一天!");
else if (x == 18 || x == 19)
System.out.println("该吃晚饭了!");
else if (x >= 20 && x < 23)
System.out.println("忙了一天了!是时候给自己放会儿假了!");
}
public void Menu() throws java.io.IOException {//菜单
do {
System.out.println("-----------------欢迎使用通讯录管理系统!-----------------");
System.out.println(" 0.显示所有联系人 ");
System.out.println(" 1.添加联系人 ");
System.out.println(" 2.删除联系人 ");
System.out.println(" 3.修改联系人 ");
System.out.println(" 4.搜索联系人 ");
System.out.println(" 5.显示单一联系人 ");
System.out.println(" 6.导出通讯录到文件 ");
System.out.println(" 7.从文件读入数据并打印通讯录列表 ");
System.out.println(" 8.贴心提醒 (特别) ");
System.out.println("请输入指令数字进行操作:");
String key = input.next();
switch (key) {
case "0":
pSystemOut();
break;
case "1":
add();
break;
case "2":
del();
break;
case "3":
up();
break;
case "4":
find();
break;
case "5":
cout();
break;
case "6":
pFile();
break;
case "7":
rFile();
break;
case "8":
cool();
break;
default:
System.out.println("输入错误!");
continue;
}
break;
} while (true);
}
public static void main(String[] args) throws java.io.IOException {
Test t = new Test();
while (true) {
t.Menu();
}
}
}
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基础ui可以采用javaFx,数据结构采用集合加自定义对象就可以了。功能还是比较简单,题主可以自己搭一个环境实验一下,刚好也是锻炼自己。
这有啥问题
可以采用javaFx
java web 简单的通讯录项目,下载下来改一改就行了
个人通讯录系统: 个人通讯录系统,我的作业。