链接:https://pan.baidu.com/s/1Xwd0U_KktL0hRFPaggIOGQ?pwd=6688
提取码:6688
在线考试系统可实现考生在线答题,管理员在线录题及生成试卷,系统管理维护,共分为五大主要子系统:新闻模块,登陆,考试模块,领导审核,后台管理。
(1)进入考试系统
<1>输入管理员或普通用户的ID和密码,以普通用户的身份进入系统时选择要考试的科目,以管理员的身份进入系统,这时页面上方的导航条已经改变,增加了科目管理、试卷管理、生成试卷、新闻发布等选项。
(2)首页
<1>系统的首页主要使用框架搭建,主要分为四个部分:顶部工具条、左侧用户信息栏、右侧中部系统时间信息栏、右下侧是用户所选的功能模块界面默认为的考试新闻信息栏。
(3)新闻页面
<1>关于发布以及显示考试方面(如:考试科目,考试时间等)的相关信息,考场纪律及注意事项。
(4)登录
<1>登录界面需要让用户输入用户名、密码,以及进入系统的身份(考生和系统管理员)。如果输入错误还要返回该页面,程序还要判断是否因为错误登录信息而造成的再次进入,如果是还要显示错误信息。
(5)考试模块
<1>考试模块:只有一个考试的列表,表格的每一列的内容分别是:序号、考试科目、考试时间、操作(进入考场的链接)。
<2>成绩查询:本页面可以提供对考生以往的考试成绩的多功能查询功能,这里应该可分科目显示考生以往的考试成绩。页面的实现基本上同题库的实现页面相同。
(6)领导审核
<1>项目的审核:进入此界面后,在新闻的下方有系统提示的审批请求,单击进入审批页面。审批内容包括考试计划和考试新闻的审批,如果考试信息审核通过则考试按照计划执行,如果新闻审核通过则新闻发布。若未通过则考试信息和新闻不发布。
(7)后台管理
系统管理员界面的首页与普通用户的公共首页基本上一样,只是上方的工具栏发生变化,管理员工具条增加了对系统数据库维护的几个选项。
<1>科目管理:主要实现对考试科目的添加、删除等功能。首先,在页面上添加一个表单用来提交科目的增添操作。然后,需要在页面中显示已有的用于考试的科目。
<2>题库管理:主要的功能是实现试题内容的添加、修改、删除、查询等操作以及对现有试题库的科目、题型的浏览。首先要实现的是页面中的操作有效性提示部分,其次题库的显示可以按照科目题型分类和按照关键字显示,这里采用一个提供选项的表单。最后是要显示已有的题库。由于题库的容量庞大,所以必须采用分页显示。
<3>生成试卷:管理先向系统提交想要生成的试卷的各种信息,这个信息必须通过领导审批才能作为一次正式的考试。本系统处理考试试卷的生成总共需要三部分:第一步,管理员需要向系统提交试卷的基本信息。在页面中添加一个表单,在表单内插入一个表格,表格内输入考试的题目、题型、数目、各题的分值、考试的有效期。第二步,管理员需要向系统提交参加考试的人员名单以及审核考试信息的领导姓名。只要在页面中添加一个两行的表格,第一行显示的内容分别为:编号、姓名、职务、部门、单位。名单的显示是通过调用系统用户表生成的,这样可以方便的组织某一部门的考试。审核领导的名单是通过对系统用户的职务级别判断产生的。第三步,管理员确认所有信息无误后将所有考试信息存入数据库,生成试卷成功。制卷逻辑流程如图2-1所示。
添加图片注释,不超过 140 字(可选)
<4>信息发布:管理员添加考试新闻(如:科目的考试通知等)需要填写的内容有标题、正文、有效期、审核领导和姓名。审核领导姓名通过查询数据表自动形成。管理确认提交后,系统将信息加入数据库。当一条考试计划或者考试新闻成功添加以后,管理员在这个项目通过审批前有权取消计划。审核功能流程如图2-2所示。
添加图片注释,不超过 140 字(可选)
E-R(Eneity-Relationship Approach)图是最常用的概念模型表示方法,也是数据库的核心和基础,它是按用户的观点来对数据和信息建模,依据概念模型设计应具的特点:真实性、易理解性、易修改性、易转换性,系统数据库的E-R图如图2-3所示。
添加图片注释,不超过 140 字(可选)
在线考试系统数据库采用Microsoft SQL SERVER,数据库中表及其作用如下:
(1)用户信息表(cadre_info)
用于存储所有用户的信息(包括:考号、考生姓名、密码、职务信息、管理员权限)
(2)部门信息表(department)
为了考试的分部门管理以及查询所建立的部门信息表(包括:部门名称)
(3)考试科目信息表(exam_subject)
为存储考试的科目信息所建立的科目信息表(包括:科目编号、科目名称)
(4)新闻信息表(exam_news)
考试信息发布需要存储新闻信息所建立的新闻信息表(包括:新闻编号、标题、正文内容、创建人、审核发布人、创建日期、审核通过的发布日期)
(5)题库信息表(exam_database)
为了存储题库所建立的题库信息表(包括:题目编号、题干、选项、正确答案、考试时是否以被选过的标记)
(6)考试信息表(exam_test)
存储管理员已经制定了的考试所建立的考试信息表(包括:考试编号、各科目的数量、各科目的分值、考试时间、创建者、审核者、开始日期、结束日期、设置日期)
(7)考生信息表(exam_testuser)
为存储每次参加考试又那些考生所建立的考生信息表(包括:考生考号、考试编号、是否考过标记)
(8)等待通过的项目信息表(waitforpass)
为存储等待通过的项目(包括考试和要发布的新闻)所建立的项目信息表(包括:等待通过的项目类别、编号、审核者、审核日期、是否通过)
(9)考试成绩信息表(exam_score)
为存储每个考生的考试成绩信息所建立的成绩信息表(包括:考生的各种信息、考试信息、考试成绩)
(10)考试新闻系统登录信息表(exam_news_log)
为能查看没有看新闻的考生所建立的日志表(包括:新闻编号、登录用户)
如表2-1、2-2、2-3、2-4、2-5、2-6、2-7、2-8、2-9和2-10所示。
表2-1 cadre_info
字段名 | 数据类型 | 长度 | 是否允许为空 | 字段描述 |
UserID | bigint | 8 | 否 | 身份证号(主键) |
UserName | nvarchar | 50 | 是 | 真实姓名 |
Pwd | nvarchar | 50 | 是 | 密码 |
Department | nvarchar | 50 | 是 | 部门(外键) |
Office | nvarchar | 50 | 是 | 所在单位(外键) |
Duties | nvarchar | 50 | 是 | 职务(外键) |
Rank | nvarchar | 50 | 是 | 系统权限(外键) |
Ifadmin | bit | 1 | 是 | 是否激活 |
表2-2 department
字段名 | 数据类型 | 长度 | 是否允许为空 | 字段描述 |
department | nvarchar | 50 | 否 | 部门(主键) |
表2-3 exam_subject
字段名 | 数据类型 | 长度 | 是否允许为空 | 字段描述 |
id | int | 4 | 否 | 学科ID(主键) |
exam_subject | nvarchar | 50 | 是 | 学科名称(外键) |
表2-4 exam_news
字段名 | 数据类型 | 长度 | 是否允许为空 | 字段描述 |
id | int | 4 | 否 | 新闻ID(主键) |
newsid | int | 4 | 是 | 新闻编号(外键) |
title | ntext | 16 | 是 | 标题 |
youxq | int | 4 | 是 | 有效期 |
fabsj | datetime | 8 | 是 | 开始时间 |
fabr | nvarchar | 50 | 是 | 审核人 |
passuserid | int | 4 | 是 | 审核人ID(外键) |
passtime | nvarchar | 50 | 是 | 通过时间 |
表2-5 exam_database
字段名 | 数据类型 | 长度 | 是否允许为空 | 字段描述 |
id | int | 4 | 否 | 试题ID(主键) |
subject | nvarchar | 50 | 是 | 学科名称(外键) |
type | nvarchar | 50 | 是 | 试题类型(外键) |
question | ntext | 16 | 是 | 题干 |
text1 | ntext | 16 | 是 | 选项1 |
text2 | ntext | 16 | 是 | 选项2 |
text3 | ntext | 16 | 是 | 选项3 |
text4 | ntext | 16 | 是 | 选项4 |
text5 | ntext | 16 | 是 | 选项5 |
text6 | ntext | 16 | 是 | 选项6 |
answer | nvarchar | 50 | 是 | 标准答案 |
mark | int | 4 | 是 | 标号(在随机选题是确保不重复选题) |
difficult | int | 4 | 是 | 该试题难度等级 |
表2-6 exam_test
字段名 | 数据类型 | 长度 | 是否允许为空 | 字段描述 |
testid | int | 4 | 否 | 试卷ID(主键) |
subject | nvarchar | 50 | 是 | 学科名称(外键) |
totalper | int | 4 | 是 | 试卷总分 |
singlecount | int | 4 | 是 | 单选题数目 |
singleper | int | 4 | 是 | 单选题分值 |
multicount | int | 4 | 是 | 多选题数目 |
multiper | int | 4 | 是 | 多选题分值 |
judgecount | int | 4 | 是 | 判断题数目 |
judgeper | int | 4 | 是 | 判断题分值 |
testtime | int | 4 | 是 | 考试总时间 |
starttime | datetime | 8 | 是 | 开始考试时间 |
Endtime | datetime | 8 | 是 | 结束考试时间 |
settime | datetime | 8 | 是 | 制卷时间 |
setuserid | int | 4 | 是 | 制卷人ID(外键) |
passuserid | int | 4 | 是 | 审核人ID(外键) |
passtime | datetime | 8 | 是 | 考试用时 |
difficult | int | 4 | 是 | 试卷难度系数 |
表2-7 exam_testuser
字段名 | 数据类型 | 长度 | 是否允许为空 | 字段描述 |
id | int | 4 | 否 | 标示(自动编号) |
testid | int | 4 | 是 | 试卷ID |
userid | int | 4 | 是 | 用户ID |
havetest | bit | 1 | 是 | 考试过标记 |
表2-8 waitforpass
字段名 | 数据类型 | 长度 | 是否允许为空 | 字段描述 |
id | int | 4 | 否 | 标示(自动编号) |
objname | nvarchar | 50 | 是 | 项目名称 |
objid | int | 4 | 是 | 项目编号(对应newsid或PaperID) |
passuserid | int | 4 | 是 | 审核人ID |
passadvice | ntext | 16 | 是 | 审核意见 |
passtime | datetime | 8 | 是 | 审核时间 |
havepass | int | 4 | 是 | 项目状态 |
表2-9 exam_score
字段名 | 数据类型 | 长度 | 是否允许为空 | 字段描述 |
id | int | 4 | 否 | 标示(自动编号) |
userid | int | 4 | 是 | 考生ID |
username | nvarchar | 50 | 是 | 考生姓名 |
department | nvarchar | 50 | 是 | 部门 |
office | nvarchar | 50 | 是 | 单位 |
duties | nvarchar | 50 | 是 | 职务 |
subject | nvarchar | 50 | 是 | 学科名称 |
testid | int | 4 | 是 | 试卷ID |
starttime | datetime | 8 | 是 | 开始考试时间 |
endtime | datetime | 8 | 是 | 结束考试时间 |
score | int | 4 | 是 | 考试分数 |
表2-10 exam_news_log
字段名 | 数据类型 | 长度 | 是否允许为空 | 字段描述 |
id | int | 4 | 否 | 标示(自动编号) |
newsid | int | 4 | 是 | 新闻ID |
userid | int | 4 | 是 | 审核人ID |