• 重构1


    #代码改进,使用字典代替if方法

    #----------------------------------------------
    # 3.开发一个注册系统,
    # 页面:
    # [{name:xxx,age:xxx},xxx]
    # ----------------
    # *   1-新增用户
    # *   2-查询用户
    # *   3-删除用户
    # ----------------
    # 功能1:新增学生信息(姓名和年龄)通过键盘,如果学生已经存在提示用户已存在
    # 功能2:查询学生信息
    # 功能3:删除学生信息
    
    print("[{name:xxx,age:xxx},xxx]")
    print("----------------")
    print("*   1-新增用户")
    print("*   2-查询用户")
    print("*   3-删除用户")
    print("*   4-退出")
    print("----------------")
    
    #数据持久化保存
    class SaveData():
    
        def ReadTxt(self):
            with open('data.txt', 'a+') as f:
                li_user = []
                f.seek(0)
                li1 = f.readlines()
                if len(li1) == 0:
                    return li_user
                else:
                    dict1 = {}
                    for i in li1:
                        i = i.replace("
    ", "")
                        i = i.split(',')
                        dict1[i[0]] = i[1]
                        li_user.append(dict1)
                        dict1 = {}
                    return li_user
    
        def WriteTxt(self,li_user):
            with open('data.txt','w+') as f:
                for i in range(len(li_user)):
                    for key,value in li_user[i].items():
                        # print(key + "," + value + "
    ")
                        f.write(key + "," + value + "
    ")
    
    class ZhuCe():
        #读取txt后,所有的增删改都在此列表中进行,所以可以实时进行
        li_user = SaveData().ReadTxt()
        # print(li_user)
    
        ##通过传入的字符来判断输入有没有问题
        def AssertType(self):
            inp = input("请选择需要进行的操作:")
            while inp.isdigit():
                inp = int(inp)
                # return ZhuCe().AssertInput(inp)
                print("xxxxx:",inp)
                return ZhuCe().AsssertInput1(inp)
            print("输入有误,请重新输入:")
            return ZhuCe().AssertType()
    
        #通过传入的数字来调用对应得方法
        def AsssertInput1(self,inp):
            seleopt = {1: ZhuCe().UserAdd, 2: ZhuCe().UserSelect, 3: ZhuCe().UserDelete, 4: ZhuCe().UserExit}
            # return seleopt.get(inp,ZhuCe().invalid_op)()
            # chosen_opt = seleopt.get(chosen_operation, ZhuCe().invalid_op)()
            # return schosen_opt(inp)
            return seleopt.get(inp, ZhuCe().invalid_op)()
    
        #新增用户方法
        def UserAdd(self):
            dict1 = {}
            inp1 = input("请输入新增学生的姓名name:")
            for i in self.li_user:
                if inp1 in i.keys():
                    print("该学生已存在")
                    return ZhuCe().AssertType()
            inp2 = input("请输入新增学生的年龄age:") #未校验
            dict1[inp1] = inp2
            self.li_user.append(dict1)
            SaveData().WriteTxt(self.li_user)
            return ZhuCe().AssertType()
    
        #查询用户方法
        def UserSelect(self):
            inp1 = input("请输入查询的学生姓名name:")
            for i in self.li_user:
                if inp1 in i.keys():
                    print(inp1,"同学的年龄age为:",i[inp1])
                    return ZhuCe().AssertType()
            print("查无此人!")
            return ZhuCe().AssertType()
    
        #删除用户方法
        def UserDelete(self):
            inp1 = input("请输入需要删除的学生姓名name:")
            for i in range(len(self.li_user)):
                user_dict = self.li_user[i]
                if inp1 in user_dict.keys():
                    self.li_user.pop(i)
                    print(self.li_user)
                    SaveData().WriteTxt(self.li_user)
                    return ZhuCe().AssertType()
            print("查无此人!")
            return ZhuCe().AssertType()
    
        #新增退出方法
        def UserExit(self):
            print("已退出")
            return
    
        #新增其他输入判断方法
        def invalid_op(num):
            print("非法输入!")
            return ZhuCe().AssertType()
    
    a = ZhuCe().AssertType()
    # print(li_user)
  • 相关阅读:
    js:delete 操作符
    ActiveReports 代码控制报表连续打印
    ActiveReports 打印条码无法设置纸张大小?
    《JavaScript高级程序设计》读书笔记之一:几个与原始类型等价的引用类型的常用方法和属性
    js:字符串类型快速转化成数字类型和数字类型快速转化为字符串类型
    js:for...in 语句(JavaScript For...In Statement)
    Internet Explorer Developer Toolbar
    javascript 定义对象的方法
    关于 输入框输入一定数以后跳转的问题
    javascript 关于弹出关闭的例子
  • 原文地址:https://www.cnblogs.com/yizhipanghu/p/14885280.html
Copyright © 2020-2023  润新知