Python-名片管理系统(运用函数 文件)

名片管理系统

  • 名片夹-容器:列表[{名片}]
    • 名片:字典
      • 内容:姓名,年龄…
1.查看名片列表
  1. 遍历 名片夹(列表)
  2. 输出名片中的信息
2.添加名片
  1. 录入名片信息
  2. 合成一个名片(字典)
  3. 将名片追加到名片夹列表
3.修改名片
  1. 录入查询姓名
  2. 遍历名片夹 对比每个名片中的名字
  3. 如果找到就修改
    3.1. 重新录入新的名片信息
    3.2.更新旧字典名片
  4. 如果没有找到就提示名字错了
4.删除名片
  1. 录入查询姓名
  2. 遍历名片夹 对比每个名片中的名字
  3. 如果找到就删除
  4. 如果没有找到就提示名字错了
5.查询名片
  1. 录入查询姓名
  2. 遍历名片夹 对比每个名片中的名字
  3. 如果找到就输出
  4. 如果没有找到就提示名字错了
6.退出
  1. 如果输入正确指令,成功退出
7.其他
  1. 系统要一直循环 while True
  2. 输入不符合以上几项指令 提示"请输入正确指令"
8.基础版
print("""
************************
欢迎来到小林名片系统管理
************************
""")
cards=[
        {"name":"张飞","age":28,"job":"经理","com":"牛肉馆"},
        {"name": "貂蝉", "age": 18, "job": "总经理","com":"牛肉馆"}
    ]
while True:
    print("""
    1 查看名片列表
    2 添加名片
    3 修改名片
    4 删除名片
    5 查询名片

    0 退出系统
    """)
    num =int(input("请选择业务类型:"))
    if num == 1:
        print("欢迎进入查看列表名片页面")
        if len(cards)==0:
            print("名片夹为空,请先添加名片")
            continue
        print("姓名\t年龄\t职位\t公司名称")
        for card in cards:
            print(f"{card['name']}\t{card['age']}\t{card['job']}\t{card['com']}")
    elif num==2:
        print("欢迎进入添加名片页面")
        #录入信息
        name=input("姓名")
        age=input("年龄")
        job=input("职位")
        com=input("公司名称")
        #合成字典
        card={"name":name,"age":age,"job":job,"com":com}
        print(card)
        #追加到名片
        cards.append(card)
        print(f"成功添加{name}")
#修改名片
    elif num==3:
        print("欢迎进入修改名片页面")#进入修改页面
        #查询出修改哪张名片
        old_name=input("请输入修改名片名")
        #遍历名片夹找出需要修改的名片
        for card in cards:#card 是遍历出来后的所有名片
            if card['name']==old_name:#在名片里通过键找到name的值  如果找到了
                #重新录入内容
                name = input("姓名")
                age = input("年龄")
                job = input("职位")
                com = input("公司名称")
                #更新名片内容
                card.update({"name":name,"age":age,"job":job,"com":com})
                print(f"修改{old_name}成功")
                break
        print("没有该名片")
    elif num==4:
        print("欢迎进入删除页面")
        old_name = input("请输入删除的名片名")
        # 遍历名片夹找出需要删除的名片
        for card in cards:  # card 是遍历出来后的所有名片
            if card['name'] == old_name:  # 在名片里通过键找到name的值  如果找到了
                cards.remove(card)#删除
                print(f"删除{old_name}成功")
                break
            print("没有该名片")#找不到就提示
    elif num==5:
        print("欢迎进入查询页面")
        old_name = input("请输入查询名")
        # 遍历名片夹找出需要查询的名片
        for card in cards:  # card 是遍历出来后的所有名片
            if card['name'] == old_name:  # 在名片里通过键找到name的值  如果找到了
                info=f"""
                    *****************************
                    {card['com']}
                    {card['name']}({card['job']})
                    {card['age']}
                    *****************************
                    """
                print(info)
                break
        else:
         print("没有该名片")  # 找不到就提示
    elif num==0:
        print("欢迎下次使用!")
        break
    else:
        print("请输入正确序号!")
9. 升级版-使用函数

方便查看和使用


def list_card():
    print("""
        1 查看名片列表
        2 添加名片
        3 修改名片
        4 删除名片
        5 查询名片

        0 退出系统
        """)
    num = int(input("请选择业务类型:"))
    return num

def look(cards):
    """
    查看名片列表
    :param cards:
    :return:
    """
    print("欢迎进入查看列表名片页面")
    if len(cards) == 0:
        print("名片夹为空,请先添加名片")
    print("姓名\t年龄\t职位\t公司名称")
    for card in cards:
        print(f"{card['name']}\t{card['age']}\t{card['job']}\t{card['com']}")

def add(cards):
    """
    添加名片
    :return:
    """
    print("欢迎进入添加名片页面")
    # 录入信息
    name = input("姓名")
    age = input("年龄")
    job = input("职位")
    com = input("公司名称")
    card = {"name": name, "age": age, "job": job, "com": com}
    print(card)
    cards.append(card)
    print(f"成功添加{name}")

def change(cards):
    """
    修改名片
    :param cards: 名片夹
    :return:
    """
    print("欢迎进入修改名片页面")  # 进入修改页面
    # 查询出修改哪张名片
    old_name = input("请输入修改名片名")
    # 遍历名片夹找出需要修改的名片
    for card in cards:  # card 是遍历出来后的所有名片
        if card['name'] == old_name:  # 在名片里通过键找到name的值  如果找到了
            # 重新录入内容
            name = input("姓名")
            age = input("年龄")
            job = input("职位")
            com = input("公司名称")
            # 更新名片内容
            card.update({"name": name, "age": age, "job": job, "com": com})
            print(f"修改{old_name}成功")
            break
    else:
        print("没有该名片")

def delete(cards):
    """
    删除列表
    :param cards: 名片夹
    :return:
    """
    print("欢迎进入删除页面")
    old_name = input("请输入删除的名片名")
    # 遍历名片夹找出需要删除的名片
    for card in cards:  # card 是遍历出来后的所有名片
        if card['name'] == old_name:  # 在名片里通过键找到name的值  如果找到了
            cards.remove(card)  # 删除
            print(f"删除{old_name}成功")
            break
    else:
        print("没有该名片")  # 找不到就提示

def selete(cards):
    """
    查看名片
    :param cards: 名片夹
    :return:
    """
    print("欢迎进入查询页面")
    old_name = input("请输入查询名")
    # 遍历名片夹找出需要查询的名片
    for card in cards:  # card 是遍历出来后的所有名片
        if card['name'] == old_name:  # 在名片里通过键找到name的值  如果找到了
            info = f"""
                        *****************************
                        {card['com']}
                        {card['name']}({card['job']})
                        {card['age']}
                        *****************************
                        """
            print(info)
            break
    else:
        print("没有该名片!")  # 找不到就提示

def main():
    """
    名片管理系统
    :return:
    """
    print("""
    ************************
    欢迎来到小林名片系统管理
    ************************
    """)
    cards = [#准备文件夹

    ]
    while True:
        num=list_card()

        if num == 1:
            look(cards)#查看名片列表
        elif num == 2:
            add(cards)#添加名片
        elif num == 3:  # 修改名片
            change(cards)
        elif num == 4:
            delete(cards)#删除名片
        elif num == 5:
            selete(cards)#查询名片
        elif num == 0:
            print("欢迎下次使用")
            break
        else:
            print("请输入正确序号")

main()
10.终极版-使用文件

账号信息需要永久保存

def read_cards(cards):
    """
    读取文件中数据到文件夹
    :param cards: 文件夹
    :return:
    """
    #打开文件
    fp=open("./cards.cvs","r",encoding="utf-8")
    #读取文件
    lines=fp.readlines()
    #print(lines)
    for l in lines:
        tmp=l.strip().split(",")#获取名片列表信息
        #print(tmp)  ['张飞', '男',  '经理', '啦啦啦']
        #组装成字典添加到名片夹中
        card={"name":tmp[0],"age":tmp[1],"job":tmp[2],"com":tmp[3]}
        cards.append(card)
    #关闭文件
    fp.close()
def list_card():
    print("""
        1 查看名片列表
        2 添加名片
        3 修改名片
        4 删除名片
        5 查询名片

        0 退出系统
        """)
    num = int(input("请选择业务类型:"))
    return num

def look(cards):
    """
    查看名片列表
    :param cards:
    :return:
    """
    print("欢迎进入查看列表名片页面")
    if len(cards) == 0:
        print("名片夹为空,请先添加名片")
    print("姓名\t年龄\t职位\t公司名称")
    for card in cards:
        print(f"{card['name']}\t{card['age']}\t{card['job']}\t{card['com']}")

def add(cards):
    """
    添加名片
    :return:
    """
    print("欢迎进入添加名片页面")
    # 录入信息
    name = input("姓名")
    age = input("年龄")
    job = input("职位")
    com = input("公司名称")
    card = {"name": name, "age": age, "job": job, "com": com}
    print(card)
    cards.append(card)
    print(f"成功添加{name}")

def change(cards):
    """
    修改名片
    :param cards: 名片夹
    :return:
    """
    print("欢迎进入修改名片页面")  # 进入修改页面
    # 查询出修改哪张名片
    old_name = input("请输入修改名片名")
    # 遍历名片夹找出需要修改的名片
    for card in cards:  # card 是遍历出来后的所有名片
        if card['name'] == old_name:  # 在名片里通过键找到name的值  如果找到了
            # 重新录入内容
            name = input("姓名")
            age = input("年龄")
            job = input("职位")
            com = input("公司名称")
            # 更新名片内容
            card.update({"name": name, "age": age, "job": job, "com": com})
            print(f"修改{old_name}成功")
            break
    else:
        print("没有该名片")

def delete(cards):
    """
    删除列表
    :param cards: 名片夹
    :return:
    """
    print("欢迎进入删除页面")
    old_name = input("请输入删除的名片名")
    # 遍历名片夹找出需要删除的名片
    for card in cards:  # card 是遍历出来后的所有名片
        if card['name'] == old_name:  # 在名片里通过键找到name的值  如果找到了
            cards.remove(card)  # 删除
            print(f"删除{old_name}成功")
            break
    else:
        print("没有该名片")  # 找不到就提示

def selete(cards):
    """
    查看名片
    :param cards: 名片夹
    :return:
    """
    print("欢迎进入查询页面")
    old_name = input("请输入查询名")
    # 遍历名片夹找出需要查询的名片
    for card in cards:  # card 是遍历出来后的所有名片
        if card['name'] == old_name:  # 在名片里通过键找到name的值  如果找到了
            info = f"""
                        *****************************
                        {card['com']}
                        {card['name']}({card['job']})
                        {card['age']}
                        *****************************
                        """
            print(info)
            break
    else:
        print("没有该名片!")  # 找不到就提示

def write_cards(cards):
    """
    写数据到文件中(以覆盖 w 方式写入)
    :param cards: 名片夹
    :return:
    """
    # 打开文件
    fp = open("./cards.cvs","w",encoding="utf-8")
    # 读写文件
    # 遍历名片夹
    for card in cards:
        fp.write("{name},{age},{job},{com}\n".format(**card))
    # 关闭文件
    fp.close()
def main():
    """
    名片管理系统
    :return:
    """
    print("""
    ************************
    欢迎来到小林名片系统管理
    ************************
    """)
    cards = [#准备文件夹

    ]
    read_cards(cards)
    while True:
        num=list_card()

        if num == 1:
            look(cards)#查看名片列表
        elif num == 2:
            add(cards)#添加名片
        elif num == 3:  # 修改名片
            change(cards)
        elif num == 4:
            delete(cards)#删除名片
        elif num == 5:
            selete(cards)#查询名片
        elif num == 0:
            print("欢迎下次使用")
            break
        else:
            print("请输入正确序号")

        write_cards(cards)
main()
							开心~

在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值