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从零到精通

  • 153
    点赞
  • 688
    收藏
  • 打赏
    打赏
  • 118
    评论
(必填)开发记录(时间倒序排列) 8/10-12 梁净净:修正考试页面,学生考试学生注册,学生成绩查询,学生成绩柱状图等,和管理员的增删教师。 8/10-12 段唯钧:教师的查询学生成绩,设计试卷,出卷,查看试卷功能等, 8/10-12 柴智:合并学生页面的前后端。排除bug,完成成绩导出成excel功能,等等等等 8/10-12 方娇:协助合并前后端,排除upload方面的各种问题和取值方面的各种问题 8/9 14:30 梁净净:修正考试页面,将编程题与选择填空题界面分隔开 8/9 14:30 段唯钧:完成教师查看试卷界面 8/9 14:00 柴智:修正注册页检查方法中的错误。合并学生页面的前后端。 8/9 12:00 方娇:写完了后台的教师出卷查卷的逻辑。 8/9 11:30 梁净净:完成教师添加题目界面 8/9 10:00 柴智&方娇:修正上传路径的bug,封装了papertopaperstring 方法,批量上传了部分题目。 8/8 16:00 梁净净:完成部分教师出卷界面 8/8 16:00 段唯钧:完成部分教师批改试卷界面 8/8 15:30 梁净净:完成前端部分学生界面汇总及功能连接 8/8 15:20 柴智:数据库增加了Bctanswer表,增加对应的javabean以及dao包和数据库操作。封装service层,完成对应的servlet。 8/8 15:00 段唯钧:完成教师删除学生界面设计 8/8 14:30 方娇: 增加了教师出卷功能的dao层方法,和一部分servlet。 8/8 14:00 梁净净:完成学生错题界面 8/8 13:30 梁净净:完成学生自测页面 8/8 13:00 梁净净:完善试卷页面 8/8 12:00 段唯钧:完成教师查询学生成绩页面 8/8 11:30 梁净净:完成教师首页页面显示 8/8 10.30 段唯钧&梁净净:对教师模块各个界面进行设计 8/8 10:00 梁净净:完成管理员首页界面显示 8/8 09:45 段唯钧:完善之前页面效果 8/8 09:20 柴智:把数据库studentgrade,score字段分为xztscore,tktscore,bctscore,其中bctscore默认值为-1,代表未批阅。同时修改对应的Javabean以及dao包下对应SQL语句。 8/7 20:20 方娇:修复了mistakes类的问题,完成了错题集的填空题和编程题。 8/7 20:00 段唯钧:管理员管理教师页面 8/7 19:50 梁净净:完成主页页面设计和学生登陆后主页显示及并加入js效果。 8/7 18:00 柴智:完成登陆页与注册页的js,修复部分bug。 8/7 16:00 柴智&方娇:完成登陆页与后台的联系,ajax校验验证码。实现了各种上传文件. 8/7 16:00 梁净净:完成管理员发布公告静态页面和js部分效果 8/7 16:00 段唯钧:教师个人中心页面和管理员个人中心页面 8/7 14:00 段唯钧:完成前端考试查询页面,实现一个页面显示多个不同页面 8/7 12:00 梁净净:(数据丢失)解决前一天登陆注册问题 8/7 10:00 段唯钧:修改前台页面获取后台数据的脚本 8/7 10:00 柴智:利用POI插件实现本地Excel批量上传题目到数据库题库。完成teacher类,管理员类的查看个人信息servlet方法。 8/7 9:00 方娇:实现了教师查看学生成绩;把所有的SQL语句修改封装到dao包;修改昨天遗留的错误。 8/6 20.00 梁净净:完成前端学生考试页面 8/6 19.00 段唯钧:完成前端学生考试成绩查询页面 8/6 19:00 柴智&方娇: 修改了bean包的缺陷 完善了业务逻辑层和数据访问层之间的调用代码 找到了生成试卷的新思路并写出了:大型构造函数及其封装类 初步完成了学生端功能的(错题集、个人信息查询、个人成绩查询)servlet函数(自测尚未写出) 前后端都实现了登陆注册验证码(红红火火恍恍惚惚) 实现了一半的查看试卷功能 实现了自测题的生成(不随机) 8/6 16.00 梁净净:完成前端注册页面设计,并加入js验证功能 8/6 14:00 柴智:补全dao包的增删改查,具体实现。 8/6 13.30 方娇:封装好service层服务 8/6 13.00 段唯钧:完成前端学生个人信息界面设计 8/6 10.30 梁净净:完成前端登陆页面,并与后台进行测试 8/6 9:00 柴智:修正昨天项目合并时的错误 8/5 21:00 方娇:教师类,学生类,管理员三个类 service包和dao包基础的增删改查 8/5 20:00 柴智:其类

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:撸撸猫 设计师:马嘣嘣 返回首页
评论 118

打赏作者

编程界明世隐

请博主喝瓶水,博主持续输出!

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值