1、readme
作业名称:选课系统 测试环境:win7系统,python3.7.0,工具:pycharm-community-2018.1.4 题目:选课系统开发,要求有四种角色:学校、学员、课程、讲师 详细要求: 1、创建北京、上海 2 所学校 2、创建linux , python , go 3个课程 , linuxpy 在北京开, go 在上海开 #(管理员类创建课程、学校) 看大小什么属于什么 3、课程包含,周期,价格,通过学校创建课程 #(解读:管理员创建课程时通过学校类创建------继承方法) 4、通过学校创建班级, 班级关联课程、讲师 #(管理员创建班级时,继承学校类创建, 班级添加 课程、讲师属性) 5、创建学员时,选择学校,关联班级 # 创建学员,添加学校。为班级添加学员属性 6、创建讲师角色时要关联学校 # 创建讲师 ,为学校添加讲师属性 7、提供两个角色接口 8、为学员、讲师、管理员分别提供用户界面,并提供对应功能: (1) 学员视图, 可以注册, 交学费, 选择班级, (2) 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩 (3) 管理视图,创建讲师, 创建班级,创建课程 注1:上面的操作产生的数据都通过pickle序列化保存到文件里 注2:此作业必须画流程图,图中标注好不同类或对象之间的调用关系 说明:1、学生账号、讲师账号,统一由管理员 2、缺点本次作业只是完成了基本功能,忽略了唯一性:注册用户,添加课程等
3、没有实现学生注册,学生缴费功能----有待完善
后续需要提高改动:(1)把文件拆解开,不同模块间相互导入,(2)代码简化
#-----由管理员初始化学员、讲师、管理员三个账号-----
本次选课系统属于面向对象编程:
领域建模三字经:
1、找名词 # 学校、学员、课程、讲师、班级、成绩 (可看成一个类)
2、添加属性 # 为名词添加属性
3、找关系 # 找名词间的关系
学校:名称、地址、班级、课程、学员列表、讲师列表
班级:名称、课程、开班时间、讲师列表、列表
课程:名称、周期、价格,讲师列表
讲师:姓名、关联学校(学校把讲师当作一个属性,组合知识)
import sys,os,pickle BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(BASE_DIR) from conf import settings class School: def __init__(self,name,address): self.name = name self.address = address self.teacher = [] self.student = [] self.course = [] def show_class(self): with open(settings.path_class_info, 'rb+') as f: count = 0 while True: try: count += 1 class_obj = pickle.load(f) print(f"{count}班级信息:{class_obj.__dict__}") except EOFError: break def create_class(self): print('创建班级') name = input('class_name:').strip() course = input('course:').strip() time = input('class_time:').strip() period = input('class_period:').strip() class_teacher = input('class_teacher:').strip() class_obj = ForClass(name, course, time, period) class_obj.teacher.append(class_teacher) with open(settings.path_class_info, 'ab') as f: pickle.dump(class_obj, f) print(f"