模拟通讯录系统2.0

这是一个模拟通讯录系统,写的不到位的地方希望各位多多指点

1.Person类

package cn.com.contacts;

public class Person {
	private String name;
	private Integer age;
	private Character sex;
	private String tel;
	private String addr;

	public Person() {
		super();
	}

	public Person(String name, Integer age, Character sex, String tel, String addr) {
		super();
		this.name = name;
		this.age = age;
		this.sex = sex;
		this.tel = tel;
		this.addr = addr;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public Character getSex() {
		return sex;
	}

	public void setSex(Character sex) {
		this.sex = sex;
	}

	public String getTel() {
		return tel;
	}

	public void setTel(String tel) {
		this.tel = tel;
	}

	public String getAddr() {
		return addr;
	}

	public void setAddr(String addr) {
		this.addr = addr;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((addr == null) ? 0 : addr.hashCode());
		result = prime * result + ((age == null) ? 0 : age.hashCode());
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		result = prime * result + ((sex == null) ? 0 : sex.hashCode());
		result = prime * result + ((tel == null) ? 0 : tel.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Person other = (Person) obj;
		if (addr == null) {
			if (other.addr != null)
				return false;
		} else if (!addr.equals(other.addr))
			return false;
		if (age == null) {
			if (other.age != null)
				return false;
		} else if (!age.equals(other.age))
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		if (sex == null) {
			if (other.sex != null)
				return false;
		} else if (!sex.equals(other.sex))
			return false;
		if (tel == null) {
			if (other.tel != null)
				return false;
		} else if (!tel.equals(other.tel))
			return false;
		return true;
	}

	@Override
	public String toString() {
		StringBuffer sb = new StringBuffer("姓名:");
		sb.append(name).append("  年龄:").append(age).append("岁  ");
		sb.append("性别:").append(sex).append("  电话:").append(tel);
		sb.append("  家庭住址:").append(addr);
		return sb.toString();
	}

}

2.Contacts类(通讯录)

package cn.com.contacts;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Contacts {
	private List<Person> ps = new ArrayList<Person>();
	private Scanner s = new Scanner(System.in);

	public static void main(String[] args) {
		Contacts c = new Contacts();
		c.menu();
	}
	
	//菜单栏
	public void menu() {
		init(); // 数据的初始化
		int i;
		do { // 注意: id 是 集合中的下标
			System.out.println("*************************欢迎进入百知通讯录系统***********************");
			System.out.println("**********1. 查询所有联系人    			2. 根据id查询联系人********");
			System.out.println("**********3. 根据id修改联系人  		4. 根据id删除联系人********");
			System.out.println("**********5. 添加联系人                       		6. 查询指定姓氏的所有联系人 ***");
			System.out.println("**********7. 查询指定性别的所有联系人 		8. 查询指定年龄段的所有联系人 **");
			System.out.println("**********9. 根据指定号码查询联系人   		10.查询指定城市的所有联系人****");
			System.out.println("**********11.清空联系人          			12.退出系统**************");
			System.out.print("请输入您要查询的内容:");
			i = s.nextInt();
			switch (i) {
			case 1:
				checkAllPerson();
				break;
			case 2:
				System.out.println("根据ID查询联系人");
				System.out.println("请输入你要查询的联系人ID:");
				int id = s.nextInt();
				checkPersonById(id);
				break;
			case 3:
				System.out.println("根据ID修改联系人");
				System.out.println("请输入你要修改的联系人ID:");
				id = s.nextInt();
				updateById(id);
				break;
			case 4:
				System.out.println("根据ID删除联系人");
				System.out.println("请输入你要删除的联系人ID:");
				id = s.nextInt();
				removeById(id);
				break;
			case 5:
				System.out.println("添加联系人");
				addPerson();
				break;
			case 6:
				System.out.println("查询指定姓氏的所有联系人");
				System.out.println("请输入你要查询的姓氏:");
				String name = s.next();
				checkPersonByFamilyName(name);
				break;
			case 7:
				System.out.println("查询指定性别的所有联系人 ");
				System.out.println("请输入你要查询的性别:");
				char sex = s.next().charAt(0);
				checkPersonBySex(sex);
				break;
			case 8:
				System.out.println("查询指定年龄段的所有联系人");
				System.out.print("最低年龄:");
				int low = s.nextInt();
				System.out.print("最高年龄:");
				int high = s.nextInt();
				checkPersonByAgeGroup(low, high);
				break;
			case 9:
				System.out.println("根据指定号码查询联系人");
				System.out.println("请输入你要查询的号码:");
				String tel = s.next();
				checkPersonByTel(tel);
				break;
			case 10:
				System.out.println("查询指定城市的所有联系人");
				System.out.println("请输入你要查询的地址:");
				String addr = s.next();
				checkPersonByAddr(addr);
				break;
			case 11:
				System.out.println("清空联系人");
				clearAllPerson();
				break;
			case 12:
				System.out.println("系统已退出!欢迎下次使用!");
				break;
			default:
				System.out.println("您输入的信息有误");
				break;
			}
		} while (i != 12);
	}

	// 给程序部分初始数据
	public void init() {
		ps.add(new Person("张飞", 30, '男', "17795560566", "洛阳"));
		ps.add(new Person("张娟", 18, '女', "17032665013", "北京"));
		ps.add(new Person("赵旭", 25, '男', "17375410699", "开封"));
		ps.add(new Person("何冰", 22, '男', "17875115164", "平江"));
		ps.add(new Person("黄斌", 25, '男', "17762510674", "邵阳"));
		ps.add(new Person("文文", 24, '女', "17676005211", "郑州"));
		ps.add(new Person("盈盈", 20, '女', "17314715622", "北京"));
		ps.add(new Person("子航", 23, '男', "17875460014", "郑州"));
		ps.add(new Person("小石", 19, '男', "13065481151", "郴州"));
		ps.add(new Person("侯森", 20, '男', "18694411502", "洛阳"));
		ps.add(new Person("老周", 27, '男', "18075415642", "桂林"));
	}

	// 查询所有的联系人
	public void checkAllPerson() {
		for (Person p : ps) {
			System.out.println(p);
		}
	}

	// 根据id(下标)查询联系人
	public void checkPersonById(int id) {
		boolean bn = false;
		do {
			if (bn) {
				System.out.println("请输入你要查询的联系人ID:");
				id = s.nextInt();
			}
			bn = false;
			if (id >= ps.size()) {
				System.out.println("查无此人!");
				System.out.println("重新输入-y 退出-n");
				char c = s.next().charAt(0);
				if (c == 'y' || c == 'Y') {
					bn = true;
				}
			} else {
				System.out.println(ps.get(id));
				System.out.println("继续查询-y 退出-n");
				char c = s.next().charAt(0);
				if (c == 'y' || c == 'Y') {
					bn = true;
				}
			}
		} while (bn);
	}

	// 根据id(下标)修改联系人
	public void updateById(int id) {
		boolean bn = false;
		do {
			if (bn) {
				System.out.println("请输入你要修改的联系人ID:");
				id = s.nextInt();
			}
			bn = false;
			if (id >= ps.size()) {
				System.out.println("没有该联系人!请确认id是否输入正确~~");
			} else {
				System.out.println("请确认你要修改的联系人信息");
				System.out.println(ps.get(id));
				System.out.println("1-确定   2-重新输入  other-退出");
				int num = s.nextInt();
				if (num == 1) {
					boolean bo;
					do {
						bo = false;
						bn = false;
						System.out.println("1-修改姓名  2-修改年龄  3-修改性别  4-修改电话  5-修改地址");
						System.out.print("请输入对应的编号:");
						num = s.nextInt();
						if (num == 1) {
							System.out.print("请输入修改后的姓名:");
							String name = s.next();
							ps.get(id).setName(name);
							System.out.println("修改成功!");
						} else if (num == 2) {
							System.out.print("请输入修改后的年龄:");
							int age = s.nextInt();
							ps.get(id).setAge(age);
							System.out.println();
						} else if (num == 3) {
							System.out.print("请输入修改后的性别:");
							char sex = s.next().charAt(0);
							ps.get(id).setSex(sex);
							System.out.println();
						} else if (num == 4) {
							System.out.print("请输入修改后的电话:");
							String tel = s.next();
							ps.get(id).setTel(tel);
							System.out.println();
						} else if (num == 5) {
							System.out.print("请输入修改后的家庭住址:");
							String addr = s.next();
							ps.get(id).setAddr(addr);
							System.out.println();
						} else {
							System.out.println("输入有误!");
							System.out.println("1-重新输入  2-修改其它联系人  other-退出");
							int i = s.nextInt();
							if (i == 1) {
								bo = true;
							} else if (i == 2) {
								bn = true;
							} else {
								bn = false;
							}
						}
					} while (bo);
					if (bn == false && num >= 1 && num <= 5) {
						System.out.println("继续修改-y 退出-n");
						char c = s.next().charAt(0);
						if (c == 'y' || c == 'Y') {
							bn = true;
						}
					}
				} else if (num == 2) {
					bn = true;
				} else {
					bn = false;
				}
			}
		} while (bn);

	}

	// 根据id(下标)删除联系人
	public void removeById(int id) {
		boolean bn = false;
		do {
			if (bn) {
				System.out.println("请输入你要删除的联系人ID:");
				id = s.nextInt();
			}
			bn = false;
			if (id >= ps.size()) {
				do {
					System.out.println("删除失败!没有该联系人!");
					System.out.println("重新输入-y 退出-n");
					char c = s.next().charAt(0);
					if (c == 'y' || c == 'Y') {
						bn = true;
					}
				} while (bn);
			} else {
				System.out.println("请确认你要删除的联系人信息");
				System.out.println(ps.get(id));
				System.out.println("1-确定   2-重新输入  other-退出");
				int num = s.nextInt();
				if (num == 1) {
					ps.remove(id);
					System.out.println("该联系人已删除!");
					if (ps.size() > 0) {
						System.out.println("继续删除-y 退出-n");
						char c = s.next().charAt(0);
						if (c == 'y' || c == 'Y') {
							bn = true;
						}
					} else {
						System.out.println("联系人列表为空!快去添加新的联系人吧!");
					}
				} else if (num == 2) {
					bn = true;
				} else {
					bn = false;
				}
			}
		} while (bn);
	}

	// 添加联系人
	public void addPerson() {
		boolean bn;
		do {
			bn = false;
			System.out.println("请输入你要添加的联系人信息");
			System.out.print("姓名:");
			String name = s.next();
			System.out.println();
			System.out.print("年龄");
			int age = s.nextInt();
			System.out.println();
			System.out.print("性别:");
			char sex = s.next().charAt(0);
			System.out.println();
			System.out.print("电话:");
			String tel = s.next();
			System.out.println();
			System.out.print("家庭住址:");
			String addr = s.next();
			System.out.println();
			ps.add(new Person(name, age, sex, tel, addr));
			System.out.println("继续添加-y 退出-n");
			char c = s.next().charAt(0);
			if (c == 'y' || c == 'Y') {
				bn = true;
			}
		} while (bn);
	}

	// 查询指定姓氏的所有联系人
	public void checkPersonByFamilyName(String name){
		boolean bn = true;
		List<Person> list = new ArrayList<Person>();
		do {
			for(Person p : ps) {
				if(p.getName().startsWith(name)) {
					bn = false;
					list.add(p);
				}
			}
			if (bn) {
				System.out.println("查无此人!");
				System.out.println("继续查找-y  退出-n");
				char c = s.next().charAt(0);
				if(c == 'y' || c == 'Y') {
					System.out.println("请输入你要查询的姓氏:");
					name = s.next();
					bn = true;
				}else {
					bn = false;
				}
			}else {
				System.out.println("以下是为你找到的所有姓" + name + "的联系人:");
				int index = 0;
				for (Person p : list) {
					System.out.println(index + ":" + p.getName());
					index++;
				}
				System.out.println("查看详细信息-y  退出-n");
				char c = s.next().charAt(0);
				if(c == 'y' || c == 'Y') {
					do {
						bn = false;
						System.out.println("请输入你要查找的联系人编号:");
						index = s.nextInt();
						if(index >= 0 && index < list.size()) {
							System.out.println(list.get(index));
							System.out.println("继续查看其它联系人-y  退出-n");
							c = s.next().charAt(0);
							if(c == 'y' || c == 'Y') {
								index = 0;
								for (Person p : list) {
									System.out.println(index + ":" + p.getName());
									index++;
								}
								bn = true;
							}
						}else {
							System.out.println("输入有误!");
							System.out.println("重新输入-y  退出-n");
							c = s.next().charAt(0);
							if (c == 'y' || c == 'Y') {
								bn = true;
							}
						}
					}while(bn);
				}
			}
		}while(bn);
	}
	
	// 查询指定性别的所有联系人 
	public void checkPersonBySex(char sex) {
		boolean bn;
		List<Person> list = new ArrayList<Person>();
		do {
			bn = false;
			if(sex != '男' && sex != '女') {
				System.out.println("输入有误!");
				System.out.println("重新输入-y  退出-n");
				char c = s.next().charAt(0);
				if(c == 'y' || c == 'Y') {
					System.out.println("请输入你要查询的性别:");
					sex = s.next().charAt(0);
					bn = true;
				}
			}else {
				for(Person p : ps) {
					if(p.getSex() == sex) {
						bn = false;
						list.add(p);
					}
				}
				if (bn) {
					System.out.println("暂无联系人!");
					System.out.println("继续查找-y  退出-n");
					char c = s.next().charAt(0);
					if(c == 'y' || c == 'Y') {
						System.out.println("请输入你要查询的性别:");
						sex = s.next().charAt(0);
						bn = true;
					}
				}else {
					System.out.println("以下是为你找到的所有" + sex + "性联系人:");
					int index = 0;
					for (Person p : list) {
						System.out.println(index + ":" + p.getName());
						index++;
					}
					System.out.println("查看详细信息-y  退出-n");
					char c = s.next().charAt(0);
					if(c == 'y' || c == 'Y') {
						do {
							bn = false;
							System.out.println("请输入你要查找的联系人编号:");
							index = s.nextInt();
							if(index >= 0 && index < list.size()) {
								System.out.println(list.get(index));
								System.out.println("继续查看其它联系人-y  退出-n");
								c = s.next().charAt(0);
								if(c == 'y' || c == 'Y') {
									index = 0;
									for (Person p : list) {
										System.out.println(index + ":" + p.getName());
										index++;
									}
									bn = true;
								}
							}else {
								System.out.println("输入有误!");
								System.out.println("重新输入-y  退出-n");
								c = s.next().charAt(0);
								if (c == 'y' || c == 'Y') {
									bn = true;
								}
							}
						}while(bn);
					}
				}
			}
		}while(bn);
	}
	
	// 查询指定年龄段的所有联系人
	public void checkPersonByAgeGroup(int low,int high) {
		boolean bn = true;
		List<Person> list = new ArrayList<Person>();
		do {
			if (high < low) {
				int t = 0;
				t = high;
				high = low;
				low = t;
			}
			for(Person p : ps) {
				if(p.getAge() >= low && p.getAge() <= high) {
					bn = false;
					list.add(p);
				}
			}
			if (bn) {
				System.out.println("暂无联系人!");
				System.out.println("继续查找-y  退出-n");
				char c = s.next().charAt(0);
				if(c == 'y' || c == 'Y') {
					System.out.print("最低年龄:");
					low = s.nextInt();
					System.out.print("最高年龄:");
					high = s.nextInt();
				}else {
					bn = false;
				}
			}else {
				System.out.println("以下是为你找到的所有年龄在" + low + "-" + high + "的联系人:");
				int index = 0;
				for (Person p : list) {
					System.out.println(index + ":" + p.getName() + "  " + p.getAge() + "岁");
					index++;
				}
				System.out.println("查看详细信息-y  退出-n");
				char c = s.next().charAt(0);
				if(c == 'y' || c == 'Y') {
					do {
						bn = false;
						System.out.println("请输入你要查找的联系人编号:");
						index = s.nextInt();
						if(index >= 0 && index < list.size()) {
							System.out.println(list.get(index));
							System.out.println("继续查看其它联系人-y  退出-n");
							c = s.next().charAt(0);
							if(c == 'y' || c == 'Y') {
								index = 0;
								for (Person p : list) {
									System.out.println(index + ":" + p.getName() + "  " + p.getAge() + "岁");
									index++;
								}
								bn = true;
							}
						}else {
							System.out.println("输入有误!");
							System.out.println("重新输入-y  退出-n");
							c = s.next().charAt(0);
							if (c == 'y' || c == 'Y') {
								bn = true;
							}
						}
					}while(bn);
				}
			}
		}while(bn);
	}
	
	// 根据指定号码查询联系人
	public void checkPersonByTel(String tel) {
		boolean bn = true;
		List<Person> list = new ArrayList<Person>();
		do {
			for(Person p : ps) {
				if(p.getTel().equals(tel)) {
					bn = false;
					list.add(p);
				}
			}
			if (bn) {
				System.out.println("查无此人!");
				System.out.println("继续查找-y  退出-n");
				char c = s.next().charAt(0);
				if(c == 'y' || c == 'Y') {
					System.out.println("请输入你要查询的号码:");
					tel = s.next();
				}else {
					bn = false;
				}
			}else {
				System.out.println("以下是为你找到的号码为" + tel + "的联系人:");
				int index = 0;
				for (Person p : list) {
					System.out.println(index + ":" + p.getName());
					index++;
				}
				System.out.println("查看详细信息-y  退出-n");
				char c = s.next().charAt(0);
				if(c == 'y' || c == 'Y') {
					do {
						bn = false;
						System.out.println("请输入你要查找的联系人编号:");
						index = s.nextInt();
						if(index >= 0 && index < list.size()) {
							System.out.println(list.get(index));
							System.out.println("继续查看其它联系人-y  退出-n");
							c = s.next().charAt(0);
							if(c == 'y' || c == 'Y') {
								index = 0;
								for (Person p : list) {
									System.out.println(index + ":" + p.getName());
									index++;
								}
								bn = true;
							}
						}else {
							System.out.println("输入有误!");
							System.out.println("重新输入-y  退出-n");
							c = s.next().charAt(0);
							if (c == 'y' || c == 'Y') {
								bn = true;
							}
						}
					}while(bn);
				}
			}
		}while(bn);
	}
	
	// 查询指定城市的所有联系人
	public void checkPersonByAddr(String addr) {
		boolean bn = true;
		List<Person> list = new ArrayList<Person>();
		do {
			for(Person p : ps) {
				if(p.getAddr().equals(addr)) {
					bn = false;
					list.add(p);
				}
			}
			if (bn) {
				System.out.println("暂无联系人!");
				System.out.println("继续查找-y  退出-n");
				char c = s.next().charAt(0);
				if(c == 'y' || c == 'Y') {
					System.out.println("请输入你要查找的城市:");
					addr = s.next();
				}else {
					bn = false;
				}
			}else {
				System.out.println("以下是为你找到的所有在" + addr + "的联系人:");
				int index = 0;
				for (Person p : list) {
					System.out.println(index + ":" + p.getName());
					index++;
				}
				System.out.println("查看详细信息-y  退出-n");
				char c = s.next().charAt(0);
				if(c == 'y' || c == 'Y') {
					do {
						bn = false;
						System.out.println("请输入你要查找的联系人编号:");
						index = s.nextInt();
						if(index >= 0 && index < list.size()) {
							System.out.println(list.get(index));
							System.out.println("继续查看其它联系人-y  退出-n");
							c = s.next().charAt(0);
							if(c == 'y' || c == 'Y') {
								index = 0;
								for (Person p : list) {
									System.out.println(index + ":" + p.getName());
									index++;
								}
								bn = true;
							}
						}else {
							System.out.println("输入有误!");
							System.out.println("重新输入-y  退出-n");
							c = s.next().charAt(0);
							if (c == 'y' || c == 'Y') {
								bn = true;
							}
						}
					}while(bn);
				}
			}
		}while(bn);
	}
	
	// 清空联系人
	public void clearAllPerson() {
		System.out.println("请问你是否清空所有联系人?");
		System.out.println("确认-y  退出-n");
		char c = s.next().charAt(0);
		if(c == 'y' || c == 'Y') {
			ps.clear();
			System.out.println("联系人已清空!");
		}
	}
}

3.代码实现效果

查看所有联系人

在这里插入图片描述

根据id查询联系人

在这里插入图片描述

根据id修改联系人

在这里插入图片描述

根据id删除联系人

在这里插入图片描述

添加联系人

在这里插入图片描述

查询指定姓氏的联系人

在这里插入图片描述

查询指定性别的联系人

在这里插入图片描述

筛选指定年龄段的联系人

在这里插入图片描述

根据指定号码查询联系人

在这里插入图片描述

查询某一城市的所有联系人

在这里插入图片描述

清空联系人

在这里插入图片描述

退出系统

在这里插入图片描述

由于刚学到集合,能力有限,只能用简单的逻辑来完成这个简易的通讯录系统
如果有什么好的建议希望大家多多提出,我会好好改进的~~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值