Python练习(六)

    科技2022-07-13  131

    将练习4的学生管理系统,添加文件存储的功能。 要求如下:

    要求记录学生的学号、姓名、年龄、所属班级信息。可以新增学生。可以列出所有学生。可以根据学号查找学生。需要使用函数来模块化。要求使用文件来存储信息,下次打开系统,数据依然存在。

    将第四天的学生管理系统,添加文件存储的功能。要求如下:

    要求记录学生的学号、姓名、年龄、所属班级信息。

    可以新增学生。

    可以列出所有学生。

    可以根据学号查找学生。

    需要使用函数来模块化。

    要求使用文件来存储信息,下次打开系统,数据依然存在。

    import os import json #读写文件 def Rfile(): fp = open("test.txt","r",encoding='utf-8') data = fp.read() if data == "" : fp.close() return {} fp.close() return json.loads(data) def Wfile(data): fp = open("test.txt", "w", encoding='utf-8') fp.write(json.dumps(data)) fp.close() #(1)输入数据 def InputStuData() : name = input("请输入学生名称:") age = input("请输入学生年龄:") classname = input("请输入学生所属班级:") dataall = Rfile() if len(dataall) > 0 : for value in dataall.values(): if value["name"] == name: return False, "name 不能重复" return True,{"name": name, "age": age, "classname": classname} #(2)查询 def select() : print("=" * 20) id = input("请输入学生StuId(为0则获取全部):") dataall = Rfile() if id == "0": print("=" * 20) if len(dataall) == 0: print("暂时无数据") else : print(dataall) else: ok = dataall.get(id, False) # 确认该id的学生是否在存储列表中 不存在就跳过并且打印 if ok == False: print("{} 不存在".format(id)) else: print(ok) #(3)获取id def GetId() : print("=" * 20) id = input("请输入学生StuId:") dataall = Rfile() ok = dataall.get(id, False) if ok == False : return 0 else: return id,ok #(4)确认 def confirm() : verification = input("请确认是否继续(Y/N):") if verification == "Y" or verification == "y": return True else: return False # #(5)添加 def add() : global ikey print("=" * 20) ok, studata = InputStuData() if ok: ikey =ikey + 1 dataall = Rfile() dataall[ikey] = studata Wfile(dataall) print("id为{}的学员添加成功".format(ikey)) else: print(studata) #(6)更新 def update() : id, data = GetId() if id == 0: print("此id不存在") else: ok, studata = InputStuData() if ok: print("=" * 20) print("old", data) print("new", studata) print("=" * 20) t = confirm() if t: dataall = Rfile() dataall[id] = studata Wfile(dataall) print("更新成功") else: print("取消更新") else: print("name 重复") #(7)删除 def delstu() : # 删除逻辑 print("=" * 20) id, ok = GetId() # 确认该id的学生是否在存储列表中 不存在就跳过并且打印 if id == 0: print(id, "不存在") else: # 存在的话开始打印该学生信息 并确认是否删除 以免误操作 print("学生信息为\n", ok) verification = confirm() if verification: dataall = Rfile() del dataall[id] Wfile(dataall) print("删除成功") else: print("取消删除") #(8)退出 def ExitProgram() : os._exit(0) # Option_list = {"1": add, "2": select, "3": update, "4": delstu, "5": ExitProgram} # dataall = Rfile() # if dataall == 0 : # ikey = 0 # else: # ikey = len(dataall) # while True: # interface = "学员管理系统\n1.添加学生\n2.查找学生\n3.更新学生信息\n4.删除学生\n5.退出系统\n请输入您的选择:" # num = input(interface) # f = Option_list.get(num,False) # if f == False: # print("输入有误请重新输入") # else: # f() def main(): Option_list = {"1": add, "2": select, "3": update, "4": delstu, "5": ExitProgram} dataall = Rfile() if dataall == 0: ikey = 0 else: ikey = len(dataall) while True: interface = "学员管理系统\n1.添加学生\n2.查找学生\n3.更新学生信息\n4.删除学生\n5.退出系统\n请输入您的选择:" num = input(interface) f = Option_list.get(num, False) if f == False: print("输入有误请重新输入") else: f() f = os.path.exists("test.txt") if not f : open("text.txt","w") main()
    Processed: 0.009, SQL: 8