基于javaweb+mysql的在线考试系统(教师、学生)

基于javaweb+mysql的在线考试系统(教师、学生)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

教师:查看考试结果、编辑考试题目

学生:考试答题

老师

学生

技术框架

JSP JavaScript Bootstrap SpringBoot SpringMVC MyBatis


import java.util.List;

import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;

import tk.mybatis.mapper.annotation.KeySql;

// 试卷结果(含主观题判分结果)
@Table(name = "paper")
public class PaperAnswer {
	@Id
	@KeySql(useGeneratedKeys = true)
	Integer id;
	Integer stuId;
	Date time;
	String objectiveDetails;// 主观题详细信息
	String objectiveScore;// 主观题得分情况
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>试卷一览</title>
<link
	href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"
	rel="stylesheet">
<script
	src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script>
<script
	src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
</head>
<body>
	LoginService service;

	@RequestMapping("login")
	public String login(HttpServletRequest request, String username, String pwd, String role) {
		if ((username != null) && (pwd != null)) {
			User u = new User();
			u.setName(username);
			u.setPwd(pwd);
			u.setRole(role);
			u = service.getUser(u);
			if (u != null) {
				HttpSession session = request.getSession();
				session.setAttribute(Const.SESSION_STU, u);
				// 分为学生和管理员
				return userMenu(u.getRole());
			}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getOptiona() {
		return optiona;
	}

	public void setOptiona(String optiona) {
		this.optiona = optiona;
	}

	public String getOptionb() {
		return optionb;
	}

	// 添加(进编辑页面)
	// 编辑和添加都会进入同一个界面,区别是编辑会先根据id查找Bean对象传入该界面而添加不会
	@RequestMapping("add")
	public String addQuestion() {
		return Const.PAGE_QUESTION_EDIT;
	}

}
package demo.vo;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;

import tk.mybatis.mapper.annotation.KeySql;

// 试卷结果(含主观题判分结果)
@Table(name = "paper")
			<div class="col-lg-2"></div>
		</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>在线考试系统</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
		this.list.add(answer);
	}
	// Getters and Setters

	public Integer getId() {
		return id;
	}

	public List<PaperSubjectiveAnswer> getList() {
		return list;
	}

	public void setList(List<PaperSubjectiveAnswer> list) {
		this.list = list;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public Integer getStuId() {
		return stuId;
	}
		Integer nId = Integer.valueOf(id);
		PaperAnswer answerDetail = service.getAnswerDetail(nId);
		m.addAttribute("md", answerDetail);
		return Const.PAGE_ADMIN_MARK_DETAIL;
	}
}
package demo.vo;

import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;

import tk.mybatis.mapper.annotation.KeySql;

@Table(name = "question")
public class Question {
	public Question() {
	}

	@Id
	@KeySql(useGeneratedKeys = true)
	private Integer id;
	private String title;
	private String optiona;

	public User getStu() {
		return stu;
	}

	public void setStu(User stu) {
		this.stu = stu;
	}
}
package demo.controller;

import java.util.ArrayList;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import demo.utils.Const;

public class QuestionPaper {
	private List<QuestionPlus> choices = new ArrayList<>();
	private List<QuestionPlus> fillblanks = new ArrayList<>();
	private List<QuestionPlus> judgements = new ArrayList<>();
	private List<QuestionPlus> writes = new ArrayList<>();
	private int rightChoices, rightFillblanks, rightJudgements, rightWrites;
	private double score;
	private User stu;

	private String scoreCalc() {
		StringBuffer sb = new StringBuffer();
		if (choices.size() != 0) {
			sb.append("<br>选择题正确率:" + (double) rightChoices / choices.size());
		}
		if (fillblanks.size() != 0) {
			sb.append("<br>填空题正确率:" + (double) rightFillblanks / fillblanks.size());
	private void setUserAnswer(String paraName, String typePrefix, List<QuestionPlus> qList, String userAnswer) {
		// 获取试题原始对象
		int len = typePrefix.length();
		String i = paraName.substring(len);
		int paperId = Integer.parseInt(i);// 试题编号
		int index = paperId - 1;
		QuestionPlus qq = qList.get(index);
		// 设置题目编号
		qq.setPaperId(paperId);
		// 设置用户答案
		qq.setStuAnswer(userAnswer);
		qList.set(index, qq);
	}

	@RequestMapping("mark")
	public String mark(Model m) {
		List<PaperAnswer> paperAnswers = service.selectAllPaperAnswer();
		m.addAttribute("list", paperAnswers);
	public void setAnswer(String answer) {
		this.answer = answer;
	}

	public Integer getType() {
		return type;
	}

	public void setType(Integer type) {
		this.type = type;
	}

	public String getSubject() {
		return subject;
	}

	public void setSubject(String subject) {
		this.subject = subject;
	}

	public String getUserAnswer() {
		return userAnswer;
	}


import demo.vo.PaperAnswer;
import demo.vo.PaperSubjectiveAnswer;
import demo.vo.QuestionPaper;
import demo.vo.QuestionPlus;
import demo.vo.User;
import demo.service.ScoreService;
import demo.utils.Const;

@Controller
@RequestMapping("question")
public class ScoreController {
	@Autowired
	private ScoreService service;

	// 判分
	@RequestMapping("score")
	public String score(HttpServletRequest request, Model m) {
		HttpSession session = request.getSession();
		QuestionPaper paper = (QuestionPaper) session.getAttribute(Const.SESSION_PAPER);
		List<QuestionPlus> choices = paper.getChoices();
		List<QuestionPlus> fillblanks = paper.getFillblanks();
		List<QuestionPlus> judgements = paper.getJudgements();
		List<QuestionPlus> writes = paper.getWrites();

		// --- 获取用户答案 ---
		Enumeration<String> names = request.getParameterNames();
			allQuestions.remove(nextInt);
		}
		session.setAttribute("paper", paper);
		return Const.PAGE_PAPER;
	}

}
package demo.vo;

import demo.utils.Const;

public class QuestionPlus {
	private Question q;
	private Integer paperId;
	private String stuAnswer;
	private boolean right;

	public Question getQ() {
		return q;
		return paperId;
	}

	public void setPaperId(Integer paperId) {
		this.paperId = paperId;
	}

	public String getStuAnswer() {
		return stuAnswer;
	}

	public void setStuAnswer(String stuAnswer) {
		this.stuAnswer = stuAnswer;
	}

	public boolean isRight() {
		return right;
	}

	public void setRight(boolean right) {
		this.right = right;

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值