图4-1 概要流程图
4.1.2权限分配设计
考试系统本身的特性限制了考试系统对于用户的开放程度,本套系统采用授权使用的方式获得权限登陆,因此关闭注册功能,只允许管理员授权用户使用。
系统设置三重权限,即管理员、超级用户(教师权限)、普通考生。
管理员权限,顾名思义,系统中最高权限拥有者。
超级用户,权限仅次于管理员,拥有系统60%以上功能的主要使用者。
考生,作为系统中权限最低的普通用户,只能使用考试、查询、新闻浏览功能。
考生通过登陆系统,如已被赋予考试资格,即可参加指定科目的考试。
管理员权限用于系统全部功能的管理。权限分配如图4-2。
图4-2 权限分配示意图
4.1.3系统预期运作流程
系统预期运行流程为考生顺利登陆考试系统,参加考试,获得考试成绩。详细流程如图4-3。
用户登陆系统后通过权限检测获得不同权限,进入各自权限的使用页面,方可使用系统对该权限开放的功能。
图4-3 详细流程
4.2结构设计
系统组织结构图如图4-4。
图4-4 系统组织结构图
5 详细设计
5.1功能结构细化
科目管理功能细化,包含编辑、删除、修改和保存功能,结构如图5-1。
图5-1 科目管理功能细化
题库管理功能细化,如图5-2。
图5-2 题库管理功能细化
试卷生成功能细化如图5-3、图5-4。
图5-3 试卷生成功能细化Step1
图5-4 试卷生成功能细化Step2
成绩管理功能细化如图5-5。
图5-5 成绩管理功能细化
考生管理功能细化如图5-6。
图5-6 考生管理功能细化
5.2数据库表单设计
1.系统用户信息表(User_info)
主要用于存储用户个人信息及权限信息,主要包括用户编号、用户姓名、密码、所属学院、所属专业/年级、班级、职务(管理员信息)、管理员标识。
2.系统学院信息表(Campus)
主要用于学院目录信息。
3.系统考试科目信息表(Exam_subject)
主要用于存储考试科目信息。
4.考生相关信息(Exam_testuser)
主要用于存储考生编号、考试计划编号和是否参加考试。
5.考试系统试卷信息表(Exam_test)
主要用于存储题号、科目信息、题型、问题、选项内容、答案信息和选中标记。
6.考试成绩信息表(Exam_score)
主要用于存储考试计划编号、科目信息、总分、各题型总分及分值、考试时间信息等。
7.系统新闻信息日志表(Exam_news)
主要用于存储新闻编号、标题信息、内容、有效期等信息。
8.系统新闻日志表(Exam_log)
主要用于存储新闻登陆日志。
9.待审核计划信息表(Waitforpass)
主要用于存储考试计划编号、审核人和审核表识等信息。
10.考试系统核心题库信息表(Exam_database)。
系统核心数据,主要用于存储题号、题型、内容、答案等信息。
5.3试卷随机分配算法设计
试卷随机分配算法作为本套系统核心算法之一,采用生成1到Count的随机数的方法来实现试卷的随机分配(count值来自题库中该题型的总数),通过Mark标记识别试题是否被选中,如被选中则列入试卷中,否则保留在题库中。
算法核心部分:
Count=rs.RecordCount
temp=fix(count*rnd)
If not rs.eof then
Rs.move temp
Rs(“Mark”)=1
Fix(number)用于返回数字的整数部分与int(number)近乎作用相同,fix函数与int函数的唯一区别就在于取负数时,int函数返回的值为小于或等于number的第一个负数,而fix函数返回的值为大于或等于number的第一个负数。
int(-99.8)=-100
Fix(-99.8)=-99
Rnd函数全称random,即随机,Count*rnd的目的是为生成1到count的随机数,假设count为100,则语意为生成1到100的随机数。
5.4 考试过程中防刷新功能
为了最大可能的保证考试的公平、公正原则,本套系统以Cookies储存用户的访问状态,通过判断Cookies中的信息来验证用户是否刷新了页面。
Response.cookies(“downloadok”)=”” //初始化
...
if request(“downloadok”)<> “y” then...
通过判断已定义的名为downloadok的Cookies值是否为y,如果为y则表明用户刷新了界面。
5.5 ASP系统防注入
本套系统采用通用ASP防注入模块,绑定于通用模块Conn.inc内,保证文件加载速度和覆盖率。
从POST、GET和COOKIES三方面入手,保证系统的常规安全。
屏蔽常用注入字段
exec、insert、select、delete、update、count、char、truncate、char、declare、--、script、*、char、set、(、)。
系统遭到非法注入尝试将自动记录用户IP到Alarm.txt中,并提示“请不要在参数中包含非法字符尝试注入!”。
6 设计的实现
6.1数据库的设计与实现
系统用户信息表(User_info)如表6-1。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>