该项目是一个JavaWeb的在线考试系统,用户可以注册、登录、在线答题、查看历史记录。目前,只有单选题,日后有时间有精力还可以扩张出多选题,简答题……(该项目是阶段学习的成果,功能比较单一)
开发工具:IntelliJ IDEA 2018.3.5
操作系统:win10 专业版
所用语言:Java
前台框架:layui
后台框架:Spring Data Jpa、Spring Boot 、Mybatis
数据库:MySQL 5.7
- 用户前台注册
- 管理员后台登录,添加考试,添加题目,发布考试
- 考生登录前台参加考试,交卷
- 系统自动比对答案
- 考生可以在考试历史查看成绩
答题
| 字段名 | 类型 | 是否为主键 | 是否为空 | 描述 |
|---|---|---|---|---|
| id | int | 是 | 否 | 主键ID |
| name | varchar(20) | 否 | 否 | 姓名 |
| varchar(50) | 否 | 否 | 邮箱 | |
| password | varchar(20) | 否 | 否 | 密码 |
| 字段名 | 类型 | 是否为主键 | 是否为空 | 描述 |
|---|---|---|---|---|
| id | int | 是 | 否 | 主键ID |
| content | varchar(1000) | 否 | 否 | 题干 |
| sa | varchar(200) | 否 | 否 | A选项 |
| sb | varchar(200) | 否 | 否 | B选项 |
| sc | varchar(200) | 否 | 否 | C选项 |
| sd | varchar(200) | 否 | 否 | D选项 |
| answer | char | 否 | 否 | 答案 |
| pid | int | 否 | 否 | 试卷ID |
| 字段名 | 类型 | 是否为主键 | 是否为空 | 描述 |
|---|---|---|---|---|
| id | int | 是 | 否 | 主键ID |
| pname | varchar(20) | 否 | 否 | 试卷名 |
| 字段名 | 类型 | 是否为主键 | 是否为空 | 描述 |
|---|---|---|---|---|
| id | int | 是 | 否 | 主键ID |
| papername | varchar(20) | 否 | 否 | 试卷名称 |
| userid | int | 否 | 否 | 用户ID |
| time | datetime | 否 | 否 | 做题时间 |
| num | int | 否 | 否 | 分数 |
| username | varchar(20) | 否 | 否 | 用户名 |
| 字段名 | 类型 | 是否为主键 | 是否为空 | 描述 |
|---|---|---|---|---|
| id | int | 是 | 否 | 主键ID |
| answer | char | 否 | 否 | 正确答案 |
| doanswer | char | 否 | 否 | 答题者的答案 |
| sa | varchar(200) | 否 | 否 | A选项 |
| sb | varchar(200) | 否 | 否 | B选项 |
| sc | varchar(200) | 否 | 否 | C选项 |
| sd | varchar(200) | 否 | 否 | D选项 |
| spid | int | 否 | 否 | 历史试卷ID |
| content | varchar(1000) | 否 | 否 | 题干 |
| 字段名 | 类型 | 是否为主键 | 是否为空 | 描述 |
|---|---|---|---|---|
| id | int | 是 | 否 | 主键ID |
| varchar(20) | 否 | 否 | 邮箱 | |
| password | varchar(50) | 否 | 否 | 密码 |
| name | varchar(20) | 否 | 否 | 姓名 |
前台先用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);
}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.功能单一,只有选择题。