实验班信息平台分析与设计
未分类
需求分析
用户、角色与权限
用户是创造内容和价值的源泉
用户是具有不同行为的实体,角色只是一组权限的集合。如果某个角色不能被用户所扮演,则该角色应改为用户
| 用户 |
角色 |
说明 |
| 访客 |
匿名 |
班外师生等 |
| 学生 |
学生、班级管理、栏目管理 |
|
| 教师 |
教师、超管 |
|
| 实习生 ? |
|
大二同学 |
需求调查
用户希望看到或做到什么?或者,我们希望他们能够看到或能做到什么?
- 访客(阅读为主)
- 班级基本信息:如基本介绍、师生风采,说明班级的基本情况
- 班级动态:如新闻、事件日历、活动预告与总结、每周评述等,帮助人们进一步了解实验班,参与到与实验班的互动中来
- 项目展示:了解实验班在开发的项目,参与评价
- 技术分享:如技术专题、心得感悟、推荐资源等,充分展示本班的Nubility :)
- 学生
- 师生详细档案:如项目地址、个人SNS地址等,从而互通有无和互相交流
- 班级文件:如管理文档、机房环境指南等等,帮助同学们及时掌握班级的各种制度和资源的使用
- 任务协作:如任务发布与承接、个人Todolist等,以帮助班级作为一个整体相互协作,提高工作效率
- 知识库:如技术专题、知识wiki、FAQ、资源链接、读书心得等等,不但帮助同学们快速获得知识,并且提供种种技术手段使得每位同学都能分享知识,做出贡献。
- 班级与平台管理工具:如流程工具、动态权限管理工具、动态创建资源小组工具,以帮助学生更好的管理班级事务和平台上各类资源
- 创建与管理访客看到的所有信息
- 教师
- 任务协作与跟踪:引导学生的学习方向,推动他们持续的学习
- 知识共建与协作工具:帮助学生更好的构建知识库,解答各类疑问等
- 平台管理工具:更好的管理班级事务和平台上各类资源
用户故事
- 访客首页:班级新闻、班级介绍、活动预告
- 访客查看班级新闻:列表页面、详细页面
- 访客查看师生档案:分开查看
- 注册:不支持公开注册,直接导入CSV
- 基本登录:无验证码
- 访客查看事件日历
- 查看班级日历控件,通过高亮标识,获知近一周的事件信息
- 鼠标悬浮到高亮日期上方,查看简单的事件提示
- 点击高亮日期,弹出新页面,可查看到事件的详细信息
- 点击日历的更多链接,弹出新页面,查看事件列表页面
版本计划
| 版本 |
用户故事 |
说明 |
| v0.1 |
1、2、3、4、5 |
初步设计 |
| v0.2 |
4 |
|
系统设计
设计方法
WEB API(URL布局)
| url |
说明 |
成功 |
失败 |
| / |
home/index |
|
异常处理 |
| /[students] |
index,show |
|
异常处理 |
| /[teachers] |
index,show |
|
异常处理 |
| /[articles] |
index,show |
|
异常处理 |
| auth/login |
登录 |
跳转到登录前页面或用户中心 |
显示错误信息,回到登录页面 |
| auth/logout |
登出 |
首页 |
异常处理 |
...
定义对象
| 字段名称 |
字段说明 |
约束 |
示例 |
| email |
|
email |
|
| password |
|
256位以上加密 |
|
| nickname |
呢称 |
唯一 |
|
| realname |
真实名称 |
|
|
...
- 学生档案:网络档案、真实档案
- 教师档案:网络档案、真实档案
- Auth对象:提供用户认证、登录和管理的一系列辅助功能
对象关系
- Student、Teacher共享相同的账户登录与管理等行为,故共同继承User类
- Student与student_net_profile,student_real_profile均具有一对一关系
- Teacher与student_net_profile,student_real_profile均具有一对一关系
数据存储模式
- User表采用单表继承设计模式,同时存储student,teacher两类对象,user表示例:
| id |
email |
type |
password |
| 1 |
t@t.com |
Student |
*** |
| 2 |
s@s.com |
Teacher |
*** |
the_teacher = User::find(name=>'x老师');the_teacher->net_profile();the_teacher->real_profile();the_teacher->teach_method();the_student = User::find(name=>'y学生');the_student->net_profile();the_student->real_profile();the_teacher->learn_method();
关键对象设计
- Auth.login()
- Auth.logout()
- Auth.current_user()
- Auth.login?()
...
关键流程设计
代码实现
- 技术、语言、框架选型
- 部署方案等
- 具体对象、流程、URL的实现等
class User extend ORM {}class Student extend User{ function net_profile(){ has_one('student_net_profile'); }}class StudentNetProfile extend ORM {}class Teacher extend User{}