|
|
|
|
@ -3,149 +3,187 @@
|
|
|
|
|
<%@page import="com.hua.entity.StudentGrade"%>
|
|
|
|
|
<%@page import="java.util.List"%>
|
|
|
|
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
|
|
|
|
|
pageEncoding="UTF-8"%>
|
|
|
|
|
pageEncoding="UTF-8"%>
|
|
|
|
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
|
|
|
|
<!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>
|
|
|
|
|
<!-- 设置页面的HTTP响应头中的内容类型为HTML,字符编码为UTF-8 -->
|
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
|
|
|
<title>教务管理系统</title>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
<div>
|
|
|
|
|
<%session.setAttribute("path", request.getRequestURI()); %>
|
|
|
|
|
<a href="<%=request.getContextPath()%>/modify/modifypassword.jsp">修改密码</a>
|
|
|
|
|
<a href="<%=request.getContextPath()%>/logoutServlet">注销</a>
|
|
|
|
|
<br><br>
|
|
|
|
|
<a href="<%=request.getContextPath() %>/acdemic_dean/acdemic/grademanagement.jsp">返回上一步</a>
|
|
|
|
|
</div>
|
|
|
|
|
<h1>学生成绩</h1>
|
|
|
|
|
<form action="<%=request.getContextPath()%>/deanQuery.grade" method="post">
|
|
|
|
|
|
|
|
|
|
<table>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>学年学期:</td>
|
|
|
|
|
<td>
|
|
|
|
|
<select name="yearTerm">
|
|
|
|
|
<option value=""></option>
|
|
|
|
|
<option value="2017秋季">2017秋季</option>
|
|
|
|
|
<option value="2017春季">2017春季</option>
|
|
|
|
|
<option value="2016秋季">2016秋季</option>
|
|
|
|
|
<option value="2016春季">2016春季</option>
|
|
|
|
|
</select>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>学院:</td>
|
|
|
|
|
<td>
|
|
|
|
|
<select name="academy">
|
|
|
|
|
<option value=""></option>
|
|
|
|
|
<option value="自动化学院">自动化学院</option>
|
|
|
|
|
<option value="物理学院">物理学院</option>
|
|
|
|
|
<option value="电子信息学院">电子信息学院</option>
|
|
|
|
|
<option value="计算机学院">计算机学院</option>
|
|
|
|
|
</select>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>专业:</td>
|
|
|
|
|
<td>
|
|
|
|
|
<select name="profession">
|
|
|
|
|
<option value=""></option>
|
|
|
|
|
<option value="自动化">自动化</option>
|
|
|
|
|
<option value="应用物理">应用物理</option>
|
|
|
|
|
<option value="电子信息工程">电子信息工程</option>
|
|
|
|
|
<option value="计算机科学与技术">计算机科学与技术</option>
|
|
|
|
|
</select>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>班级:</td>
|
|
|
|
|
<td>
|
|
|
|
|
<select name="className">
|
|
|
|
|
<option value=""></option>
|
|
|
|
|
<option value="电子15(1)">电子15(1)</option>
|
|
|
|
|
<option value="电子15(2)">电子15(2)</option>
|
|
|
|
|
<option value="计算机14(1)">计算机14(1)</option>
|
|
|
|
|
<option value="计算机14(2)">计算机14(2)</option>
|
|
|
|
|
</select>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>学号:</td>
|
|
|
|
|
<td><input type="text" name="studentId"/></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>学生姓名:</td>
|
|
|
|
|
<td><input type="text" name="studentName"/></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><input type="submit" value="查询"/></td>
|
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
</table>
|
|
|
|
|
|
|
|
|
|
</form>
|
|
|
|
|
|
|
|
|
|
<!-- 创建一个div容器,用于放置一些常用的操作链接 -->
|
|
|
|
|
<div>
|
|
|
|
|
<!-- 将当前请求的URI路径保存到session的"path"属性中,可能用于后续页面跳转等操作记录当前页面来源 -->
|
|
|
|
|
<%session.setAttribute("path", request.getRequestURI()); %>
|
|
|
|
|
<!-- 创建一个超链接,点击可跳转到修改密码页面(具体路径通过表达式获取当前应用的上下文路径拼接具体的JSP页面路径) -->
|
|
|
|
|
<a href="<%=request.getContextPath()%>/modify/modifypassword.jsp">修改密码</a>
|
|
|
|
|
<!-- 创建一个超链接,点击可触发注销操作(具体注销逻辑应该在对应的Servlet中实现,此处只是链接到相应的Servlet路径) -->
|
|
|
|
|
<a href="<%=request.getContextPath()%>/logoutServlet">注销</a>
|
|
|
|
|
<br><br>
|
|
|
|
|
|
|
|
|
|
<c:if test="${sessionScope.map != null }">
|
|
|
|
|
<!-- 创建一个超链接,点击可返回上一步(跳转到成绩管理页面,同样通过应用上下文路径拼接具体的JSP页面路径来确定目标地址) -->
|
|
|
|
|
<a href="<%=request.getContextPath() %>/acdemic_dean/acdemic/grademanagement.jsp">返回上一步</a>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 页面标题,显示为"学生成绩" -->
|
|
|
|
|
<h1>学生成绩</h1>
|
|
|
|
|
<!-- 创建一个表单,用于提交查询学生成绩相关的条件信息,表单提交到指定的Servlet(通过应用上下文路径拼接".grade"后缀来确定具体的Servlet处理路径),提交方式为POST -->
|
|
|
|
|
<form action="<%=request.getContextPath()%>/deanQuery.grade" method="post">
|
|
|
|
|
<!-- 创建一个表格,用于布局表单中的各个输入项和选择项 -->
|
|
|
|
|
<table>
|
|
|
|
|
<!-- 表格的一行,用于输入学年学期信息 -->
|
|
|
|
|
<tr>
|
|
|
|
|
<td>学年学期:</td>
|
|
|
|
|
<td>
|
|
|
|
|
<!-- 创建一个下拉选择框,用于选择学年学期,name属性为"yearTerm",用于在表单提交时传递所选的值 -->
|
|
|
|
|
<select name="yearTerm">
|
|
|
|
|
<!-- 一个空的选项,默认显示为空 -->
|
|
|
|
|
<option value=""></option>
|
|
|
|
|
<option value="2017秋季">2017秋季</option>
|
|
|
|
|
<option value="2017春季">2017春季</option>
|
|
|
|
|
<option value="2016秋季">2016秋季</option>
|
|
|
|
|
<option value="2016春季">2016春季</option>
|
|
|
|
|
</select>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<!-- 表格的一行,用于选择学院信息 -->
|
|
|
|
|
<tr>
|
|
|
|
|
<td>学院:</td>
|
|
|
|
|
<td>
|
|
|
|
|
<!-- 创建一个下拉选择框,用于选择学院,name属性为"academy",用于在表单提交时传递所选的值 -->
|
|
|
|
|
<select name="academy">
|
|
|
|
|
<option value=""></option>
|
|
|
|
|
<option value="自动化学院">自动化学院</option>
|
|
|
|
|
<option value="物理学院">物理学院</option>
|
|
|
|
|
<option value="电子信息学院">电子信息学院</option>
|
|
|
|
|
<option value="计算机学院">计算机学院</option>
|
|
|
|
|
</select>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<!-- 表格的一行,用于选择专业信息 -->
|
|
|
|
|
<tr>
|
|
|
|
|
<td>专业:</td>
|
|
|
|
|
<td>
|
|
|
|
|
<!-- 创建一个下拉选择框,用于选择专业,name属性为"profession",用于在表单提交时传递所选的值 -->
|
|
|
|
|
<select name="profession">
|
|
|
|
|
<option value=""></option>
|
|
|
|
|
<option value="自动化">自动化</option>
|
|
|
|
|
<option value="应用物理">应用物理</option>
|
|
|
|
|
<option value="电子信息工程">电子信息工程</option>
|
|
|
|
|
<option value="计算机科学与技术">计算机科学与技术</option>
|
|
|
|
|
</select>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<!-- 表格的一行,用于选择班级信息 -->
|
|
|
|
|
<tr>
|
|
|
|
|
<td>班级:</td>
|
|
|
|
|
<td>
|
|
|
|
|
<!-- 创建一个下拉选择框,用于选择班级,name属性为"className",用于在表单提交时传递所选的值 -->
|
|
|
|
|
<select name="className">
|
|
|
|
|
<option value=""></option>
|
|
|
|
|
<option value="电子15(1)">电子15(1)</option>
|
|
|
|
|
<option value="电子15(2)">电子15(2)</option>
|
|
|
|
|
<option value="计算机14(1)">计算机14(1)</option>
|
|
|
|
|
<option value="计算机14(2)">计算机14(2)</option>
|
|
|
|
|
</select>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<!-- 表格的一行,用于输入学号信息 -->
|
|
|
|
|
<tr>
|
|
|
|
|
<td>学号:</td>
|
|
|
|
|
<td><input type="text" name="studentId"/></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<!-- 表格的一行,用于输入学生姓名信息 -->
|
|
|
|
|
<tr>
|
|
|
|
|
<td>学生姓名:</td>
|
|
|
|
|
<td><input type="text" name="studentName"/></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<!-- 表格的一行,用于放置提交按钮,按钮上显示文字"查询",点击按钮会提交表单 -->
|
|
|
|
|
<tr>
|
|
|
|
|
<td><input type="submit" value="查询"/></td>
|
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
|
|
|
|
</form>
|
|
|
|
|
<!-- 空行,用于页面排版,使布局更清晰 -->
|
|
|
|
|
<br><br>
|
|
|
|
|
<!-- 使用JSTL的标签进行条件判断,如果sessionScope中的"map"属性不为null(意味着可能已经从后端获取到了学生成绩相关的结果数据),则执行以下代码块 -->
|
|
|
|
|
<c:if test="${sessionScope.map!= null }">
|
|
|
|
|
<!-- 创建一个带有边框(border="2")、单元格边距(cellpadding="0")和单元格间距(cellspacing="0")设置的表格,用于展示学生成绩详细信息 -->
|
|
|
|
|
<table border="2" cellpadding="0" cellspacing="0">
|
|
|
|
|
<tr>
|
|
|
|
|
<th>学年学期</th>
|
|
|
|
|
<th>学号</th>
|
|
|
|
|
<th>学生姓名</th>
|
|
|
|
|
<th>学院</th>
|
|
|
|
|
<th>专业</th>
|
|
|
|
|
<th>班级</th>
|
|
|
|
|
<th>课程编号</th>
|
|
|
|
|
<th>课程名称</th>
|
|
|
|
|
<th>成绩</th>
|
|
|
|
|
<th>绩点</th>
|
|
|
|
|
<th>学分</th>
|
|
|
|
|
<th>课程大类</th>
|
|
|
|
|
<th>修读方式</th>
|
|
|
|
|
<th>考试性质</th>
|
|
|
|
|
<th>成绩方式</th>
|
|
|
|
|
<th>有效</th>
|
|
|
|
|
<th>备注</th>
|
|
|
|
|
</tr>
|
|
|
|
|
<%
|
|
|
|
|
Map<StudentBasicInformation,List<StudentGrade>> map =
|
|
|
|
|
(Map<StudentBasicInformation,List<StudentGrade>>)session.getAttribute("map");
|
|
|
|
|
session.removeAttribute("map");
|
|
|
|
|
%>
|
|
|
|
|
<%
|
|
|
|
|
for(Map.Entry<StudentBasicInformation,List<StudentGrade>> entry : map.entrySet()){
|
|
|
|
|
StudentBasicInformation stu = entry.getKey();
|
|
|
|
|
List<StudentGrade> studentGrades = entry.getValue();
|
|
|
|
|
for(StudentGrade student : studentGrades){
|
|
|
|
|
|
|
|
|
|
%>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><%= student.getYearTerm()%></td>
|
|
|
|
|
<td><%= student.getStudentId()%></td>
|
|
|
|
|
<td><%= student.getStudentName()%></td>
|
|
|
|
|
<td><%= stu.getAcademy()%></td>
|
|
|
|
|
<td><%= stu.getProfession()%></td>
|
|
|
|
|
<td><%= stu.getClassName()%></td>
|
|
|
|
|
<td><%= student.getCourseId()%></td>
|
|
|
|
|
<td><%= student.getCourseName()%></td>
|
|
|
|
|
<td><%= student.getScore() %></td>
|
|
|
|
|
<td><%= student.getGradePoint() %></td>
|
|
|
|
|
<td><%= student.getCredit() %></td>
|
|
|
|
|
<td><%= student.getCourseClass() %></td>
|
|
|
|
|
<td><%= student.getStudyWay() %></td>
|
|
|
|
|
<td><%= student.getExamWay() %></td>
|
|
|
|
|
<td><%= student.getGradeWay() %></td>
|
|
|
|
|
<td><%= student.getEffectivity() %></td>
|
|
|
|
|
<td><%= student.getRemarks() %></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
<!-- 表格的表头行,定义了各个列显示的标题 -->
|
|
|
|
|
<tr>
|
|
|
|
|
<th>学年学期</th>
|
|
|
|
|
<th>学号</th>
|
|
|
|
|
<th>学生姓名</th>
|
|
|
|
|
<th>学院</th>
|
|
|
|
|
<th>专业</th>
|
|
|
|
|
<th>班级</th>
|
|
|
|
|
<th>课程编号</th>
|
|
|
|
|
<th>课程名称</th>
|
|
|
|
|
<th>成绩</th>
|
|
|
|
|
<th>绩点</th>
|
|
|
|
|
<th>学分</th>
|
|
|
|
|
<th>课程大类</th>
|
|
|
|
|
<th>修读方式</th>
|
|
|
|
|
<th>考试性质</th>
|
|
|
|
|
<th>成绩方式</th>
|
|
|
|
|
<th>有效</th>
|
|
|
|
|
<th>备注</th>
|
|
|
|
|
</tr>
|
|
|
|
|
<!-- 以下是Java代码块,用于从session中获取存储的学生成绩结果数据(类型为Map,键是StudentBasicInformation类型,值是List<StudentGrade>类型,表示每个学生对应多门课程的成绩列表),并移除session中的"map"属性(可能是为了避免重复使用或内存占用等考虑) -->
|
|
|
|
|
<%
|
|
|
|
|
Map<StudentBasicInformation, List<StudentGrade>> map =
|
|
|
|
|
(Map<StudentBasicInformation, List<StudentGrade>>)session.getAttribute("map");
|
|
|
|
|
session.removeAttribute("map");
|
|
|
|
|
%>
|
|
|
|
|
<!-- 以下是嵌套的Java代码块,外层循环遍历前面获取到的结果Map,每次取出一个学生对应的所有课程成绩列表,内层循环再遍历该学生的每一门课程成绩,将成绩信息逐行展示在表格中 -->
|
|
|
|
|
<%
|
|
|
|
|
for(Map.Entry<StudentBasicInformation, List<StudentGrade>> entry : map.entrySet()){
|
|
|
|
|
StudentBasicInformation stu = entry.getKey();
|
|
|
|
|
List<StudentGrade> studentGrades = entry.getValue();
|
|
|
|
|
for(StudentGrade student : studentGrades){
|
|
|
|
|
%>
|
|
|
|
|
<tr>
|
|
|
|
|
<!-- 在表格单元格中展示课程的学年学期信息,通过Java代码获取课程成绩对象中的学年学期属性值并输出 -->
|
|
|
|
|
<td><%= student.getYearTerm()%></td>
|
|
|
|
|
<!-- 在表格单元格中展示学生的学号信息,通过Java代码获取课程成绩对象中的学号属性值并输出 -->
|
|
|
|
|
<td><%= student.getStudentId()%></td>
|
|
|
|
|
<!-- 在表格单元格中展示学生的姓名信息,通过Java代码获取课程成绩对象中的姓名属性值并输出 -->
|
|
|
|
|
<td><%= student.getStudentName()%></td>
|
|
|
|
|
<!-- 在表格单元格中展示学生所在学院信息,通过Java代码获取学生对象中的学院属性值并输出 -->
|
|
|
|
|
<td><%= stu.getAcademy()%></td>
|
|
|
|
|
<!-- 在表格单元格中展示学生的专业信息,通过Java代码获取学生对象中的专业属性值并输出 -->
|
|
|
|
|
<td><%= stu.getProfession()%></td>
|
|
|
|
|
<!-- 在表格单元格中展示学生所在班级信息,通过Java代码获取学生对象中的班级属性值并输出 -->
|
|
|
|
|
<td><%= stu.getClassName()%></td>
|
|
|
|
|
<!-- 在表格单元格中展示课程的编号信息,通过Java代码获取课程成绩对象中的课程编号属性值并输出 -->
|
|
|
|
|
<td><%= student.getCourseId()%></td>
|
|
|
|
|
<!-- 在表格单元格中展示课程的名称信息,通过Java代码获取课程成绩对象中的课程名称属性值并输出 -->
|
|
|
|
|
<td><%= student.getCourseName()%></td>
|
|
|
|
|
<!-- 在表格单元格中展示课程的成绩信息,通过Java代码获取课程成绩对象中的成绩属性值并输出 -->
|
|
|
|
|
<td><%= student.getScore() %></td>
|
|
|
|
|
<!-- 在表格单元格中展示课程的绩点信息,通过Java代码获取课程成绩对象中的绩点属性值并输出 -->
|
|
|
|
|
<td><%= student.getGradePoint() %></td>
|
|
|
|
|
<!-- 在表格单元格中展示课程的学分信息,通过Java代码获取课程成绩对象中的学分属性值并输出 -->
|
|
|
|
|
<td><%= student.getCredit() %></td>
|
|
|
|
|
<!-- 在表格单元格中展示课程的大类信息,通过Java代码获取课程成绩对象中的课程大类属性值并输出 -->
|
|
|
|
|
<td><%= student.getCourseClass() %></td>
|
|
|
|
|
<!-- 在表格单元格中展示课程的修读方式信息,通过Java代码获取课程成绩对象中的修读方式属性值并输出 -->
|
|
|
|
|
<td><%= student.getStudyWay() %></td>
|
|
|
|
|
<!-- 在表格单元格中展示课程的考试性质信息,通过Java代码获取课程成绩对象中的考试性质属性值并输出 -->
|
|
|
|
|
<td><%= student.getExamWay() %></td>
|
|
|
|
|
<!-- 在表格单元格中展示课程的成绩方式信息,通过Java代码获取课程成绩对象中的成绩方式属性值并输出 -->
|
|
|
|
|
<td><%= student.getGradeWay() %></td>
|
|
|
|
|
<!-- 在表格单元格中展示课程的有效信息,通过Java代码获取课程成绩对象中的有效属性值并输出 -->
|
|
|
|
|
<td><%= student.getEffectivity() %></td>
|
|
|
|
|
<!-- 在表格单元格中展示课程的备注信息,通过Java代码获取课程成绩对象中的备注属性值并输出 -->
|
|
|
|
|
<td><%= student.getRemarks() %></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
</table>
|
|
|
|
|
</c:if>
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
</table>
|
|
|
|
|
</c:if>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|