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 名片管理系统-文件版的更多相关文章

  1. day 4 名片管理系统 -函数版

    修改没有用函数的程序 具有独立功能的代码块 源程序 #1.打印功能信息 print("*"*50) print("\t名片管理系统 V3\t") print(& ...

  2. python3实现名片管理系统(文件版)

    def menu(): #首先定义功能列表函数menu() print(" 名片管理系统 V1.0 ") print("1:增加新用户") print(&quo ...

  3. python案例:实现一个函数版的名片管理系统

    本案例使用了自定义函数以及对字符串的常见操作.判断语句和循环语句等知识. 要求 必须使用自定义函数,完成对程序的模块化. 名片信息至少包括:姓名.电话.住址. 必须完成的功能:增.删.改.查.退出. ...

  4. Python基础综合运用——搭建名片管理系统

    综合应用 —— 名片管理系统 目标 综合应用已经学习过的知识点: 变量 流程控制 函数 模块 开发 名片管理系统 系统需求 程序启动,显示名片管理系统欢迎界面,并显示功能菜单 ************ ...

  5. python基础提高演练(名片管理系统的开发)

    综合应用 —— 名片管理系统 目标 综合应用已经学习过的知识点: 变量 流程控制 函数 模块 开发 名片管理系统 系统需求 1. 程序启动,显示名片管理系统欢迎界面,并显示功能菜单 ********* ...

  6. 蓝点通用管理系统V13版发布了!

    蓝点通用管理系统13版已发布! 重磅新功能:系统的通知和提醒功能,增加微信方式,微信通知.微信查询数据.微信拍照上传....... 蓝点的客户管理系统.进销存管理系统.产品管理系统.工作流管理系统.投 ...

  7. python名片管理系统V2

    主程序: #! /usr/bin env python3 # -*- coding: utf-8 -*- # 项目三: # 1.要求:编写一个名片管理系统,功能如下: # 用户输入相对应的指令,实现对 ...

  8. Python-控制台实现简单的名片管理系统

    通过Python开发一个基于控制台的名片管理系统,具体看下图以及相关代码. cards_main.py文件中提供程序的入口 import cards_toolslx while True: # TOD ...

  9. day7 地址 名片管理系统

    1 无限循环  (while  True)   break 退出     人为设计的 ,并且有退除的出口      死循环 bug  错误 2.引用   数字型

随机推荐

  1. Promise里捕捉错误的最佳实践

    Promise里的同步部分不需要try catch new Promise((resolve, reject) => { throw new Error('error'); setTimeout ...

  2. Windows Server 2012/2012 R2:安装和配置 SMTP 服务器

    Windows Server 2012/2012 R2:安装和配置 SMTP 服务器 安装 SMTP 服务器 以下是安装 SMTP 服务器功能的步骤: 打开“服务器管理器”:单击键盘上的 Window ...

  3. Mysql分表和分区的区别、分库分表介绍与区别(转)

    分表和分区的区别: 一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看:mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这 ...

  4. 【[ZJOI2006]物流运输】

    一直不会做,觉得这是一道神题 于是万般无奈下去借鉴抄了一下题解 发现这就是一道套路题 我们用\(dp[i]\)表示前\(i\)天的最小总花费,于是我们就可以用一个常规的老套路来做了 那就是枚举断点 我 ...

  5. c#用链表来存储并读取写好的配置文件

    别用arraylist,效果没有list好(因为要装箱拆箱,所以会影响性能) 使用list,那我们就来先声明一个List 1) 声明 List<元素类型> myList = new Lis ...

  6. 二十八、详述 IntelliJ IDEA 远程调试 Tomcat 的方法

    在调试代码的过程中,为了更好的定位及解决问题,有时候需要我们使用远程调试的方法.在本文中,就让我们一起来看看,如何利用 IntelliJ IDEA 进行远程 Tomcat 的调试. 首先,配置remo ...

  7. 在ASP.NET Core中怎么使用HttpContext.Current (转载)

    一.前言 我们都知道,ASP.NET Core作为最新的框架,在MVC5和ASP.NET WebForm的基础上做了大量的重构.如果我们想使用以前版本中的HttpContext.Current的话,目 ...

  8. [译]React如何区别class和function

    原文 How Does React Tell a Class from a Function? 译注: 一分钟概览-- React最后采用了在React.Component上加入isReactComp ...

  9. 二、Shiro 认证开发

    I.java开发 环境准备 <dependencies> <dependency> <groupId>junit</groupId> <artif ...

  10. mount/umount命令

    挂载及卸载指定的文件系统 mount [选项] [-L<标签>] [-o<选项>] [-t<文件系统类型>] [设备名] [挂载点] umount [挂载点] -a ...