面向对象作业——校园选课系统
角色:
学校、学员、课程、讲师
要求:
1. 创建北京、上海 2 所学校
2. 创建linux , python , go 3个课程 , linuxpy 在北京开, go 在上海开
3. 课程包含,周期,价格
4. 班级关联课程、讲师
5. 创建学员时,选择学校,关联班级
6. 创建讲师角色时要关联学校
7. 提供三个角色视图
7.1 学员视图, 登陆, 查看课程、查看班级
7.2 讲师视图, 讲师可查看自己教学的班级、课程。
进阶需求:可管理自己的班级, 查看班级学员列表 , 修改所管理的学员的成绩
7.3 管理视图,创建讲师, 创建班级,创建课程
7. 上面的操作产生的数据都通过pickle序列化保存到文件里
一 、分析需求
创建北京、上海 2 所学校 分析:创建学校类
创建linux , python , go 3个课程 , linuxpy 在北京开, go 在上海开
分析:创建课程类,通过课程类去创建课程,并自动判断地点,当课程为go是地点为上海,为Linux或python时地点为北京
课程包含,周期,价格 分析:课程包含的周期、价格属性
班级关联课程、讲师 分析:可以创建班级的时候需输入关联的课程,创建讲师的时候需输入关联的班级;一个班级对应一个课程 一个班级对应一个讲师
创建学员时,选择学校,关联班级 分析:创建学员时需要输入所属的班级,并自动关联课程和学校
创建讲师角色时要关联学校 分析:创建教师时根据教师所教的课程自动关联学校
提供三个角色视图 分析:让用户可选择角色
7.1 学员视图, 登陆, 查看课程、查看班级 分析:学员角色可以有的功能
7.2 讲师视图, 讲师可查看自己教学的班级、课程。 分析:教师角色有的功能
进阶需求:可管理自己的班级, 查看班级学员列表 , 修改所管理的学员的成绩
7.3 管理视图,创建讲师, 创建班级,创建课程 分析:管理员有的功能
二、 readme(程序说明文件)
运行环境:python3.6
主程序为While 循环,先让用户选择角色,进入所需的角色后提示选择相应的功能
选择功能时必须先登录,如没有登录,则会跳转让用户登录
角色功能:
1 学生
(1)登录 (2)查看班级 (3)查看课程 (4)返回上层目录 (5)注销
2 教师
(1)登录 (2)查看所教的班级 (3)查看所教的课程 (4)查看班级学员 (5)返回上层目录 (6)注销
3 管理员
(1)登录 (2)创建学校 (3)创建班级 (4)创建讲师 (5)创建课程 (6)创建学员 (7)返回上层 (8)注销
程序说明:
1 函数initalize用来进行初始化,创建程序所需的文件
classinfo.txt 文件用来存放班级信息,
格式为:班级名=地点=课程=讲师
例如:s22=北京=python=taibai
courseinfo.txt 文件用来存课程信息
格式为:课程=周期=价格=地点
例如:python=6个月=9999=北京
managerinfo.txt 文件用来存管理员信息
格式为:用户名=密码
例如:admin=123
schoolinfo.txt 文件用来存学校信息
格式为:学校名=地点
例如:oldboy=北京
studentinfo.txt 文件用来存学生信息
格式为:姓名=密码=班级=课程
例如:abc=123=s22=python
teacherinfo.txt 用来存教师信息
格式为:姓名=密码=课程=所教班级=地点
例如:taibai=123=python=s22=北京
2 函数 myinput 用来进行输入,如果输入为空则重新输入
3 函数 login 用来进行登录,如果登录成则修改对应的状态信息,并记录用户名
4 学校类 School 有两个属性,学校地点和学校名
5 班级类 Class 有四个属性,分别为班级名称、班级地点、班级课程、班级授课老师
6 课程类 Course 有四个属性,分别是课程名称、课程周期、课程价格、课程地点
7 老师类 Teacher 有一个记录状态的字典、四个属性、两个方法、一个装饰器
字典status_dict用来记录用户名和登录状态
属性分别为老师姓名、老师密码、老师所教课程、所教班级
方法 view_class 用来查看课程和班级
方法 viem_student用来查看班级的学生
装饰器decorator_t 用来进行登录判断,如果没有登录则让用户登录
8 学生类 Student 有一个记录状态的字典、三个属性、两个方法、一个装饰器
字典status_dict用来记录用户名和登录状态
方法view_class用来查看自己的班级
方法view_course用来查看自己的课程
装饰器decorator_s 用来进行登录判断,如果没有登录则让用户登录
9 管理员类 Manager 有一个记录状态的字典、二个属性、五个方法、一个装饰器
字典status_dict用来记录用户名和登录状态
方法create_school用来创建学校
方法create_course用来创建课程
方法create_class 用来创建班级
方法create_teacher用来创建教师并自动关联地点
方法create_student用来创建学生并自动关联课程
装饰器decorator_s 用来进行登录判断,如果没有登录则让用户登录
三、全部代码如下
1 代码基本信息
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
# Author:zengzeng
# Version: 4.0
2 定义初始化函数,创建程序所需的文件
def initialize():
'初始化,创建所需的文件'
print("""初始化开始...n将创建程序所需文件:
'classinfo.txt', 'courseinfo.txt', 'managerinfo.txt',
'schoolinfo.txt', 'studentinfo.txt', 'teacherinfo.txt',""")
with open('classinfo.txt', 'w+', encoding='utf-8') as f1:
f1.write('s22=北京=python=taibain')
with open('courseinfo.txt', 'w+', encoding='utf-8') as f2:
f2.write('python=6个月=9999=北京n')
with open('managerinfo.txt', 'w+', encoding='utf-8') as f3:
f3.write('admin=123n')
with open('schoolinfo.txt', 'w+', encoding='utf-8') as f4:
f4.write('oldboy=北京n')
with open('studentinfo.txt', 'w+', encoding='utf-8') as f5:
f5.write('abc=123=s22=pythonn')
with open('teacherinfo.txt', 'w+', encoding='utf-8') as f6:
f6.write('taibai=123=python=s22=北京n')
print("初始化完成!")
3 定义输入函数,用来判断输入是否为空
def myinput(content):
'''content为输入时的提示语&