需求
联系人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(); } }