重构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("\n", "")
                    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 + "\r")
                    f.write(key + "," + value + "\r")

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)

 

posted @ 2021-06-15 14:15  香菜哥哥  阅读(48)  评论(0编辑  收藏  举报