• 名片管理系统(文件版)


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

    #运用列表字典的增删改查,使用模块函数封装,全局变量局部变量
    #下次再次打开登录时保存已输入信息
    #存储全部的名片信息,全局变量
    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()
    所有内容,仅作参考,可能有不足或错误之处,欢迎留言批评指正
  • 相关阅读:
    Twitter如何在数千台服务器上快速部署代码?
    系统架构师学习笔记_第六章(上)_连载
    使用IIS内置压缩功能,增加网站访问速度
    系统架构师学习笔记_第八章_连载
    微软企业库4.1学习笔记(十五)缓存模块3 使用数据库作为后端存储
    快速搞懂 SQL Server 的锁定和阻塞
    微软企业库4.1学习笔记(十四)缓存模块2 使用缓存模块进行开发
    微软企业库4.1学习笔记(十六)缓存模块4 服务器场中的缓存使用
    Agile PLM Engineering Collaboration
    EC Client Customizing EC Client 客户化
  • 原文地址:https://www.cnblogs.com/DreamRJF/p/8988500.html
Copyright © 2020-2023  润新知