通讯录小程序

本周学习了一个通讯录的制作,对于目前的我来说,还蛮有难度的,一个综合性的题目,分享一下我的学习历程。

package keypoint5;
/**联系人类*/
public class Linkman {
	/**编号*/
	private int sno;
	/**姓名*/
	private String name;
	/**手机号*/
	private String number;
	/**扣扣*/
	private String qq;
	/**邮箱地址*/
	private String email;
	public Linkman() {
	}
	public Linkman(int sno, String name, String number, String qq, String email) {
		super();
		this.sno = sno;
		this.name = name;
		this.number = number;
		this.qq = qq;
		this.email = email;
	}
	public int getSno() {
		return sno;
	}
	public void setSno(int sno) {
		this.sno = sno;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getNumber() {
		return number;
	}
	public void setNumber(String number) {
		this.number = number;
	}
	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 "Linkman [sno=" + sno + ", name=" + name + ", number=" + number + ", qq=" + qq + ", email=" + email
				+ "]";
	}
}
package keypoint5;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**联系人管理类*/
public class LinkmanManage {
	/**存储所有联系人信息*/
	private static ArrayList<Linkman> list=new ArrayList<>();
	/**添加联系人*/
	public boolean add(Linkman lin){
		String number=lin.getNumber();
		String qq=lin.getQq();
		String email=lin.getEmail();
		if(!number.matches("^1\\d{10}$")){
			System.out.println("手机号格式错误!!!");	
			return false;
		}
		if(!qq.matches("^[1-9]\\d{4,11}$")){
			System.out.println("扣扣号格式错误!!!");
			return false;
		}
		if(!email.matches("^\\w+?@.+?\\.\\w+$")){
			System.out.println("邮箱格式不匹配!!!");
			return false;
		}
		list.add(lin);
		return true;	

	}
	/**
	 * 根据条件查询(模糊查询)
	 * @param flag  查询方式:1-按照姓名查询  2-按照手机号查询
	 * @param key 关键字
	 * @return
	 */
	public List<Linkman> find(int flag,String key){
		/**声明临时变量存储查询到符合条件的数据*/
		ArrayList<Linkman> temp=new ArrayList<>();
		for (Linkman lk : list) {
			/**按照姓名*/
			if(flag==1){
				/**判断联系人姓名中是否包含指定的查询关键字*/
				if(lk.getName().contains(key)){
					temp.add(lk);
				}
				/**按照手机号*/
			}else if (flag==2) {
				if(lk.getNumber().contains(key)){
					temp.add(lk);
				}				
			}else {
				temp=list;
				break;
			}
		}		
		return temp;
	}
	/**
	 * 查询所有(分页)
	 * @param pageNow 当前数据的页码数
	 * @param pageSize  每页数据的最大条目数
	 * @return  返回当前的数据集合
	 */
	public List<Linkman> 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 sno
	 * @return
	 */
	public boolean del(int sno){
		Linkman target=null;
		for (Linkman l : list) {
			if(l.getSno()==sno){
				target=l;
				break;
			}
			}
		if(Objects.isNull(target)){
			System.out.println("未找到目标联系人");
			return false;
		}
		return list.remove(target);
		}
}
package keypoint5;
import java.util.List;
import java.util.Objects;
import java.util.Scanner;
/**客户端类*/
public class Client {	
	Scanner input=new Scanner(System.in);
	LinkmanManage lk=new LinkmanManage();	
	public void p(Object msg){
		System.out.println(msg);
	}
	public static void main(String[] args) {
		new Client().mainMenu();
	}	
	public void mainMenu(){
		p("**********欢迎使用SOFTEEM-SMART**********");
		p("*\t[1]添加联系人\t\t\t*");
		p("*\t[2]联系人列表\t\t\t*");
		p("*\t[3]根据姓名查询联系人\t\t\t*");
		p("*\t[4]根据手机号查询联系人\t\t\t*");
		p("*\t[5]删除联系人\t\t\t*");
		p("*\t[0]退出\t\t\t\t*");
		p("*************************************");
		p("请输入正确的操作指令");
		/**调用start*/
		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":
			/**查询联系人(by姓名)*/
			queryByCondition(1);
			break;
		case "4":
			/**查询联系人(by手机号)*/
			queryByCondition(2);
			break;
		case "5":
			/**删除联系人*/
			delByNum();
			break;
		case "0":
			/**退出*/
			p("谢谢使用,再见!");
			System.exit(0);
			break;
		default:
			break;
		}
	}
	/**
	 * 1.添加联系人
	 */
	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("/");
			/**根据输入的信息构建联系人对象*/
			Linkman c=new Linkman(Integer.parseInt(info[0]), info[1], info[2], info[3], info[4]);
			if(lk.add(c)){
				p("添加成功!");
				mainMenu();
			}else {
				addContact();
			}
		}
	}	
	
	/**
	 * 2.联系人列表
	 */
	private void listContact() {
		p("请输入需要显示的联系人页码数和每页条数(按:页码/数据条数):");
		String s=input.next();
		if(!s.matches("\\d{1,3}/\\d{1,3}")){
			p("输入的页码或每页的条数格式不正确");
			listContact();
		}else {
			String[] num=s.split("/");
			List<Linkman> list=lk.findAll(Integer.parseInt(num[0]), Integer.parseInt(num[1]));
			if(Objects.isNull(list)){
				p("没有更多数据可显示!");
				mainMenu();
			}else {
				for (Linkman lin : list) {
					p(lin);
				}
			}	
		}
	}
	
	/**
	 * 3和4.条件查询
	 * @param flag
	 */
	private void queryByCondition(int flag) {
		p("请输入查询关键字");
		String key=input.next();
		List<Linkman> list=lk.find(flag, key);
		/**判断集合是否为空*/
		if(list.isEmpty()){
			p("为查询到匹配的联系人!");
		}else {
			for (Linkman lin : list) {
				p(lin);
			}
		}
		mainMenu();
		}
	
	/**
	 * 5.删除联系人
	 */
	private void delByNum() {
		p("请输入联系人的编号:");
		String num=input.next();
		if(!num.matches("^\\d+$")){
			p("请输入正确的编号");
			delByNum();
		}else {
			boolean b=lk.del(Integer.parseInt(num));
			if (b) {
				p("删除成功!!!");
			}
			mainMenu();
			}	
	}
}

最后控制台界面如下:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通讯录小程序demo是一种基于微信小程序平台开发的应用程序示例,旨在展示通讯录管理功能。它可以帮助用户轻松管理和查找联系人信息。 该小程序demo主要包含以下功能模块: 1. 用户登录与权限管理:用户可以通过微信账号登录,并选择是否授权通讯录访问权限。只有经过授权的用户才能使用该小程序。 2. 通讯录展示:用户登录后,可以看到已存储的联系人信息。通讯录页面以列表形式展示联系人的姓名、电话号码等基本信息,并支持搜索和排序功能,方便用户快速找到目标联系人。 3. 添加联系人:用户可以通过点击按钮或者右上角的“+”号添加新的联系人。在添加联系人页面,用户需要输入姓名、电话号码等必要信息,并支持可选项如照片、邮箱和地址等。用户填写完整后,点击确认即可成功添加联系人。 4. 编辑联系人:用户可以编辑已存在的联系人信息,包括姓名、电话号码等基本信息和可选项如照片、邮箱和地址等。编辑完成后,用户可以保存修改后的联系人信息。 5. 删除联系人:用户可以选择特定联系人,进行删除操作。删除后,该联系人的信息将从通讯录中移除。 6. 打电话/发短信/发邮件:用户可以通过点击联系人条目,直接拨打电话、发送短信或者发送电子邮件,方便快捷地与联系人进行沟通和交流。 通过该通讯录小程序demo,用户可以方便地管理和查找联系人信息,提高工作和生活效率。此外,开发者可以根据实际需求扩展更多功能,如设置联系人分组、备份与恢复通讯录等,以满足不同用户的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值