代码拉取完成,页面将自动刷新
角色: 学校、学员、课程、讲师、管理员 要求: 1. 创建北京、上海 2 所学校 ---> 管理员创建学校 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开 3. 课程包含,周期,价格,通过学校创建课程 4. 创建讲师 5. 创建学员时,选择学校,关联班级 5. 创建讲师 6. 提供两个角色接口 6.1 学员视图, 可以注册,选择课程(等同于选择班级) 6.2 讲师视图, 讲师可管理自己的课程, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩 6.3 管理视图,创建讲师, 创建班级,创建课程 7. 上面的操作产生的数据都通过pickle序列化保存到文件里 - pickle 可以帮我们保存对象 1、需求分析 (课程与班级合为一体) - 管理视图 - 1.注册 - 2.登录 - 3.创建学校 - 4.创建课程(先选择学校) - 5.创建讲师 - 学员视图 - 1.注册 - 2.登录功能 - 3.选择校区 - 4.选择课程(先选择校区,再选择校区中的某一门课程) - 学生选择课程,课程也选择学生 - 5.查看分数 - 讲师视图 - 1.登录 - 2.查看教授课程 - 3.选择教授课程 - 4.查看课程下学生 - 5.修改学生分数 2、程序的架构设计 - 三层架构 - 用户视图层 - 用于与用户进行交互的 - 小的逻辑判断,比如注册功能中两次密码是否一致的校验 - core - src.py 主视图 - admin.py admin_view - student.py student_view - teacher.py teacher_view - 逻辑接口层 - 核心业务逻辑的处理 - interface - admin_interface.py - student_interface.py - teacher_interface.py - 数据处理层 - 做数据的处理,比如数据的 增、删、查、改 - db - models.py - 用于存放所有类,管理所有的类 - Base: # 保存数据 - save(self): db_handler.save_data() @classmethod - select(cls, username): obj = db_handler.select_data(cls, username) return obj - Admin(Base) - __init__(self, admin_name, pwd): self.user = admin_name self.pwd = pwd # 管理员的创建学校方法 - create_school(): school_obj = School() school_obj.save() # 管理员的创建课程方法 - create_course(school_obj, course_name): course_obj = Course() course_obj.save() school_obj.course_list.append(course_name) # 管理员的创建老师方法 - create_teacher(self, teacher_name, teacher_pwd): tea_obj = Teacher(teacher_name, teacher_pwd) tea_obj.save() - School(Base): __init__(self, school_name, school_addr) self.user = school_name self.addr = school_addr self.course_list = [] - Course(Base): __init__(self, course_name): self.user = course_name self.student_list = [] - Teacher(Base): __init__(self, teacher_name, teacher_pwd): self.user = teacher_name self.pwd = teacher_pwd self.course_list_from_teacher = [] - db_handler.py - save_data(obj) 保存 对象 - 拼接文件夹,以类名当做文件夹管理文件 class_name = obj.__class__.__name__ - 再拼接文件,然后把对象通过pickle序列化到pickle文件中 - select_data(cls, username): - 拼接文件夹,以类名当做文件夹管理文件 class_name = cls.__name__ - 再拼接文件,然后把通过pickle反序列化得到pickle文件中的对象 - ATM + 购物车 - 存放 json格式的数据 - dict --> json - 选课系统(******) - pickle 保存对象 - object ---> pickle 3、分任务开发 4、测试 5、线上 选课系统总结: - 管理员 - 注册 1.用户在视图层输入用户名与密码,交给接口层 2.接口层调用数据层中的models.select进行校验。 3.若不存在则创建,并将注册成功返回给视图层。 - 登录 1.用户在视图层输入用户名与密码,交给接口层 2.接口层调用数据层中的models.select进行校验。 3.若存在则校验密码,并将登录成功返回给视图层。 - 创建学校 1.让用户输入学校名与学校地址 2.调用管理员创建学校接口 3.判断学校是否存在,若存在不让创建 4.若不存在,则调用接口层创建学校,获取管理员对象的创建学校方法保存学校 5.将结果返回给视图层。 - 创建课程 1.获取所有学校,并打印,让用户选择 2.获取用户选择的学校与 创建的课程,交给接收层 3.接口层调用 管理员对象中的 创建课程方法,保存课程对象。 4.课程需要绑定给学校对象,最终将创建成功的结果返回给视图层。 - 创建老师 1.让用户输入老师的名称 2.调用接口层,接口层中设置默认密码 123,调用数据层。 3.判断老师是否存在,不存在则调用 管理员对象中的 创建老师方法。 4.保存老师对象,并将结果返回视图层。 - 学生 - 注册 - 同上 - 登录 - 同上 - 选择学校 1.获取所有学校,让学生选择,将选择的学校传给接口层 2.接口层判断当前学生是否选择学校 3.若没有选择,则调用学生对象中的添加学校方法。 4.将添加后消息返回给视图层。 - 选择课程 1.先获取当前学生所在学校的所有课程,并选择 2.接口层将选择后课程,调用数据层的添加课程方法保存。 3.学生对象中课程列表添加该课程,设置课程分数默认为0。 4.最终将结果返回给视图层 - 查看成绩 1.直接调用接口层 2.接口层调用数据层中的查看成绩方法 3.返回成绩给视图层并打印。 - 老师 - 登录 - 同上 - 查看教授课程 1.直接调用接口层,获取老师对象下课程列表数据 2.若有则打印,没有则退出 - 选择教授课程 1.调用接口层中的选择教授课程接口,调用数据层中该课程下所有的学生返回给视图层 2.打印所有的课程,让老师选择,若老师课程中有该课程则不让添加。 3.没有,则调用 老师对象中的 添加课程方法进行添加。 - 查看课程下学生 1.直接获取老师对象下所有的课程,选择课程 2.从老师对象中,调用查看课程下学生方法,获取 课程对象下 所有的学生,返回给视图层 3.视图层打印 该课程下所有的学生。 - 修改学生分数 1.直接获取老师对象下所有的课程,选择课程 2.从老师对象中,调用查看课程下学生方法,获取 课程对象下 所有的学生,返回给视图层 3.视图层打印 该课程下所有的学生,并让用户选择需要修改分数的学生。 4.调用老师修改分数接口,获取老师对象,调用对象中的修改分数方法 5.获取学生对象中的 score_dict 分数字典,进行修改。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。