1)创建集合,添加5个联系人,联系人姓名不能重复 2)用户选择1 查看联系人,2 添加联系人 3 删除联系人 4 修改联系人 5查看分组联系人 6查看所有联系人0退出通讯录
需求
联系人Contacts(姓名name,电话mobile,邮箱email,QQ,分组group)
1)创建集合,添加5个联系人,联系人姓名不能重复
2)用户选择1 查看联系人,2 添加联系人 3 删除联系人 4 修改联系人 5查看分组联系人 6查看所有联系人0退出通讯录
3)选择1查看联系人时,输入联系人姓名,根据联系人姓名查看到联系人的信息
4)选择2添加联系人时,从控制台读取姓名、电话、邮箱、QQ、分组(如家人、同事、同 学、朋友)
5)选择3删除联系人,输入联系人姓名,删除该联系人信息
6)选择4修改联系人,输入联系人姓名,如果联系人姓名不存在,则不能修改
7)实现5按分组查询联系人,输入分组名,查看该分组下所有联系人
8)实现添加分组,如果添加联系人时该分组不存在,则创建新分组
代码
联系人类
/*联系人类
*属性:姓名 电话 邮箱 qq 分组
*/
public class Contacts {
private String name;
private String mobile;
private String email;
private String qq;
private String group;
public Contacts() {
}
public Contacts(String name, String mobile, String email, String qq, String group) {
super();
this.name = name;
this.mobile = mobile;
this.email = email;
this.qq = qq;
this.group = group;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
public String getGroup() {
return group;
}
public void setGroup(String group) {
this.group = group;
}
@Override
public String toString() {
return "Contacts [name=" + name + ", mobile=" + mobile + ", email=" + email + ", qq=" + qq + ", group=" + group
+ "]";
}
}
主界面类
import java.security.acl.Group;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import javax.naming.spi.NamingManager;
/*通讯录主界面类
*功能:
* 1 查看联系人
* 2 添加联系人
* 3 删除联系人
* 4 修改联系人
* 5查看分组联系人
* 6查看所有联系人
* 0退出通讯录
*/
public class MainUi {
// 定义全局的两个集合变量
Map<String, Contacts> contactMap;// 联系人集合
// 一个分组下面有多个联系人,所以使用list作为value值
Map<String, List<Contacts>> contactGroup;// 分组集合
// 构造方法
public MainUi() {
// 实例化联系人集合
contactMap = new HashMap<>();
// 实例化分组集合
contactGroup = new HashMap<>();
// 调用初始化界面的方法
initUi();
}
// 初始化界面的方法
private void initUi() {
// 先初始化及格联系人集合
initFiveContacts();
System.out.println("============================欢迎使用Contacts管理系统=========================");
System.out.println();
// while循环系统一直可以操作
while (true) {
System.out.print("1:查看联系人 " + " ");
System.out.print("2:添加联系人 " + " ");
System.out.print("3:删除联系人 " + " ");
System.out.print("4:修改联系人 " + " ");
System.out.print("5:查看分组联系人" + " ");
System.out.print("6:查看所有联系人" + " ");
System.out.println("0:退出");
System.out.println();
System.out.println("请选择你要执行的操作");
// 匿名类创建键盘输入对象 ,获取键盘输入
String input = new Scanner(System.in).next();
switch (input) {
case "1":
// 调用查看联系人方法
System.out.println("*****************************查看联系人******************************");
searchContacts();
System.out.println("================================================");
break;
case "2":
// 调用添加联系人方法
System.out.println("*****************************添加联系人*****************************");
addOrUpdateContacts("add");// false代表里面没有此联系人才能添加,
System.out.println("====================================================================");
break;
case "3":
// 调用删除联系人方法
System.out.println("*****************************删除联系人*****************************");
deleteContacts();
System.out.println("====================================================================");
break;
case "4":
// 调用修改联系人方法
System.out.println("******************************修改联系人******************************");
addOrUpdateContacts("update");// true代表里面存在联系人
System.out.println("====================================================================");
break;
case "5":
// 调用查看分组联系人方法
System.out.println("******************************查看分组联系人******************************");
searchContactsByGroup();
System.out.println("====================================================================");
break;
case "6":
// 调用查看分组联系人方法
System.out.println("******************************查看所有联系人******************************");
searchAllContacts();
System.out.println("====================================================================");
break;
case "0":
System.out.println("******************************欢迎下次使用,再见!*************************");
return;
default:
System.out.println("!!!!!!!!!!!!!!!输入序号有误,重新选择!!!!!!!!!!!!!!!!");
break;
}
}
}
// 初始化几个联系人对象
private void initFiveContacts() {
// 添加到联系人集合
contactMap.put("张三", new Contacts("张三", "123456", "1234@qq.com", "12312", "家人"));
contactMap.put("李四", new Contacts("李四", "34534", "8765@qq.com", "9876", "同事"));
contactMap.put("李三", new Contacts("李三", "3456", "1234@qq.com", "12312", "朋友"));
contactMap.put("张四", new Contacts("张四", "75", "456@qq.com", "4566", "同事"));
contactMap.put("王三", new Contacts("王三", "23456", "3456@qq.com", "14562", "家人"));
// 添加到分组集合
contactGroup.put("朋友", new ArrayList<Contacts>());
contactGroup.put("同事", new ArrayList<Contacts>());
contactGroup.put("同事", new ArrayList<Contacts>());
contactGroup.put("家人", new ArrayList<Contacts>());
contactGroup.put("家人", new ArrayList<Contacts>());
contactGroup.get("朋友").add(contactMap.get("李三"));
contactGroup.get("同事").add(contactMap.get("张四"));
contactGroup.get("同事").add(contactMap.get("李四"));
contactGroup.get("家人").add(contactMap.get("张三"));
contactGroup.get("家人").add(contactMap.get("王三"));
}
// 查看联系人
public void searchContacts() {
System.out.println("输入要查询的联系人姓名");
String name = new Scanner(System.in).nextLine();
if (contactMap.containsKey(name)) {
System.out.println(contactMap.get(name));
} else {
System.out.println("没有此联系人");
}
}
// 添加或者修改联系人
public void addOrUpdateContacts(String type) {
Scanner sc = new Scanner(System.in);
do {
System.out.println("请输入姓名");
String name = sc.nextLine();
// 如果是添加操作, 并且map中有联系人,就不能添加
if ("add".equals(type) && contactMap.containsKey(name)) {
System.out.println("已经有此联系人");
continue;
}
// 如果是修改操作,并且map中没有联系人,就不能修改
if ("update".equals(type) && !contactMap.containsKey(name)) {
System.out.println("没有此联系人");
break;//直接跳出
}
Contacts contact = new Contacts();
contact.setName(name);
System.out.println("请输入电话");
contact.setMobile(sc.nextLine());
System.out.println("请输入email");
contact.setEmail(sc.nextLine());
System.out.println("请输入QQ");
contact.setQq(sc.nextLine());
System.out.println("请输入分组");
String group = sc.nextLine();
contact.setGroup(group);
contactMap.put(contact.getName(), contact);
if (!contactGroup.containsKey(group)) {// 当分组不存在时,新建分组
contactGroup.put(group, new ArrayList<Contacts>());
}
contactGroup.get(group).add(contact);// 将联系人添加到分组
System.out.println("成功");
return;
} while (true);
}
// 删除联系人
public void deleteContacts() {
System.out.println("输入你删除的联系人姓名");
String name = new Scanner(System.in).nextLine();
if(contactMap.containsKey(name)) {
contactMap.remove(name);
}else {
System.out.println("没有此联系人的信息!");
}
}
// 查看所有联系人
public void searchAllContacts() {
for (String key : contactMap.keySet()) {
System.out.println(contactMap.get(key));
}
}
// 查看分组联系人
public void searchContactsByGroup() {
System.out.println("输入要查看的分组");
String group = new Scanner(System.in).nextLine();
if(!contactGroup.containsKey(group)){
System.out.println("不存在这个分组");
}else {
List<Contacts> list = contactGroup.get(group);
for(Contacts c:list) {
System.out.println(c);
}
}
}
}
运行类
/*测试类
*功能:
* 调用主界面窗口,用来启动通讯录
*/
public class Test {
public static void main(String[] args) {
MainUi mainui = new MainUi();
}
}