名片管理系统(文件版)

这里对代码做了稍微的改进,保存已输入信息,下次重新打开程序会加载已输入信息。话不多说,直接上代码,介绍请看上一篇名片管理系统

#运用列表字典的增删改查,使用模块函数封装,全局变量局部变量
#下次再次打开登录时保存已输入信息
#存储全部的名片信息,全局变量
card_infor = []
#1、提示名片管理功能
def print_menu():
    '''完成提示名片管理系统的操作功能''' #函数文档说明
    print("="*50)
    print("    名片管理系统v2.0")
    print("1:添加名片信息")
    print("2:删除名片信息")
    print("3:更改名片信息")
    print("4:查找名片信息")
    print("5:打印全部名片信息")
    print("6:保存信息")
    print("7:退出系统")
    print("="*50)
    
def new_name():
    '''完成添加新名片'''    #函数文档说明
    new_name = input("请输入你的姓名:")
    new_age = int(input("请输入你的年龄:"))
    #判断输入手机号为11位号码
    while True:
        new_tel = input("请输入你的手机号:")
        if len(new_tel)!=11:
            print("输入号码有误,请重新输入")
        else:
            break
    new_addr = input("请输入你的地址:")
    #存储新名片的信息    #函数文档说明
    new_infor = {}
    new_infor['name'] = new_name
    new_infor['age'] = new_age
    new_infor['Tel'] = new_tel
    new_infor['addr'] = new_addr
    #存储新输入的名片信息
    card_infor.append(new_infor)
    #print(card_infor)  #for test

def del_name():
    '''完成删除已有名片'''   #函数文档说明
    del_name = input("请输入你要删除的名片姓名:")
    del_flag = 0  #用来标记
    #循环查找需要删除的元素
    for temp in card_infor:
        if del_name==temp.get('name'):
            card_infor.remove(temp)#删除要名片信息
            #print(card_infor)  #for test
            del_flag = 1#如果删除名片信息,标记赋值为1
    #系统中不存在删除名片信息
    if del_flag==0:
        print("系统中不存在此名片")
        
def alter_name():
    '''完成更改名片的信息'''  #函数文档说明
    alter_name = input("请输入要更改的名片姓名:")
    alter_flag = 0   #进行标记
    for temp in card_infor:
        if alter_name==temp['name']:
            alter_flag = 1  #系统中名片姓名存在,标记赋值为1
            #循环输入可能修改信息
            while True:
            #输入需要更改的信息
                alter = int(input("请输入你要更改的信息 0:name 1:age 2:Tel 3:addr 4:退出修改 "))
                if alter==0:     #修改姓名
                    temp['name'] = input("请输入你要修改的名字:")
                elif alter==1:  #修改年龄
                    temp['age'] = int(input("请输入你要修改的年龄:"))
                elif alter==2:#修改手机号
                    #判断是否为11位号码
                    while True:
                        temp['Tel']=input("请输入你要修改的手机号:")
                        if len(temp['Tel'])!=11:
                            print("输入修改手机号错误,请重新输入")
                        else:
                            break
                elif alter==3:   #修改地址
                    temp['addr'] = input("请输入你要修改的地址:")
                elif alter==4:
                    break
                else:   #输入不是0 1 2 3
                    print("输入错误,请重新输入序号")
    if alter_flag==0:
        print("系统中不存在此名片")
    #print(card_infor)   #for test
    
def find_name():
    '''完成查找名片信息'''   #函数文档说明
    get_name = input("请输入你要查找的名片姓名:")
    find_flag = 0   #用来计数
    print("姓名	年龄	手机号	   地址")#打印全部信息的抬头
    for temp in card_infor:
        if temp['name']==get_name:
            print("%s	  %d  	%s	%s"%(temp['name'],temp['age'],temp['Tel'],temp['addr']))
            find_flag = 1
    if find_flag==0:
        print("查无此人...")
        
def all_name():
    '''完成打印全部的名片信息'''    #函数文档说明
    print("姓名	年龄	手机号	   地址")#打印全部信息的抬头
    #循环列表card_infor中的信息
    for temp in card_infor:
        print("%s	  %d	%s	%s"%(temp['name'],temp['age'],temp['Tel'],temp['addr']))

def save_2_file():
    '''保存输入信息'''
    f = open("backup.data","w")
    f.write(str(card_infor))
    f.close()

def load_infor():
    '''加载已输入信息到程序中'''
    global card_infor  #全局变量
    #添加异常处理,如果开始不存在信息文件,创建文件
    try:
        f = open("backup.data")
        card_infor = eval(f.read())#原来字符串是什么类型eval还原原来类型
        f.close()
    #存在信息文件
    except Exception:
        pass
    
def main_name():
    '''完成对全部程序控制'''   #函数文档说明
    
    #恢复(加载)之前数据到程序中
    load_infor()
    
    #调用打印功能提示函数
    print_menu()
    
    #循环操作
    while True:
        #2、获取用户操作信息
        num = int(input("请输入需要的操作序号:"))
        
        #3、根据用户操作信息,执行程序
        #添加新名片
        if num==1:
            new_name()  #调用添加名片函数
        #删除名片
        elif num==2:
            del_name()  #调用删除名片函数
        #更改名片信息
        elif num==3:
            alter_name() #调用更改名片函数
        #查找名片
        elif num==4:
            find_name()   #调用查找名片函数
        #打印全部名片信息
        elif num==5:
            all_name()    #调用全部名片信息函数
        #保存输入信息
        elif num==6:
            save_2_file()
        #退出系统
        elif num==7:
            print("你已经退出系统")
            break
        #操作序号有误
        else:
            print("输入有误,请重新输入操作序号...") 
            
if __name__ == "__main__":
    #调用主函数
    main_name()
所有内容,仅作参考,可能有不足或错误之处,欢迎留言批评指正
原文地址:https://www.cnblogs.com/DreamRJF/p/8988500.html