文档库 最新最全的文档下载
当前位置:文档库 › 题库系统需求文档

题库系统需求文档

题库系统需求文档
题库系统需求文档

题库系统需求文档

1.概述

1.1 项目背景

过去人们都用纸张和笔来答题,随着网络的发展,网上答题已经逐渐走入人们生活,题库系统应运而生,如:一起作业网、作业帮。

1.2 目的和范围

本文档旨在明确题库系统具备的功能与性能,为本系统的设计和编程提供基础,为测试和验收提供依据。本文档主要读者范围为产品研发部的产品经理、前后端工程师、UI设计师、产品运营专员、测试工程师。

1.3总体要求

实现一个能够线上线下相结合的试题、作业操作软件,使老师、学生、家长之间有一个沟通的桥梁,共同监督学生学习,学生也能够有更大的积极性来加强自己。

2.产品概要

2.1 产品介绍

本产品是基于.......混合开发,让用户能够在PC端、移动wap进行添加试题制作试卷、答题、批阅等功能。

2.2. 主要业务流程

2.2.1登录流程:

用户输入账号密码进行登录,通过则进去主页面,否则提示失败。主网站通过token账号直接能够访问题库的试题列表,匹配通过则显示试题,否则提示失败。

2.2.2功能流程

主流程图:

子流程图:

生成作业试卷流程图

作业布置流程图

试卷布置流程图

完成作业上传流程图

完成试卷上传流程图

批阅流程图

作业、试卷反馈流程图

角色参与和功能:

作业、试卷生成:管理员通过试题编译器(试题管理中的增加试题里设置好的编辑选择、填空、简答等试题)生成试题,试题可以文字描述的可以描述,如果不能描述比如包括图形,就需要上传图片的方式生成试题,试题编译器类似图1(类似赛码)选项可以图片形式,例如:填空如果不是图片上传,需要有()或者_

结构限制。

图1

作业标签:管理员给题目加上难度、类型、科目、年级、相关章节知识点、课时标签。

入库:管理员把设置好的试题导入到题库中。

组卷:老师或管理员负责把生成的试题通过选择标签筛选指定试题组合成一套试

卷,并能够分析试卷类似图2。

图2

作业、试卷布置:老师把生成的试卷、作业发布给指定班级的学生(老师和学生的关系是多对多的关系,例如:一个老师对应多个学生,一个学生对应物理、化

学、英语等多个老师)。(类似一起作业网如下图)

完成作业上传:学生查看自己所有老师布置的作业,答完题之后选择填空连线题等系统自动批阅的题目直接上传,主观题系统无法识别的,通过拍照上传的方式来上传答案(类似于一起作业网)。

批阅:老师可以通过查询看到学生的答题情况,系统负责批阅选择填空题,老师负责批阅主观题。试卷批阅:管理员可以分配和指定的多名老师共同批阅,每个

老师负责批阅不同的题目(传统分配方式是扫描试卷,切割题目来进行分配,本需求是学生通过图片上传方式上传题目和答案,系统能够做到分配批阅任务)。作业批阅:布置作业的老师批阅。

统计:管理员根据试卷得分、答题错误率,试题难易程度占比,答题时间,题型占比,题量分部情况对试卷进行统计分析,得出一个总表,并分别统计试卷排名,优秀率。

作业反馈:系统根据统计分析之后找出每个学生的薄弱点,推荐试题,并能够生成一个综合的分析图(如:某科目某知识点错误率过高),方便下次对学生下发作业来针对性练习,达到提高成绩的效果,类似下图。

3.主要功能

3.1 角色功能

1.管理员

大概流程:管理员进入主界面,可进行试题管理、知识点管理、试卷管理、分数统计、积分统计、正确率统计、查看优秀答题试卷、机构管理、组织管理、角色管理、会话管理、反馈管理、监督管理。

2.学生

大概流程:学生通过账号密码登录或者通过token直接登录进来,可以加入指定老师的班级,可进行教材同步练习、随机试题练习、真题练习以及老师布置的作业,也可以自己组装试题添加到试题篮子,生成试卷,所有答错的题都记录在错题本里,学生遇到难点可以互相讨论通过作业问答并可发布悬赏,给别答疑可获得悬赏金,每日签到也可以获得积分。学生之间可互相邀请进行答题PK,正确率时间最短完成者获胜。可以查看黑板报和通知公告获得日

常部署作业信息。

3.老师:进入页面创建班级,然后可以选择章节试题布置作业,学生完成的作业进行批阅,能够查看学生答题的分数情况,下发通知公告,黑板报。

4.家长

大概流程:家长可对自己孩子的作业完成情况进行适时查看,也可以查看老师下达的通知。

3.2 功能摘要1.管理员

4.角色、权限

色下用户名为admin的用户,该角色默认拥有系统全部资源的操作权限(新功能开发时由开发人员进行配置),并且在权限分配时只有该角色里面的用户才能看到所有权限并对其进行分配,其他任何角儿里面的用户都不能对其进行修改和重新分配权限,该角色仅限公司内部开发人员,维护人员及测试人员使用,其中菜单管理,系统配置管理等功能为改角色独有权限(业务逻辑上如此规定,如超级管理员将这些权限分配给其他角色则其他角色里面的用户也可以对其进行操作)。

超级管理员可以创建其他角色,创建角色时分配权限,如果将权限分配权限也分配给新角色,那么新角色在穿件其他新角色并对其进行权限分配时只能看到自己所拥有的全部权限,即只能分配知己拥有的权限给其他角色,权限将逐级减少。

数据权限将体现在后台数据展示逻辑控制上,如系统管理员进入用户管理员能看到所有的用户,而普通用户只能查看数据;或者将数据权限拆分成菜单,系统管理员有系统管理员查看用户的菜单,题库管理员有题库管理员查看的菜单,分别进行授权。

按钮权限与菜单权限一致,选择菜单时菜单后面会列出该菜单页面所有的按钮供选择,如果勾选了相应按钮,则进行该菜单页面时选择的按钮可见,其他按钮隐藏。逻辑图如下图所示:

5.界面与操作要求

要求界面整洁,操作流畅,步骤易懂,易于学习。

6.安全要求

6.1 安全编码原则

1.保持简单,程序只实现指定的功能。

2.坚持最小权限,把可能造成的危害降到最低。

3.默认不信任,采用白名单机制,只放行已知的操作。

4.永远不要相信用户的输入,对所有输入进行前台和后台两次检查。

6.2 基本开发安全规范

6.2.1跨站点脚本(xss)防范。

XSS的类型:反射型XSS、存储型XSS、DOM型XSS。

跨站点脚本防范的基本原则:

●一切的输入/输出都是有害的,不要信任任何输入/输出数据。

●所有传递过程都不能保障无侵入,执行前、存储前、显示前都要进行“数据清洗”。

●所有的数据校验、处理工作要在前端和服务器端两次进行。

●目前所有的XSS通过com.keegoo.core.util.XSSUtil来过滤。

DOM-based XSS的防范当操作页面中DOM对象的时候,要对其输入的参数进行处理,防止XSS的注入。可采用escape、encodeURI、encodeURIComponent或自定义方法进行处理。

6.2.2防SQL注入规范。

●防SQL注入基本原则:所有用户输入都必须进行合法性校验。所有数据库SQL操作必须参数化。

●回收开发人员等操作生产库权限:减少开发人员、非DBA操作生产库的权限;数据库数据查询要有权

限分级和审核。

●尽量使用PreparedStatement代替Statement,一方面,在大多数情况下,使用PreparedStatement的性

能将优于使用Statement,另外一方面,可以最大限度的减少SQL注入发生的可能行。

●用户提交的数据都应该做合法性校验,避免用户输入‘,““,-,%,#,&,|,@,+等有可能导致SQL注

入的危险字符给系统造成危害。

6.2.3页面组建安全防范。

●页面标签必须关闭,属性值必须加引号。在页面中使用的标签不关闭,属性值不加引号往往成为被攻

击点,攻击者很容易的利用这些漏洞进行注入。避免这些漏洞的出现可以提高被攻击的可能。

●Form提交方式必须选用POST。Form默认的提交方式是Get,这种方式将表单中数据的按照

variable=value的形式,使用“?”添加至Action所指向的URL后面,各个变量之间使用“&”连接。

所要传递的信息量除受URL长度限制之外,信息内容都显示暴露。

●所有的非ASCII字符在URL中传递时都需要按照协商好的编码方式做URL编码。推荐使用encodeURI、

encodeURIComponent或者自定义encode实现。encodeURI、encodeURIComponent默认都返回UTF8编码的URL,区别在于encodeURI方法不会对下列字符进行编码: ":"、"/"、";" 和 "?"。而

encodeURIComponent则会对这些字符进行编码处理。

●尽量使用对象的innerText,不要使用innerHtml属性。对象的innerText属性默认会对输入的数据

进行encode,使得如果数据的数据还有html可执行标记时不会直接执行,而如果使用innerHtml属性的话不会保障。

●输入框设置最大长度、输入数据类型限制。输入框一般是攻击者比较钟意的攻击对象,攻击者可以通

过输入框限制不足的弱点进行数据窃取(比如SQL注入)、或者制造迫害(如比XSS)。我们可以通过对输入框最大长度、输入数据类型的限制,从一定程度上防范这样的攻击。我们可以根据实际需求,对一些输入框限定只允许输入字母、数字等。同时对输入的数据长度做限制。

●关闭客户端自动完成功能,减少驻留在客户端数据。

●设置/