在线考试系统

一、项目简介

​ 该项目是一个JavaWeb的在线考试系统,用户可以注册、登录、在线答题、查看历史记录。目前,只有单选题,日后有时间有精力还可以扩张出多选题,简答题……(该项目是阶段学习的成果,功能比较单一)

二、所用技术

开发工具:IntelliJ IDEA 2018.3.5

操作系统:win10 专业版

所用语言:Java

前台框架:layui

后台框架:Spring Data Jpa、Spring Boot 、Mybatis

数据库:MySQL 5.7

三、考试流程:

  1. 用户前台注册
  2. 管理员后台登录,添加考试,添加题目,发布考试
  3. 考生登录前台参加考试,交卷
  4. 系统自动比对答案
  5. 考生可以在考试历史查看成绩

四、部分界面

1、前台

在这里插入图片描述

答题

在这里插入图片描述
考试历史
在这里插入图片描述

2、后台

在这里插入图片描述
试卷管理

在这里插入图片描述
历史试卷管理
历史试卷管理

五、数据库表

1.user表

字段名类型是否为主键是否为空描述
idint主键ID
namevarchar(20)姓名
emailvarchar(50)邮箱
passwordvarchar(20)密码

2.题目表question

字段名类型是否为主键是否为空描述
idint主键ID
contentvarchar(1000)题干
savarchar(200)A选项
sbvarchar(200)B选项
scvarchar(200)C选项
sdvarchar(200)D选项
answerchar答案
pidint试卷ID

3.试卷表paper

字段名类型是否为主键是否为空描述
idint主键ID
pnamevarchar(20)试卷名

4、历史试卷表spaper

字段名类型是否为主键是否为空描述
idint主键ID
papernamevarchar(20)试卷名称
useridint用户ID
timedatetime做题时间
numint分数
usernamevarchar(20)用户名

5.历史试题表squestion

字段名类型是否为主键是否为空描述
idint主键ID
answerchar正确答案
doanswerchar答题者的答案
savarchar(200)A选项
sbvarchar(200)B选项
scvarchar(200)C选项
sdvarchar(200)D选项
spidint历史试卷ID
contentvarchar(1000)题干

6.管理员表admin

字段名类型是否为主键是否为空描述
idint主键ID
emailvarchar(20)邮箱
passwordvarchar(50)密码
namevarchar(20)姓名

六、知识总结

1.前台上传json数组,后台SpringBoot接受方法。

前台先用JSON.stringify()【从一个对象中解析出字符串】,在上传给后台,后台接受字符串后,使用谷歌的Gson.jar从json转换为list。

//json转换为list
Gson gson = new Gson();  
List<Person> persons = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());

//list转换为json
Gson gson = new Gson();  
List<Person> persons = new ArrayList<Person>();  
String str = gson.toJson(persons);  

前台

var q = JSON.stringify(questions)
$.ajax({
    type:"post",
    url:'insSquestion',
    data:{questions:q},
    success:function (res) {
        if (res > 0){
            alert('提交成功')
            window.location.href="index"
        }
    }
})

后台

@RequestMapping(value="insSquestion")
    public int insSquestion(String questions){
        Gson gson = new Gson();
        List<Squestion> qs = gson.fromJson(questions, new TypeToken<List<Squestion>>() {}.getType());
        return squestionServiceImpl.insSquestions(qs);
    }

2.时间插件jquery.countdown.js的使用

1.在页面中引入jquery、jquery.countdown.js。

2.可以通过一个有效时间的字符串

<div>12:30</div>
<div>12:30:39</div>
<div>12:30:39.929</div>

3.在页面DOM元素加载完毕之后,可以通过countDown()方法来初始化该倒计时插件。

$('div, h1, time').countDown();      

4.事件

time.elapsed:倒计时结束时立刻触发该事件。

$('#my-countdown').on('time.elapsed', function () {
    // do something...
}); 

七、不好之处

1.数据库设计的不合理,由于对Spring Data Jpa的连表查询的不熟悉,导致数据库设计出现重复字段。

2.功能单一,只有选择题。

Github:https://github.com/zXiaoHuiYang/exam

  • 10
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值