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