python实现名片管理系统

project下有两个python文件:main.py和tool.py
1.main.py:

import tool
while True:
    tool.show_menu()
    action_str = input("您希望的操作:")
    print("您选择的操作是【%s】" % action_str)
    if action_str in ["0", "1", "2", "3"]:
        if action_str == "0":
            print("欢迎再次使用!")
            break
        if action_str == "1":
            #新增名片
            tool.new_card()
        if action_str == "2":
            #显示全部
            tool.show_all()
        if action_str == "3":
            #查询名片
            tool.search_card()
    else:
        print("您的输入不正确,请重新输入")

2.tool.py:

# 记录所有的名片字典
card_list = []


def show_menu():
    """显示菜单"""
    print("*" * 50)
    print("欢迎使用名片管理系统")
    print("")
    print("1. 新增名片")
    print("2. 显示全部")
    print("3. 搜索名片")
    print("")
    print("0. 退出系统")
    print("*" * 50)


def new_card():
    """新增名片"""
    print("新增名片")

    # 1. 提示用户输入名片信息
    name = input("请输入姓名:")
    phone = input("请输入电话:")
    qq = input("请输入qq:")
    email = input("请输入邮箱:")

    # 2. 建立一个字典
    card_dict = {
        "name": name,
        "phone": phone,
        "qq": qq,
        "email": email
    }

    # 3.将名片字典加入列表中
    card_list.append(card_dict)

    # 4. 提示用户成功添加
    print("添加%s的名片成功" % name)


def show_all():
    """显示全部"""
    print("显示全部名片")

    # 判断是否存在名片记录,如果没有提示用户输入
    if len(card_list) == 0:
        print("当前没有任何的名片记录,请使用新增功能!")

        # return 返回一个函数的执行结果
        # return 下方的代码不会被执行
        # 如果return 后面没有任何内容,会返回到调用函数的位置,并且不会返回任何结果
        return

    # 打印表头
    for name in ["姓名", "电话", "qq", "邮箱"]:
        print(name, end="\t\t")
    print("")

    # 打印分割线
    print("="*50)

    # 打印内容
    for card_dict in card_list:
        print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
                                        card_dict["phone"],
                                        card_dict["qq"],
                                        card_dict["email"]))


def search_card():
    """搜索名片"""
    # 1. 提示用户输入要搜索的姓名
    find_name = input("请输入要搜索的用户姓名:")

    print("-"*50)
    print("搜索名片")

    # 2. 遍历名片列表,查询要查找的姓名,如果没有找到,需要提示用户
    for card_dict in card_list:
        if card_dict["name"] == find_name:
            print("姓名\t\t电话\t\tqq\t\t邮箱")
            print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
                                            card_dict["phone"],
                                            card_dict["qq"],
                                            card_dict["email"]))

            # 针对找到的名片执行修改和删除操作
            deal_card(card_dict)
            break
    else:
        print("抱歉,没有找到%s" % find_name)


def deal_card(find_dict):
    """
    :param find_dict:处理查找到的名片
    :return:
    """
    action_str = input("请选择要执行的操作:"
                       "[1] 修改 [2] 删除 [0] 返回上级菜单:")
    if action_str == "1":
        print("修改名片")
        find_dict["name"] = input_card_info(find_dict["name"], "姓名【回车不修改】:")
        find_dict["phone"] = input_card_info(find_dict["phone"], "电话【回车不修改】:")
        find_dict["qq"] = input_card_info(find_dict["qq"], "qq【回车不修改】:")
        find_dict["email"] = input_card_info(find_dict["email"], "邮箱【回车不修改】:")
        print("修改名片成功")

    elif action_str == "2":
        card_list.remove(find_dict)
        print("删除名片成功!")


def input_card_info(dict_value, tip_message):
    """
    :param dict_value:字典中原有的值
    :param tip_message:输入的提示字符
    :return:用户有输入内容就返回输入的内容,否则返回原有的值
    """
    # 1. 提示用户输入内容
    result_str = input(tip_message)
    # 2. 如果用户输入了内容,直接返回结果
    if len(result_str) > 0:
        return result_str
    # 3. 如果用户没有输入内容,返回原有字典的值
    else:
        return dict_value

发布了19 篇原创文章 · 获赞 0 · 访问量 287

猜你喜欢

转载自blog.csdn.net/m0_46493315/article/details/105330349