选课系统:
角色:学校、学员、课程、讲师
要求:
1. 创建北京、上海 2 所学校
2. 创建linux , python , go 3个课程 , linuxpy 在北京开, go 在上海开
3. 课程包含,周期,价格,通过学校创建课程
4. 通过学校创建班级, 班级关联课程、讲师
5. 创建学员时,选择学校,关联班级
5. 创建讲师角色时要关联学校,
6. 提供两个角色接口
6.1 学员视图, 可以注册, 交学费, 选择班级,
6.2 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩
6.3 管理视图,创建讲师, 创建班级,创建课程
7. 上面的操作产生的数据都通过pickle序列化保存到文件里
readme:
功能:1.学生入口
2.讲师入口
3.管理入口
学生入口:1.选择班级
2.选择课程
3.交学费
4.查看成绩
讲师入口:1.查看班级
查看班级:a.查看班级成员
b.修改学员成绩
2.管理班级:a.加入班级
b.退出班级
管理入口:1.创建讲师
2.创建班级
3.创建课程
结构:Subject:bin ---enter.py ...程序入口,执行此文件进入程序
core ---main.py ...创建模板类和方法
---admin_enter.py ...管理员入口
---student_enter.py ...学生入口
---teacher_enter.py ...讲师入口
---test.py ...查看所有文件信息里的值
conf ---data.py ...数据读写的方法
---school.info 学校信息数据文件,存储格式:{school_name:{"address": str, "city": str}}
---student.info 学生信息数据文件,存储格式:{school_name:
{student_name:
{"pwd":self.pwd,"age": self.age, "sex": self.sex,"score":{"语文":90,"数学":80},"course": [], "classes": None,"fee_sign":0}}}
未做加入考试成绩功能,所有在创建学生的时候默认给予成绩"score":{"语文":90,"数学":80},"fee_sign":0为缴费标志,0为未交费,1为已缴费
---teacher.info 老师信息数据文件,存储格式:{school_name:
{teacher_name:
{"pwd":self.pwd,"age": self.age, "sex": self.sex,"course": [], "classes": []}}}
---classes.info 班级信息数据文件,存储格式:{school_name:
{classes_name:
{"teacher":[],"student":[],"course":[]}}}
---course.info 课程信息数据文件,存储格式:{school_name:
{course_name:
{"cycle": cycle, "price": price,"teacher": [], "student": [], "classes": []}}}
使用方法:
1.先执行enter.py进入登录界面
2.选择管理,先创建讲师或者课程,再创建班级,因为在创建班级时默认需要加入讲师和课程
3.进入学生接口注册学生,注册后登录选择加入班级和课程,班级只会加入一个,第二次加入会替换第一次,课程可以加入多个。加入课程后可以交费。
4.进入讲师入口
问题:
班级创建时添加课程和老师,只能添加一个,添加多个老师需进入讲师入口添加班级,添加多个课程功能未实现。
学生添加一个课程后完成缴费,再添加一个课程再缴费会提示学费已结清。
流程图:
代码:
bin:
入口:enter.py
#!/usr/bin/env python # -*-coding:utf-8-*- # _author_=zh import os import sys PATH=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0,PATH) import core import conf #存学校的内存对象 school_list=[] school_bj=core.main.School("北京学校","五里屯","北京") school_sh=core.main.School("上海学校","黄浦江","上海") school_bj.get_school() school_sh.get_school() school_list.append(school_bj) school_list.append(school_sh) INPUT_DICT={"1":core.student_enter.student_enter, "2":core.teacher_enter.teacher_enter, "3":core.admin_enter.admin_enter} INFO='''