Java版手机通讯录

一、需求分析:
通讯录主要用于储存联系人的信息,这里我们主要记录了联系人的姓名以及号码
在角色上我们只设计了用户。

二、概要设计:
想清楚程序应该分为几个模块,每个模块都是干啥的,模块之间是如何交互的?
由于当前的系统相对比较简单,暂且设为一个模块。

三、详细设计:
每个模块具体的一些细节再考虑清楚

四、开始编码:
将系统分为了三大部分:contact 包、operation 包、Main 类
(1)contact 包:包含了Contact 类(用于描述每个联系人的信息),ContactList 类(用于描述所有联系人的信息)
(2)operation 包: 包含了各种具体实现的操作
(3)Main 方法:程序的入口。

编码的整体结构:
contact 包:
Contact 类:描述每个联系人的信息
ContactList 类:描述所有联系人的信息,简单的顺序表

operation 包:
IOperation 接口:operation 包里面的每个类都需要重写IOperation 接口里面的 work 方法。
AddOperation 类:添加联系人以及进行通讯录的扩容
DelectOperation 类:删除联系人
SearchOperation 类:查找某个联系人
ShowOperation 类:打印所有联系人的信息
SortOperation 类:对联系人进行排序(按照首字母大小)
ClearOperation 类:清空联系人
ExitOperation 类:退出程序

Main 类:
整个程序的入口以及相关操作的菜单。

具体的代码实现:
1.contact 包:
(1)Contact 类:

public class Contact {
    private String name;
    private String id;

    public Contact(String name, String id) {
        this.name = name;
        this.id = id;
    }

    @Override
    public String toString() {
        return "Contact{" +
                "name='" + name + '\'' +
                ", id='" + id + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }
}

(2)ContactList 类:

public class ContactList {
    public Contact[] contacts = new Contact[1];
    private int size;



    public Contact getContact(int index) {
        return contacts[index];
    }

    public void setSize(int size) {
        this.size = size;
    }
    public int getSize() {
        return size;
    }

    public void setContact(int index, Contact contact) {
        contacts[index] = contact;
    }
}

2.operation 包:
(1)IOperation 接口:

import contact.ContactList;

public interface IOperation {
    void work(ContactList contactList);
}

(2)AddOperation 类:

public class AddOperation implements IOperation {
    @Override
    public void work(ContactList contactList) {
        System.out.println("添加联系人");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入添加联系人的姓名:");
        String name = scanner.next();
        System.out.println("请输入添加联系人的号码:");
        String id = scanner.next();
        Contact contact = new Contact(name,id);
        contactList.setContact(contactList.getSize(),contact);
        contactList.setSize(contactList.getSize() + 1);
        System.out.println("添加成功!");
        if (contactList.getSize() == contactList.contacts.length) {
            //进行扩容
            Contact[] newContacts = new Contact[contactList.contacts.length * 2];
            for (int i = 0; i < contactList.getSize(); i++) {
                newContacts[i] = contactList.contacts[i];
            }
            contactList.contacts = newContacts;
            System.out.println("扩容成功 !");
        }
        return;
    }
}

(3)SearchOperation 类:

public class SearchOperation implements IOperation {
    @Override
    public void work(ContactList contactList) {
        System.out.println("查找联系人信息");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要查找联系人的姓名:");
        String name = scanner.next();
        for (int i = 0; i < contactList.getSize(); i++) {
            Contact contact = contactList.getContact(i);
            if (contact.getName().equals(name)) {
                System.out.println(contact);
                return;
            }
        }
        System.out.println("查无此人");
        return;
    }
}

(4)DelectOperation 类:

public class DelectOperation implements IOperation {
    @Override
    public void work(ContactList contactList) {
        System.out.println("删除联系人");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入删除联系人的姓名:");
        String name = scanner.next();
        //先查找
        for (int i = 0; i < contactList.getSize(); i++) {
            Contact contact = contactList.getContact(i);
            if (contact.getName().equals(name)) {
                //找到了,进行具体的删除
                contactList.setContact(i,contactList.getContact(contactList.getSize() -1));
                contactList.setSize(contactList.getSize() - 1);
                System.out.println("删除成功!");
                return;
            }
        }
        System.out.println("查无此人");
        return;
    }
}

(5)ShowOperation 类:

public class ShowOperation implements IOperation {
    @Override
    public void work(ContactList contactList) {
        System.out.println("展示所有联系人信息");
        for (int i = 0; i < contactList.getSize(); i++) {
            Contact contact = contactList.getContact(i);
            System.out.println(contact);
        }
        return;
    }
}

(6)SortOperation 类:

public class SortOperation implements IOperation {
    @Override
    public void work(ContactList contactList) {
        System.out.println("进行联系人排序(首字母大小)");
        for (int i = 0; i < contactList.getSize() - 1; i++) {
            contactList.contacts[i] = contactList.getContact(i);
            contactList.contacts[i + 1] = contactList.getContact(i + 1);
            if (contactList.contacts[i + 1].getName().compareTo(contactList.contacts[i].getName()) < 0) {
                //进行交换
                Contact tmp = contactList.contacts[i];
                contactList.contacts[i] = contactList.contacts[i + 1];
                contactList.contacts[i + 1] = tmp;
            }
        }
        new ShowOperation().work(contactList);
        return;
    }
}

(7)ClearOperation 类:

public class ClearOperation implements IOperation {
    @Override
    public void work(ContactList contactList) {
        System.out.println("清空链表");
        contactList.setSize(0);
        System.out.println("清空成功!");
        return;
    }
}

(8)ExitOperation 类:

public class ExitOperation implements IOperation {
    @Override
    public void work(ContactList contactList) {
        System.out.println("goodbye!");
        System.exit(0);
    }
}

3.Main 类:

public class Main {
    public static void main(String[] args) {
        ContactList contactList = new ContactList();
        IOperation[] operations = {
                new ExitOperation(),
                new AddOperation(),
                new SearchOperation(),
                new DelectOperation(),
                new ShowOperation(),
                new ClearOperation(),
                new SortOperation()
        };

        while (true) {
            int chioce = menu();
            operations[chioce].work(contactList);
        }
    }
    public static int menu() {
        System.out.println("-----------------------------");
        System.out.println("1.添加联系人     2.查找联系人");
        System.out.println("3.删除联系人     4.展示所有联系人信息");
        System.out.println("5.清空联系人     6.排序联系人");
        System.out.println("0.退出");
        System.out.println("-----------------------------");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您的选择:");
        int choice = scanner.nextInt();
        return choice;
    }

}

效果展示:
在这里插入图片描述
项目源码:https://github.com/YTCfight/Address-book/tree/master/out/production/Test2

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个用Java编写的手机通讯录代码示例: ```java import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class PhoneBook { private static Map<String, String> phoneBook = new HashMap<>(); public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (true) { System.out.println("请选择操作:"); System.out.println("1. 添加联系人"); System.out.println("2. 查找联系人"); System.out.println("3. 删除联系人"); System.out.println("4. 显示通讯录"); System.out.println("5. 退出"); int choice = scanner.nextInt(); switch (choice) { case 1: addContact(scanner); break; case 2: findContact(scanner); break; case 3: removeContact(scanner); break; case 4: displayContacts(); break; case 5: System.out.println("已退出!"); return; default: System.out.println("无效的选择!"); } } } private static void addContact(Scanner scanner) { System.out.println("请输入姓名:"); String name = scanner.next(); System.out.println("请输入电话号码:"); String phoneNumber = scanner.next(); phoneBook.put(name, phoneNumber); System.out.println("联系人已添加!"); } private static void findContact(Scanner scanner) { System.out.println("请输入要查找的姓名:"); String name = scanner.next(); String phoneNumber = phoneBook.get(name); if (phoneNumber == null) { System.out.println("未找到该联系人!"); } else { System.out.println(name + " 的电话号码是:" + phoneNumber); } } private static void removeContact(Scanner scanner) { System.out.println("请输入要删除的联系人的姓名:"); String name = scanner.next(); String phoneNumber = phoneBook.get(name); if (phoneNumber == null) { System.out.println("未找到该联系人!"); } else { phoneBook.remove(name); System.out.println("联系人已删除!"); } } private static void displayContacts() { System.out.println("通讯录内容:"); if (phoneBook.isEmpty()) { System.out.println("通讯录为空!"); } else { for (String name : phoneBook.keySet()) { String phoneNumber = phoneBook.get(name); System.out.println(name + ": " + phoneNumber); } } } } ``` 这个代码使用了一个`HashMap`来存储联系人的姓名和电话号码,提供了添加联系人、查找联系人、删除联系人和显示通讯录的功能。用户可以根据提示分别选择需要的操作,在添加或查找联系人时输入姓名和电话号码,删除联系人时输入姓名即可。通讯录中的内容会实时显示给用户。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值