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 4 名片管理系统 -函数版
修改没有用函数的程序 具有独立功能的代码块 源程序 #1.打印功能信息 print("*"*50) print("\t名片管理系统 V3\t") print(& ...
- python3实现名片管理系统(文件版)
def menu(): #首先定义功能列表函数menu() print(" 名片管理系统 V1.0 ") print("1:增加新用户") print(&quo ...
- python案例:实现一个函数版的名片管理系统
本案例使用了自定义函数以及对字符串的常见操作.判断语句和循环语句等知识. 要求 必须使用自定义函数,完成对程序的模块化. 名片信息至少包括:姓名.电话.住址. 必须完成的功能:增.删.改.查.退出. ...
- Python基础综合运用——搭建名片管理系统
综合应用 —— 名片管理系统 目标 综合应用已经学习过的知识点: 变量 流程控制 函数 模块 开发 名片管理系统 系统需求 程序启动,显示名片管理系统欢迎界面,并显示功能菜单 ************ ...
- python基础提高演练(名片管理系统的开发)
综合应用 —— 名片管理系统 目标 综合应用已经学习过的知识点: 变量 流程控制 函数 模块 开发 名片管理系统 系统需求 1. 程序启动,显示名片管理系统欢迎界面,并显示功能菜单 ********* ...
- 蓝点通用管理系统V13版发布了!
蓝点通用管理系统13版已发布! 重磅新功能:系统的通知和提醒功能,增加微信方式,微信通知.微信查询数据.微信拍照上传....... 蓝点的客户管理系统.进销存管理系统.产品管理系统.工作流管理系统.投 ...
- python名片管理系统V2
主程序: #! /usr/bin env python3 # -*- coding: utf-8 -*- # 项目三: # 1.要求:编写一个名片管理系统,功能如下: # 用户输入相对应的指令,实现对 ...
- Python-控制台实现简单的名片管理系统
通过Python开发一个基于控制台的名片管理系统,具体看下图以及相关代码. cards_main.py文件中提供程序的入口 import cards_toolslx while True: # TOD ...
- day7 地址 名片管理系统
1 无限循环 (while True) break 退出 人为设计的 ,并且有退除的出口 死循环 bug 错误 2.引用 数字型
随机推荐
- 笔记,记事软件(RedbookNote, lifeopraph)
许多人重视记日记是因为它是一种以天为基础保存个人或商务信息的良好方式:持续跟踪每天的生活和思想上的点点滴滴,组织和巩固记忆.思考.商业交易.电子邮件.账单.未来计划.联系人列表,甚至是秘密信息.Lin ...
- c++ auto_ptr超简易版实现
namespace wang{ template<class T> class shared_ptr{ public: explicit shared_ptr(T *p) : count( ...
- JavaScript的DOM_获取和操作层次节点
一.层次节点的概述 节点的层次结构可以划分为:父节点与子节点.兄弟节点这两种.当我们获取其中一个元素节点的时候,就可以使用层次节点属性来获取它相关层次的节点. 二.childNodes 属性 chil ...
- hdu-2619 Love you Ten thousand years
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2619 题目大意: 求出小于n的数的个数,满足ki mod n,1≤i≤n是模n的完全剩余系 解题思路 ...
- HDU 5724 Chess(SG函数)
Chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ...
- 【C++】随机重命名MP3文件
新置MP3一件,竟然没有随机播放的功能.坑啊!身为程序媛一枚,自己动手吧~ 获取当前路径: char buf[1000]; GetCurrentDirectory(1000,buf); string ...
- Yii中POS和GET并用范例
页面 <?php $form=$this->beginWidget('CActiveForm', array( 'id'=>'add-form', 'enableAjaxValida ...
- BZOJ1797:[AHOI2009]最小割(最小割)
Description A,B两个国家正在交战,其中A国的物资运输网中有N个中转站,M条单向道路.设其中第i (1≤i≤M)条道路连接了vi,ui两个中转站,那么中转站vi可以通过该道路到达ui中转站 ...
- [转]表单提交:button input submit 的区别
博客转自于 http://harttle.com/2015/08/03/form-submit.html ,同时自己做了稍微改动 最近项目代码中的表单提交的方式已经百花齐放了,现在用这篇文章来整 ...
- IE下内容居中
ie8下调了很长时间的居中问题,加一个body {text-align:center;},居然解决了.. 参考解决答案:*html * {margin:0px; padding:0;} 然后在盒子里b ...