zoukankan      html  css  js  c++  java
  • day 5 名片管理系统-文件版

    1.添加__name__ == '__main__'

    if __name__ == "__main__":       #添加__name__变量
        #调用主函数
        main()

    2.添加6功能,保存到文件

     def save_2_file():
         '''完成保存到文件的功能'''
         f = open("backup.data",'w')  
         f.write(str(card_infors))           #文件只能保存str字符串类型,    
                                                #TypeError: write() argument must be str, not list
         f.close()                                                                            

    3.保存文件的内容

    vim  backup.data 
    
    ####  第1种,直接把list转换成str存入 文件
    [{'qq': 'dfas', 'addr': 'ds', 'name': 'aa', 'age': 'adf'}, {'qq': 'dfas', 'addr': 'fd', 'name': 'b', 'age': 'dsfa'}]
    
    
    ##### 第2种,好看 不推荐
     aa,3434,3434,123
     bb,43,43,34
     c,2334,43,43
    
    
    
    #保存的数据文件,不是为了用户查看的,怎么简单怎么来

     4.程序执行开始,读取文件

      1)版本1:没有数据

     def load_infor():
         '''完成对文件内数据的加载'''
     
         f = open("backup.data","r")
         card_infor = list(f.read())          #字符串str转换成list列表格式
         f.close()
     def main():
         '''完成对整个程序的控制'''
         #恢复加载之前的文件内容到程序中
         load_infors()
     
         # 1.打印功能信息
         print_menu()
    ### 运行结果
       #####    python3 08-读取文件.py 
    **************************************************
        名片管理系统 V3    
    1:添加一个名片
    2:删除一个名片
    3:修改一个名片
    4:查询一个名片
    5:显示所有
    6:保存
    7:退出系统
    **************************************************
    请输入你要的功能:5
    姓名    年龄    qq号    地址
    
    请输入你要的功能:^Z

       

      2)版本2:global全局变量,eval()

    请输入你要的功能:5
    姓名    年龄    qq号    地址
    aa    sfd    dsaf    df
    bb    daf    fda    dfs
    def load_infor():
        '''完成对文件内数据的加载'''
        global card_infors                   #声明全局变量
        f = open("backup.data","r")
        card_infors = eval(f.read())         ## eval能将字符串变成之前的类型
        f.close()

     5.异常处理:没有数据文件创建,有文件读取

    ###  没有备份文件程序出错
    rm -rf backup.data 
    
    python3 08-读取文件.py 
    Traceback (most recent call last):
      File "08-读取文件.py", line 110, in <module>
        main()
      File "08-读取文件.py", line 74, in main
        load_infor()
      File "08-读取文件.py", line 66, in load_infor
        f = open("backup.data","r")
    FileNotFoundError: [Errno 2] No such file or directory: 'backup.data'
    def load_infor():
        '''完成对文件内数据的加载'''
        global card_infors
    
        try:
            f = open("backup.data","r")
            card_infors = eval(f.read())
            f.close()
        except Exception:       ###出现异常忽略
            pass

    6.完整版本

    #定义一个新的list列表,用来存储名片
    card_infors = []
    
    def print_menu():
        """完成打印功能"""
        print("*"*50)
        print("	名片管理系统 V3	")
        print("1:添加一个名片")
        print("2:删除一个名片")
        print("3:修改一个名片")
        print("4:查询一个名片")
        print("5:显示所有")
        print("6:保存")
        print("7:退出系统")
        print("*"*50)
    
    def add_new_card_infor():
        """完成添加新名片功能"""
        new_name = input("你要添加的姓名:")
        new_age = input("你要添加的年龄:")
        new_qq = input("你要添加的qq:")
        new_addr = input("你要添加的地址:")
        
        #定义1个新的字典dict,用来存储新的名片
        new_infor = {}
        new_infor["name"] = new_name
        new_infor["age"] = new_age
        new_infor["qq"] = new_qq
        new_infor["addr"] = new_addr
    
        #将1个字典dict添加到列表list
        global card_infors
        card_infors.append(new_infor)
        #print(card_infors)  #for test  测试用的  
    
    def find_card_infor():
        """完成查询1个名片的功能"""
        global card_infors
        find_name = input("请输入你要查询的名字:")
        flag = 0 #默认 没有查到此人
        for tmp in card_infors:
            if find_name in tmp["name"]:
                print("%s	%s	%s	%s"%(tmp["name"],tmp["age"],tmp["qq"],tmp["addr"]))
                flag = 1   #表示查到此人了
                break
         #判断是否找到了   
        if flag == 0:
            print("查无此人")
    
    def show_card_infor():
        """完成显示名片"""
        global card_infors
        print("姓名	年龄	qq号	地址")
        for tmp in card_infors:
            print("%s	%s	%s	%s"%(tmp["name"],tmp["age"],tmp["qq"],tmp["addr"]))
    
    def save_2_file():
        '''完成保存到文件的功能'''
        f = open("backup.data",'w')
        f.write(str(card_infors))
        f.close()
    
    def load_infor():
        '''完成对文件内数据的加载'''
        global card_infors
        try:
            f = open("backup.data","r")
            card_infors = eval(f.read())
            f.close()
        except Exception:
            pass
    
    def main():
        '''完成对整个程序的控制'''
        
        #恢复加载之前的文件内容到程序中
        load_infor()
    
    
        # 1.打印功能信息
        print_menu()
    
        while True:
            #2.获取用户的输入
            num = int(input("请输入你要的功能:"))
    
            #3.根据用户的输入,执行相应的功能
            if num == 1:
                add_new_card_infor()
    
            elif num == 2:
                pass
            elif num == 3:
                pass
            elif num == 4:
                find_card_infor()
    
            elif num == 5:
                show_card_infor()
    
            elif num == 6:
                save_2_file()
    
            elif num == 7:
                break
            else:
                print("你输入的有误,请重新输入")
    
            print("")
    
    if __name__ == "__main__":
        #调用主函数
        main()
  • 相关阅读:
    hibernate update部分更新
    strtus2.0实现下载
    cookie和session机制之间的区别与联系
    生成随机数字验证码
    ssh生成随机数字验证码
    ASP一句话轻松获取域上的用户名
    SQL server 日志文件清除
    Entity Framework中使用DbMigrator更新数据库至最新结构
    进程间通信
    asp备份SQL数据库
  • 原文地址:https://www.cnblogs.com/venicid/p/7898875.html
Copyright © 2011-2022 走看看