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()
时间: 2024-10-11 00:30:04

day 5 名片管理系统-文件版的相关文章

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

先写一个名片管理系统简单版,后续改进#!/usr/bin/env python3# -*- conding:utf-8 -*-# @Time: 2017/12/15 12:27# @Author:Luke# 名片系统..持续开发中...还有函数,模块等=没加进来,预先演练cardSys = [{"name":"张三","telephone":"15892233331","QQ":"12345&qu

名片管理系统函数版

# _*_ conding:utf-8 _*_ #用来存储名片 card_infors = [] #1.打印功能提示 def print_menu(): '''完成打印功能菜单''' print("="*50) print("名片管理系统 V1.0") print("1:添加一个新的名片") print("2:删除一个名片") print("3:修改一个名片") print("4:查询一个名片&q

Python练手系列之--名片管理系统

列表或字典做全局变量在函数中调用可以不用加global # 用来存储名片 card_infors = [] def print_menu(): """完成打印功能菜单""" print('=' * 50) print(' 名片管理系统函数版') print(' 1.添加一个新的名片') print(' 2.删除一个名片') print(' 3.修改一个名片') print(' 4.查询一个名片') print(' 5.显示所有名片') print

学生信息管理系统JAVASE版--1.1.1

现在终于可以写出实用一点的程序了.虽然这个程序的功能非常之简陋,而且还有BUG.不过最起码已经可以使用了. 功能预览和下一步的目标 程序主界面 查询功能: 目前只做了一个表的增.删.改.查.下一步应该就是把功能完善,比如加入错误处理,比如加入成绩部分.完成一个班级内的学生信息管理的功能,应该具有学生的基本信息查询,成绩管理这两个功能 不过有一个问题就是,在表格更新这一部分,每更新一次,就要创建一个tabliModel对象,感觉可以改进.再有就是MVC模式,其实也就接触设计模式.还有就是整成那种可

oa管理系统政务版对政府办公有什么作用?

随着政府对信息化办公的重视,为了让政务办公更加高效便捷,越来越多的oa管理系统政务版协同办公系统走进人们的视野.政府单位的性质不同导致所注重的功能需求会有不同,因此,oa管理系统政务版协同办公系统的功能要比一般的协同办公系统强大,才能真正起到协同政务办公的效果. 针对我国政府电子政务的多方面需求,oa管理系统政务版办公系统可充分适应各级政府的组织机构设置,使其成为一个有机的统一体. 政务oa管理系统处理提供基础的政务办公功能之外,还为政府机构提供基于消息传递的可定义流程的公文流转体系,实现包括收

[Python]名片管理系统

名片管理系统 目标 综合已经学习过的知识点 变量 流程控制 函数 模块 开发 名片管理系统 框架搭建 程序框架就是能简单运行的程序,但是这个程序还很不完善,有了基本的雏形 搭建名片管理系统框架结构 准备文件,确定文件名,保证能够在需要的位置编写代码 编写主运行循环,实现基本的用户输入和判断 文件准备 新建cards_main.py保存主程序功能代码 程序的入口 每一次启动名片管理系统都通过main这个文件启动 新建cards_tools.py保存所有名片功能函数 将对名片的新增,查询,修改,删除

名片管理系统,运行问题

变量 流程控制 函数 模块 系统需求 程序启动,显示名片管理系统欢迎界面,并显示功能菜单 ************************************************** 欢迎使用[名片管理系统]V1.0 1. 新建名片 2. 显示全部 3. 查询名片 0. 退出系统 ************************************************** 用户用数字选择不同的功能 根据功能选择,执行不同的功能 用户名片需要记录用户的 姓名.电话.QQ.邮件 如果

Python-列表嵌套字典-名片管理系统(适合刚学习完字典和列表的同学练手)

why?我要写这个程序.这个程序是在复习字典的使用并且配合前面复习过的列表来写的一个程序.实现一个名片的管理! 什么时候用列表什么时候用字典呢?面对这个问题我的想法是,当你存取的数据类型都是一样的时候,使用列表,当你存取的数据类型不一样时就用字典.这里说明一下数据类型不一样不是指整形或者字符型 举个例子:如果你需要存很多人的姓名,仅仅这一个属性,就用列表来进行处理,当你要存取不仅仅是人名,包括年龄,性别,国籍等等这些信息时,这时候用字典是最合适的. 在编写这个程序时,首先考虑2个问题: 1.列表

Python基础(7)——名片管理系统(实现了数据简单的存储、修改、删除、查看等)

进行了一些Python基础知识的学习后,将这些知识进行综合,实现了名片管理小系统,可以进行数据的增删改查. 主要思路是将名片(信息)存进字典里,再将字典存入列表里,方便进行增删改查. 代码如下: 1 #-*-encoding:utf-8-*- 2 #用来存储名片 3 card_infors = [] # 空的列表 4 5 def print_menu(): 6 #完成打印功能菜单 7 print("="*50) 8 print(" 名片管理系统 V0.01") 9