基于Java系统的通讯录管理系统的设计与实现

基于Java系统的通讯录管理系统的设计与实现

大家好,今天给大家展示一下用Java语言设计的通讯录的实现,话不多说,见代码。

联系人类

在这里我们设置了一些联系人应该有的属性,并给他们进行了一系列的前期准备。

public class Contact {

	private int num;
	private String name;
	private String phone;
	private String qq;
	private String email;
	
	public Contact() {
		// TODO Auto-generated constructor stub
	}

	public Contact(int num, String name, String phone, String qq, String email) {
		super();
		this.num = num;
		this.name = name;
		this.phone = phone;
		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 getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	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 + ", phone=" + phone + ", qq=" + qq + ", email=" + email + "]";
	}
	
}

联系人管理类

这个类就是对通讯录应该有的功能构造方法,分别是存储添加联系人信息,根据条件查询(模糊查询),查询所有(分页),根据编号删除联系人。

public class ContactManager {

	/**
	 * 存储所有联系人信息
	 */
	private static ArrayList<Contact> list = new ArrayList<>();

	/**
	 * 添加联系人
	 * 
	 * @param c
	 * @return
	 */
	public boolean add(Contact c) {
		// ctrl+1
		String phone = c.getPhone();
		String qq = c.getQq();
		String email = c.getEmail();
		if (!phone.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.getPhone().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);
	}

}

个人心得

大概的实现就是这样了,因为我目前还在学习阶段,所以只能做出一个大概的实现,我日后继续努力学习,再来好好完善这个系统。

你可能感兴趣的:(java)