• 【名片管理系统练习】


    1、创建 cards_main.py文件作为运行文件

    cards_main.py

    import cards_tools
    # 无限循环,由用户主动决定什么时候退出循环
    while True:
    
        # TODO(sunrain) 显示功能菜单
        cards_tools.show_menu()
    
        action_str = input("请选择希望执行的操作:")
        print("您选择的操作是【%s】" % action_str)
    
        # 1,2,3针对名片的操作
        # 没有使用int转换用户输入,可以避免一旦用户输入的不是数字导致程序报错
        if action_str in ["1", "2", "3"]:
            # 新增名片的处理
            if action_str == "1":
    
                cards_tools.new_card()
    
            # 显示全部
            elif action_str == "2":
                cards_tools.show_all()
    
            # 查询名片
            elif action_str == "3":
                cards_tools.search_card()
    
        # 0 退出系统
        elif action_str == "0":
    
            print("欢迎再次使用!")
    
            break
            # pass关键字,表示一个占位符,能够保证程序代码的结构正确
            # pass
    
        # 其他内容输入操作,需要提示用户
        else:
            print("您的输入有误,请重新输入!")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    2、 创建cards_tools.py文件为辅助文件

    cards_tools.py

    #! /usr/bin/python3
    # 使用字典记录每个名片的详细信息
    # 使用列表统一记录所有的名片字典
    
    # 记录所有的名片字典
    card_list = []
    
    
    def show_menu():
        """显示菜单"""
        print("*" * 52)
        print("欢迎使用【名片管理系统】v1.0")
        print("")
        print("1. 新增名片")
        print("2. 显示全部")
        print("3. 搜索名片")
        print("")
        print("0. 退出系统")
        print("*" * 52)
    
    
    def new_card():
        """新增名片"""
    
        print("-" * 52)
        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)
    
    
    def show_all():
        """显示所有名片"""
    
        print("-" * 52)
        print("显示所有名片")
    
        # 判断是否存在名片记录,如果没有提示用户并且返回
        if len(card_list) == 0:
    
            print("当前名片没有记录,请添加名片信息!")
            # return 可以返回一个函数的执行结果
            # 下方的代码不会被执行
            # 如果 return 后面没有任何内容,表示会返回到调用函数的位置
            # 并且不会返回任何的结果
            return
    
        else:
            # 打印表头
            for name in ["姓名", "电话", "QQ", "邮箱"]:
    
                print(name, end="\t\t")
            print("")
    
            # 打印横线
            print("=" * 52)
    
            # 遍历名片列表一次输出字典
            for card_dict in card_list:
    
                print("%s\t\t %s\t\t %s\t\t %s\t\t" % (card_dict["name"],
                                                       card_dict["phone"],
                                                       card_dict["QQ"],
                                                       card_dict["email"]))
    
    
    def search_card():
        """搜索名片"""
    
        print("-" * 52)
        print("搜索名片")
    
        # 1. 提示用户输入要搜索的姓名
        find_name = input("请输入要查找的姓名:")
    
        # 2. 遍历名片列表,查看要搜索的姓名,如果没有找到,需要提示用户
        for card_dict in card_list:
            if card_dict["name"] == find_name:
    
                print("姓名\t\t 电话\t\t QQ\t\t 邮箱")
                print("=" * 52)
                print("")
                print("%s\t\t %s\t\t %s\t\t %s\t\t" % (card_dict["name"],
                                                       card_dict["phone"],
                                                       card_dict["QQ"],
                                                       card_dict["email"]))
                # TODO 针对找到的名片记录执行修改和删除的操作
                deal_card(card_dict)
                break
        else:
    
            print("未查询到 %s 信息!" % find_name)
    
    
    def deal_card(dealcard_dict):
        """处理查找到的名片"""
    
        action_str = input("请选择要执行的操作: [1]修改 [2]删除 [0]返回上级 ")
        if action_str == "1":
            dealcard_dict["name"] = input_card_info(
                dealcard_dict["name"], "姓名[回车不修改]:")
            dealcard_dict["phone"] = input_card_info(
                dealcard_dict["phone"], "电话[回车不修改]:")
            dealcard_dict["QQ"] = input_card_info(
                dealcard_dict["QQ"], "QQ[回车不修改]:")
            dealcard_dict["email"] = input_card_info(
                dealcard_dict["email"], "邮箱[回车不修改]:")
            print("修改名片成功!")
    
        elif action_str == "2":
    
            card_list.remove(dealcard_dict)
            print("删除名片成功!")
    
    
    def input_card_info(dict_vale, tip_message):
        """
        输入名片信息
        dict_vale:字典中原有的值
        tip_message:输入的提示文字
        """
        # 1. 提示用户输入内容
        result_str = input(tip_message)
    
        # 2. 针对用户的输入进行判断,如果用户输入了内容,直接返回结果
        if len(result_str) > 0:
    
            return result_str
    
        # 3. 如果用户没有输入内容返回字典中原有的值
        else:
            return dict_vale
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151

    后续增加表格处理系统、端口信息探测工具及使用教程!

  • 相关阅读:
    Java NIO全面详解(看这篇就够了)
    R语言使用append函数在向量数据中的指定位置插入新的元素(一个或者多个数值)
    Java多线程-ThreadPool线程池-1(三)
    MySQL InnoDB 锁
    MySQL高性能数据_第三版(读书笔记)
    Docker安装教程
    快速排序实现Java版本
    [附源码]java毕业设计置地房屋租赁信息系统
    线程的“打断”
    服务器扩容步骤
  • 原文地址:https://blog.csdn.net/m0_45097365/article/details/133493996