python第四次周末大作业
''' 选课系统开发 系统登录需要有两类用户:学生、管理员,针对不用用户提供不同功能: 学生用户 :对于学生用户来说,登陆之后有三个功能 1、查看所有课程 2、选择课程 3、查看所选课程 4、删除已选课程 管理员用户:管理员用户除了可以做一些查看功能之外,还有很多创建工作。 1、创建课程 2、创建学生学生账号 3、查看所有课程 4、查看所有学生 5、查看所有学生的选课情况 ''' import os class Student: def __init__(self, login_name, login_pwd, sname, cour_lst=None): self.login_name = login_name self.login_pwd = login_pwd self.sname = sname self.cour_lst = [] if cour_lst==None else cour_lst @staticmethod def display_all_student(): f = open("stu", mode="r", encoding="utf-8") i = 1 for line in f: d = eval(line.strip()) print(i, d['sname'], d['login_name']) i += 1 f.close() def xuanke(self): # self是当前登录的学生 while 1: # 显示所有课程 Course.display_all_course() num = int(input("请输入你要选择的课程:")) # 3 f = open("cour", mode="r", encoding="utf-8") for i in range(num): line = f.readline() if line.strip() in self.cour_lst: # 选过这个课 print("你已经选过当前这门课了") else: # 没选过这个课 self.cour_lst.append(line.strip()) self.write_to_file() # 把学生信息同步到文件中 print("选课成功") f.close() y = input("是否继续选课(Y/N)") if y.upper() != "Y": return def shanchu(self): for i in range(len(self.cour_lst)): print(i+1, self.cour_lst[i]) num = int(input("请输入你要删除的课程")) self.cour_lst.pop(num-1) self.write_to_file() print("删除成功!!!") def write_to_file(self): with open("stu", mode="r", encoding="utf-8") as f1, \ open("stu_副本", mode="w", encoding="utf-8") as f2: for line in f1: d = eval(line.strip()) if d['login_name'] == self.login_name and d['login_pwd'] == self.login_pwd: f2.write(str(self.__dict__) + "\n") else: f2.write(line) os.remove("stu") os.rename("stu_副本", "stu") class Course: def __init__(self, cname): self.cname = cname @staticmethod # def display_all_course(): f = open("cour", mode="r", encoding="utf-8") i = 1 for line in f: print(i, line.strip()) i += 1 f.close() # 让整个程序跑起来 class Client: def __init__(self): self.stu = None # 记录登录的学生状态 def admin_client(self): # 管理员 while 1: menu = ("创建学生", "创建课程", "查看所有课程", "查看所有学生", "查看所有学生的选课情况", "退出") for i in range(len(menu)): print(i+1, menu[i]) num = input("请输入你要执行的菜单:") if num == "1": sname = input("请输入学生的姓名:") login_name = input("请输入学生的登录名:") login_pwd = input("请输入学生的登录密码:") stu = Student(login_name, login_pwd, sname) # 把学生对象中的内容写入到文件中 f = open("stu", mode="a", encoding="utf-8") f.write(str(stu.__dict__)+"\n") f.flush() f.close() elif num == "2": cname = input("请输入你的课程名称:") f = open("cour", mode="a", encoding="utf-8") f.write(cname+"\n") f.flush() f.close() elif num == "3": Course.display_all_course() # 查看所有课程 elif num == "4": Student.display_all_student() # 查看所有学生 elif num == "5": f = open("stu", mode="r", encoding="utf-8") for line in f: d = eval(line.strip()) print(d['sname'], d["cour_lst"]) f.close() elif num == "6": print("=========管理员退出==============") return # exit() else: print("输入有误. 请重新选择菜单") def stu_client(self): while self.stu == None: # 用学生的登录状态来判断程序的走向 uname = input("请输入学生用户名:") upwd = input("请输入学生的密码:") f = open("stu", mode="r", encoding="utf-8") for line in f: # {'login_name': 'baby', 'login_pwd': '123456', 'sname': '宝宝', 'cour_lst': []} d = eval(line.strip()) if d['login_name'] == uname and d['login_pwd'] == upwd: print("登录成功!") # 灵魂 self.stu = Student(d['login_name'], d['login_pwd'], d['sname'], d['cour_lst']) break else: print("登录失败") f.close() while 1: menu = ("查看所有课程", "选课", "查看已选的课程", "删除已选课程", "退出") for i in range(len(menu)): print(i+1, menu[i]) num = input("请输入你要执行的菜单:") if num == "1": Course.display_all_course() elif num == "2": self.stu.xuanke() # 实例方法 elif num == "3": for c in self.stu.cour_lst: print(c) elif num == "4": self.stu.shanchu() elif num =='5': print("退出!!!!!") ################################### self.stu = None # 课上忘了写 ################################### return def run(self): while 1: print("=========欢迎进入学生选课系统=============") print("=========1. 管理员=======================") print("=========2. 学生=========================") num = input("请问, 你是管理员(1)还是学生(2):") if num == "1": self.admin_client() elif num == "2": self.stu_client() else: print("您输入的内容有误. 请重新输入") c = Client() c.run()
不怕大牛比自己牛,就怕大牛比自己更努力