一.登陆模块
前台提交账号和密码传到后台处理控制层
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>
三:历史考试模块
1.前台
<!-- 考试历史 --> <li><a id="mineCenter-link" target="home" style="cursor: pointer;" href="history/${sessionScope.loginStudent.studentId }" studentId="${sessionScope.loginStudent.studentId }">考试历史</a></li>
1.1 前台状态校验
<script type="text/javascript"> $(function() { //考试中心状态判断 $("#examCenter-link, #mineCenter-link").click(function() { //判断是否登录 var studetnId = $(this).attr("studentId"); //如果学生号为空 if(studetnId.trim() == "" || studetnId == null) { zeroModal.show({ title: "提示", content: "登录后才能查看", width : '200px', height : '130px', overlay : false, ok : true, onClosed : function() { location.reload(); } }); return false; } });
2.后台
2.1 如果学生成功登陆后点击历史考试(控制层)
@Controller public class ExamHistoryInfoHandler { @Autowired private ExamHistoryPaperService examHistoryPaperService; @RequestMapping("/historys") public ModelAndView examHistorys() { List<ExamHistoryInfo> historys = examHistoryPaperService.getExamHistoryToTeacher(); ModelAndView model = new ModelAndView("admin/examHistorys"); model.addObject("historys", historys); return model; } }
2.2 服务层
private ExamHistoryPaperService examHistoryPaperService;
服务层
public interface ExamHistoryPaperService { //查询考试历史信息,针对前台学生查询 public List<ExamHistoryPaper> getExamHistoryToStudent(int studentId); public int isAddExamHistory(Map<String, Object> map); public int getHistoryInfoWithIds(Map<String, Object> map); public List<ExamHistoryInfo> getExamHistoryToTeacher(); }
2.3 服务实现层
@Service public class ExamHistoryPaperServiceImpl implements ExamHistoryPaperService { @Autowired private ExamHistoryPaperMapper examHistoryPaperMapper; public List<ExamHistoryPaper> getExamHistoryToStudent(int studentId) { return examHistoryPaperMapper.getExamHistoryToStudent(studentId); } public int isAddExamHistory(Map<String, Object> map) { return examHistoryPaperMapper.isAddExamHistory(map); } public int getHistoryInfoWithIds(Map<String, Object> map) { return examHistoryPaperMapper.getHistoryInfoWithIds(map); } public List<ExamHistoryInfo> getExamHistoryToTeacher() { return examHistoryPaperMapper.getExamHistoryToTeacher(); } }
2.4 数据接口层
public interface ExamHistoryPaperMapper { //查询考试历史信息,针对前台学生查询 public List<ExamHistoryPaper> getExamHistoryToStudent(int studentId); public int isAddExamHistory(Map<String, Object> map); public int getHistoryInfoWithIds(Map<String, Object> map); //查询考试历史信息,针对后台教师查询 public List<ExamHistoryInfo> getExamHistoryToTeacher(); }
2.5 数据实现层
<mapper namespace="com.caizhen.weknow.dao.ExamHistoryPaperMapper"> <resultMap type="com.caizhen.weknow.domain.ExamHistoryInfo" id="queryExamHistoryToStudentResultMap"> <id column="historyId" property="historyId"/> <result column="examScore" property="examScore"/> <association property="examPaper" javaType="com.caizhen.weknow.domain.ExamPaperInfo"> <id column="examPaperId" property="examPaperId"/> <result column="examPaperName" property="examPaperName"/> <result column="examPaperScore" property="examPaperScore"/> <result column="subjectNum" property="subjectNum"/> </association> </resultMap> <!-- 查询考试历史信息,针对前台学生查询 --> <select id="getExamHistoryToStudent" parameterType="int" resultType="ExamHistoryPaper"> SELECT a.historyId,a.examScore,b.examPaperId,b.examPaperName,b.examPaperScore,b.subjectNum,c.beginTime FROM ExamHistoryInfo a LEFT JOIN examPaperInfo b ON a.examPaperId=b.exampaperId LEFT JOIN examPlanInfo c ON b.examPaperId=c.examPaperId WHERE studentId=#{studentId} </select> <!-- 新增历史记录 --> <insert id="isAddExamHistory" parameterType="java.util.Map"> INSERT INTO ExamHistoryInfo VALUES(NULL, #{studentId}, #{examPaperId}, #{examScore}); </insert> <select id="getHistoryInfoWithIds" parameterType="java.util.Map" resultType="int"> SELECT COUNT(*) FROM ExamHistoryInfo WHERE studentId=#{studentId} AND examPaperId=#{examPaperId} </select> <resultMap type="com.caizhen.weknow.domain.ExamHistoryInfo" id="queryExamHistoryToTeacherResultMap"> <id column="historyId" property="historyId"/> <result column="examScore" property="examScore"/> <association property="examPaper" javaType="com.caizhen.weknow.domain.ExamPaperInfo"> <id column="examPaperId" property="examPaperId"/> <result column="examPaperName" property="examPaperName"/> <result column="examPaperScore" property="examPaperScore"/> <result column="subjectNum" property="subjectNum"/> </association> <association property="student" javaType="com.caizhen.weknow.domain.StudentInfo"> <id column="studentId" property="studentId"/> <result column="studentName" property="studentName"/> </association> </resultMap> <!-- 查询考试历史信息,针对后台教师查询 --> <select id="getExamHistoryToTeacher" resultMap="queryExamHistoryToTeacherResultMap"> SELECT a.historyId,a.examScore,b.examPaperId,b.examPaperName,b.examPaperScore,b.subjectNum,d.studentId,d.studentName FROM ExamHistoryInfo a INNER JOIN examPaperInfo b ON a.examPaperId=b.exampaperId LEFT JOIN StudentInfo d ON a.studentId=d.studentId; </select> </mapper>