python初学项目实战——名片管理系统(一)

 本文章是记录自己学习python的过程,起到一个笔记的作用,主要是实现名片管理项目中新建名片、查看全部名片、以及查询名片并对所查询的名片进行修改、删除等简单操作。后续还会增加保存数据、对输入的数据进行格式限制:例如邮箱的格式、手机号只允许输入0-9的11位数字,增加面向对象等功能

此文件是对各个功能进行定义,主要定义了新建名片功能、查看全部名片功能、查询名片功能、对查询名片进行修改、删除的定义以及对input功能扩展来实现回车不进行修改返回默认值操作。

其中修改名片功能中使用了传参,

find_dict['name']  =  input_card_info(find_dict.get('name'),"请输入修改后的姓名[不修改直接回车]:")

其中将“find_dict.get('name'),"请输入修改后的姓名[不修改直接回车]”实参 传参到调用函数 “ input_card_info(dict_value, msg)”中,“find_dict.get('name')”传入到形参dict_value中,"请输入修改后的姓名[不修改直接回车]”传参到msg中;

#当前文件负责各个功能函数的实现和定义
#当前文件负责定义函数,不负责调用
#实现功能:显示菜单、新建名片、显示全部名片、查询名片、修改名片、删除名片、返回上一级

#定义全局变量 名片列表
card_list= []

#定义显示菜单功能函数

def show_menu():
    """
    当前函数实现显示菜单函数
    """
    print("")
    print("*" * 50)
    print("欢迎使用[名片管理系统] v1.0")
    print("")#空行
    print("1. 新建名片")
    print("2. 显示全部")
    print("3. 查询名片")
    print("")#空行
    print("0. 退出系统")
    print("*" * 50)
    print("")

#定义新建名片功能函数
def new_card():
    """
    当前函数实现了新建名片功能
    :return:
    """
    print("[功能]——新建名片")
    # 1.获取用户输入信息
    name_str  = input("请输入姓名:")
    sex_str   = input("请输入性别:")
    phone_str = input("请输入电话:")
    qq_str    = input("请输入QQ号:")
    Email_str = input("请输入邮箱:")

    # 2.将获取的输入信息保存到字典中
    new_dict = {
        'name':name_str,
        'sex':sex_str,
        'phone':phone_str,
        'qq':qq_str,
        'Email':Email_str }

    # 3.将字典添加到列表中
    card_list.append(new_dict)

    # 4.打印提示,新建新建名片成功
    print(" 新建 名片成功!","姓名是:%s " %name_str)
    print("名片列表,card_list:",card_list)
#定义显示全部名片功能函数
def show_all_card():
    """
    当前函数实现显示全部名片的功能
    :return:
    """
    #pass       #pass是占位符,起到完善语法结构的作用,不输入任何内容
    print("[功能]——显示全部名片")
    #0.先判断名片列表中有没有数据,若无数据,提示新建名片,
    # 并且代码不在向下执行   用return终止函数运行
    if len(card_list) <= 0:
        print("当前名片列表中没有数据,请新建名片")
        return
    #1.先打印表头
    print("-" * 70)
    print("姓名".ljust(10),"性别".ljust(10),"电话".ljust(10),"qq".ljust(10),"邮箱".ljust(10),sep="\t\t") #sep="\t\t"每个数据之间两个tap键插入
    print("-" * 70)

    #2.按照格式打印表格里数据(把名片列表中的数据打印出来)
    for item in card_list:  #临时变量item 获取的是列表中的一个个字典
        print(item.get('name').ljust(10),item.get('sex').ljust(10),item.get('phone').ljust(10),
              item.get('qq').ljust(10),item.get('Email').ljust(10),sep="\t\t")

#定义查询名片功能函数
def search_card():
    """
    当前函数实现查询语法名片的功能
    :return:
    """
    #pass
    print("[功能]——查询名片")
    #1.获取用户要查询的姓名
    find_name = input("请输入你要查询的姓名:")
    #2.拿着要查询的姓名到名片列表中查找
    for item in card_list:
        # 临时变量item获取的是列表中一个个字典
        if item.get('name') == find_name:

    #3.如果找到,打印提示找到的的信息
            print("以及找到姓名是:%s 的信息了" % item.get('name'))
            #打印表头
            print("-" * 70)
            print("姓名".ljust(10), "性别".ljust(10), "电话".ljust(10), "qq".ljust(10), "邮箱".ljust(10),
                  sep="\t\t")  # sep="\t\t"每个数据之间两个tap键插入
            print("-" * 70)

            #打印表格里的数据
            print(item.get('name').ljust(10),item.get('sex').ljust(10),item.get('phone').ljust,item.get('qq').ljust(10),
                  item.get('Email').ljust(10),  sep="\t\t")

            #调用对名片的操作选择函数
            deal_card(item)

            #以及找到人物信息,退出循环
            break

    #4.如果没有找到,提示没有找到这个人物的信息
    else:
        print("没有找到姓名为: %s 的信息,请核对后重新输入!" % find_name)


#对当前名片进行操作选择函数
def deal_card(find_dict):
    """
    当前函数对名片进行操作选择的功能:修改、删除、返回上一级
    :return:
    """
    #获取用户输入信息
    op = input("请输入对名片的操作选择:[1.修改  2.删除  0.返回上一级]")
    print("请输入您的选择:")

    #根据用户的输入信息进行判断
    if op == "1":
    #若用户输入”1“,修改名片
        print("[功能]————修改名片")
        #1.获取修改后的信息
        #2.将获取到修改后的数据 替换字典的key对于的value的值
        find_dict['name']  =  input_card_info(find_dict.get('name'),"请输入修改后的姓名[不修改直接回车]:")
        find_dict['sex']   =  input_card_info(find_dict.get('sex'),"请输入修改后的性别[不修改直接回车]:")
        find_dict['phone'] =  input_card_info(find_dict.get('phone'),"请输入修改后的手机号[不修改直接回车]:")
        find_dict['qq']    =  input_card_info(find_dict.get('qq'),"请输入修改后的qq[不修改直接回车]:")
        find_dict['Email'] =  input_card_info(find_dict.get('Email'),"请输入修改后的邮箱[不修改直接回车]:")
        #3.打印修改名片成功
        print("名片修改成功")

    elif op == "2":
    #若用户输入”2“,删除名片
        print("[功能]————删除名片")
        #把名片列表中的字典删除
        card_list.remove(find_dict)
        #提示删除成功
        print("删除名片成功")
    elif op == "0":
    #若用户输入”0“,返回上一级
        print("[功能]————返回上一级")
        # 提前结束函数运行
        return
    else:
    #若用户输入其他,提示”输入有误“
        print("您的输入有误,请重新输入")


def input_card_info(dict_value, msg):
    """
    当前函数对input()函数进行功能扩充
    :param msg:
    :return:
    """
    # 1.使用input()函数获取用户的输入信息

    info = input(msg)

    # 2.对用户的输入信息进行判断

    # 3.若有input有输入信息,把输入的信息返回给字典的key对应的value
    if len(info) > 0:

        return info
    # 4.若用户没有输入信息,不能返回空字符串,把字典默认值返回
    else:

        return dict_value





这个文件是用来调用定义的功能函数,再次文件运行即可。

#当前文件card.main.py是总控中心,不负责实现各种功能,是负责调度各种功能函数的
#所有功能函数都由其来调度
#1.导入工具包
import cards_tool
#添加死循环,让菜单重复显示
while True:
    #2.使用工具包中的工具 模块名.函数名()
    # 显示菜单功能函数
    cards_tool.show_menu()
    #对于循环次数不确定时,可以使用死循环,
    #但是死循环中必须要有退出条件,死循环可以用break来打破

    #获取用户的输入选择
    option = input("请输入您的选择:")  #input函数输入的都是字符串
    #print(option)
    #print(type(option))

    #根据用户的输入选择进行判断
    if option in ["1","2","3"]:

        #对option的值进行进一步判断
        if option == "1":
            #用户想要新建名片
            cards_tool.new_card()

        elif option == "2":
            #用户想要显示全部名片
            cards_tool.show_all_card()

        else:
           #用户想要查询名片
            cards_tool.search_card()

    elif option == "0":
        print("欢迎使用名片管理系统")
        print("欢迎再次使用")
        #当用户输入"0",想要退出名片管理系统,break跳出死循环
        break
    else:
        print("您的输入有误,请核对后重新输入")
print(">>>>名片管理系统程序结束<<<")

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值