day 5 名片管理系统-文件版

Posted 不要被骄傲遮蔽了双眼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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("\t名片管理系统 V3\t")
    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\t%s\t%s\t%s"%(tmp["name"],tmp["age"],tmp["qq"],tmp["addr"]))
            flag = 1   #表示查到此人了
            break
     #判断是否找到了   
    if flag == 0:
        print("查无此人")

def show_card_infor():
    """完成显示名片"""
    global card_infors
    print("姓名\t年龄\tqq号\t地址")
    for tmp in card_infors:
        print("%s\t%s\t%s\t%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()

 

以上是关于day 5 名片管理系统-文件版的主要内容,如果未能解决你的问题,请参考以下文章

day_11 py 名片管理系统

名片管理系统函数版

day 11 名片管理系统

Python名片管理系统 彩色控制台版

php网络名片系统源码免费电子云名片3.2版

名片管理系统---简单版