1. 添加 Memo 类, 至少包含 id,name,thing,date 四个属性, date 可以暂时使用字符串表示, 比如'1.2','3.8', 暂时不用考虑时间相关模块
2.id 属性为只读, 其他属性可读写
3. 添加 MemoAdmin 类, 作为主体程序, 管理 Memo 类构成的列表, 进行 Memo 的增删改查 (相应方法为 add, del, modify, query), 处理输入输出.
4. 所有 Memo 记录使用 pickle 进行读写, 数据文件为 db.pkl, 读写方法为 save 和 load
5. 各个类中的每个方法必须添加说明 doc-string(即 def 下一行加一句注释),
- #!/user/bin/env Python
- # _*_ coding:utf-8 _*_
- # 51memo.py
- # author: 大宝 dayday 见
- import pickle
- class Memo:
- def __init__(self,name,thing,date):
- self._id = 0
- self.name = name
- self.thing = thing
- self.date = date
- def talk(self):
- self._id += 1
- self.name = input('name:')
- self.thing = input('thing:')
- self.date = input('date:')
- one = {'id':self.id,'name':self.name,'thing':self.thing,'date':self.date}
- R.add(one)
- @property
- def id(self): # 只读
- return self._id
- class MemoAdmin:
- """管理记录"""
- def __init__(self,memo_list,dir): # 初始化数据
- self.dir = dir
- self.memo_list = memo_list
- def welcome(self):
- print('欢迎使用 51 备忘录'.center(50,'-'))
- for k,v in self.dir.items():
- print(f'{k}:{v}') # 打印选择选项
- select = input('请选择你的操作选项 (示例 1):')
- return select
- def add(self,one): # 增加方法
- self.memo_list.append(one)
- R.query()
- print('增加成功')
- def dele(self): # 删除方法
- temp = input('请选择你将要删除的记录 (示例 1 或者 2 或者 3 ):')
- self.memo_list.pop(int(temp)-1)
- print('删除成功')
- R.query()
- def modify(self): # 修改方法
- temp1 = input('请输入你要修改的记录 (示例 1 或者 2 或者 3):')
- temp2 = input(f'你要修改的记录是 {self.memo_list[int(temp1)-1]}, 请输入要修改的值 (示例: name:zhangsan):')
- temp3 = temp2.split(':')
- self.memo_list[int(temp1)-1][temp3[0]] = temp3[1] # 列表中找出嵌套的字典 key 和 value
- print('修改成功')
- R.query()
- def save(self): # 数据保存在文件内
- with open('db.pkl','wb') as f:
- f.write(pickle.dumps(memo_list))
- print('保存成功')
- def load(self): # 下载文件
- with open('db.pkl','rb') as f:
- data = pickle.loads(f.read())
- print(data)
- print('下载成功')
- def query(self): # 查询所有数据
- i = 0
- for k in memo_list:
- i += 1
- print(f'项目 {i}{k}')
- memo_list = []
- dir = {'1':'Add',
- '2':'Dele',
- '3':'Modify',
- '4':'Query',
- '5':'Save',
- '6':'Load'
- }
- L = Memo('周杰伦','明天来广州','2018')
- R = MemoAdmin(memo_list,dir)
- while True:
- t = R.welcome()
- if t == '1':
- L.talk()
- elif t == '2':
- R.dele()
- elif t == '3':
- R.modify()
- elif t == '4':
- R.query()
- elif t == '5':
- R.save()
- elif t == '6':
- R.load()
- else:
- print('结束')
- break
-------------------- 欢迎使用 51 备忘录 ---------------------
- Add
- Dele
- Modify
- Query
- Save
- Load
请选择你的操作选项 (示例 1):1
name: 马云
thing: 明天来广州
date:2018
项目 1{'id': 1, 'name': '马云', 'thing': '明天来广州', 'date': '2018'}
增加成功
-------------------- 欢迎使用 51 备忘录 ---------------------
- Add
- Dele
- Modify
- Query
- Save
- Load
请选择你的操作选项 (示例 1):1
name: 高圆圆
thing: 明天来武汉
date:2018
项目 1{'id': 1, 'name': '马云', 'thing': '明天来广州', 'date': '2018'}
项目 2{'id': 2, 'name': '高圆圆', 'thing': '明天来武汉', 'date': '2018'}
增加成功
-------------------- 欢迎使用 51 备忘录 ---------------------
- Add
- Dele
- Modify
- Query
- Save
- Load
请选择你的操作选项 (示例 1):2
请选择你将要删除的记录 (示例 1 或者 2 或者 3 ):1
删除成功
项目 1{'id': 2, 'name': '高圆圆', 'thing': '明天来武汉', 'date': '2018'}
-------------------- 欢迎使用 51 备忘录 ---------------------
- Add
- Dele
- Modify
- Query
- Save
- Load
请选择你的操作选项 (示例 1):3
请输入你要修改的记录 (示例 1 或者 2 或者 3):1
你要修改的记录是 {'id': 2, 'name': '高圆圆', 'thing': '明天来武汉', 'date': '2018'}, 请输入要修改的值 (示例: name:zhangsan):date:2018/4/1
修改成功
项目 1{'id': 2, 'name': '高圆圆', 'thing': '明天来武汉', 'date': '2018/4/1'}
-------------------- 欢迎使用 51 备忘录 ---------------------
- Add
- Dele
- Modify
- Query
- Save
- Load
请选择你的操作选项 (示例 1):5
保存成功
-------------------- 欢迎使用 51 备忘录 ---------------------
- Add
- Dele
- Modify
- Query
- Save
- Load
请选择你的操作选项 (示例 1):6
[{'id': 2, 'name': '高圆圆', 'thing': '明天来武汉', 'date': '2018/4/1'}]
下载成功
-------------------- 欢迎使用 51 备忘录 ---------------------
- Add
- Dele
- Modify
- Query
- Save
- Load
请选择你的操作选项 (示例 1):9
结束
来源: http://www.bubuko.com/infodetail-2638598.html