名片管理系统-函数&文件版

# coding = utf-8
card_infor = []

def print_menu():
    """打印提示信息"""
    print("="*20)
    print("      名片管理系统")
    print("1.添加一个新的信息")
    print("2.删除一个信息")
    print("3.修改一个信息")
    print("4.查询一个信息")
    print("5.查看所有信息")
    print("6.保存信息")
    print("0.退出信息")
    print("=" * 20)

def choose_num():
    """让用户进行选择"""
    try:     #防止错误
        while True:
            num = int(input("请输入功能序号"))
            if num == 1:        #增加信息
                add_infor()
            elif num == 2:      #删除信息
                del_infor()
            elif num == 3:      #修改信息
                modify_infor()
            elif num == 4:      #查询信息
                find_infor()
            elif num == 5:      #输出所有信息
                print_infor()
            elif num == 6:      #保存信息
                save_infor()
            elif num == 0:      #退出系统
                print("退出系统")
                break
            else:
                print("您输入%d,输入错误,请重新输入数字范围为0-6"%num)
    except Exception:
        print("输入格式错误,请重新输入数字范围为0-6")
        choose_num()

def add_infor():
    """增加信息"""
    global card_infor  #全局变量
    new_infor = {}     #定义字典
    new_infor["name"] = input("请输入新的名字")
    new_infor["QQ"] = input("请输入QQ号")
    new_infor["weixin"] = input("请输入微信号")
    new_infor["addr"] = input("请输入地址")
    card_infor.append(new_infor)  #将字典添加到列表中
    print(card_infor)  #for test

def del_infor():
    """删除信息"""
    global card_infor
    del_name = input("请输入要删除的名字")
    del_num = 0    #所要删除的下标
    for i in card_infor:
        if del_name == i["name"]:   #进行匹配
            print("已找到")
            print("姓名\tQQ号\t微信号\t地址")
            print("%s\t%s\t%s\t%s"%(i["name"],i["QQ"],i["weixin"],i["addr"]))
            try:
                del_flag = int(input("是否删除,是请输入1,否请输入0 :"))
                if del_flag == 1:
                    del card_infor[del_num]
                    print("已删除")
                elif del_flag == 0:
                    print("已取消删除操作")
                else:
                    print("您输入%d,输入错误,退出删除操作!"%del_flag)
            except Exception:
                print("输入格式错误,退出删除操作!")
            break
        else:
            del_num += 1   #下标+1
            if del_num >= len(card_infor):   #判断是否遍历完全
                print("未找到删除人的信息")
                break

def modify_infor():
    """修改信息"""
    global card_infor
    modify_name = input("请输入要修改的名字")
    modify_num = 0  # 所要删除的下标
    for i in card_infor:
        if modify_name == i["name"]:  # 进行匹配
            print("已找到")
            print("姓名\tQQ号\t微信号\t地址")
            print("%s\t%s\t%s\t%s" % (i["name"], i["QQ"], i["weixin"], i["addr"]))
            try:
                while True:
                    modify_choose = int(input("修改名字请输入:1,修改QQ请输入:2,\
修改微信请输入:3,修改地址请输入:4,取消修改请输入0  :"))
                    if modify_choose == 1:
                        card_infor[modify_num]["name"] = input("请输入新的名字")
                        print("已修改")
                        print("姓名\tQQ\t微信\t地址")
                        print("%s\t%s\t%s\t%s" % (i["name"], i["QQ"], i["weixin"], i["addr"]))
                    elif modify_choose == 2:
                        card_infor[modify_num]["QQ"] = input("请输入新的QQ")
                        print("已修改")
                        print("姓名\tQQ\t微信\t地址")
                        print("%s\t%s\t%s\t%s" % (i["name"], i["QQ"], i["weixin"], i["addr"]))
                    elif modify_choose == 3:
                        card_infor[modify_num]["weixin"] = input("请输入新的微信")
                        print("已修改")
                        print("姓名\tQQ\t微信\t地址")
                        print("%s\t%s\t%s\t%s" % (i["name"], i["QQ"], i["weixin"], i["addr"]))
                    elif modify_choose == 4:
                        card_infor[modify_num]["addr"] = input("请输入新的地址")
                        print("已修改")
                        print("姓名\tQQ\t微信\t地址")
                        print("%s\t%s\t%s\t%s" % (i["name"], i["QQ"], i["weixin"], i["addr"]))
                    elif modify_choose == 0:
                        print("结束本次修改...")
                        print("姓名\tQQ\t微信\t地址")
                        print("%s\t%s\t%s\t%s" % (i["name"], i["QQ"], i["weixin"], i["addr"]))
                        break
                    else:
                        print("您输入%d,输入错误,请重新输入数字范围为0-4"%modify_choose)
            except Exception:
                print("输入格式错误,退出修改操作!")
                break
        else:
            modify_num += 1
            if modify_num >= len(card_infor):
                print("未找到要修改人的信息")
                break

def find_infor():
    """查询信息"""
    global card_infor
    find_num = 0
    find_name = input("请输入要查找的名字:")
    find_flag = 0    #进行判断
    for i in card_infor:
        if find_name == i["name"]:
            find_flag += 1   #找到一次+1
            if find_flag == 1:
                print("已找到")
                print("姓名\tQQ\t微信\t地址")
            print("%s\t%s\t%s\t%s" % (i["name"], i["QQ"], i["weixin"], i["addr"]))
        else:
            find_num += 1
            if find_num >= len(card_infor):
                print("未找到该人的信息")
                break

def print_infor():
    """输出所有信息"""
    global card_infor
    print("姓名\tQQ号\t微信号\t地址\t")
    for i in card_infor:
        print("%s\t%s\t%s\t%s"%(i["name"],i["QQ"],i["weixin"],i["addr"]))

def save_infor():
    """保存信息"""
    save_file = open("backup.WP","w")  #把信息读写后 保存在文件里
    save_file.write(str(card_infor))   #进行读写
    save_file.close()   #关闭文件
    print("已经保存程序信息")

def load_infor():   #加载信息
    """加载之前数据至程序中"""
    global card_infor
    try:   #来进行判断  如果本地没有该文件的话 最后用save_infor()也就是6 来创建文件并保存信息
        load_file = open("backup.WP")     #读取文件数据
        card_infor = eval(load_file.read())   #将文件读入程序中
        load_file.close()           #关闭文件
    except Exception:
        pass

def main():
    """执行函数"""
    load_infor()  #加载程序
    print_menu()  #打印信息
    choose_num()  #选择功能

if __name__ == "__main__":  #自己调用
    #执行
    main()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值