地铁python——名片管理系统(第一阶段作业)

##tools

card_list = []


def show_menu():
    """显示菜单"""
    print ('*' * 50)
    print ('欢迎使用【名片管理系统】')
    print ('')
    print( '1.新增名片')
    print ('2.显示全部')
    print ('3.搜索名片')
    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_str': name_str,
                 'phone_str': phone_str,
                 'qq_str': qq_str,
                 'email_str': 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 可以返回一个函数的执行结果
        # 下方的代码不会被执行
        # 如果return后面没有任何的内容,表示会返回到调用函数的位置
        # 并且不返回任何结果
        return
    # 打印表头
    for name in ["姓名", "电话", "QQ", "邮箱"]:
        print (name,)
    print ('')
    # 打印分隔线
    print( '=' * 50)

    # 遍历名片列表依次输出字典信息
    for card_dict in card_list:
        # print card_dict
        print ('%s\t\t%s\t\t%s\t\t%s' % (card_dict['name_str'],
                                        card_dict['phone_str'],
                                        card_dict['qq_str'],
                                        card_dict['email_str']))


def search_card():
    """搜索名片"""
    print( '-' * 50)
    print ('搜索名片')

    # 1.提示用户输入要搜索的姓名
    find_name = input('请输入要搜索的姓名:')
    # 2.遍历名片列表,查询要搜索的姓名,如果没有找到,需要提示用户
    for card_dict in card_list:
        if card_dict['name_str'] == find_name:
            print( '姓名 电话 QQ 邮箱')
            print ('=' * 50)
            print ('%s %s %s %s' % (card_dict['name_str'],
                                   card_dict['phone_str'],
                                   card_dict['qq_str'],
                                   card_dict['email_str']))

            # TODO 针对找到的名片记录执行修改和删除的操作
            # 在我们的日常编写程序中,如果一个函数的代码太多,阅读和编写都是一件困难的事情,而在开发中,可以针对一个具体独立的功能来封装一个函数,由这个函数来处理具体的操作,这样就能保证每个函数中的代码清晰明了,功能明确
            deal_card(card_dict)
            break

        else:
            print( '抱歉,没有找到%s' % find_name)


def deal_card(find_dict):
    print (find_dict)
    action_str = input('请选择要执行的操作 '
                           '[1] 修改 [2] 删除 :')
    # 替换已经存在的键值对
    if action_str == '1':
        find_dict['name_str'] = input_card_info(find_dict['name_str'], '姓名:')
        find_dict['phone_str'] = input_card_info(find_dict['phone_str'], '电话:')
        find_dict['qq_str'] = input_card_info(find_dict['qq_str'], 'QQ:')
        find_dict['email_str'] = input_card_info(find_dict['email_str'], '邮箱:')

        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

show_all()

 

 

##main

import cards_tools
while True:
    cards_tools.show_menu()
    action_str=input('请选择你希望执行的操作:')
    print( '你选择的操作是%s'%action_str)
    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()
    elif action_str == '0':
        print ('欢迎再次使用【名片管理系统】')
        break
    else:
        print( '输入错误,请重新输入:')

 

 

#执行结果是:

D:\pythonss\venv\Scripts\python.exe D:/pythonss/cards_main.py
--------------------------------------------------
显示所有名片
当前没有任何的名片记录,请使用新增功能添加名片
**************************************************
欢迎使用【名片管理系统】

1.新增名片
2.显示全部
3.搜索名片
0.退出系统
**************************************************
请选择你希望执行的操作:1
你选择的操作是1
--------------------------------------------------
新增名片
请输入姓名:张天宇
请输入电话:12345678
请输入QQ:823959189
请输入邮箱:123123123@qq.com
[{'name_str': '张天宇', 'phone_str': '12345678', 'qq_str': '823959189', 'email_str': '123123123@qq.com'}]
添加张天宇的名片成功
**************************************************
欢迎使用【名片管理系统】

1.新增名片
2.显示全部
3.搜索名片
0.退出系统
**************************************************
请选择你希望执行的操作:2
你选择的操作是2
--------------------------------------------------
显示所有名片
姓名
电话
QQ
邮箱

==================================================
张天宇        12345678        823959189        123123123@qq.com
**************************************************
欢迎使用【名片管理系统】

1.新增名片
2.显示全部
3.搜索名片
0.退出系统
**************************************************
请选择你希望执行的操作:3
你选择的操作是3
--------------------------------------------------
搜索名片
请输入要搜索的姓名:张天宇
姓名 电话 QQ 邮箱
==================================================
张天宇 12345678 823959189 123123123@qq.com
{'name_str': '张天宇', 'phone_str': '12345678', 'qq_str': '823959189', 'email_str': '123123123@qq.com'}
请选择要执行的操作 [1] 修改 [2] 删除 :1
姓名:杨晶
电话:1234567890
QQ:123@qq.com
邮箱:121212
修改名片成功!!!
**************************************************
欢迎使用【名片管理系统】

1.新增名片
2.显示全部
3.搜索名片
0.退出系统
**************************************************
请选择你希望执行的操作:3
你选择的操作是3
--------------------------------------------------
搜索名片
请输入要搜索的姓名:张天宇
抱歉,没有找到张天宇
**************************************************
欢迎使用【名片管理系统】

1.新增名片
2.显示全部
3.搜索名片
0.退出系统
**************************************************
请选择你希望执行的操作:3
你选择的操作是3
--------------------------------------------------
搜索名片
请输入要搜索的姓名:杨晶
姓名 电话 QQ 邮箱
==================================================
杨晶 1234567890 123@qq.com 121212
{'name_str': '杨晶', 'phone_str': '1234567890', 'qq_str': '123@qq.com', 'email_str': '121212'}
请选择要执行的操作 [1] 修改 [2] 删除 :2
删除名片成功!!!
**************************************************
欢迎使用【名片管理系统】

1.新增名片
2.显示全部
3.搜索名片
0.退出系统
**************************************************
请选择你希望执行的操作:1
你选择的操作是1
--------------------------------------------------
新增名片
请输入姓名:zty
请输入电话:1234321234
请输入QQ:123123
请输入邮箱:12221@qq.com
[{'name_str': 'zty', 'phone_str': '1234321234', 'qq_str': '123123', 'email_str': '12221@qq.com'}]
添加zty的名片成功
**************************************************
欢迎使用【名片管理系统】

1.新增名片
2.显示全部
3.搜索名片
0.退出系统
**************************************************
请选择你希望执行的操作:1
你选择的操作是1
--------------------------------------------------
新增名片
请输入姓名:rose
请输入电话:13232323222
请输入QQ:11111111
请输入邮箱:1212313@163.com
[{'name_str': 'zty', 'phone_str': '1234321234', 'qq_str': '123123', 'email_str': '12221@qq.com'}, {'name_str': 'rose', 'phone_str': '13232323222', 'qq_str': '11111111', 'email_str': '1212313@163.com'}]
添加rose的名片成功
**************************************************
欢迎使用【名片管理系统】

1.新增名片
2.显示全部
3.搜索名片
0.退出系统
**************************************************
请选择你希望执行的操作:2
你选择的操作是2
--------------------------------------------------
显示所有名片
姓名
电话
QQ
邮箱

==================================================
zty        1234321234        123123        12221@qq.com
rose        13232323222        11111111        1212313@163.com
**************************************************
欢迎使用【名片管理系统】

1.新增名片
2.显示全部
3.搜索名片
0.退出系统
**************************************************
请选择你希望执行的操作:0
你选择的操作是0
欢迎再次使用【名片管理系统】

Process finished with exit code 0
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值