用Java写了一个通讯录管理系统

package tongxunlu;
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 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//写入文件执行
	{
		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
	{
		Test t=new Test();
		while(true){t.Menu();}
	}
}