首页 > 编程语言 >Python 练手小项目-名片管理

Python 练手小项目-名片管理

时间:2023-06-06 18:46:42浏览次数:43  
标签:练手 名片 Python dict 输入 print find card

需求描述

需要写一段程序实现简单名片管理功能

程序启动展示主界面

  • 新建名片
  • 显示全部
  • 查询名片
  • 退出系统

主程序实现

'''
名片管理系统 主程序
'''
import cards_tools

while True:

    '''显示主界面'''
    cards_tools.show_menu()

    action = input('请选择操作功能:')

    print(f'您选择的操作是: {action}')

    # 根据用户输入进行分支判断
    if action in ['1', '2', '3']:
        '''
        1 新增
        2 展示
        3 查找
        '''
        if action == '1':
            cards_tools.new_card()
        elif action == '2':
            cards_tools.show_all()
        elif action == '3':
            cards_tools.search_card()
    elif action == '0':
        print("欢迎再次使用[名片管理系统]")
        break
    else:
        print("输入错误;请重试")

主功能实现

'''
工具类
'''

# 列表用于存放名片
card_list = []

def show_menu():
    '''显示主菜单'''
    print('*' * 40)
    print('欢迎使用[名片关系系统]v0.10')
    print('')
    print('1、新建名片')
    print('2、显示全部')
    print('3、查询名片')
    print('')
    print('0、退出系统')
    print('*' * 40)


def new_card():
    '''新建名片'''
    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_list)

    print(f"成功添加{card_dict['name']}名片!")


def show_all():
    '''显示全部'''
    print('-' * 50)
    print('功能:显示全部')

    # 若列表为空,直接返回
    if len(card_list) == 0:
        print("请先添加名片!")
        return

    # 打印表头
    print('姓名\t电话\tQQ\t邮箱')
    print('*' * 40)

    # 格式化输出
    for card_dict in card_list:
        print(f"{card_dict['name']}\t{card_dict['phone']}\t{card_dict['qq']}\t{card_dict['email']}")
    print('*' * 40)


def search_card():
    '''查询名片'''
    print('功能:查询名片')
    print('*' * 40)

    # 提示查询名片的键
    find_name = input("请输入要查询的姓名:")
    # 遍历查询
    for card_dict in card_list:
        if card_dict['name'] == find_name:
            # 找到了
            print("-" * 30)
            print('姓名\t电话\tQQ\t邮箱')
            print(f"{card_dict['name']}\t{card_dict['phone']}\t{card_dict['qq']}\t{card_dict['email']}")
            print("-" * 30)
            # 查询到的名片处理逻辑
            deal_card(card_dict)

            break
        else:
            print(f"{find_name} 不在名片系统中")


def deal_card(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(f"{find_dict['name']}的名片修改成功!")
    elif action_str == '2':
        card_list.remove(find_dict)
        print("删除成功!")


def input_card_info(dict_value, tlp_message):
    '''
    字典内容部分键值对修改
    :param dict_value: 字典原值
    :param tlp_message: 输入值
    :return:如果输入,返回输入内容,否则返回字段原值
    '''
    # 提示用户输入内容
    result_info = input(tlp_message)

    # 判断是否输入
    # if len(result_info.strip()) > 0:
    if len(result_info) > 0:
        # 有输入非空白返回输入内容
        return result_info
    else:
        # 无输入返回原值
        return dict_value

运行效果

****************************************
欢迎使用[名片关系系统]v0.10

1、新建名片
2、显示全部
3、查询名片

0、退出系统
****************************************
请选择操作功能:1
您选择的操作是: 1
--------------------------------------------------
功能:新建名片
请输入姓名:令狐冲
请输入电话:18511001236
请输入QQ:1259865
请输入邮箱:[email protected]
成功添加令狐冲名片!
****************************************
欢迎使用[名片关系系统]v0.10

1、新建名片
2、显示全部
3、查询名片

0、退出系统
****************************************
请选择操作功能:2
您选择的操作是: 2
--------------------------------------------------
功能:显示全部
姓名    电话    QQ    邮箱
****************************************
令狐冲    18511001236    1259865    [email protected]
****************************************
****************************************
欢迎使用[名片关系系统]v0.10

1、新建名片
2、显示全部
3、查询名片

0、退出系统
****************************************
请选择操作功能:1
您选择的操作是: 1
--------------------------------------------------
功能:新建名片
请输入姓名:依琳
请输入电话:13110257896
请输入QQ:45685232
请输入邮箱:[email protected]
成功添加依琳名片!
****************************************
欢迎使用[名片关系系统]v0.10

1、新建名片
2、显示全部
3、查询名片

0、退出系统
****************************************
请选择操作功能:2
您选择的操作是: 2
--------------------------------------------------
功能:显示全部
姓名    电话    QQ    邮箱
****************************************
令狐冲    18511001236    1259865    [email protected]
依琳    13110257896    45685232    [email protected]
****************************************
****************************************
欢迎使用[名片关系系统]v0.10

1、新建名片
2、显示全部
3、查询名片

0、退出系统
****************************************
请选择操作功能:3
您选择的操作是: 3
功能:查询名片
****************************************
请输入要查询的姓名:令狐冲
------------------------------
姓名    电话    QQ    邮箱
令狐冲    18511001236    1259865    [email protected]
------------------------------
请输入操作选项:1、修改/ 2、删除/ 0、返回上级菜单1
请输入姓名(回车不修改)
请输入电话(回车不修改)
请输入QQ(回车不修改)
请输入邮箱(回车不修改)[email protected]
令狐冲的名片修改成功!
****************************************
欢迎使用[名片关系系统]v0.10

1、新建名片
2、显示全部
3、查询名片

0、退出系统
****************************************
请选择操作功能:2
您选择的操作是: 2
--------------------------------------------------
功能:显示全部
姓名    电话    QQ    邮箱
****************************************
令狐冲    18511001236    1259865    [email protected]
依琳    13110257896    45685232    [email protected]
****************************************
****************************************
欢迎使用[名片关系系统]v0.10

1、新建名片
2、显示全部
3、查询名片

0、退出系统
****************************************
请选择操作功能:0
您选择的操作是: 0
欢迎再次使用[名片管理系统]

标签:练手,名片,Python,dict,输入,print,find,card
From: https://www.cnblogs.com/wdh01/p/17422037.html

相关文章

  • python打包后,执行报错:NameError: name ‘exit‘ is not defined
    try:file_name=os.path.basename(src)file_size=os.stat(src).st_sizeexceptException:print("源文件不存在:",src)exit()在ide使用中没有问题,但是封装成应用程序时就出现问题: NameError:name'exit'isnotdef......
  • Python 中 yeild 的用法
    本文包含以下四部分:yeild介绍yeild案例简单的例子对比yeild和常规函数复杂的例子说明yeild与普通函数的差异1.yeild介绍yield是Python的一个关键字,用于从一个函数中返回一个生成器(generator)。生成器是一种特殊类型的迭代器,它允许你延迟计算结果,这在处理大数据或......
  • CentOS 6.9 python3.10 numpy 安装使用 - gcc 升级
    踩坑记录程序写好了,使用了pandas,放在服务器上,运行报错:Originalerrorwas:/lib64/libgcc_s.so.1:version`GCC_4.8.0'notfound(requiredby/usr/local/lib/python3.10/site-packages/numpy/core/../../numpy.libs/libgfortran-040039e1.so.5.0.0)可以看到是导入numpy......
  • uwp 的个人名片
       xmlcode----------------------------------------------------------------------<Pagex:Class="AdaptiveLayout.MainPage"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.......
  • Python Django Xadmin 的使用
    笔者Python版本为3.10.6,Django版本为4.2.2本项目代码已开源,可到GitHub仓库中查看本项目用到的xadmin、DjangoUeditor文件夹笔者已经按照Python3.10版本进行了修改,点击链接即可下载。但如果你使用的Python版本较低,可能会因此出现一些BUG,请到问题汇总查看,如果......
  • python切片详解
    索引的一般方式一个完整的切片是包含三个参数和两个冒号":",用于分隔三个参数(start_index、end_index、step)。当只有一个“:”时,默认第三个参数step=1;当一个“:”也没有时,start_index=end_index,表示切取start_index指定的那个元素。切片操作的基本表达式:object[start......
  • 【理论积累】Python中的Pandas库【一】
    Pandas库介绍Pandas是一个用于数据分析的Python第三方库,能够处理和分析不同格式的数据,例如:CSV、Excel、SQL数据库等。Pandas提供了两种数据结构,分别为Series和DataFrame,灵活而方便地进行数据分析和操作。以下是Pandas的核心概念和功能:Series:类似于NumPy的ndarra......
  • Python 多进程之间共享变量
    原文地址:https://blog.51cto.com/alwaysbeta/5162851Python多线程之间共享变量很简单,直接定义全局global变量即可。而多进程之间是相互独立的执行单元,这种方法就不可行了。不过Python标准库已经给我们提供了这样的能力,使用起来也很简单。但要分两种情况来看,一种是Process......
  • Python tkinter 树形列表控件(Treeview)的使用简单举例,建立一个treeview
     importtkinterastkfromtkinter.ttkimportTreeview#创建tkinter应用程序窗口root=tk.Tk()#设置窗口大小和位置root.geometry('500x300+400+300')#不允许改变窗口大小root.resizable(False,False)#设置窗口标题root.title('通信录管理系统')#使用Tree......
  • 实验6 turtle绘图和Python库应用编程体验
    实验任务1task1_1.py源代码1fromturtleimport*23defmove(x,y):4penup()5goto(x,y)6pendown()78defdraw(n,size=100):9foriinrange(n):10fd(size)11left(360/n)1213defmain():14pensize(2)1......