作者主页:Java毕设网
简介:Java领域优质创作者、Java项目、学习资料、技术互助
文末获取源码
一、项目介绍
本项目是在线模拟考试系统的设计与实现,系统采用浏览器/服务器模式开发,包括登录注册、在线考试、试卷设置、试题管理、分数的统计以及成绩查询等功能。系统运行在Windows操作系统上,以Tomcat作为Web服务器,使用SSH+JSP技术和MySQL数据库实现。
项目主要包含管理员、教师与学生三种角色;
二、环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;
6.是否Maven项目:否;
三、技术栈
1. 后端:spring+structs+hibernate
2. 前端:JSP+Javascript+css
四、使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行;
2. 将项目中jdbc.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,浏览器中输入http://localhost:8080/ctest 登录
五、运行截图
六、相关代码
答案登录控制器
public class QuestionAction extends ActionSupport implements ModelDriven<Question>{
private Question question = new Question();
public Question getModel() {
return question;
}
private QuestionService questionService;
public void setQuestionService(QuestionService questionService) {
this.questionService = questionService;
}
private Integer tid;
public void setTid(Integer tid) {
this.tid = tid;
}
private Integer qtid;
public void setQtid(Integer qtid) {
this.qtid = qtid;
}
private int page;
public void setPage(int page) {
this.page = page;
}
//选择查找试题的试题类型
public String ckQuestionAndXZQT(){
List<QuestionType> listqt = questionService.ckQuestionAndXZQT();
ActionContext.getContext().getValueStack().set("listqt", listqt);
return "ckQuestionAndXZQT";
}
//选择查找试题的试题类型
public String ckAdminQuestionAndXZQT(){
List<QuestionType> listqt = questionService.ckQuestionAndXZQT();
ActionContext.getContext().getValueStack().set("listqt", listqt);
return "ckAdminQuestionAndXZQT";
}
//查找试题
public String ckQuestion() throws UnsupportedEncodingException{
if(question.getQid()!=null){
question = questionService.selectQuestion(question.getQid());
}
PageBean<Question> pageBean = questionService.ckQuestion(question,tid,qtid,page);
ActionContext.getContext().getValueStack().set("pageBean", pageBean);
List<QuestionType> listqt = questionService.ckQuestionAndXZQT();
ActionContext.getContext().getValueStack().set("listqt", listqt);
ActionContext.getContext().getValueStack().set("pageqtid", qtid);
return "ckQuestion";
}
//管理员查找试题
public String ckAdminQuestion() throws UnsupportedEncodingException{
if(question.getQid()!=null){
//根据试题编号,获取试题详细信息
question = questionService.selectQuestion(question.getQid());
}
//获取符合条件的试题
PageBean<Question> pageBean = questionService.ckAdminQuestion(question,qtid,page);
//将符合符合条件的数据存放到值栈中,出入到显示界面
ActionContext.getContext().getValueStack().set("pageBean", pageBean);
List<QuestionType> listqt = questionService.ckQuestionAndXZQT();
ActionContext.getContext().getValueStack().set("listqt", listqt);
ActionContext.getContext().getValueStack().set("pageqtid", qtid);
return "ckAdminQuestion";
}
//查看相似选择试题
public String ckXSXZQuestion(){
List<Question> listxs = questionService.findByOword(question.getOword(), question.getQscope(), question.getQdifficulty(), qtid);
ActionContext.getContext().getValueStack().set("question", question);
ActionContext.getContext().getValueStack().set("listxs", listxs);
return "ckXSXZQuestion";
}
public String ckXSXZAdminQuestion(){
List<Question> listxs = questionService.findByOword(question.getOword(), question.getQscope(), question.getQdifficulty(), qtid);
ActionContext.getContext().getValueStack().set("question", question);
ActionContext.getContext().getValueStack().set("listxs", listxs);
return"ckXSXZAdminQuestion";
}
//添加选择题
public String addQuestionXZ(){
return "addQuestionXZ";
}
public String addAdminQuestionXZ(){
return "addAdminQuestionXZ";
}
//添加选择实现
public String addQuestionXZSX(){
Date date = new Date();
question.setQdate(date);
questionService.addQuestionXZSX(question,qtid,tid);
return "addQuestionXZSX";
}
public String addAdminQuestionXZSX(){
Date date = new Date();
question.setQdate(date);
questionService.addAdminQuestionXZSX(question,qtid);
return "addQuestionXZSX";
}
//查看相似填空题
public String ckXSTKQuestion(){
List<Question> listxs = questionService.findByOword(question.getOword(), question.getQscope(), question.getQdifficulty(), qtid);
ActionContext.getContext().getValueStack().set("question", question);
ActionContext.getContext().getValueStack().set("listxs", listxs);
return"ckXSTKQuestion";
}
public String ckXSTKAdminQuestion(){
List<Question> listxs = questionService.findByOword(question.getOword(), question.getQscope(), question.getQdifficulty(), qtid);
ActionContext.getContext().getValueStack().set("question", question);
ActionContext.getContext().getValueStack().set("listxs", listxs);
return "ckXSTKAdminQuestion";
}
//添加填空题
public String addQuestionTK(){
return "addQuestionTK";
}
public String addAdminQuestionTK(){
return "addAdminQuestionTK";
}
//添加填空实现
public String addQuestionTKSX(){
Date date = new Date();
question.setQdate(date);
questionService.addQuestionXZSX(question,qtid,tid);
return "addQuestionTKSX";
}
问题管理控制器
public class AnswerStateAction extends ActionSupport implements ModelDriven<AnswerState>{
private AnswerState answerState = new AnswerState();
public AnswerState getModel() {
return answerState;
}
private AnswerStateService asService;
public void setAsService(AnswerStateService asService) {
this.asService = asService;
}
private Integer qid;
public void setQid(Integer qid) {
this.qid = qid;
}
private Integer tnid;
public void setTnid(Integer tnid) {
this.tnid = tnid;
}
private String qanswer;
public void setQanswer(String qanswer) {
this.qanswer = qanswer;
}
//根据试题编号,记录编号 进行将试题答案保存
public String saveAnswerState() throws IOException{
String qas = java.net.URLDecoder.decode(qanswer, "UTF-8");
asService.saveAnswerState(tnid,qid,qas);
return NONE;
}
}