重构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)