ssm+mysql+jsp打造在线考试系统WeKnow-后端设计

一.登陆模块

前台提交账号和密码传到后台处理控制层

1.1 首先是控制器

@RequestMapping(value="/studentLogin", method=RequestMethod.POST)
	public ModelAndView studentLogin(StudentInfo student, HttpServletRequest request) {
		ModelAndView model = new ModelAndView();
		StudentInfo loginStudent = studentInfoService.getStudentByAccountAndPwd(student.getStudentAccount());
		if(loginStudent == null || !student.getStudentPwd().equals(loginStudent.getStudentPwd())){
			model.setViewName("home/suc");
			return model;
		}
		request.getSession().setAttribute("loginStudent", loginStudent);
		System.out.println(request.getSession().getAttribute("loginStudent"));
		model.setViewName("home/suc");
		System.out.println("执行完毕");
		return model;
	}
}

1.2 在这里会调用服务层

StudentInfo loginStudent = studentInfoService.getStudentByAccountAndPwd(student.getStudentAccount());

1.3 服务层接口

public StudentInfo getStudentByAccountAndPwd(String studentAccount);

1.4 服务层实现

public StudentInfo getStudentByAccountAndPwd(String studentAccount) {     return studentInfoMapper.getStudentByAccountAndPwd(studentAccount);//调用dao接口}

1.5 数据层接口

public StudentInfo getStudentByAccountAndPwd(String studentAccount);

1.6  数据层实现

<mapper namespace="com.caizhen.weknow.dao.StudentInfoMapper">
	<!-- 定义resultMap -->
	<resultMap type="com.caizhen.weknow.domain.StudentInfo" id="queryStudent">
		<!-- 学号 -->
		<id column="studentId" property="studentId"/>
		<!-- 学生姓名 -->
		<result column="studentName" property="studentName"/>
		<!-- 学生账号 -->
		<result column="studentAccount" property="studentAccount"/>
		<!-- 学生账号密码 -->
		<result column="studentPwd" property="studentPwd"/>
		<!-- 班级 -->
		<!-- 班级自身的属性与数据库字段的映射 -->
		<association property="classInfo" javaType="com.caizhen.weknow.domain.ClassInfo">
			<id column="classId" property="classId"/>
			<result column="className" property="className"/>
		</association>
		<!-- 年级 -->
		<!-- 年级自身的属性与数据库字段的映射 -->
		<association property="grade" javaType="com.caizhen.weknow.domain.GradeInfo">
			<id column="gradeId" property="gradeId"/>
			<result column="gradeName" property="gradeName"/>
		</association>
	</resultMap>
	<select id="getStudentByAccountAndPwd" parameterType="java.lang.String" resultMap="queryStudent">
		SELECT a.*,b.className,c.gradeId,c.gradeName FROM StudentInfo a
		INNER JOIN ClassInfo b ON a.classId=b.classId
		INNER JOIN GradeInfo c ON b.gradeId=c.gradeId
		WHERE studentAccount=#{studentAccount}
	</select>
</mapper>

二:考试中心模块

<li><a id="examCenter-link" target="home" style="cursor: pointer;" href="willexams?classId=${sessionScope.loginStudent.classInfo.classId }&gradeId=${sessionScope.loginStudent.grade.gradeId }&studentId=${sessionScope.loginStudent.studentId }" >考试中心</a></li>

向url:willexams传入三个参数:classId,gradeId,studentId

2.1进入控制器

@RequestMapping("/willexams")
	public ModelAndView getStudentWillExam(
			@RequestParam("classId") Integer classId,
			@RequestParam("gradeId") Integer gradeId,
			@RequestParam(value="studentId", required=false) Integer studentId) {
		ModelAndView model = new ModelAndView();
		model.setViewName("/home/examCenter");                //将classId和gradeId存入map集合中
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("classId", classId);
		map.put("gradeId", gradeId);
		List<ExamPlanInfo> examPlans = examPlanInfoService.getStudentWillExam(map);
		model.addObject("examPlans", examPlans);
		model.addObject("gradeId", gradeId);
		return model;
	}

2.2 进入服务层接口

public List<ExamPlanInfo> getStudentWillExam(Map<String, Object> map);

2.3进入服务层实现层

public List<ExamPlanInfo> getStudentWillExam(Map<String, Object> map) {
		return examPlanInfoMapper.getStudentWillExam(map);
}

2.4 进入数据协议层

public List<ExamPlanInfo> getStudentWillExam(Map<String, Object> map);

2.5 进入数据实现层

<mapper namespace="com.caizhen.weknow.dao.ExamPlanInfoMapper">

	<resultMap type="com.caizhen.weknow.domain.ExamPlanInfo" id="queryWillExam">
		<id column="examPlanId" property="examPlanId"/>
		<result column="beginTime" property="beginTime"/>
		<!-- 科目 -->
		<association property="course" javaType="com.caizhen.weknow.domain.CourseInfo">
			<id column="courseId" property="courseId"/>
			<result column="courseName" property="courseName"/>
		</association>
		<!-- 班级 -->
		<association property="clazz" javaType="com.caizhen.weknow.domain.ClassInfo">
			<id column="classId" property="classId"/>
		</association>
		<!-- 试卷 -->
		<association property="examPaper" javaType="com.caizhen.weknow.domain.ExamPaperInfo">
			<id column="examPaperId" property="examPaperId"/>
			<result column="examPaperName" property="examPaperName"/>
			<result column="subjectNum" property="subjectNum"/>
			<result column="examPaperScore" property="examPaperScore"/>
			<result column="examPaperEasy" property="examPaperEasy"/>
			<result column="examPaperTime" property="examPaperTime"/>
		</association>
	</resultMap>

	<!-- 查询学生待考信息 -->
	<!-- 考试安排表  examplaninfo a-->
	<!-- 班级信息表 classinfo  b-->
	<!-- 年级表 gradeinfo c -->
	<!-- 试卷表 exampaperinfo d -->
	<!-- 课程表 courseinfo e -->
	<!-- 需要的参数
	 1.a.* 考试安排表所有字段
	 2.d.examPaperName 试卷名称
	 3.d.subjectNum 试题号
	 4.d.examPaperScore 试卷分数
	 5.d.examPaperEasy 试卷难易度
	 6.d.examPaperTime  考试时长
	 5.e.coure.name  课程名称
	 -->
	<select id="getStudentWillExam" parameterType="java.util.Map" resultMap="queryWillExam">
		SELECT a.*,d.examPaperName,d.subjectNum,d.examPaperScore,d.examPaperEasy,d.examPaperTime,e.courseName FROM ExamPlanInfo a
		INNER JOIN ClassInfo b ON a.classId=b.classId
		INNER JOIN GradeInfo c ON b.gradeId=c.gradeId
		INNER JOIN ExamPaperInfo d ON a.examPaperId=d.examPaperId
		INNER JOIN CourseInfo e ON a.courseId=e.courseId
		WHERE a.classId=#{classId} AND b.gradeId=#{gradeId}
	</select>
</mapper>

2.6 定向到考试中心界面判断exPlans中的条数是否大于0

<c:when test="${fn:length(examPlans) > 0 }">

如果不是则输出页面

<c:otherwise>
<div class="jumbotron">
<h1>暂无待考信息</h1>
<p>请等待教师分配</p>
</div></c:otherwise>

原文地址:https://www.cnblogs.com/cainame/p/10346613.html

时间: 2024-10-17 16:36:52

ssm+mysql+jsp打造在线考试系统WeKnow-后端设计的相关文章

基于JSP的在线考试系统-JavaWeb项目-有源码

开发工具:Myeclipse/Eclipse + MySQL + Tomcat 系统简介: 网络考试系统主要用于实现高校在线考试,基本功能包括:自动组卷.试卷发布.试卷批阅.试卷成绩统计等.本系统结构如下:(1)学生端: 登录模块:登录功能: 网络考试模块:可参加考试,并查看考试结果,提交试卷后老师允许的情况下查看错题:(2)超级管理员端: 登录模块:实现管理员登录功能: 用户管理模块:实现用户信息的增加.修改.查看功能: 角色权限管理模块:实现角色的增加.修改.查看功能: 试卷管理模块:实现试

在线考试系统视频教程和源码

购买视频教程QQ:1416759661  淘宝网担保交易 安全便捷 视频教程是高清完整版 放心购买 安心学习 旺旺: QQ: 点击购买 夜鹰教程的忠实粉丝们,经过几周的努力,夜鹰教程网在线考试系统视频教程终于录制完毕了,本套教程重点讲解了在线考试系统的数据库设计和程序开发,主要实现的功能包括的试题的新增和维护,题库的管理,考试主体信息的管理和维护,用户的管理和维护,体型全面覆盖了单选题.多选题.判断题.填空题.主观题(例如:作文),,考试的同时还有倒计时功能.此考试系统实现了主观题人工阅卷,非主

SSM开发在线考试系统-完整版+视频教程

SSM框架在线考试系统实战开发教程 开发软件: MyEclipse.Eclipse.Idea + JDK8.0以上 + Tomcat8.0 + MySQL5.7以上 [Java开发环境&工具]链接: https://pan.baidu.com/s/1RPQV0RMwd6TUmlzDIghNag 提取码: 9qrv 环境搭建教程: 项目后台管理功能介绍(整理需求): 专业学科管理(专业名称.备注). 考生管理(用户名.密码.所属专业.姓名.联系方式.注册时间). 试题管理(试题类型管理(单选.多选

在线考试系统

本文demo下载地址:http://www.wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=1078 本实例介绍了在线考试系统, 前台使用bootstrap技术,后台使用structs和herbinate, 数据库为mysql, 系统分为管理员和学生二个角色,管理员可以管理学生和试题,学生可以在线进行答题并且实时获得分数 项目对应的实例代码可以通过右侧[下载实例]按钮获取 开发工具: MyEclipse10, JDK1.7, To

在线考试系统商业项目

本系统是专门针对各种培训机构,学校,政府行政事业单位,入学考试,课程测试训练等需求开发的在线考试系统,可以在线出题(支持Excel批量试题导入导出,支持试卷图片上传下载),在线考试(支持做题模式,背题模式,可以查看答案及解析,真题模式,考试模式,设置考试时间倒计时,到时自动交卷),自动阅卷(交卷自动统计分数,类似考驾照),题型支持单选题,多选题,判断题,问答题等:项目包含学生考试的前台及管理人员出题,权限及管理的后台2部分,项目功能完善,本系统已在多家大型机构上线使用,系统采用jsp,ssh,e

基于SSM技术的茶馆在线预约系统-java茶馆在线预约系统

基于SSM技术的茶馆在线预约系统-java茶馆在线预约系统 1.包含源程序,数据库脚本.代码和数据库脚本都有详细注释.2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善开发环境:Eclipse ,MYSQL,JDK1.7,Tomcat 7涉及技术点:MVC模式.SpringMvc.Mybatis.Spring.HTML.JavaScript.CSS.JQUERY.DWR.Ajax等系统采用Mybatis框架实现ORM对象关系映射,前台JSP实现,后台springMvc映射,使用Spring

基于B/S架构的在线考试系统的设计与实现

前言 这个是我的Web课程设计,用到的主要是JSP技术并使用了大量JSTL标签,所有代码已经上传到了我的Github仓库里,地址:https://github.com/quanbisen/onlineexam,如果喜欢的话请帮我Mark个Star. 摘 要 随着计算机软件技术的高速发展,现代社会正快速迈入了一个互联网应用时代,Web应用在各行业都得到了广泛的应用,如小型公司的运销存管理系统,高校的教务管理系统等都是通过B/S架构搭建的Web应用.在过去的几年中,在线考试系统应用在很多行业都得到了

小项目 在线考试系统

mysql+ myeclipse 开发的在线考试系统 无登陆注册,去模拟实现计算机网络考试系统 http://jkx.cxtc.edu.cn/ks/ 浏览即可开始答题 提交后即可以看到答案. 现在的项目没有记分过程,没有将用户的答题记录回显. 框架  仅运用了Hibernate框架对数据库操作的简便. 随机取n条信息语句方面 List<Parper> list= session.createQuery("from Parper order by rand()").setFi

基于Django的在线考试系统

概述 基于Django的在线考试系统,适配电脑端,可以实现出题,答题,排行榜,倒计时等等等功能 详细 代码下载:http://www.demodashi.com/demo/13923.html 项目目录结构: account为扩展的Django用户模块 analysis为用户答题分析模块 api为接口路由 business为机构配置信息模块 competition为比赛核心模块 config为配置文件目录 utlis为python脚本工具 web为前端代码目录 checkcodestyle.sh