import java.util.*;
import java.text.*;
import java.io.*;
//联系人类
class Linkman {
Linkman(String n,String[] p,String w,String c,String e,String b,String r){
name=n;
phone=p;
work=w;
call=c;
email=e;
birthday=b;
remark=r;
}
Linkman(){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;//备注
String getName()//获取姓名
{
return name;
}
void setName(String name)//修改姓名
{
this.name=name;
}
String[] getPhone()//获取电话
{
return phone;
}
void setPhone(String[] phone)//修改电话
{
this.phone=phone;
}
String getWork()//获取工作地址
{
return work;
}
void setWork(String work)//修改工作地址
{
this.work=work;
}
String getCall()//获取通讯地址
{
return call;
}
void setCall(String call)//修改通讯地址
{
this.call=call;
}
String getEmail()//获取电子邮箱
{
return email;
}
void setEmail(String email)//修改电子邮箱
{
this.email=email;
}
String getBirthday()//获取生日
{
return birthday;
}
void setBirthday(String birthday)//修改生日
{
this.birthday=birthday;
}
String getRemark()//获取备注
{
return remark;
}
void setRemark(String remark)//修改备注
{
this.remark=remark;
}
}
//管理联系人类
class manageLinkman{
Linkman[] l=new Linkman[1000];
Scanner input=new Scanner(System.in);
manageLinkman() {
for(int i=0;i<l.length;i++)
{
if(l[i]==null)
l[i]=new Linkman();
}
}
Linkman[] list(Linkman x)//联系人列表
{
for(int i=0;i<l.length;i++)
{
if(l[i].getName()==null)
{
l[i]=x;
break;
}
}
return l;
}
void addLinkman()//添加实现
{
Linkman l1=new Linkman();
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() //写入文件实现
{
try {
BufferedWriter output=new BufferedWriter(new FileWriter("通讯录"));
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.close();
System.out.println("文件创建成功!");
System.out.println("向文件导入数据成功");
}
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 Java{//测试类
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//写入文件执行
{
m.printFile();
}
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(" 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 "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
{
Java t=new Java();
while(true){t.Menu();}
}
}
java实现通讯录功能
于 2022-05-08 14:25:06 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)