最近在做练习,练习的内容就是做一个在线答题系统,主要内容包括后台开发,前台展示,前台又包括了web端和android端,现在将写的系统分享出来。
先放上后台的成果图




这个小项目采用的是JFinal框架,,前台框架使用的是layui前台框架,数据库采用的是MySql,前后台交互使用jQuery。
JFinal框架:http://www.jfinal.com/doc/2-3
layui框架:http://www.layui.com/
MySQL教程:http://www.runoob.com/mysql/mysql-tutorial.html
jQuery教程:http://www.w3school.com.cn/jquery/index.asp
JSTL教程:http://www.runoob.com/jsp/jsp-jstl.html
EL表达式教程:http://www.runoob.com/jsp/jsp-expression-language.html
一、数据库设计
数据库设计了三张张表,分别为题干表、选项表、科目表
表结构如下
- 题目表
ID,题目内容,正确答案ID,科目ID,状态- 选项表
ID,题目ID,选项标识(A\B\C\D...)、选项内容,状态- 科目表
ID,科目名称,状态
二、后台代码开发
后台主要功能为:1.科目的增删改查,2.题干的增删改查,3.选项的增删改查,4.选项和题干对应以及正确答案的保存
主要代码展示:
新增选项代码如下,注意:在新增选项的时候需要指定正确答案,在依次存储选择的时候将正确答案的id顺便存入到题干信息的选项id字段中,这样就实现的题干和正确答案的关联。另外存储选项的时候每个选项对应的题目id为题干id,这样实现了题干和选项关联
@Before(Tx.class)
public Object saveOption(Map<String, Object> map) {
try {
int item = Integer.valueOf(map.get("items").toString());
int qId = Integer.valueOf(map.get("quid").toString());
int oId = 0;
for (int i = 1; i < item + 1; i++) {
Option option = new Option();
Object obj = map.get("checked");
option.setTId(qId);
option.setContent(map.get("content" + i).toString());
option.setIden(Constant.iden[i - 1]);
Option.dao.saveOption(option);
oId=option.get("id");
if (Integer.valueOf(obj.toString()) == i) {
// 正确答案,需要存入到题干表中
Title.dao.saveOption(String.valueOf(oId), map.get("quid").toString());
}
}
tag=true;
} catch (Exception e) {
e.printStackTrace();
logger.info("数据库操作失败:"+e);
tag=false;
}
return tag;
}
接口和前台代码请看下篇文章,在线答题系统(服务端,客户端包括web和android)、( 二)
网友评论