• Python名片管理系统


    Python名片管理系统

    知识点:

    • 变量
    • 流程控制
    • 函数
    • 模块

    目标:

    开发名片管理系统

    系统需求:

    • 1.启动程序,显示名片管理系统界面,并显示菜单功能
    *******************************************
    欢迎使用【名片管理系统】V1.0
    
    1.新建名片
    2.显示全部
    3.查询名片
    0.退出系统
    *******************************************
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 2.用户用数字选择不同功能
    • 3.根据功能选择,执行不同的功能
    • 4.用户名片需记录用户的姓名、电话、QQ、邮箱
    • 5.如果查询到指定的名片,用户可以选择修改或者删除名片

    1.编写主循环

    while True:
        # 显示功能菜单
        action_str = input("请选择希望执行的操作:")
        print("您选择的操作是:【%s】" % action_str)
        if action_str in ["1", "2", "3"]:
            pass
        elif action_str == "0":
            print("欢迎再次使用【名片管理系统】")
            break
        else:
            print("输入错误,请重新输入。")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    字符串判断的两种方式:

      if action_str in ["1", "2", "3"]:
    
    • 1
      if action_str == "1" or action_str == "2" or action_str == "3"
    
    • 1
    • 使用in针对列表判断,避免使用or拼接复杂的逻辑条件

    • 没有用int转换用户输入,可以避免用户输入的不是数字,导致程序运行出错

    pass

    • pass是一个空语句,一般用做站位语句
    • 为了保证结构完整性

    2.保存名片的数据结构

    • 使用字典记录每一张名片的详细信息
    • 使用列表记录所有的名片字典

    定义名片列表变量

    # 所有名片记录的列表
    card_list = []
    
    • 1
    • 2

    **注意:**所有名片相关操作都需要使用这个列表,所以应该定义在程序的顶部。

    3.代码实现

    主程序功能代码:card_main.py

    import card_tools
    
    while True:
        # 显示功能菜单
        card_tools.show_menu()
        action_str = input("请选择希望执行的操作:")
        print("您选择的操作是:【%s】" % action_str)
        if action_str in ["1", "2", "3"]:
            # 新增名片
            if action_str == "1":
                card_tools.add_card()
            # 显示名片
            elif action_str == "2":
                card_tools.show_all()
            # 查询名片
            elif action_str == "3":
                card_tools.search_card()
        elif action_str == "0":
            print("欢迎再次使用【名片管理系统】")
            break
        else:
            print("输入错误,请重新输入。")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    对名片的增删改查操作:card_tools.py

    # 所有名片记录的列表
    card_list = []
    
    • 1
    • 2

    显示菜单

    def show_menu():
        print("\t")
        print("*" * 40)
        print("欢迎使用【名片管理系统】V1.0")
        print("1.新增名片")
        print("2.显示名片")
        print("3.搜索名片")
        print("0.退出系统")
        print("*" * 40)
        print("\t")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    新增名片

    def add_card():
        print("\t")
        print("-" * 40)
        print("新增名片")
    
        # 1.提示用户输入名片的详细信息
        name_str = input("请输入姓名:")
        phone_str = input("请输入电话:")
        qq_str = input("请输入QQ号码:")
        email_str = input("请输入邮箱:")
    
        # 2.使用输入的信息建立一个名片字典
        card_dict = {"name": name_str,
                     "phone": phone_str,
                     "qq": qq_str,
                     "Email": email_str}
    
        # 3.将名片字典添加到列表中
        card_list.append(card_dict)
        print(card_list)
    
        # 4.提示用户添加成功
        print("成功添加%s的名片" % name_str)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    显示所有名片

    def show_all():
        print("\t")
        print("-" * 40)
        print("显示所有名片")
        # 判断是否存在记录,如果没有提示用户返回
        if len(card_list) == 0:
            print("当前没有任何名片记录。")
            return  # return:不执行后续代码,返回调用函数的位置
        # 打印表头
        for name in ["姓名", "电话", "qq", "邮箱"]:
            print(name, end="\t\t\t")
        print()
        print("=" * 40)
        # 遍历名片列表,依次循环输出
        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"]))
        print()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    搜索名片

    def search_card():
        """搜索名片"""
        print("\t")
        print("-" * 40)
        print("搜索名片")
        # 1.提示用户要搜索的姓名
        find_name = input("请输入需要查询的用户姓名:")
        # 2.遍历名片列表,查询要搜索的姓名,没有找到需要提示用户
        for card_dict in card_list:
            if card_dict["name"] == find_name:
                print("姓名\t\t电话\t\tQQ\t\t邮箱")
                print("=" * 40)
                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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    处理名片

    def deal_card(find_card: object) -> object:
        print(find_card)
        action_str = input("请选择需要执行的操作:"
                           "[1]修改 [2]删除 [3]返回")
        if action_str == "1":
            find_card["name"] = input_card_info(find_card["name"], "姓名:")
            find_card["phone"] = input_card_info(find_card["phone"], "电话:")
            find_card["qq"] = input_card_info(find_card["qq"], "QQ:")
            find_card["Email"] = input_card_info(find_card["Email"], "邮箱:")
            print("名片修改成功。")
        elif action_str == "2":
            card_list.remove(find_card)
            print("名片删除成功。")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    输入名片信息

    def input_card_info(dict_value, tip_message):
        # 1.提示用户输入内容分
        result_str = input(tip_message)
        # 2.针对输入判断:如果用户输入内容,直接返回结果
        if len(result_str) > 0:
            return result_str
        # 3.如果用户没有输入内容,返回字典中原有的值
        else:
            return dict_value
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    运行结果

    添加名片

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7VsOE5Vc-1660042201724)(image-20220809183237824.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5E7uIjtw-1660042201726)(image-20220809183249589.png)]

    显示所有名片信息

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xfXHdzH2-1660042201728)(image-20220809183335170.png)]

    搜索名片&修改名片

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L51HTJVS-1660042201728)(image-20220809183503214.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CVbFcosb-1660042201729)(image-20220809183540705.png)]

    删除名片

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lZglEAde-1660042201730)(image-20220809183631899.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tPzs4N9J-1660042201732)(image-20220809183646148-16600414065731.png)]

  • 相关阅读:
    GO开发环境配置
    自动化之python面试
    y2系电机连接片冲裁模具设计
    数据守护集群之MPP主备集群
    PMBOK知识点整理【第四章项目整合管理】(49个子过程、输入、工具和技术、输出)
    激活函数总结(三十九):激活函数补充(NFN、Hermite)
    记一次酣畅淋漓的 K8s Ingress 排错过程(302,404,503,...)
    免费研讨会 | 邀您体验 Ansys Zemax Enterprise 的 STAR 模块
    字符驱动开发2
    java入坑之国际化编程
  • 原文地址:https://blog.csdn.net/qq_56650499/article/details/126253730