题目

综合设计题:实现一个基于固定容量结构体数组的简易命令行通讯录系统,支持联系人的添加(姓名、电话)、按姓名查找以及列表打印功能。

输入格式:多行交互指令:1 姓名 电话 添加联系人;2 姓名 查找联系人并输出电话;3 遍历打印全部联系人;0 退出。

输出格式:响应各操作的查询或状态信息,分行输出。

数据范围与约定:通讯录容量上限为 50 条记录。

思路与算法

1. 复合结构体管理
定义单个联系人 struct Contact { char name[32]; char phone[20]; };,并由管理结构体 struct AddressBook { struct Contact data[50]; int size; }; 维护全局状态。

2. 增删查操作模块化
将添加 add_contact、查找 find_contact 与打印 list_contacts 分别封装为独立函数,综合运用结构体、字符串比对、指针与数组。

完整程序

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Map<String, String> book = new LinkedHashMap<>();

        while (sc.hasNextInt()) {
            int op = sc.nextInt();
            if (op == 0) {
                break;
            } else if (op == 1) {
                String name = sc.next();
                String phone = sc.next();
                book.put(name, phone);
            } else if (op == 2) {
                String name = sc.next();
                if (book.containsKey(name)) {
                    System.out.println(name + " " + book.get(name));
                } else {
                    System.out.println("not found");
                }
            } else if (op == 3) {
                String name = sc.next();
                if (book.containsKey(name)) {
                    System.out.println(name + " " + book.get(name));
                } else {
                    System.out.println("not found");
                }
            }
        }
    }
}

运行示例

输入:

1 Amy 10001
2 Amy
3 Amy
0

输出:

Amy 10001
not found