java编写这个通讯录管理系统_Java如何实现通讯录管理系统
咕噜噜在芬兰
原创
关注
3点赞·2305人阅读
Java如何实现通讯录管理系统
发布时间:2020-07-28 09:39:42
来源:亿速云
阅读:65
作者:Leah
这篇文章将为大家详细讲解有关Java如何实现通讯录管理系统,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
本文实例为大家分享了java实现通讯录管理系统的具体代码,供大家参考,具体内容如下
完成项目的流程:
1根据需求,确定大体方向
2功能模块分析
3界面实现
4功能模块设计
5coding
6代码测试
下面是源代码:import javaawtContainer;
import javaawtGridLayout;
import javaawteventActionEvent;
import javaawteventActionListener;
import javaioBufferedReader;
import javaioFileNotFoundException;
import javaioFileReader;
import javaioFileWriter;
import javaioIOException;
import javautilArrayList;
import javautilScanner;
import javautilconcurrentSynchronousQueue;
import javaxswingJButton;
import javaxswingJFrame;
import javaxswingJPanel;
import javaxswingWindowConstants;
import javaxswingtexthtmlHTMLDocumentIterator;
class Infro{
public String id;
public String name;
public String sex;
public String address;
public String e_mail;
public String phoneNumber;
static int index = 0;
static ArrayList list = new ArrayList();
static int len = listsize();
//构造函数
public Infro(String id,String name,String sex,String address,String e_mail,String phoneNumber){
thisid = id;
thisname = name;
thissex = sex;
thisaddress = address;
thise_mail = e_mail;
thisphoneNumber = phoneNumber;
}
public String toString(){
return "编号:"+id+" 姓名:"+name+" 性别:"+sex+" 通讯地址:"+address+" 邮箱地址:"+e_mail+" 电话:"+phoneNumber;
}
/
添加功能
/
public static void addFunction(){//添加功能
Infro infro = new Infro("","","","","","");
Systemoutprintln("请输入添加的数据:");
Scanner in = new Scanner(Systemin);
Systemoutprintln("输入编号:");
infroid = innext();
Systemoutprintln("输入姓名:");
infroname = innext();
Systemoutprintln("输入性别:");
infrosex = innext();
Systemoutprintln("输入通讯地址:");
infroaddress = innext();
System
outprintln("输入邮箱地址:");
infroe_mail = innext();
Systemoutprintln("输入电话:");
infrophoneNumber = innext();
listadd(index,infro);
index++;
if(listisEmpty()){
Systemoutprintln("数据添加失败啦");
}else{
Systemoutprintln("数据添加成功啦");
len++;//list集合长度加一
// Systemoutprintln(listget(0)toString());
}
}
// public static void deleteFunction(){//删除功能
// Systemoutprintln("输入要删除的联系人的编号");
// Scanner in_2 = new Scanner(Systemin);
// String d1 = in_2nextLine();
// for(int a= 0; a
// if(d1equals(listget(a)id)){
// listremove(listget(a));
// len --;
// }
// }
// }
/
删除功能
/
public static void deleteFunction(){
Systemoutprintln("输入要删除的联系人的编号");
Scanner in_2 = new Scanner(Systemin);
String d1 = in_2nextLine();
javautilIterator it = listiterator();
while (ithasNext()){
Infro infro = itnext();
if (infroidequals(d1)){
itremove();
--index;//一定要加这个,否则当做了删除 *** 作再做添加 *** 作的时候会出现异常(类似于指针,栈)
Systemoutprintln("删除完毕"+"此时通讯录记录条数为:" + --len);
}
}
}
/
修改功能
/
public static void reditFunction(){
Systemoutprintln("输入要修改的通讯录的Id");
Scanner in_r = new Scanner(Systemin);
String r1 = in_rnextLine();
for(int a = 0; a < len;a++){
if(r1equals(listget(a)id)){
Systemoutprintln("输入修改后的姓名:");
String name_1 = in_rnext();
listget(a)name = name_1;
Systemoutprintln("输入修改后的性别:");
String sex_1 = in_rnext();
listget(a)sex = sex_1;
Systemoutprintln("输入修改后的通讯地址:");
String address_1 = in_rnext();
listget(a)address = address_1;
Systemoutprintln("输入修改后的邮箱地址:");
String e_mail_1 = in_rnext();
listget(a)e_mail = e_mail_1;
Systemoutprintln("输入修改后的电话:");
String phoneNumber_1 = in_rnext();
listget(a)phoneNumber = phoneNumber_1;
Systemoutprintln("数据修改完毕");
}
}
}
/
查询功能
/
public static void searchFunction() throws Exception{//查询功能
Systemoutprintln("请输入要查询的姓名:");
Scanner in_1 = new Scanner(Systemin);
String s1=in_1nextLine();
for(int a= 0; a
if(s1equals(listget(a)name)){
Systemoutprintln(listget(a)toString());
}
}
}
/
显示功能
/
public static void showFunction(){
for(int i = 0 ;i
Systemoutprintln(listget(i)toString());
}
}
/
保存功能
/
public static void writeFunction() throws IOException{
FileWriter writer = new FileWriter("通讯录管理txt");
for(int i = 0 ;i
String []strwriter = new String[len];
strwriter[i]=listget(i)toString();
writerwrite(strwriter[i]);
writerwrite("\r\n");
Systemoutprintln("成功写入一行数据到 通讯录管理txt 中");
}
writerclose();//关闭写入流,释放资源
}
/
读取功能
/
public static void readFunction() throws IOException{
FileReader reader = new FileReader("通讯录管理txt");
BufferedReader br = new BufferedReader(reader);
String str;
while((str = brreadLine()) != null){//每次读取一行文本,判断是否到达文件尾
Systemoutprintln(str);
}
brclose();
}
}
public class Demo extends JFrame {
/
界面设计
/
public Demo(){
Container c = getContentPane(); //定义一个顶级容器c
JPanel jp = new JPanel(); //新建JPanel面板--jp
JButton button1 = new JButton("新建联系人");
JButton button2 = new JButton("删除联系人");
JButton button3 = new JButton("编辑联系人");
JButton button4 = new JButton("查找联系人");
JButton button5 = new JButton("显示所有联系人");
JButton button6 = new JButton("保存联系人到本地");
JButton button7 = new JButton("读取本地联系人");
jpsetLayout(new GridLayout(2,4,5,5));//新建网格布局管理器(行数,列数,组件间的水平垂直间距)
jpadd(button1);
jpadd(button2);
jpadd(button3);
jpadd(button4);
jpadd(button5);
jpadd(button6);
jpadd(button7);
cadd(jp);//将JPanel面板jp添加到顶级容器c中
setSize(600,500);
setTitle("通 讯 录 管 理 系 统");
setVisible(true);
setResizable(false);//窗体大小由程序员决定,用户不能自由改变大小
setDefaultCloseOperation(WindowConstantsEXIT_ON_CLOSE);
/
按键响应
/
button1addActionListener(new ActionListener(){//添加功能实现
public void actionPerformed(ActionEvent arg0){
InfroaddFunction();
}
});
button2addActionListener(new ActionListener(){//删除功能实现
public void actionPerformed(ActionEvent arg0){
InfrodeleteFunction();
}
});
button3addActionListener(new ActionListener(){//修改功能实现
public void actionPerformed(ActionEvent arg0){
InfroreditFunction();
}
});
button4addActionListener(new ActionListener(){//查询功能实现
public void actionPerformed(ActionEvent arg0){
try {
InfrosearchFunction();
} catch (Exception e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
});
button5addActionListener(new ActionListener(){//显示功能实现
public void actionPerformed(ActionEvent arg0){
InfroshowFunction();
}
});
button6addActionListener(new ActionListener(){//保存功能实现
public void actionPerformed(ActionEvent arg0){
try {
InfrowriteFunction();
} catch (IOException e) {
eprintStackTrace();
}
}
});
button7addActionListener(new ActionListener(){//读取功能实现
public void actionPerformed(ActionEvent arg0){
try {
InfroreadFunction();
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
});
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Demo();
Infro a = new Infro("", "", "", "", "", "");
}
}
关于Java如何实现通讯录管理系统就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
怎样把安卓手机的通讯录导入到iPhone中
手机技术 PConline IT百科
现在新手机出的越来越快,很多用户换手机的频率也越来越快,一般而言现在的手机品牌都有对应的云服务,可把手机通讯录等资料备份到云平台上,再下载至新手机,但如果是跨平台或者跨品牌换机该怎么办呢,比如说从安卓平台更换成了iOS平台,很多人就不知道怎么把安卓手机的通讯录导入iPhone中了,一个个手动添加既麻烦又容易出错,现在就教大家把安卓手机的通讯录导入至iPhone中。
1
1、这里以小米手机 为例,进入“联系人”,点击菜单键,选择“导入或导出联系人”;
安卓手机通讯录导入iPhone
2
2、在接下来的 列表中选择“导出到存储设备”;
安卓手机通讯录导入iPhone
3
3、接下来 会有个 确认提示, 直接 点击“确定”,这样就把原手机上的通讯录导出至存储卡上了;
安卓手机通讯录导入iPhone
4
4、打开小米自带的文件管理,在存储卡的根目录下找到“VCF”格式的文件,这个就是刚才导出的通讯录了,将这个文件拉到电脑上;
安卓手机通讯录导入iPhone
5
5、登录自己的icloud ID帐号,在联系人中选择导入刚才生成的VCF文件;
6
6、在你的新IPhone登陆icloud ID帐号,打开同步通讯录,就可以把通讯录导入iPhone了。
除此以外的其他品牌手机也是类似的思路,先将联系人到处为VCF格式文件,上传至iCloud,再通过同步实现通讯录导入。
可以使用360助手导入,下面是 *** 作步骤:
1、打开WPS电话簿,将要导入的电话簿另存为csv格式;
2、打开360手机助手,点击联系人;
3、进入到联系人界面后,点击导出/导入,这时候选择导出(注意别选错);
4、导出格式同样选择csv格式;
5、这时候需要打开360导出的csv格式文件和转换后的csv电话簿文件;
6、然后把表格里的电话薄的姓名和电话分别粘贴到导出来的各项的后面,然后重新保存导出的文件,每次保存有下图的提示都别管,直接选是就可以了;
7、最后就是再次打开360手机助手,这时候选择导入电话簿,选择刚刚保存的文件即可。
可以使用”QQ同步助手“,把安卓手机里的通讯录导出来,然后导入iphone6手机。
步骤:
1、安卓手机安装“QQ同步助手”,运行。
2、在权限申请,点击我知道了,同意协议,并按提示设置权限。
3、选择登录方式,注意,两个账号的备份内容不通用。
4、点击立即同步。
5、安卓手机如果是第一次备份,选择第一项、第二项均可。多次备份,建议选择第一项去重。
6、选择第一项,自动去掉重复联系人。
7、备份成功。通讯录上传云端。在iphone6手机上,安装“QQ同步助手”,并重复以上步骤,第5步选择第三项,导入。
你把帐号给别人用,你的朋友打开了同步功能,而你的帐号也是这个帐号,也跟着同步 了,所以你的通讯录就被改了。
现在你让你的朋友中止别用,或者你的手机上不要用这个帐号同步,不过你以前的通讯录已经被覆盖,应该没戏了,除非你的机器 上还有备份,再同步 回来。
#include<iostream>
#include<string>
#include<iomanip>
#include<list>
#include<fstream>
#include<algorithm>
#define SPACE "\t\t\t"
using namespace std;
struct Record{
string name;
string tel;
public:
friend ostream& operator<<(ostream& os,const Record rec){
return os<<rec->name<<SPACE<<rec->tel<<endl;
};
friend istream& operator>>(istream& is,Record rec){
is>>rec->name;
is>>rec->tel;
return is;
}
static bool comp(string patten,int type,Record rec){
switch(type){
case 0: {return rec->name==patten;}break;
case 1: {return rec->tel==patten;}break;
}
return false;
}
static bool isvan(Record rec){
return (rec->name==""&&rec->tel=="");
}
};
class RecordList:public list<Record>
{
public:
friend ostream& operator<<(ostream& os,const RecordList &c_rl){
RecordList::const_iterator it=c_rlbegin();
while(it!=c_rlend()){
os<<it;
it++;
}
return os;
}
friend istream& operator>>(istream& is,RecordList &rl){
RecordList::const_iterator it;
while(!iseof()){
Record prec=new Record;
is>>prec;
if(Record::isvan(prec)) continue;
rllist<Record>::push_back(prec);
}
return is;
}
void clear();
iterator erase(iterator pos);
~RecordList(){
this->clear();
}
};
void RecordList::clear(){
RecordList::const_iterator it=this->begin();
while(it!=this->end()){
delete(it);
it++;
}
this->list<Record>::clear();
}
RecordList::iterator RecordList::erase(iterator pos){
delete(pos);
return list<Record>::erase(pos);
}
class AddressList{
protected:
RecordList recList;
public:
typedef RecordList::iterator Iterator;
//从通信录中寻找一个记录
virtual Iterator findRecord(string patten,int type,Iterator from);
virtual void addRecord(Record rec);
virtual void removeRecord(Iterator it);
virtual void editRecord(Record rec,Iterator it);
virtual void saveRecords(ostream& os);
virtual void loadRecords(istream& is);
virtual void addRecords(istream& is);
virtual ~AddressList();
const int size() const{return (int)recListsize();}
const void clear(){recListclear();}
Iterator begin(){return recListbegin();}
Iterator end() {return recListend();}
};
AddressList::Iterator AddressList::findRecord(string patten,int type,Iterator from){
Iterator it;
it=from;
while(it!=recListend()){
if(Record::comp(patten,type,it)){
return it;
}
it++;
}
return it;
}
void AddressList::addRecord(Record rec){
recListpush_back(rec);
}
void AddressList::removeRecord(Iterator it){
recListerase(it);
}
void AddressList::editRecord(Record rec,Iterator it){
delete(it);
it=rec;
}
void AddressList::saveRecords(ostream& os){
os<<recList;
}
void AddressList::loadRecords(istream& is){
is>>recList;
}
void AddressList::addRecords(istream& is){
}
AddressList::~AddressList(){
recListclear();
}
class AddressBook : public AddressList{
protected:
bool isModified;//通信录是否已被修改还未保存
public:
AddressBook();
virtual ~AddressBook();
//开始通信录的用户界面 *** 作
virtual void start();
//菜单处理函数管理程序的用户界面 *** 作
virtual void handleMenu();
//显示记录
virtual void displayRecords();
//查询记录
virtual void queryRecord();
//添加记录
virtual void addRecord();
//保存记录
virtual void saveRecords();
//读取记录
virtual void loadRecords();
//结束程序
virtual void quit();
//清空当前记录信息
virtual void clear();
protected:
//菜单选择函数
char menuSelect();
//显示表头
void dispTable();
};
AddressBook::AddressBook(){
}
AddressBook::~AddressBook(){;}
char AddressBook::menuSelect(){
char a=0;
cin>>a;
if(a=='y'||a=='Y'){a='1';}
if(a=='n'||a=='N'){a='2';}
return a;
}
void AddressBook::start(){
cout << "\n\t 欢迎使用sjb版通讯录 ";
handleMenu();
}
void AddressBook::handleMenu(){
cout << "\n\n\t\t\t-- 菜单管理 --\n\n";
cout << "\tA -- 添加人员纪录 (Add Record)\n"
<< "\tF -- 查询纪录 (Find Record)\n"
<< "\tD -- 显示纪录 (Display Records)\n"
<< "\tL -- 从文本或标准输入流中加载纪录 (Load Records)\n"
<< "\tC -- 清空当前记录信息\n"
<< "\tS -- 保存记录 (Save Records)\n"
<< "\tQ -- 结束程序 (QUIT)\n";
switch(menuSelect()){
case 'A':
case 'a':addRecord();break;
case 'F':
case 'f':queryRecord();break;
case 'D':
case 'd':displayRecords();break;
case 'L':
case 'l':loadRecords();break;
case 'C':
case 'c':clear();break;
case 'S':
case 's':saveRecords();break;
case 'Q':
case 'q':quit();break;
}
handleMenu();
}
void AddressBook::displayRecords(){
cout<<"姓名"<<SPACE<<"电话"<<endl;
AddressList::saveRecords(cout);
cout<<"一共找到"<<size()<<"个对象。"<<endl;
cout<<"1"<<SPACE<<"返回"<<endl;
cout<<"2"<<SPACE<<"修改"<<endl;
cout<<"3"<<SPACE<<"删除"<<endl;
switch(menuSelect()){
case '1':break;
case '2':{
if(!size()){
cout<<"记录为0,无法修改。"<<endl;
break;
}
cout<<"要修改第几个?"<<"1~"<<size()<<endl;
int i;
cin>>i;
if(i<1||i>size()){
break;
}
Record prec=new Record;
cout<<"姓名:"<<'\n'<<"电话:"<<'\n';
cin>>prec;
Iterator it=recListbegin();
while(i!=1){
it++;
i--;
}
editRecord(prec,it);
}break;
case'3':{
if(!size()){
cout<<"记录为0,无法修改。"<<endl;
break;
}
cout<<"要删除第几个?"<<"1~"<<size()<<endl;
int i;
cin>>i;
if(i<1||i>size()){
break;
}
Iterator it=recListbegin();
while(i!=1){
it++;
i--;
}
removeRecord(it);
}break;
}
}
void AddressBook::addRecord(){
string name,tel;
cout << "\n输入名字: ";
cin >> name;
cout << "输入电话: ";
cin >> tel;
Record temp=new Record;
temp->name=name;
temp->tel=tel;
AddressList::addRecord(temp);
cout<<"是否继续(Y/N)"<<endl;
switch(menuSelect()){
case '1':addRecord();break;
case '2':break;
}
}
void AddressBook::queryRecord(){
cout<<"1"<<SPACE<<"按姓名查找"<<endl;
cout<<"2"<<SPACE<<"按电话查找"<<endl;
int type=-1;
string patten;
switch(menuSelect()){
case '1':{
type=0;
cout<<"请输入姓名"<<endl;
cin>>patten;
}break;
case '2':{
type=1;
cout<<"请输入电话号码"<<endl;
cin>>patten;
}break;
}
Iterator it=begin();
list<Iterator> li;
cout<<"姓名"<<SPACE<<"电话"<<endl;
while((it=findRecord(patten,type,it))!=end()){
cout<<it;
lipush_back(it);
it++;
}
cout<<"一共找到"<<lisize()<<"个对象。"<<endl;
cout<<"1"<<SPACE<<"返回"<<endl;
cout<<"2"<<SPACE<<"修改"<<endl;
cout<<"3"<<SPACE<<"删除"<<endl;
switch(menuSelect()){
case'1':break;
case'2':{
if(!lisize()){
cout<<"记录为0,无法修改。"<<endl;
break;
}
cout<<"要修改第几个?"<<"1~"<<lisize()<<endl;
int i;
cin>>i;
Record prec=new Record;
cout<<"姓名:"<<'\n'<<"电话:"<<'\n';
cin>>prec;
list<Iterator>::const_iterator it=libegin();
while(i!=1){
it++;
i--;
}
editRecord(prec,it);
}break;
case'3':{
if(!lisize()){
cout<<"记录为0,无法修改。"<<endl;
break;
}
cout<<"要删除第几个?"<<"1~"<<lisize()<<endl;
int i;
cin>>i;
list<Iterator>::const_iterator it=libegin();
while(i!=1){
it++;
i--;
}
removeRecord(it);
}break;
}
}
void AddressBook::saveRecords(){
cout<<"1"<<SPACE<<"使用默认文件名。"<<endl;
cout<<"2"<<SPACE<<"使用自定义文件名。"<<endl;
cout<<"3"<<SPACE<<"返回"<<endl;
switch(menuSelect()){
case '1':{
ofstream file("default",ios::app);
AddressList::saveRecords(file);
fileclose();
}break;
case '2':{
cout<<"请输入您定义的文件名:"<<endl;
string fname;
cin>>fname;
ofstream file(fnamec_str(),ios::app);
AddressList::saveRecords(file);
fileclose();
}break;
case '3':break;
}
}
void AddressBook::loadRecords(){
cout<<"1"<<SPACE<<"使用默认文件。"<<endl;
cout<<"2"<<SPACE<<"使用自定义文件。"<<endl;
cout<<"3"<<SPACE<<"返回"<<endl;
switch(menuSelect()){
case '1':{
cout<<"1"<<SPACE<<"覆盖当前内容"<<endl;
cout<<"2"<<SPACE<<"追加到当前文件"<<endl;
switch(menuSelect()){
case '1':
AddressList::clear();break;
case '2':break;
}
ifstream file("default");
AddressList::loadRecords(file);
fileclose();
}break;
case '2':{
cout<<"请输入文件名:"<<endl;
string fname;
cin>>fname;
ifstream file(fnamec_str());
AddressList::loadRecords(file);
fileclose();
}break;
case '3':break;
}
}
void AddressBook::clear(){
cout<<"是否要清除内存中所有内容?(Y/N)"<<endl;
switch(menuSelect()){
case '1':AddressList::clear();break;
case '2':break;
}
}
void AddressBook::quit(){
cout<<"是否要保存文件?(Y/N)"<<endl;
switch(menuSelect()){
case'1':saveRecords();break;
case'2':break;
}
exit(0);
}
int main(int argc, char argv[])
{
AddressBook a;
astart();
system("PAUSE");
return EXIT_SUCCESS;
}
以上就是关于java通讯录管理系统设计代码怎么编译全部的内容,包括:java通讯录管理系统设计代码怎么编译、安卓手机如何把通讯录导入苹果手机、如何将excel通讯录导入手机等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)