这是一个模拟通讯录系统,写的不到位的地方希望各位多多指点
通讯录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删除联系人
添加联系人
查询指定姓氏的联系人
查询指定性别的联系人
筛选指定年龄段的联系人
根据指定号码查询联系人
查询某一城市的所有联系人
清空联系人
退出系统
由于刚学到集合,能力有限,只能用简单的逻辑来完成这个简易的通讯录系统
如果有什么好的建议希望大家多多提出,我会好好改进的~~