第14天:综合项目——通讯录增删改查程序

18 阅读2分钟

学习目标:综合运用前六天所学,编写一个完整的命令行交互式通讯录程序。

  • 功能要求

    1. 使用字典存储联系人(键为姓名,值为包含多个信息的字典,如电话、邮箱、地址、标签集合)。

    2. 提供用户菜单:

        1. 添加联系人
        1. 删除联系人
        1. 修改联系人信息
        1. 查询联系人(按姓名精确查询,可选支持模糊查询)
        1. 显示所有联系
        1. 按标签筛选联系人
        1. 退出
    3. 每次操作后给出明确的反馈,并循环显示菜单直到用户选择退出。

  • 提示

    • 可以用 while True 实现主循环。
    • if-elif 处理菜单选项。
    • 对于修改功能,可以先判断联系人是否存在,再选择修改哪个字段。
    • 标签管理可以借用集合的便捷性。

扩展挑战(完成后可进一步探索):

  • 实现模糊查询时,忽略大小写,且支持按电话、邮箱等字段搜索。

思路

使用while true使代码一直循环,直到输入7.退出操作 使用if elif进行每个选项的区分

源码

print("1.添加联系人")
print("2.删除联系人")
print("3.修改联系人信息")
print("4.查询联系人")
print("5.显示所有联系人")
print("6.按标签筛选联系人")
print("7.退出")
print("——"*10)
contacts={}
while True:
    # 添加联系人
    num=input("请选择要进行的操作:")
    if int(num)>7 or int(num)==0:
        print("请输入1~7这几个数字。")
    if int(num)==1:
        name=input("请输入姓名:")
        phone=input("请输入电话号码:")
        email=input("请输如电子邮箱:")
        address=input("请输入地址:")
        relation=input("请输入标签:")
        contacts.update({name:{"phone":phone,"email":email,"address":address,"relation":{relation}}})
        # print(contacts)
        # 删除联系人
    elif int(num)==2:
        name = input("请输入要删除的联系人:")
        if name not in contacts:
            print(f"联系人{name}不存在")
            continue
        contacts.pop(name)
        # print(contacts)
        # 修改联系人信息
    elif int(num)==3:
        name = input("请输入修改联系人姓名:")
        if name not in contacts:
            print(f"联系人{name}不存在")
            continue
        options=input("请输入要修改的选项:")
        new=input(f"请输入新的{options}:")
        contacts[name][options]=new
        # print(contacts)
        # 查询联系人
    elif int(num)==4:
        shu_name=input("请输入要查询的信息:")
        for k,v in contacts.items():
            if shu_name in k:
                print(f"{k}的联系信息是:{contacts[k]}")
            for k1,v1 in v.items():
                if shu_name in v1:
                    print(f"{k}的联系人是:{contacts[k]}")
    #显示所有联系人
    elif int(num)==5:
        for k,v in contacts.items():
            print(f"{k}的联系信息是;")
            for k1,v1 in v.items():
                print(f"{k1}:{v1}")
    # 按标签筛选联系人
    elif int(num)==6:
        biao=input("请输入要查询的标签:")
        for k,v in contacts.items():
            if biao in v["relation"]:
                print(f"{k}:{v}")
    elif int(num)==7:
        print(contacts)
        break