名片管理系统

名片管理系统的基本功能:

(1)新增名片;

(2)显示所有名片;

(3)搜索指定名片,并做出相应的修改。

总共编写两个python文件。一个主文件(cards_main.py),构建出实现框架;还有一个具体实现的工具文件(cards_tool.py).在主文件中调用工具文件。

import card_tools
while True:
    card_tools.show_menu()
    action_str=raw_input('请选择你希望执行的操作:')
    print '你选择的操作是%s'%action_str
    if action_str in ["1","2","3"]:
        if action_str == "1":
            card_tools.new_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 '输入错误,请重新输入:'

程序工具包:

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 = raw_input('请输入姓名:')
    phone_str = raw_input('请输入电话:')
    qq_str = raw_input('请输入QQ:')
    email_str = raw_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 '%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=raw_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'])

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

def deal_card(find_dict):
    print find_dict
    action_str = raw_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 = raw_input(tip_message)
    # 2.针对用户的输入进行判断,如果用户输入了内容,直接返回结果
    if len(result_str) > 0:
        return result_str
    # 3.如果用户没有输入内容,返回‘字典中原有的值’
    else:
        return dict_value

实现效果:

/usr/bin/python2.7 /home/kiosk/PycharmProjects/python/复习4/test3.py
**************************************************
欢迎使用【名片管理系统】

1.新增名片
2.显示全部
3.搜索名片
0.退出系统
**************************************************
请选择你希望执行的操作:1
你选择的操作是1
--------------------------------------------------
新增名片
请输入姓名:袁小茜
请输入电话:1335393939
请输入QQ:117383020
请输入邮箱:117383020@qq.com
[{'qq_str': '117383020', 'name_str': '\xe8\xa2\x81\xe5\xb0\x8f\xe8\x8c\x9c', 'phone_str': '1335393939', 'email_str': '117383020@qq.com'}]
添加袁小茜的名片成功
**************************************************
欢迎使用【名片管理系统】

1.新增名片
2.显示全部
3.搜索名片
0.退出系统
**************************************************
请选择你希望执行的操作:3
你选择的操作是3
--------------------------------------------------
搜索名片
请输入要搜索的姓名:袁小茜
姓名 电话 QQ 邮箱
==================================================
袁小茜 1335393939 117383020 117383020@qq.com
{'qq_str': '117383020', 'name_str': '\xe8\xa2\x81\xe5\xb0\x8f\xe8\x8c\x9c', 'phone_str': '1335393939', 'email_str': '117383020@qq.com'}
请选择要执行的操作 [1] 修改 [2] 删除 :1
姓名:袁梦
电话:1335843894
QQ:4328437
邮箱:32717321@qq.com
修改名片成功
**************************************************
欢迎使用【名片管理系统】

1.新增名片
2.显示全部
3.搜索名片
0.退出系统
**************************************************
请选择你希望执行的操作:2
你选择的操作是2
--------------------------------------------------
显示所有名片
姓名 电话 QQ 邮箱
==================================================
袁梦        1335843894        4328437        32717321@qq.com
**************************************************
欢迎使用【名片管理系统】

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