用python写一个简单的名片管理系统


目标

用python写一个简单的名片管理系统
提供新增、查找、修改、删除等功能
不涉及文件操作


提示:以下是本篇文章正文内容,下面案例可供参考

一、主函数

while True:
    cards_tools.show_menu()
    str_input = input("请选择操作:")
    if str_input in ["1", "2", "3"]:
        if str_input == "1":
            cards_tools.new_cards()
        elif str_input == "2":
            cards_tools.card_all()
        elif str_input == "3":
            cards_tools.card_search()
    else:
        print("欢迎再次使用名片管理系统")
        break

注意:
1.用字符串接收用户的输入而非数字,防止用户输入其他类型数据而导致程序报错
2.在功能还未写好的函数处,可用pass占位符,保证代码结构完整、可正常调试
3.可在注释中用TODO标记未完成的功能(pycharm左下角查看),完成后及时删除
4.函数开发完成后,即时添加函数注释

二、各功能实现

1.引入函数文件

在主函数文件最上方引入函数模块,如下:

import cards_tools

2.显示主菜单函数

代码如下(示例):

def show_menu():
    """显示主菜单"""
    print("*" * 50)
    print("[1]新建名片\n[2]查看全部\n"
          "[3]查询名片\n[0]退出系统")
    print("*" * 50)

3.新建名片函数

代码如下(示例):

card_list = []


def new_cards():
    """新建名片"""
    name = input("姓名:")
    qq = input("QQ:")
    tele = input("电话:")
    mail = input("邮箱:")
    card_dict = {"str_name": name,
                 "str_qq": qq,
                 "str_tele": tele,
                 "str_mail": mail}
    card_list.append(card_dict)

4.显示全部名片函数

代码如下(示例):

def card_all():
    """显示全部"""
    if len(card_list) > 0:
        # 打印表头
        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["str_name"],
                                            card_dict["str_qq"],
                                            card_dict["str_tele"],
                                            card_dict["str_mail"]))
    else:
        print("名片列表为空,请新建名片")

5.查询名片函数

代码如下(示例):

def card_search():
    """查询名片"""
    str_input = input("请输入查找的姓名:")
    for str_name in card_list:
        if str_name["str_name"] == str_input:
            print("找到了%s" % str_input)
            card_deal(str_name)
        else:
            print("没有找到%s" % str_input)

对查询到的名片进行修改、删除处理

def card_deal(str_name):
    """处理名片

    :param str_name: 将查询到的名片进行处理
    :return: 返回函数调用的位置
    """
    str_1 = input("请选择需要的操作:【1】修改【2】删除【0】返回上级列表")
    if str_1 == "1":
        str_name["str_name"] = card_deal_info(str_name["str_name"], "姓名:")
        str_name["str_qq"] = card_deal_info(str_name["str_qq"], "qq:")
        str_name["str_tele"] = card_deal_info(str_name["str_tele"], "电话:")
        str_name["str_mail"] = card_deal_info(str_name["str_mail"], "邮箱:")
    elif str_1 == "2":
        card_list.remove(str_name)
    elif str_1 == "0":
        return

修改功能优化

要想实现”回车即不修改的功能,避免每次修改时需要重复输入不需要修改的内容,可以将字典中的原值传入函数中,检测用户是否输入内容,若输入则将名片信息修改为输入的内容,若未输入则返回字典中的原值,就相当于没有修改。

def card_deal_info(list_value, tip_message):
    """修改优化,实现回车默认不修改功能

    :param list_value: 字典中的原值
    :param tip_message: 提示输入信息
    :return:
    """
    str_2 = input(tip_message)
    if len(str_2) > 0:
        return str_2 # 修改的新值
    else:
        return list_value # 字典中的原值

运行效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
备注:
在一个单独的程序中函数定义必须在函数调用之前
在本程序主函数和其他函数分写在两个文件中时,只要在主函数文件最上方引入了函数模块,在其他函数文件中函数定义和引用可以不分先后顺序

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值