美文网首页
Python应用小练习—名片管理系统

Python应用小练习—名片管理系统

作者: 早_wsm | 来源:发表于2020-02-09 20:36 被阅读0次

    前言

    结合之前学过的内容做一个综合练习——名片管理系统。罗马不是一天建成的!写代码也一样,需要一步一步的去写,理清思路,有计划性的逐步完成会增加你写代码的幸福感!

    一、目标

    实现一个可执行查询,增加、修改的名片管理系统,主页面如下:


    image.png

    二、搭建框架

    • 准备文件,确定文件名称及文件要实现的功能
    1.1 文件准备

    在pycharm中新建名片管理系统项目
    新建cards_main.pycards_tools.py俩个文件
    cards_main:作为主逻辑运行文件,内部主要构建循环框架
    cards_tools:主要为实现功能做定义函数的编写

    • 编写主运行循环,实现基本的用户输入与判断
    1.2 绘制流程图
    代码执行简易流程图.jpg

    三、确定要使用的数据结构

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

    定义一个名片的列表变量,相当于找一个空瓶子,放在最前面,等要用到的时候直接拿来装东西。

    card_list = []

    四、功能实现

    1.1确定主循环
    • 无限循环 wihle Ture不希望程序执行后立即退出,可以保证用户决定什么时候退出
    • pass 一个空语句,用作一个占位符,保持程序结构的完整性(在搭建代码框架时可使用pass占位代替未写的功能代码,使其不影响到主结构的运行)
      以下为cards_main.py文件内所需的代码
    # 写入死循环,由用户决定什么时候退出
    while True:
        # TODO(早盦呀) 显示功能菜单
    
        action_str = input("请输入想要选择的功能:")
        print("您选择的是 [%s]" % action_str)
    
        # 针对名片的操作 1 2 3
        if action_str in ["1","2","3"]:
            # 新增名片
            if action_str == "1":
                pass
            # 显示全部
            elif action_str == "2":
                pass
            # 查询名片
            else:
                pass
    
        # 选择0时退出
        elif action_str == "0":
            print("欢迎再次使用【名片管理系统】")
            break
          
        # 选择其他时提示输入错误
        else:
            print("您输入的不正确,请重新选择")
    
    1.2 实现各部分功能

    为了不使整个代码过于臃肿同时也可保证代码的灵活性,我们在对可实现功能的代码单独写入cards_tools.py文件,定义函数并可做模块导入使用

    • 显示菜单
    def show_menu():
        """显示菜单"""
        print("*" * 50)
        print("欢迎使用名片管理系统 v1.0")
        print("")
        print("[1] 新增名片")
        print("[2] 显示全部")
        print("[3] 查询名片")
        print("")
        print("[0] 退出系统")
        print("*" * 50)
    
    • 新增名片
    def new_card():
        """新增名片"""
        print("-" * 50)
        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("-" * 50)
        print("显示所有名片")
        # 判断是否存在名片,如果不存在,提示用户并且返回
        if len(card_list) == 0:
            print("当前没有任何的名片记录,请使用新增功能添加名片")
            # 直接返回
            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():
        """查询名片"""
        print("-" * 50)
        print("查询名片")
        # 提示用户输入要搜索的姓名
        find_name = input("请输入要搜索的姓名:")
        # 遍历名片列表,查询要搜索的姓名,如果没有找到提示用户
        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"]))
                # TODO 针对找到的名作执行删除和修改的操作
               
                break
        else:
            print("抱歉,没有找打 %s" % find_name)
    
    • 对查询到的名片做修改、删除等操作
    def deal_card(find_dict):
        """处理查找到的名片
    
        :param find_dict: 查找到的名片
        """
        print(find_dict)
        action_str = input("请选择要执行的操作: "
                           "【1】 修改 【2】 删除 【0】 返回上级菜单")
        if action_str == "1":
            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
    

    五、整理代码,并测试执行结果

    • 以下为cards_main.py文件完整版
    import cards_tools
    # 写入死循环,由用户决定什么时候退出
    while True:
        # TODO(早盦呀) 显示功能菜单
        cards_tools.show_menu()
    
        action_str = input("请输入想要选择的功能:")
        print("您选择的是 [%s]" % action_str)
    
        # 针对名片的操作 1 2 3
        if action_str in ["1","2","3"]:
            # 新增名片
            if action_str == "1":
                cards_tools.new_card()
            # 显示全部
            elif action_str == "2":
                cards_tools.show_all()
            # 查询名片
            else:
                cards_tools.search_card()
    
        # 选择0时退出
        elif action_str == "0":
            print("欢迎再次使用【名片管理系统】")
            break
            # pass
        # 选择其他时提示输入错误
        else:
            print("您输入的不正确,请重新选择")
    

    以下为cards_tools.py文件完整版

    # 记录所有的名片字典
    card_list = []
    def show_menu():
        """显示菜单"""
        print("*" * 50)
        print("欢迎使用名片管理系统 v1.0")
        print("")
        print("[1] 新增名片")
        print("[2] 显示全部")
        print("[3] 查询名片")
        print("")
        print("[0] 退出系统")
        print("*" * 50)
    def new_card():
        """新增名片"""
        print("-" * 50)
        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("-" * 50)
        print("显示所有名片")
        # 判断是否存在名片,如果不存在,提示用户并且返回
        if len(card_list) == 0:
            print("当前没有任何的名片记录,请使用新增功能添加名片")
            # 直接返回
            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():
        """查询名片"""
        print("-" * 50)
        print("查询名片")
        # 提示用户输入要搜索的姓名
        find_name = input("请输入要搜索的姓名:")
        # 遍历名片列表,查询要搜索的姓名,如果没有找到提示用户
        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"]))
                # TODO 针对找到的名作执行删除和修改的操作
                deal_card(card_dict)
                break
        else:
            print("抱歉,没有找打 %s" % find_name)
            #
    def deal_card(find_dict):
        """处理查找到的名片
    
        :param find_dict: 查找到的名片
        """
        print(find_dict)
        action_str = input("请选择要执行的操作: "
                           "【1】 修改 【2】 删除 【0】 返回上级菜单")
        if action_str == "1":
            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
    

    相关文章

      网友评论

          本文标题:Python应用小练习—名片管理系统

          本文链接:https://www.haomeiwen.com/subject/nakvxhtx.html