关键词:
1.**本次作业实现的需求:**
角色:学校、学员、课程、讲师
要求:
创建北京、上海 2 所学校
创建linux , python , go 3个课程 , linuxpy 在北京开, go 在上海开
课程包含,周期,价格,通过学校创建课程
通过学校创建班级, 班级关联课程、讲师
创建学员时,选择学校,关联班级
创建讲师角色时要关联学校,
提供两个角色接口
学员视图, 可以注册, 交学费, 选择班级,
讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩
管理视图,创建讲师, 创建班级,创建课程
上面的操作产生的数据都通过pickle序列化保存到文件里
</br>
6. **测试:**
ATM普通用户启动脚本为 选课系统instart.
-----------------------------------------------------------------------------
1.主登录界面
———————————————————————————————————————
------- 欢迎来到选课系统 ---------
1.学员系统
2.讲师系统
3.管理系统
4.退出
———————————————————————————————————————
2.学员系统界面
———————————————————————————————————————
0:选项
1:注册
2:学费缴纳
3:课程选择
4:退出
———————————————————————————————————————
3.讲师系统界面
———————————————————————————————————————
请输入老师用户名:北京老师
请输入老师密码:123456
登录成功!
0:选项
1:管理自己的班级
2:上课时选择班级
3:查看班级学生列表
4:修改成绩
5:退出
———————————————————————————————————————
4.管理员界面
———————————————————————————————————————
请输入管理员用户名:admin
请输入管理员用户密码:admin
登录成功!
0:选项
1:创建学校
2:查看学校
3:创建老师
4:查看老师
5:创建课程
6:查看课程
7:创建班级
8:查看班级
9:创建学生
10:查看学生
11:退出
请输入选项:
———————————————————————————————————————
7. **备注:**
1.因为pickle会把绝对路径格式化进去。。所以没有提供测试账户
2.进入管理员用户,直接输入用户名密码,即可建管理员用户。
3.以后每次登陆必须用上一步创建的用户名密码
4.第一次创建数据请按照管理员选项顺序即,学校-老师-课程-班级-学生创建,之后可不用
5.学员系统中缴费和选课都需要登录
6.教师系统中,因为不知道要怎么管理班级,就把班级打印了一遍。
7.用admin创建的老师和学生的密码均为123456,学生系统中创建可指定密码
代码:
首先是开始代码
在bin下的start,来开始调用主程序
1 import os,sys 2 3 4 base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 5 sys.path.append(base_dir) 6 7 from core import main 8 9 if __name__ == ‘__main__‘: 10 main.run()
conf下的seeting,为配置文件,里面主要存放了数据路径
1 import os 2 import logging 3 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 4 5 6 ADMIN_DB_DIR=os.path.join(BASE_DIR,‘db‘,‘admin‘) 7 SCHOOL_DB_DIR=os.path.join(BASE_DIR,‘db‘,‘school‘) 8 TEACHER_DB_DIR=os.path.join(BASE_DIR,‘db‘,‘teacher‘) 9 COURSE_DB_DIR=os.path.join(BASE_DIR,‘db‘,‘course‘) 10 COURSE_TO_TEACHER_DB_DIR=os.path.join(BASE_DIR,‘db‘,‘course_to_teacher‘) 11 CLASSES_DB_DIR=os.path.join(BASE_DIR,‘db‘,‘classes‘) 12 STUDENT_DB_DIR=os.path.join(BASE_DIR,‘db‘,‘student‘)
core下的admin_sys.py,main.py,student_sys.py,teacher_sys.py分别对应文件的主逻辑,通过mian调用其他三个
admin_sys.py为管理员主逻辑
1 #!/usr/bin/env python 2 # coding=utf-8 3 #Author:yang 4 5 from lib.models import Student 6 from lib.models import School 7 from lib.models import Teacher 8 from lib.models import Course 9 from lib.models import Classes 10 from lib.models import Admin 11 12 def tes(func): 13 #处理异常的装饰器 14 def wapper(*args,**kwargs): 15 try: 16 func(*args,**kwargs) 17 except Exception : 18 print(‘请输入编号‘) 19 pass 20 return wapper 21 22 @tes 23 def create_school(): 24 #创建学校 25 name = input(‘请输入学校名字: ‘).strip() 26 addr = input(‘请输入学校地址: ‘).strip() 27 school_name_list = [] 28 for obj in School.get_list(): 29 school_name_list.append((obj.name,obj.addr)) 30 if (name, addr) in school_name_list: 31 print(‘校区已经存在!‘) 32 else: 33 school = School(name, addr) 34 school.save() 35 print(‘