精华内容
下载资源
问答
  • Java实现简单通讯录(程序设计作业)

    万次阅读 多人点赞 2019-11-29 21:56:59
    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,...

    用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();}
    	}
    }
    
    
    
    展开全文
  • 与此同时,通讯录便产生了。形形色色的关于通讯录对的越来越方便着人们的生活。通讯录管理软件使用于同学、朋友等日常生活的联系人进行的相关的信息的编辑功能,便于用户随时查找所需要的联系人的所有信息。该通讯录...
  • java实现简单通讯录

    2018-06-25 23:23:12
    包含源代码和SQL文件,数据库用的是mysql。 可以实现增、删、改、查等功能
  • 建立一个通讯录的类note,该类中的属性有以下几项:String name,phone,MobilePhone,zip,address,Email;分别表示:姓名,固定电话,手机号,邮编,地址,电子邮件地址。方法有两个:Setnote()给属性赋初值得函数,...
  • 数据库与Java课程设计报告 PAGE PAGE 0 PAGE PAGE 19 石河子大学信息学院 数据库与Java课程设计报告 专 业 计算机科学与技术 学 号 13001010026 学生姓名 指导教师 余 小 平 日 期 2015/1/2 数据库与Java课程设计 ...
  • JAVA通讯录管理系统课程设计源码

    热门讨论 2015-01-08 17:23:09
    源码实现了如下功能: 1.2 系统功能分析 1.2.1 基本功能 支持以下信息的录入: (1)基本信息:姓名、手机号码、...【系统设计文档】、【系统需求分析文档】、【系统实验报告】、【答辩展示PPT】另见我的资源……
  • java写的通讯录, 关于程序设计的例子
  • JAVA课程设计 课题个人通讯录管理系统 课程名称 java 课程设计 院 系 计算机科学与技术学院 班 级 09计本 组 员 组 员 组 员 组 员 指导教师 一个人通讯录管理系统概述 1需求分析 通讯录在当今的日常生活工作中的...
  • 程序设计总体框图 2 五 详细设计 3 1.功能模块图 3 2.数据库概念模型 3 3.数据库逻辑结构设计 4 4.数据库表的建立 4 5. 数据库的连接 5 六算法描述与实现 5 1.登录界面 5 2.通讯记录界面 7 3.修改联系人界面 8 4.删
  • 面向对象程序设计课程设计是软件工程专业集中实践性环节之一,是学习完《java6程序设计》课程后进行的一次全面的综合练习。其目的在于加深对java基础理论和基本知识的理解,掌握使用java进行软件设计的基本方法,...
  • Java写的通讯录,基本功能都实现了。 增加、查找、删除名片,通通都有。里面需要用到pinyin4j-2.5.0这个包 导入之后就可以运行了
  • java课程设计_通讯录(1)_设计报告
  • /* 通讯录管理系统 Java设计程序 */ public class BackgroundPanel extends JPanel /* * 重写paintComponent方法 */ public class DAO { private static DAO dao=new DAO(); // 创建DAO对象 public DAO...
  • 通信录管理系统

    2019-03-17 11:51:05
    采用java语言,基于eclipse运行环境,实现通讯管理系统。
  • java课程设计 通讯录 连接access数据库 自己配置数据源 有说明书
  • 个人通讯录java代码

    2017-12-30 23:38:51
    java写的个人通信录,具有图形界面,能实现对个人信息的录入、查询、删除、修改、排序等功能,可以分别输出同学、朋友、同事、亲戚以及全体人员的信息。 详情:个人通信录记录了同学(包含一起上学的学校名称)、...
  • 通讯录java程序设计

    2012-06-10 08:15:44
    这是一个完整的通讯录java程序设计,实现了添加、修改、查询和删除联系人的功能。
  • 下载可编辑 合肥学院 计算机科学与技术系 课程设计报告 20132014 学年第二学期 课 程 面向对象课程设计 课程设计名称 通讯录程序 学 生 姓 名 XXX 学 号 专 业 班 级 XXXXX 指 导 教 师 XXX 20 年 月 .专业 .整理 . ...
  • java通讯录管理系统(适合初学者).RAR
  • 某广东211大学学习java后要交的一个课程设计,有界面,有代码
  • 1.通讯录管理系统的设计与实现 (1)通讯者信息包括:编号(char num[10])、姓名(char name[10])、性别(char sex[10])、电话(char phone[20]) (2)除了总的模块要求外,还需统计通讯录中男性人数及女性人数,并求...
  • 这是武汉理工大学的课程设计的一个参考例子,我自己做的喔,要程序的私信我哈
  • 经典文档 下载可编辑复制 PAGE 经典文档 下载可编辑复制 面向对象程序设计 课程设计报告 题 目 通讯录管理系统软件设计与实现 院 系 信息科学与工程学院 专业班级 计算机科学与技术1201班 学生姓名 程伟 学 号 ...
  • java实现班级通讯录

    2012-04-14 00:39:18
    java实现的班级通讯录,包括增删查改,还有头像上传功能,课设设计的好资源
  • java简单通讯录实现

    千次阅读 2020-11-28 20:17:39
    java简单通讯录实现 功能点: 添加联系人(联系人:编号,姓名,手机号,QQ,邮箱地址)添加时需要检查手机号和邮箱地址格式是否正确,若不正确,不允许添加。 联系人查询(输入姓名或电话查询) 显示联系人列表 根据编号...

    java简单通讯录实现

    功能点:

    1. 添加联系人(联系人:编号,姓名,手机号,QQ,邮箱地址)添加时需要检查手机号和邮箱地址格式是否正确,若不正确,不允许添加。
    2. 联系人查询(输入姓名或电话查询)
    3. 显示联系人列表
    4. 根据编号删除指定编号的联系人

    代码实现:
    联系人实体类:

    public class Contact {
    
    	private int num;
    	private String name;
    	private String phoneNum;
    	private String qq;
    	private String email;
    
    	public Contact() {
    		super();
    	}
    
    	public Contact(int num, String name, String phoneNum, String qq, String email) {
    		super();
    		this.num = num;
    		this.name = name;
    		this.phoneNum = phoneNum;
    		this.qq = qq;
    		this.email = email;
    	}
    
    	public int getNum() {
    		return num;
    	}
    
    	public void setNum(int num) {
    		this.num = num;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getPhoneNum() {
    		return phoneNum;
    	}
    
    	public void setPhoneNum(String phoneNum) {
    		this.phoneNum = phoneNum;
    	}
    
    	public String getQq() {
    		return qq;
    	}
    
    	public void setQq(String qq) {
    		this.qq = qq;
    	}
    
    	public String getEmail() {
    		return email;
    	}
    
    	public void setEmail(String email) {
    		this.email = email;
    	}
    
    	@Override
    	public String toString() {
    		return "Contact [num=" + num + ", name=" + name + ", phoneNum=" + phoneNum + ", qq=" + qq + ", email=" + email
    				+ "]";
    	}
    
    }
    

    联系人管理类:

    public class ContachManager {
    
    	/**
    	 * 存储所有联系人信息
    	 */
    	private static ArrayList<Contact> list = new ArrayList<Contact>();
    
    	/**
    	 * 添加联系人
    	 * 
    	 * @param c
    	 * @return
    	 */
    	public boolean add(Contact c) {
    		String phoneNum = c.getPhoneNum();
    		String qq = c.getQq();
    		String email = c.getEmail();
    
    		if (!phoneNum.matches("^1\\d{10}$")) {
    			System.out.println("手机号格式不正确!");
    			return false;
    		}
    		if (!qq.matches("^[1-9]\\d{4,11}")) {
    			System.out.println("qq格式不对!");
    			return false;
    		}
    		if (!email.matches("^\\w+?@.+?\\.\\w+$")) {
    			System.out.println("邮箱格式不匹配!");
    			return false;
    		}
    		list.add(c);
    		return true;
    	}
    
    	/**
    	 * 根据条件查询(模糊查询)
    	 * 
    	 * @param flag 查询方式:1-按姓名 2-按手机号
    	 * @param key  关键字
    	 * @return
    	 */
    	public List<Contact> findByCondition(int flag, String key) {
    		// 声明一个临时变量存储查询到的符合条件的数据
    		ArrayList<Contact> temp = new ArrayList<Contact>();
    		// 对联系人遍历
    		for (Contact c : list) {
    			if (flag == 1) {
    				// 按姓名
    				if (c.getName().contains(key)) {
    					// 判断联系人姓名中是否包含指定的查询关键字
    					temp.add(c);
    				}
    			} else if (flag == 2) {
    				// 按手机号
    				if (c.getPhoneNum().contains(key)) {
    					temp.add(c);
    				}
    			} else {
    				temp = list;
    				break;
    			}
    		}
    
    		return temp;
    	}
    
    	/**
    	 * 查询所有(分页)
    	 * 
    	 * @param pageNow  当前数据的页码数
    	 * @param pageSize 每页数据的最大条目
    	 * @return 放回当前页的数据集
    	 */
    	public List<Contact> findAll(int pageNow, int pageSize) {
    		int from = (pageNow - 1) * pageSize;
    		int to = pageNow * pageSize;
    
    		// 如果集合中没数据时返回null
    		if (list.size() < 1) {
    			return null;
    		}
    		//开始位置不能等于总数据条数(越界)
    		if(from >= list.size()) {
    			return null;
    		}
    		// 结尾的位置不能超过数据总条数
    		if (to > list.size()) {
    			to = list.size();
    		}
    		return list.subList(from, to);
    	}
    
    	/**
    	 * 根据编号删除联系人
    	 * @param num
    	 * @return
    	 */
    	public boolean del(int num) {
    		Contact target = null;
    		for (Contact c : list) {
    			if(c.getNum() == num) {
    				target = c;
    				break;
    			}
    		}
    		if(Objects.isNull(target)) {
    			System.out.println("未找到目标联系人");
    			return false;
    		}
    		return list.remove(target);
    	}
    }
    

    客户端:

    public class Client {
    
    	Scanner input = new Scanner(System.in);
    	ContachManager cm = new ContachManager();
    
    	public void mainMenu() {
    		p("=============欢迎使用SOFTEEM-SMART通信录==============");
    		p("*\t\t[1]添加联系人\t\t\t*");
    		p("*\t\t[2]联系人列表\t\t\t*");
    		p("*\t\t[3]根据姓名查询联系人\t\t*");
    		p("*\t\t[4]根据手机号查询联系人\t\t*");
    		p("*\t\t[5]删除联系人\t\t\t*");
    		p("*\t\t[0]退出\t\t\t\t*");
    		p("请输入正确的操作指令:");
    		start();
    	}
    
    	public void start() {
    		String s = input.next();
    		if (!s.matches("[0-5]")) {
    			p("请输入正确指令:");
    			start();
    		}
    		switch (s) {
    		case "1":
    			addContact();
    			break;
    		case "2":
    			listContact();
    			break;
    		case "3":
    			queryByCondition(1);
    			break;
    		case "4":
    			queryByCondition(2);
    			break;
    		case "5":
    			deleByNum();
    			break;
    		case "0":
    			p("谢谢使用,再见!");
    			System.exit(0);
    			break;
    		}
    	}
    
    	/**
    	 * 删除联系人
    	 */
    	private void deleByNum() {
    		p("请输入联系人编号:");
    		String num = input.next();
    		if(!num.matches("^\\d+$")) {
    			p("请输入正确的编号");
    			deleByNum();
    		}else {
    			boolean f = cm.del(Integer.parseInt(num));
    			if(f) {
    				p("删除成功");
    			}
    			mainMenu();
    		}
    	}
    
    	/**
    	 * 条件查询
    	 * @param flag
    	 */
    	private void queryByCondition(int flag) {
    		p("请输入查询关键字");
    		String key = input.next();
    		List<Contact> list = cm.findByCondition(flag, key);
    		//判断集合是否为空
    		if(list.isEmpty()) {
    			p("为查询到匹配的联系人!");
    		}else {
    			for (Contact c : list) {
    				p(c);
    			}
    		}
    		mainMenu();
    	}
    
    	/**
    	 * 添加
    	 */
    	private void addContact() {
    		p("请输入联系人信息:编号/姓名/手机号/QQ号/邮箱");
    		String s = input.next();
    		if(!s.matches("\\d+/.+/1\\d{10}/[1-9]\\d{4,11}/\\w+?@.+?\\.\\w+")) {
    			p("输入信息有误,请重新输入:");
    			addContact();
    		}else {
    			String[] info = s.split("/");
    			Contact c = new Contact(Integer.parseInt(info[0]),info[1],info[2],info[3],info[4]);
    			if(cm.add(c)) {
    				p("添加成功!");
    				mainMenu();
    			}else {
    				addContact();
    			}
    		}
    	}
    	
    	public void listContact() {
    		p("请输入需要显示的联系人页码数和每页条数(按:页码/数据条数):");
    		String s = input.next();
    		if(!s.matches("\\d{1,3}/\\d{1,3}")) {
    			p("输入的页码或每页条数格式不对");
    			listContact();
    		}else {
    			String[] nums = s.split("/");
    			List<Contact> list = cm.findAll(Integer.parseInt(nums[0]), Integer.parseInt(nums[1]));
    			if(Objects.isNull(list)) {
    				p("没有更多数据可显示!");
    				mainMenu();
    			}else {
    				for (Contact c : list) {
    					p(c);
    				}
    				listContact();
    			}
    		}
    	}
    	
    
    	public void p(Object msg) {
    		System.out.println(msg);
    	}
    
    	//测试
    	public static void main(String[] args) {
    		Client c = new Client();
    		c.mainMenu();
    	}
    }
    
    展开全文
  • import java.io; import java.util; public class LittleProgram { static boolean isDelete = true;... public static void main(String [] args)//主方法,程序从这里开始运行 throws IOException,
  • Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多...
  • 关于java程序设计的学生通讯录,运用JList,JTable以及BorderLayout布局管理器,还有JDBC数据库连接
  • Java 通讯录

    2020-11-30 19:38:49
    import java.util.Scanner; import java.util.Calendar; import java.util.Date; import java.text.*; import java.io.*; public class Main{ //测试类 Scanner sc=new Scanner(System.in); public void Menu() ...

    转载一篇别人的博文

    该期核心:面对对象编程

    我所看到的代码段:

    package addressBook;
    import java.util.Scanner;
    import java.util.Calendar;
    import java.util.Date;
    import java.text.*;
    import java.io.*;
    public class Main{  //测试类
    	Scanner sc=new Scanner(System.in);	
    	public void Menu() throws  java.io.IOException 
    	{
    	     //菜单
    		//Scanner sc=new Scanner(System.in);//可以隐去
    		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 = sc.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":ShowCurrentTime(); break;
    				default:System.out.println("输入错误!");continue;
    			}
    			break;
    		} while(true);
    	}
    	//划重点
    	public static void main(String[] args)throws java.io.IOException
    	{		
    		Main c=new Main();//首先创建  Main类  c对象
    		while(true)//必然为true
    		{
    			c.Menu(); //Main类 c对象调用void类型的 Menu函数
    		}
    	}
    	//......以上所涉及方法均省略,这里只讨论该写法
    }
    
    

    附上一张图:
    在这里插入图片描述

    转载一位博主的文章,面对对象编程的思想。多看看、多写写、多想想以及多码码各种程序或者项目。

    以下是该博主文章链接:

    用Java实现简单通讯录(程序设计作业)

    其中个中就里,好好看看吧。

    END

    展开全文
  • Java版手机通讯录

    2019-10-24 16:14:13
    通讯录主要用于储存联系人的信息,这里我们主要记录了联系人的姓名以及号码 在角色上我们只设计了用户。 二、概要设计: 想清楚程序应该分为几个模块,每个模块都是干啥的,模块之间是如何交互的? 由于当前的系统...

    一、需求分析:
    通讯录主要用于储存联系人的信息,这里我们主要记录了联系人的姓名以及号码
    在角色上我们只设计了用户。

    二、概要设计:
    想清楚程序应该分为几个模块,每个模块都是干啥的,模块之间是如何交互的?
    由于当前的系统相对比较简单,暂且设为一个模块。

    三、详细设计:
    每个模块具体的一些细节再考虑清楚

    四、开始编码:
    将系统分为了三大部分:contact 包、operation 包、Main 类
    (1)contact 包:包含了Contact 类(用于描述每个联系人的信息),ContactList 类(用于描述所有联系人的信息)
    (2)operation 包: 包含了各种具体实现的操作
    (3)Main 方法:程序的入口。

    编码的整体结构:
    contact 包:
    Contact 类:描述每个联系人的信息
    ContactList 类:描述所有联系人的信息,简单的顺序表

    operation 包:
    IOperation 接口:operation 包里面的每个类都需要重写IOperation 接口里面的 work 方法。
    AddOperation 类:添加联系人以及进行通讯录的扩容
    DelectOperation 类:删除联系人
    SearchOperation 类:查找某个联系人
    ShowOperation 类:打印所有联系人的信息
    SortOperation 类:对联系人进行排序(按照首字母大小)
    ClearOperation 类:清空联系人
    ExitOperation 类:退出程序

    Main 类:
    整个程序的入口以及相关操作的菜单。

    具体的代码实现:
    1.contact 包:
    (1)Contact 类:

    public class Contact {
        private String name;
        private String id;
    
        public Contact(String name, String id) {
            this.name = name;
            this.id = id;
        }
    
        @Override
        public String toString() {
            return "Contact{" +
                    "name='" + name + '\'' +
                    ", id='" + id + '\'' +
                    '}';
        }
    
        public String getName() {
            return name;
        }
    }
    

    (2)ContactList 类:

    public class ContactList {
        public Contact[] contacts = new Contact[1];
        private int size;
    
    
    
        public Contact getContact(int index) {
            return contacts[index];
        }
    
        public void setSize(int size) {
            this.size = size;
        }
        public int getSize() {
            return size;
        }
    
        public void setContact(int index, Contact contact) {
            contacts[index] = contact;
        }
    }
    

    2.operation 包:
    (1)IOperation 接口:

    import contact.ContactList;
    
    public interface IOperation {
        void work(ContactList contactList);
    }
    

    (2)AddOperation 类:

    public class AddOperation implements IOperation {
        @Override
        public void work(ContactList contactList) {
            System.out.println("添加联系人");
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入添加联系人的姓名:");
            String name = scanner.next();
            System.out.println("请输入添加联系人的号码:");
            String id = scanner.next();
            Contact contact = new Contact(name,id);
            contactList.setContact(contactList.getSize(),contact);
            contactList.setSize(contactList.getSize() + 1);
            System.out.println("添加成功!");
            if (contactList.getSize() == contactList.contacts.length) {
                //进行扩容
                Contact[] newContacts = new Contact[contactList.contacts.length * 2];
                for (int i = 0; i < contactList.getSize(); i++) {
                    newContacts[i] = contactList.contacts[i];
                }
                contactList.contacts = newContacts;
                System.out.println("扩容成功 !");
            }
            return;
        }
    }
    

    (3)SearchOperation 类:

    public class SearchOperation implements IOperation {
        @Override
        public void work(ContactList contactList) {
            System.out.println("查找联系人信息");
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入要查找联系人的姓名:");
            String name = scanner.next();
            for (int i = 0; i < contactList.getSize(); i++) {
                Contact contact = contactList.getContact(i);
                if (contact.getName().equals(name)) {
                    System.out.println(contact);
                    return;
                }
            }
            System.out.println("查无此人");
            return;
        }
    }
    

    (4)DelectOperation 类:

    public class DelectOperation implements IOperation {
        @Override
        public void work(ContactList contactList) {
            System.out.println("删除联系人");
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入删除联系人的姓名:");
            String name = scanner.next();
            //先查找
            for (int i = 0; i < contactList.getSize(); i++) {
                Contact contact = contactList.getContact(i);
                if (contact.getName().equals(name)) {
                    //找到了,进行具体的删除
                    contactList.setContact(i,contactList.getContact(contactList.getSize() -1));
                    contactList.setSize(contactList.getSize() - 1);
                    System.out.println("删除成功!");
                    return;
                }
            }
            System.out.println("查无此人");
            return;
        }
    }
    

    (5)ShowOperation 类:

    public class ShowOperation implements IOperation {
        @Override
        public void work(ContactList contactList) {
            System.out.println("展示所有联系人信息");
            for (int i = 0; i < contactList.getSize(); i++) {
                Contact contact = contactList.getContact(i);
                System.out.println(contact);
            }
            return;
        }
    }
    

    (6)SortOperation 类:

    public class SortOperation implements IOperation {
        @Override
        public void work(ContactList contactList) {
            System.out.println("进行联系人排序(首字母大小)");
            for (int i = 0; i < contactList.getSize() - 1; i++) {
                contactList.contacts[i] = contactList.getContact(i);
                contactList.contacts[i + 1] = contactList.getContact(i + 1);
                if (contactList.contacts[i + 1].getName().compareTo(contactList.contacts[i].getName()) < 0) {
                    //进行交换
                    Contact tmp = contactList.contacts[i];
                    contactList.contacts[i] = contactList.contacts[i + 1];
                    contactList.contacts[i + 1] = tmp;
                }
            }
            new ShowOperation().work(contactList);
            return;
        }
    }
    

    (7)ClearOperation 类:

    public class ClearOperation implements IOperation {
        @Override
        public void work(ContactList contactList) {
            System.out.println("清空链表");
            contactList.setSize(0);
            System.out.println("清空成功!");
            return;
        }
    }
    

    (8)ExitOperation 类:

    public class ExitOperation implements IOperation {
        @Override
        public void work(ContactList contactList) {
            System.out.println("goodbye!");
            System.exit(0);
        }
    }
    

    3.Main 类:

    public class Main {
        public static void main(String[] args) {
            ContactList contactList = new ContactList();
            IOperation[] operations = {
                    new ExitOperation(),
                    new AddOperation(),
                    new SearchOperation(),
                    new DelectOperation(),
                    new ShowOperation(),
                    new ClearOperation(),
                    new SortOperation()
            };
    
            while (true) {
                int chioce = menu();
                operations[chioce].work(contactList);
            }
        }
        public static int menu() {
            System.out.println("-----------------------------");
            System.out.println("1.添加联系人     2.查找联系人");
            System.out.println("3.删除联系人     4.展示所有联系人信息");
            System.out.println("5.清空联系人     6.排序联系人");
            System.out.println("0.退出");
            System.out.println("-----------------------------");
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入您的选择:");
            int choice = scanner.nextInt();
            return choice;
        }
    
    }
    

    效果展示:
    在这里插入图片描述
    项目源码:https://github.com/YTCfight/Address-book/tree/master/out/production/Test2

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,626
精华内容 2,250
关键字:

java程序设计通讯录

java 订阅