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