案例:python中实现51备忘录

发布时间:2019-09-08 09:11:38编辑:auto阅读(1721)

    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备忘录---------------------
    1:Add
    2:Dele
    3:Modify
    4:Query
    5:Save
    6:Load
    请选择你的操作选项 (示例 1):1
    name:马云
    thing:明天来广州
    date:2018
    项目1{'id': 1, 'name': '马云', 'thing': '明天来广州', 'date': '2018'}
    增加成功
    --------------------欢迎使用51备忘录---------------------
    1:Add
    2:Dele
    3:Modify
    4:Query
    5:Save
    6:Load
    请选择你的操作选项 (示例 1):1
    name:高圆圆
    thing:明天来武汉
    date:2018
    项目1{'id': 1, 'name': '马云', 'thing': '明天来广州', 'date': '2018'}
    项目2{'id': 2, 'name': '高圆圆', 'thing': '明天来武汉', 'date': '2018'}
    增加成功
    --------------------欢迎使用51备忘录---------------------
    1:Add
    2:Dele
    3:Modify
    4:Query
    5:Save
    6:Load
    请选择你的操作选项 (示例 1):2
    请选择你将要删除的记录(示例 1或者2或者3 ):1
    删除成功
    项目1{'id': 2, 'name': '高圆圆', 'thing': '明天来武汉', 'date': '2018'}
    --------------------欢迎使用51备忘录---------------------
    1:Add
    2:Dele
    3:Modify
    4:Query
    5:Save
    6: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备忘录---------------------
    1:Add
    2:Dele
    3:Modify
    4:Query
    5:Save
    6:Load
    请选择你的操作选项 (示例 1):5
    保存成功
    --------------------欢迎使用51备忘录---------------------
    1:Add
    2:Dele
    3:Modify
    4:Query
    5:Save
    6:Load
    请选择你的操作选项 (示例 1):6
    [{'id': 2, 'name': '高圆圆', 'thing': '明天来武汉', 'date': '2018/4/1'}]
    下载成功
    --------------------欢迎使用51备忘录---------------------
    1:Add
    2:Dele
    3:Modify
    4:Query
    5:Save
    6:Load
    请选择你的操作选项 (示例 1):9
    结束

关键字