经过对如上需求的解读,我整理出以下需求模型。python
选课系统linux
完成一套可运行的选课管理系统,解决人工管理上下课的难度。git
暂无github
将需求模型继续进行整理。整理出以下建模设计的内容。数据库
学校、课程、班级、讲师、上课记录、学员、学习记录、做业、成绩、管理员、架构
人类:属性有名字、性别、年龄
学生类:继承人类。属性有课程、班级、成绩
老师类:继承人类。属性有课程、班级
学校类:属性有学校名、城市、地点、
课程类:属性有课程名称、价格、周期
班级类:属性有班级名、教师、开课日期、上课方式
帐号类:属性有帐号名、密码、状态、角色。
学习记录类:属性有成绩
管理员类:继承与站帐号类
视图类:处理管理员、老师、学员的全部视图上的操做单元测试
│ README.md ├─bin # 执行文件目录 │ │ scs.py # 执行文件 │ └─ __init__.py │ ├─conf # 配置文件目录 │ │ settings.py # 配置文件 │ └─ __init__.py │ ├─core # 核心执行文件目录 │ │ main.py # 主程序文件 | | logger.py # 日志程序文件 │ └─ __init__.py ├─db # 数据库目录 │ ├─accounts # 帐号数据所在目录 │ └─base # 学校等基础数据所在目录 ├─lib # 库文件目录 │ │ accounts.py # 帐号类 │ │ classes.py # 班级类 │ │ courses.py # 课程类 │ │ db.py # 数据库类文件 │ │ persion.py # 人类文件 │ │ schools.py # 学校类文件 │ │ study_record.py # 学习记录类嗡 │ │ views.py # 视图类文件 │ │ __init__.py └─log # 日志文件目录
具体代码能够从github中下载:
SCS学习
因为做业时间有限,没有编写单元测试使用的程序脚本。故直接经过模拟用户使用的方式来进行测试。测试
执行scs.py文件后进入主页面:输入3进入管理员界面。ui
===============欢迎进入老男孩学校=============== 1. 学生登陆通道 2. 教师登陆通道 3. 管理员登陆通道 4. 退出 ================================================ >>:3
进入管理员视图:管理员能够进行学校管理,学员管理。也能够修改本身的密码。
当进入这些视图前,若是管理员没有登陆会进行一次登陆认证。如已经登陆就不会再次认证。
===============欢迎进入管理视图=============== 1. 学校管理 2. 学员管理 3. 修改密码 4. 注销 ============================================== >>:
学校管理视图:能够进行学校的建立、课程的建立、讲师的建立、和班级的建立。
咱们这里直接就根据需求:
建立linux , python , go 3个课程,linuxpy在北京开, go 在上海开。
>>:1 Please input username:admin Please input password:admin 2018-04-09 14:18:51,475 - access - INFO - [admin] Login Success! [admin] Login Success! ===============欢迎进入管理视图=============== 1. 建立学校 2. 建立课程 3. 建立讲师 4. 建立班级 5. 返回 ============================================== >>:1 ================建立学校================= Please input name of school:beijing Please input city of school:beijing Please input address of school:beijing Create school success! ===============欢迎进入管理视图=============== 1. 建立学校 2. 建立课程 3. 建立讲师 4. 建立班级 5. 返回 ============================================== >>:1 ================建立学校================= Please input name of school:shanghai Please input city of school:shanghai Please input address of school:shanghai Create school success! ===============欢迎进入管理视图=============== 1. 建立学校 2. 建立课程 3. 建立讲师 4. 建立班级 5. 返回 ============================================== >>:2 ================建立课程================= Please input course name:python Please input price:8000 Please input term:18 Please input associated school:beijing Create course success! ===============欢迎进入管理视图=============== 1. 建立学校 2. 建立课程 3. 建立讲师 4. 建立班级 5. 返回 ============================================== >>:2 ================建立课程================= Please input course name:linux Please input price:8000 Please input term:35 Please input associated school:beijing Create course success! ===============欢迎进入管理视图=============== 1. 建立学校 2. 建立课程 3. 建立讲师 4. 建立班级 5. 返回 ============================================== >>:2 ================建立课程================= Please input course name:go Please input price:10000 Please input term:20 Please input associated school:shanghai Create course success! ===============欢迎进入管理视图=============== 1. 建立学校 2. 建立课程 3. 建立讲师 4. 建立班级 5. 返回 ============================================== >>:3 ================建立老师================= Please input username:alex Please input password:alex123 Please input password confirmation:alex123 Please input associated school:beijing Registry Success! ===============欢迎进入管理视图=============== 1. 建立学校 2. 建立课程 3. 建立讲师 4. 建立班级 5. 返回 ============================================== >>:3 ================建立老师================= Please input username:egon Please input password:egon123 Please input password confirmation:egon123 Please input associated school:beijing Registry Success! ===============欢迎进入管理视图=============== 1. 建立学校 2. 建立课程 3. 建立讲师 4. 建立班级 5. 返回 ============================================== >>:3 ================建立老师================= Please input username:yuanhao Please input password:yuanhao123 Please input password confirmation:yuanhao123 Please input associated school:shanghai Registry Success! ===============欢迎进入管理视图=============== 1. 建立学校 2. 建立课程 3. 建立讲师 4. 建立班级 5. 返回 ============================================== >>:4 ================建立班级================= Please input class name:python18 Please input associated school:beijing Please input associated course:python Please input associated teacher:alex Create class success! ===============欢迎进入管理视图=============== 1. 建立学校 2. 建立课程 3. 建立讲师 4. 建立班级 5. 返回 ============================================== >>:4 ================建立班级================= Please input class name:linux35 Please input associated school:beijing Please input associated course:linux Please input associated teacher:egon Create class success! ===============欢迎进入管理视图=============== 1. 建立学校 2. 建立课程 3. 建立讲师 4. 建立班级 5. 返回 ============================================== >>:4 ================建立班级================= Please input class name:go20 Please input associated school:shanghai Please input associated course:go Please input associated teacher:yuanhao Create class success! ===============欢迎进入管理视图=============== 1. 建立学校 2. 建立课程 3. 建立讲师 4. 建立班级 5. 返回 ============================================== >>:5
学员管理视图:能够查看学校的学员状况,并能够分配已经报名课程的学员到具体的班级中。咱们已经注册了一个henry的学生,这个学生报名了python的课程,因此管理员须要将他分配到python18这个班级中。
===============欢迎进入管理视图=============== 1. 学员信息 2. 分配班级 3. 返回 ============================================== >>:1 Please input school:beijing ==================学生信息================== ID: 027e4180beedb29744413a7ea6b84a42 Account: henry Type: 3 Status: 0 School: beijing Course: python Class: 未分配班级 Teacher: 未分配导师 ============================================ ===============欢迎进入管理视图=============== 1. 学员信息 2. 分配班级 3. 返回 ============================================== >>:2 ================分配班级================= Please input name of school:beijing Please input account of student:henry Please input name of course:python Please input name of class:python18 Students have bound courses!
学员视图界面
===============欢迎进入学员视图=============== 1. 注册帐号 2. 填写帐户信息 3. 查看帐户信息 4. 选择课程并付费 5. 查看学习记录 6. 修改密码 7. 注销 ==============================================
学员能够注册帐号,也能够补全本身的我的信息。这些基本功能,这里就不进行详细的测试了。主要看一下选课和查看学习记录。我仍是使用henry学员,henry再报名一个linux课程。来实现报名,因为henry的成绩老师尚未下发分数,因此暂时还看不到成绩。
===============欢迎进入学员视图=============== 1. 注册帐号 2. 填写帐户信息 3. 查看帐户信息 4. 选择课程并付费 5. 查看学习记录 6. 修改密码 7. 注销 ============================================== >>:4 Please input username:henry Please input password:henry123 2018-04-09 15:15:01,863 - access - INFO - [henry] Login Success! [henry] Login Success! ================购买课程================= Please choise school:beijing Please choise course:linux Please pay tuition [8000 RMB]:8000 The success of the course purchase! ===============欢迎进入学员视图=============== 1. 注册帐号 2. 填写帐户信息 3. 查看帐户信息 4. 选择课程并付费 5. 查看学习记录 6. 修改密码 7. 注销 ============================================== >>:5 ================学习记录================= Score: 成绩未公布 =========================================
教师视图
===============欢迎进入教师视图=============== 1. 填写帐户信息 2. 查看帐户信息 3. 班级管理 4. 修改密码 5. 注销 ==============================================
咱们主要来看一下班级管理功能。班级管理功能能够查看本身班级的学生、并未学生下发成绩
===============欢迎进入教师视图=============== 1. 填写帐户信息 2. 查看帐户信息 3. 班级管理 4. 修改密码 5. 注销 ============================================== >>:3 Please input username:alex Please input password:alex123 2018-04-09 15:17:51,271 - access - INFO - [alex] Login Success! [alex] Login Success! ===============欢迎进入管理视图=============== 1. 选择班级 2. 学生列表 3. 批改做业 4. 返回 ============================================== >>:1 Please input name of class:python18 Choice class success! ===============欢迎进入管理视图=============== 1. 选择班级 2. 学生列表 3. 批改做业 4. 返回 ============================================== >>:2 ================班级学生列表================= Class: python18 Students: henry ============================================= ===============欢迎进入管理视图=============== 1. 选择班级 2. 学生列表 3. 批改做业 4. 返回 ============================================== >>:3 ================做业批改================= Please input name of student:henry Please input score of student:95 Confirm input "yes". Back off input "b":yes [henry] homework to be corrected