煎熬周末之选课系统!!!!!
项目开端
选课系统锻炼对三层结构掌握情况 并拓展练习对各个模块运用情况,对比ATM项目虽然多了几个模块,但是并没有多出来很难理解的知识!最初听完比较懵,仔细梳理了之后,逻辑并没有很复杂!
项目功能
1.本项目总共15个功能 分为三个视图部分
管理员部分(注册、登录、创建学校、创建课程、创建老师)
讲师部分(登录、查看课程、选择课程、查看分数、修改分数)
学生部分(注册、登录、选择学校、选择课程、查看分数)
项目开始前的准备
1.软件开发目录必备知识
2.创建三个视图部分的视图功能列表和接口,多出一个module.py
3.日志的代码拷贝(因这个日志代码都是公共部分且有些繁琐,故直接拷贝拿来用即可)
4.各个功能编写时的各个类创建
5.第三层结构分为两部分module.py交互db_handler.py
6.有参装饰器 进行登录校验
讲师部分功能
1.注册和登录功能
和ATM类似 只是读取数据的函数变为类 先创建管理员类,管理员类包含数据的读取和写入 读取用到固定方法classmethod 需要多出拼接路径的操作, 因需要类名为文件夹保存数据:所以掌握 类名.__name__ = 字符串类名。数据加密
2.创建学校功能
第一层需要获取学校名字,地址,第二层进行学对象获取、校验是否存在、第三层创建学校类 学校类包含名字 地址 课程列表、并绑定给管理员类、因读取和保存数据的功能各个类都需要就把这两个功能摘取出来 单独创建一个类包含此两项功能,其他类来继承这两个公共功能,第二层通过学校类对象获取学校名校验 管理员类创建 并返回信息给第一层
3.创建课程功能
本功能需要在学校下进行 所以第一层先获取学校列表 获取学校列表接口连接第二层 第二层连接第三层创建一个获取公共列表的类功能 返回获取列表,第二层校验一下返回第一层 第一层选择学校和获取到的课程信息一起提交第二层进行学校课程创建、此时创建一个课程类 课程类包含课程名称,价格、周期、学生列表、讲师列表 并绑定给管理员类、然后第二层先校验学校类.课程列表是否包含此课程,再用管理员绑定的课程类功能创建 学校对象中课程列表添加,最后结果保存返回给第一层
4.创建讲师功能
讲师功能 第一层获取讲师姓名 第二层连接第三层创建讲师类 讲师类包含姓名和密码,密码可以用关键字参数代替、包含讲师课程列表 保存数据 在第二层进行数据处理 校验是否存在讲师,用管理员类绑定的创建讲师功能创建 返回第一层信息
学生部分
1.注册登录
此部分代码和管理员部分基本相似 主要在于创建学生类 学生姓名密码 学校可以先固定None 课程列表 分数字典 数据保存 绑定
2.选择学校
本功能需要先获取学校列表 和管理员创建课程前获取学校列表相似 然后选择学校 进行第二层数据处理 校验该学生是否已选择学校 没有的话就把该学校和学生类里的学校绑定、保存 数据返回第一层
3.选择课程
这一功能第二层稍微复杂 第一层先获取学校因一般学生都已选择了学校所以往第二层传学生名以获取学生选择该学校的课程列表 来到第二层 先用学生名字获取学校 获取学校课程列表传回第一层 选择课程 创建空列表添加、存储 退出时把列表传到第二层 根据课程比对远课程列表,根据学生名字把已有课程筛出,然后用分数字典索引课程等于没有课程成绩的方式,把课程和分数新增键值对的方式添加到学生分数字典里,处理完成后,把课程列表集合去重处理 保存,把该学生的课程列表遍历,拿到该课程对象,把学生名字添加到课程下的学生姓名列表中,保存。
4.查看分数
把学生名字传到第二层 获取学生对象 校验学生分数字典 有的话 对象点的方法查看
讲师部分
1.登录功能
此功能登陆 第一层传数据往第二层 第二层校验登录
2.查看课程
先获取学校列表 然后选择学校 传到第二层 学校对象点出来课程列表 传回第一层 打印 最后分割线 便于观察
3.选择课程
先获取课程列表 选择课程 添加临时列表 传到第二层 第二层先转集合去重再转列表,保存、再把列表进行遍历 课程类对象根据课程名称进行讲师名字添加 保存
4.查看分数
先获取讲师类里的课程列表,第二层返回 选择课程 第二层根据课程获取该课程对象下的学生列表 最后用字典生成式 获取学生名字 对应课程的学生成绩(学生成绩用学生名字,获取学生对象点分数字典的方式获取) 返回第一层
5.修改分数
获取讲师类下的课程列表 选择课程 第二层根据课程获取该课程对象下的学生名字列表 选择学生名 获取修改的分数 把课程、学生名、分数、讲师名传到第二层 第二层进行数据处理 学生名获取学生类 学生类点分数字典索引课程名 = 分数 修改分数键值对 进行保存 传信息回第一层