基于python语言的名片管理系统

目的:

检查关于python基础语法的掌握度

功能:

增删改查 亮点自行体验

小结:

对列表、字典之间转换后的遍历内容不够熟练
对各类循环的终止条件掌握不够
细节的疏忽
代码的美观度


card_main.py

# 程序的入口
# 每一次启动都通过该程序
# 1.新建名片
# 2.显示全部
# 3.修改名片
# 0.退出名片
import card_tools

while True:
    card_tools.show_menu()
    action = input("请输入操作功能:")
    print("您的选择是:%s" % action)

    if action in ["1","2","3"]:
        #pass仅占位,不执行操作,功能为保证代码结构的正确
        #pass
        #根据输入的123执行相应的功能
        if action == "1":
            card_tools.new_card()
        if action == "3":
            card_tools.search_card()
        if action == "2":
            card_tools.show_all()

    elif action == "0":
        print("欢迎再次使用<名片管理系统>")
        break
    else:
        print("输入错误,请重新输入")


card_tools.py

import card_input

card_list = []

def show_menu():
    """
    显示菜单
    :return:
    """
    #pass
    #构建进入界面
    print("*"*50)
    print("欢迎使用<名片管理系统>")
    print("请选择您想执行的操作:\n"
          "0.退出系统\n"
          "1.新建名片\n"
          "2.显示全部\n"
          "3.查询名片")
    print("*"*50)

def new_card():
    """
    新建名片
    :return:
    """
    print("-"*50)
    print("功能:新建名片")
    name = input("请输入姓名: ")
    phone = input("请输入手机号码: ")
    qq = input("请输入QQ号码: ")
    email = input("请输入电子邮箱: ")

    card_dict = {
        "name":name,
        "phone":phone,
        "qq":qq,
        "email":email
    }
    #转化为列表
    card_list.append(card_dict)
    print(card_dict)
    print("成功添加%s的名片" %card_dict["name"])

def show_all():
    """显示全部
    """
    #遍历card字典
    print("-"*50)
    print("功能:显示全部e")

    #若不存在名片
    if len(card_list) == 0:
        print("无名片")
        return
        #空 return表返回 不执行后续代码

    # #转化为list  字典类型遍历输出只输出key不输出value
    # for card_dirt in card_list:
    #     print(card_dirt)
    # 格式不齐
    for name in ["姓名:","电话:","QQ:","电子邮箱:"]:
        print(name,end="\t\t")
    print()
    print("="*50)

    for card_dirt in card_list:
        print("%s\t\t%s\t\t%s\t\t%s" % (card_dirt["name"],
                                        card_dirt["phone"],
                                        card_dirt["qq"],
                                        card_dirt["email"]))

def search_card():
    """显示名片
    """
    print("-"*50)
    print("功能:搜索名片")

    find_name = input("请输入想查找的姓名:")
    for card_dirt in card_list:
        if card_dirt["name"] == find_name:
            print("姓名\t\t电话\t\tQQ\t\t电子邮箱")
            print("%s\t\t%s\t\t%s\t\t%s" % (card_dirt["name"],
                                            card_dirt["phone"],
                                            card_dirt["qq"],
                                            card_dirt["email"]))

            deal_card(card_dirt)
            print("#"*50)
            break
        else:
            print("未找到%s" %find_name)

def deal_card(find_dict):
    '''
    修改已查找到的名片
    :param find_dict: 找到名片的字典
    :return:
    '''
    print(find_dict)
    action_str = input("请输入您需要执行的操作:\n【0】修改   【1】删除\n"
                       "输入【quit】退出")
    while(action_str != "quit"):
        if(action_str == "0"):
            print("您选择的是修改")
            find_dict["name"] = card_input.input_card_info(find_dict["name"],"修改姓名,"
                                                                             "回车不修改")
            find_dict["phone"] = card_input.input_card_info(find_dict["phone"],"修改电话,"
                                                                               "回车不修改")
            find_dict["qq"] = card_input.input_card_info(find_dict["qq"],"修改QQ,"
                                                                         "回车不修改")
            find_dict["email"] = card_input.input_card_info(find_dict["email"],"修改电子邮箱,"
                                                                               "回车不修改")
            print("%s的名片修改成功" % find_dict)
        elif(action_str == "1"):
            print("您选择的是删除")
            card_list.remove(find_dict)
        else:
            print("输入错误,请重新输入")
        break


card_input.py

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