zoukankan      html  css  js  c++  java
  • 重构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)
  • 相关阅读:
    前端之CSS:属性操作2
    前端之CSS:属性操作1
    前端之CSS:CSS选择器
    前端之HTML:表单操作
    前端之HTML:HTML
    SQLAlchemy的使用(SQLAlchemy 是一种对象关系映射模型(Object Relational Mapper), 简称ORM。)
    IO多路复用
    协程
    线程的那些事儿
    并发编程的那些事儿(四)
  • 原文地址:https://www.cnblogs.com/yizhipanghu/p/14885280.html
Copyright © 2011-2022 走看看