Bootstrap

JavaWeb在线考试系统(简单版)

JavaWeb在线考试系统

作者简介

作者名:编程界明世隐
简介:CSDN博客专家,从事软件开发多年,精通Java、JavaScript,博主也是从零开始一步步把学习成长、深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢迎您关注,期待与您一起学习、成长、起飞!

系统界面图

在这里插入图片描述

引言:

最近琢磨着做了一个简单版本的在线考试系统,网上也没有找到可以参考的,就自己倒腾出来的。

难度系数(易入

因为才有比较基础的语法,对Java初学者、基础不是太好的小伙伴来说,也是比较容易上手的
后端:
1.使用Java Servlet 本身就是Java语法,无缝链接,也无效更种配置,web.xml轻松配置一次既可。
2.采用C3P0连接数据库,配置文件、代码、jar包,均已就位,无需二次操作。
3.代码采用Service、Dao分层逻辑,清晰实用,代码简单易懂。
前端:
1.Jsp也是Java语法,无需学习新东西,直接写Java代码。
2.HTML仅仅只需最简单的常用标签的语法,小白也能轻松明白。
3.css只是一点点页面的样式,很容易。
4.JavaScript需要了解基本的语法,学web必备。
5.Jquery是JavaScript的插件库,这里仅仅是用来与后台交互,仅仅会使用 $.post 与后台交互即可。

最重要的,就是通过比较简单、基础的语法,让你了解用Java怎么开发一个web系统,完整的了解整个开发流程,进而提升学习的信心和增加成就感。

开发环境

仅仅是我个人的喜欢用,也可以自己选自己喜欢的
开发工具:eclipse/myEclipse
数据库:mysql
web容器:tomcat
jdk版本:1.6

系统功能

在这里插入图片描述

角色介绍

1.管理员
权限:管理员是权限最大的角色,有系统所有的权限。
在这里插入图片描述

2.老师
权限:学员管理、试题管理、试卷管理、考试记录、密码管理、登陆模块。
在这里插入图片描述

3.学员
权限:试卷管理(考试)、考试记录(查看)、密码管理、登陆模块。
在这里插入图片描述

表结构介绍

用户表

//用户表
CREATE TABLE `user` (
  `id` int(11) NOT NULL auto_increment COMMENT '主键',
  `no` varchar(20) default NULL COMMENT '账号-学生一般用学号',
  `name` varchar(100) not NULL COMMENT '名字',
  `password` varchar(20) not NULL COMMENT '密码',
  `sex` varchar(20) default NULL COMMENT '性别',
  `phone` varchar(20) default NULL COMMENT '电话',
  `role_id` int(11) default NULL COMMENT '角色 0管理员,1老师,2学员',
  `isValid` varchar(4) default 'Y' COMMENT '是否有效,Y有效,其他无效',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

默认插入管理员数据

//插入管理的数据
INSERT INTO `user` VALUES ('1', 'admin', '管理员', '123', '1', '111', '0', 'Y');

菜单表

CREATE TABLE `menu` (
  `id` int(11) NOT NULL,
  `menuCode` varchar(8) default NULL COMMENT '菜单编码',
  `menuName` varchar(16) default NULL COMMENT '菜单名字',
  `menuLevel` varchar(2) default NULL COMMENT '菜单级别',
  `menuParentCode` varchar(8) default NULL COMMENT '菜单的父code',
  `menuClick` varchar(16) default NULL COMMENT '点击触发的函数',
  `menuRight` varchar(8) default NULL COMMENT '2表示学员,1表示老师,0管理员,可以用逗号组合使用',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

默认插入的数据(建议一行行的插入,反正我的mysql一条条的弄,不然后面的中文会乱码

INSERT INTO `menu` VALUES ('1', '001', '老师管理', '1', null, 'adminManage', '0');
INSERT INTO `menu` VALUES ('2', '002', '学员管理', '1', null, 'userManage', '0,1');
INSERT INTO `menu` VALUES ('3', '003', '试题管理', '1', null, 'itemManage', '0,1');
INSERT INTO `menu` VALUES ('4', '004', '试卷管理', '1', null, 'examManage', '0,1,2');
INSERT INTO `menu` VALUES ('5', '005', '考试记录', '1', null, 'recordManage', '0,1,2');
INSERT INTO `menu` VALUES ('6', '006', '修改密码', '1', null, 'modPwd', '0,1,2');
INSERT INTO `menu` VALUES ('7', '007', '退出系统', '1', null, 'logout', '0,1,2');

题目表

//题目表
CREATE TABLE `item` (
  `id` int(11) NOT NULL auto_increment COMMENT '主键',
  `name` varchar(100) default NULL COMMENT '题名',
  `content` varchar(1000) not NULL COMMENT '内容',
  `type` int(11) not NULL COMMENT '类型:1单选 2多选 3判断 4主观',
  `answer` varchar(1000) default NULL  COMMENT '答案',
  `itemVals` varchar(1000) default NULL  COMMENT '选项',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

试卷表

//试卷表
CREATE TABLE `exam` (
  `id` int(11) NOT NULL auto_increment COMMENT '主键',
  `name` varchar(100) default NULL COMMENT '试卷名称',
  `userId` int(11) not NULL COMMENT '创建人',
  `time` int(11) not NULL COMMENT '考试时长',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

试卷试题关系表

//试卷试题关系表
CREATE TABLE `exam_item_rel` (
  `id` int(11) NOT NULL auto_increment COMMENT '主键',
  `level` int(11) not NULL COMMENT '属于第几大题',
  `itemId` int(11) not NULL COMMENT '试题ID',
  `examId` int(11) not NULL COMMENT '试卷ID',
  `count` int(11) not NULL COMMENT '分数',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

考试记录表

//考试记录表
CREATE TABLE `record` (
  `id` int(11) NOT NULL auto_increment COMMENT '主键',
  `examId` int(11) not NULL COMMENT '试卷id',
  `userId` int(11) not NULL COMMENT '考试人id',
  `starttime` datetime default NULL COMMENT '开始时间',
  `endtime` datetime default NULL COMMENT '结束时间',
  `count` varchar(100) default NULL COMMENT '分数',
  `state` varchar(100) default NULL COMMENT '试卷状态 1考试中,2阅卷中,3已阅卷',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

考试记录关系表

CREATE TABLE `record_rel` (
  `id` int(11) NOT NULL auto_increment COMMENT '主键',
  `recordId` int(11) not NULL COMMENT '记录ID',
  `itemId` int(11) not NULL COMMENT '试题ID',
  `answer` varchar(100) default NULL COMMENT '学生答案',
  `count` int(11) default NULL COMMENT '当前题分数',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

系统模块介绍

老师管理

管理员才有的权限,可以增加、修改、删除老师。
在这里插入图片描述
在这里插入图片描述

学员管理

老师和管理员均有权限,可以增加、修改、删除。
在这里插入图片描述
在这里插入图片描述

试题管理

老师和管理员均有权限,可以增加、修改、删除、查看。
在这里插入图片描述
在这里插入图片描述

试卷管理

老师和管理员均有权限,可以增加、修改、删除、查看。
学生有考试功能。
在这里插入图片描述

在这里插入图片描述

考试记录

老师和管理员均有权限,可以查看、阅卷(针对主观题)。
学生有查看自己考试的记录功能。
在这里插入图片描述
在这里插入图片描述

注册功能

在这里插入图片描述

修改密码

在这里插入图片描述

代码目录

java文件
在这里插入图片描述
页面
在这里插入图片描述
后端分层
在这里插入图片描述


总结

因为有之前类似系统的积累,所以编码效率比较吧,这也是老程序员的能力,有代码参考 CV 的很快,哈哈!也希望能够给朋友们带来些许帮助!

注意点

1.样式比较简单,可能不太好看,因为没有去花精力做样式。
2.表设计可能不是特别完善、功能也比较简单,自己凭感觉做的。
3.难免会有些bug吧,不过也不是上线用的,参考学习的话我觉得是足够了。
4.代码里面也有部署文档。

代码获取方式

订阅我的专栏《JavaWeb项目实战》后,可以联系博主获取专栏里面的所有文章和1-2份心仪的代码,专栏的文章都是上过csdn热榜的,值得信赖!专栏内目前有[6]篇实例,未来2个月内专栏会更新到15篇以上,一般一周一更,了解一下我的专栏。**

热门专栏推荐

【1】Java小游戏(俄罗斯方块、飞机大战、植物大战僵尸等)
【2】JavaWeb项目实战(图书管理、在线考试、宿舍管理等)
【3】JavaScript精彩实例(飞机大战、贪吃蛇、验证码等)
【4】Java小白入门200例
【5】从零学Java、趣学Java
【6】Idea从零到精通

;