该系统涵盖了出题、组卷、发布考试、导入考生信息、监考、自动评卷/人工评卷等完整流程。在线考试系统采用功能强大、高效灵活的B/S模式,具有高度的可扩展性,被授权的考试用户不管身处何地,只要可以使用网络浏览器 (IE6,IE7,IE8,IE9,IE10,360,FireFox,Chrome等),就可通过网络登录在线考试系统。
对于单选和多选,采用自动判断。
对于大题采用的是管理员,老师阅卷给分。
1、对于答案的数据库设计:
CREATE TABLE `grade` (
`id` int(8) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`student_id` int(8) DEFAULT NULL COMMENT '考生主键ID',
`contest_id` int(8) DEFAULT NULL COMMENT '考试主键ID',
`result` int(8) DEFAULT '0' COMMENT '最终分数',
`auto_result` int(8) DEFAULT '0' COMMENT '电脑自动评判选择题分数',
`manul_result` int(8) DEFAULT NULL COMMENT '人工手动评判分数',
`answer_json` longtext COLLATE utf8mb4_unicode_ci COMMENT '考试作答答案json',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '考试交卷时间',
`finish_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '改卷完成时间',
`state` int(8) DEFAULT '0' COMMENT '0表示已交卷但是未评卷,1表示已交卷已评卷',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
INSERT INTO `grade` VALUES (8, 2, 8, 0, 0, 0, '_~__~__~__~__~__~__~__~_AB', '2021-04-13 11:07:13', '2021-04-13 11:07:48', 1);
INSERT INTO `grade` VALUES (9, 2, 8, 1, 1, 0, '_~__~__~__~__~__~__~__~_AB', '2021-04-13 11:09:10', '2021-04-13 11:09:29', 1);
INSERT INTO `grade` VALUES (10, 2, 8, 28, 16, 12, 'A_~_B_~_C_~_C_~_D_~_D_~_D_~_A_~_AB', '2021-04-13 11:19:02', '2021-04-13 12:32:28', 1);
INSERT INTO `grade` VALUES (11, 2, 8, 90, 0, 90, '_~__~__~__~__~__~__~__~__~_111', '2021-04-13 11:20:40', '2021-04-13 12:32:34', 1);
CREATE TABLE `question` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '题目标题',
`content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '题目内容',
`question_type` int(8) NULL DEFAULT NULL COMMENT '题目类型,0表示单项选择题,1表示多项选择题,2表示问答题,3表示编程题',
`option_a` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '选项A',
`option_b` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '选项B',
`option_c` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '选项C',
`option_d` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '选项D',
`answer` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '答案',
`parse` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '答案解析',
`subject_id` int(8) NULL DEFAULT NULL COMMENT '学科ID',
`contest_id` int(8) NULL DEFAULT NULL COMMENT '试卷ID',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`score` int(8) NULL DEFAULT NULL COMMENT '题目分值',
`difficulty` int(8) NULL DEFAULT 1 COMMENT '题目难度',
`state` int(8) NULL DEFAULT 1 COMMENT '0表示未考试题目,1表示已考试题目',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
INSERT INTO `question` VALUES (4, '下列哪一个 Transact-SQL 语句能够实现收回 user2 查询基本表 T 的权限?( )', '下列哪一个 Transact-SQL 语句能够实现收回 user2 查询基本表 T 的权限?( )', 0, 'REVOKE UPDATE ON T', 'GRANT SELECT ON T TO user2', 'DENY SELECT ON T TO user2', 'REVOKE SELECT ON T FROM user2', 'D', 'DENY:在安全系统中创建一项,以拒绝给当前数据库内的安全帐户授予权限并防止安全帐户通过其组或角色成员资格继承权限。\nREVOKE:删除以前在当前数据库内的用户上授予或拒绝的权限。', 1, 8, '2020-06-13 23:01:21', '2021-04-13 11:15:26', 5, 1, 1);
INSERT INTO `question` VALUES (5, '用如下的 SQL 语句创建一个 s 表 CREATE TABLE s ( NO CHAR ( 4 ) primary key , NAME CHAR ( 8 ) NOT NULL , SEX CHAR ( 2 ), AGE INT ) 那么可以插入到该表中的数据是( )', '用如下的 SQL 语句创建一个 s 表\n\nCREATE TABLE s ( NO CHAR ( 4 ) primary key ,\n\nNAME CHAR ( 8 ) NOT NULL ,\n\nSEX CHAR ( 2 ),\n\nAGE INT )\n\n那么可以插入到该表中的数据是( )', 0, '(’1031’,’曾华’,NULL,NULL)', '(’1032’,’曾华’,男,23)', '(NULL,’曾华’,’男’,’23’)', '(’1033’,NULL,’男’,23)', 'A', '主键和NAME不能为空,所以C和D排除,插入char类型时要加单引号,插入int不用加单引号,综合,A对', 1, 8, '2020-06-13 23:01:21', '2021-04-13 11:15:29', 5, 4, 1);
INSERT INTO `question` VALUES (6, '数据库管理系统的工作不包括?()', '数据库管理系统的工作不包括?()', 0, '定义数据库', '对已定义的数据库进行管理', '为定义的数据库提供操作系统', '数据通信', 'C', '略', 1, 8, '2020-06-13 23:01:21', '2021-04-13 11:15:31', 5, 1, 1);
INSERT INTO `question` VALUES (7, '在关系数据库设计中,设计关系模式(二维表)是数据库设计中哪个阶段的任务。()', '在关系数据库设计中,设计关系模式(二维表)是数据库设计中哪个阶段的任务。()', 0, '逻辑设计阶段', '概念设计阶段', '物理设计阶段', '需求分析阶段', 'A', '逻辑设计的目的是从概念模型导出特定的DBMS可以处理的数据库的逻辑结构(数据库的模式和外模式)。在关系数据库设计中,设计关系模式是在数据库的逻辑设计阶段。', 8, 8, '2020-06-13 23:01:21', '2020-06-14 07:26:16', 5, 1, 1);
INSERT INTO `question` VALUES (8, '() 是存储在计算机内有结构的数据的集合。', '() 是存储在计算机内有结构的数据的集合。', 0, '数据库系统', '数据库', '数据库管理系统', '数据结构', 'B', '1、数据库系统(Database System)是由数据库及其管理软件组成的系统。\n\n2、数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。\n\n3、数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。\n\n4、数据结构是计算机存储、组织数据的方式。', 8, 8, '2020-06-13 23:01:21', '2020-06-14 07:26:17', 5, 1, 1);
INSERT INTO `question` VALUES (9, '层次型、网状型和关系型数据库划分原则是。 ()', '层次型、网状型和关系型数据库划分原则是。 ()', 0, '记录长度', '文件的大小', '联系的复杂程度', '数据之间的联系', 'D', '略', 8, 8, '2020-06-13 23:01:21', '2020-06-14 07:26:17', 5, 1, 1);
INSERT INTO `question` VALUES (10, '实体是信息世界中的术语,与之对应的数据库术语为。 ()', '实体是信息世界中的术语,与之对应的数据库术语为。 ()', 0, '文件', '数据库', '字段', '记录', 'D', '略', 8, 8, '2020-06-13 23:01:21', '2020-06-14 07:26:17', 5, 1, 1);
INSERT INTO `question` VALUES (11, '表 test1 中包含两列: c1 为整型, c2 为 8 位长的字符串类型,使用如下语句创建视图......', '表 test1 中包含两列: c1 为整型, c2 为 8 位长的字符串类型,使用如下语句创建视图:\n\nCREATE VIEW v1 AS SELECT c1,c2 FROM test1 WHERE c1>30 WITH CHECK OPTION\n\n以下语句能够成功执行的有几条? ( )\n\nINSERT INTO v1 VALUES(1, \' 赵六 \')\n\nINSERT INTO v1 VALUES(101, \' 李四 \')\n\nINSERT INTO t1 VALUES(20, \' 王五 \')', 0, '0', '1', '2', '3', 'C', '略', 8, 8, '2020-06-13 23:01:21', '2020-06-14 07:26:17', 5, 1, 1);
INSERT INTO `question` VALUES (16, '多选题测试', '选AB', 1, '1', '1', '1', '1', 'AB', '', 1, 8, '2021-04-13 11:06:51', '2021-04-13 11:08:55', 1, 1, 1);
INSERT INTO `question` VALUES (17, '主观题测试', '主观题题目?', 2, '', '', '', '', '111', '111', 1, 8, '2021-04-13 11:20:23', '2021-04-13 12:32:22', 2, 1, 1);
2、考试界面
3、开启考试和结束考试的部分代码
/**
* 结束考试
*/
@PostMapping("/api/endContest/{id}")
public AjaxResult endContest(@PathVariable int id) {
AjaxResult ajaxResult = new AjaxResult();
boolean result = contestService.endContest(id);
return new AjaxResult().setData(result);
}
/**
* 开始考试
*/
@PostMapping("/api/startContest/{id}")
public AjaxResult startContest(@PathVariable int id) {
AjaxResult ajaxResult = new AjaxResult();
boolean result = contestService.startContest(id);
return new AjaxResult().setData(result);
}
系统环境
# 后台
* Springboot、SpringMVC
* MyBatis
# 前端
* Bootstrap
* jQuery
# 开发环境
* 操作系统:Windows 7+
* 编程语言: Java 8+
* 开发工具: IDEA、Navicat
* 项目构建: Maven
* 服务器:Tomcat
* 数据库: MySQL