如何显示班级学生各门课程的成绩及总分?

xuexixuexi2008 2011-06-18 09:57:08
在成绩表(mark)中有三列studentname,coursename,score,可是在网页中想这样显示:

学生名 课程名1 课程名2 课程名3 .......课程名n 总分

这里的课程名1.....课程名n 是从数据库查找出来的,

结合jstl 在页面该如何显示该班级每个学生各门课的分数及总分

这个问题我想了好几天,一直无法解决,郁闷.谁能帮帮我啊?
...全文
448 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuexixuexi2008 2011-06-20
  • 打赏
  • 举报
回复
明白了,非常感谢!
zfz1214 2011-06-20
  • 打赏
  • 举报
回复
自定义一个DTO,然后在这DTO中设置 学生名 课程名1 课程名2 课程名3 .......课程名n 总分 属性,然后通过程序重新查到数据后重新组装即可(总分可以在程序中直接给它算出来)

wfqqwer5213 2011-06-20
  • 打赏
  • 举报
回复
充分利用模型把,你的student和mark应该是1对多的关系,

public class student{

....

List<mark> marks;
}

HQL

from student查询出所有student的数据,hibernate同时加载对应的成绩。

在jsp里面做两个循环来显示
xuexixuexi2008 2011-06-20
  • 打赏
  • 举报
回复
课程名称不是固定的,我就是不会如何循环啊,似乎是个列转行的问题,但是关键是我用的是hql语句访问my sql,并且通过struts标签或jstl显示出来。
xuexixuexi2008 2011-06-20
  • 打赏
  • 举报
回复
是的阿,结果绩是按学生名称排序的.

还是不会哎,能理解大概意思,但实现起来不太容易,哪位好人能给点代码的?我是刚起步,身边也没有懂这个的人
我是用Struts+Hibernate分层做的,已经用HQL语句将结果查询了出来,不是用SQL语句查询的呀
demohunter 2011-06-20
  • 打赏
  • 举报
回复
你的结果集是按学生名称排序的吧,你可以用遍历的索引做判定啊
demohunter 2011-06-20
  • 打赏
  • 举报
回复
可以在页面遍历的时候做判断啊 如果学生名称一样就不要另起一行,再原来的基础上追加名称和分数 总分可以在sql语句中给出。
xuexixuexi2008 2011-06-20
  • 打赏
  • 举报
回复
zfz1214
(稻草人)
等 级:
#8楼 得分:0回复于:2011-06-20 09:12:36
自定义一个DTO,然后在这DTO中设置 学生名 课程名1 课程名2 课程名3 .......课程名n 总分 属性,然后通过程序重新查到数据后重新组装即可(总分可以在程序中直接给它算出来)


你的方法我认为挺好,可是在具体定义的时候就不知道如何定义,特别是对课程名的定义中,难道也需要for语句吗?上面有我的代码,能具体点吗?
jisg_57 2011-06-19
  • 打赏
  • 举报
回复
你这个课程名称的个数是固定的吗?
试试这样:
select studentname,
decode(coursename,'数学',score,0) 数学成绩,
decode(coursename,'英语',score,0) 英语成绩,
decode(coursename,'物理',score,0) 物理成绩
sum(score) 总分
from mark
xjmlj2010 2011-06-19
  • 打赏
  • 举报
回复
这个只是布局问题,只要调一下顺序就行了吧
xuexixuexi2008 2011-06-19
  • 打赏
  • 举报
回复
我是用hql查询出来,结果是
张华 语文 70
张华 数学 67
张华 物理 86
王芳 语文 88
王芳 数学 79
王芳 物理 98
.......
.......


我要显示的是
姓名 语文 数学 物理 总分
张华 70 67 86 ..
王芳 88 79 98 ..
......
......

在Action中的代码如下,
public ActionForward analyseTeam(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {

String teamId = request.getParameter("teamId");

Team team = teamDao.findTeamById(teamId);

List<Course> courses = courseScheduleDao.findCourseByTeam(team);

request.setAttribute("courses", courses);

Set<Student> students = team.getStudents();

List marks = new ArrayList();

for(Iterator iter=students.iterator(); iter.hasNext();) {
Student student = (Student)iter.next();
List marksNew = markDao.findMarkByStudent(student);

Float[] cj=new Float[marksNew.size()];
for(i=0;i<cj.length;i++) {
cj=(Float)marksNew.getScore();
}


marks.addAll(cj);
}
request.setAttribute("cj", cj);

request.setAttribute("marks1", marks);

return mapping.findForward("analyse");
}
其中marks1就是上面查询出来的结果

analyse.jsp中的显示代码如下:
<logic:present name="marks1" scope="request">
<TABLE class=small cellSpacing="1" cellPadding="2" width="80%" align="center" bgColor="#000000" border="0">
<TBODY>
<TR>
<TD class="TableSeparator" width="10%" align="center"><strong>学号</strong></TD>
<TD class="TableSeparator" width="10%" align="center"><strong>姓名</strong></TD>
<c:forEach items="${courses}" var="course" >
<TD class="TableSeparator" width="10%" align="center"><strong>${course.name}</strong></TD>
</c:forEach>
<TD class="TableSeparator" width="5%" align="center"><strong>总分</strong></TD>
</TR>


<c:forEach items="${marks1}" var="item">

<TR>
<TD class=TableData width="10%" align="center">${ item.student.code }</TD>
<TD class=TableData width="10%" align="center">${ item.student.name }</TD>

<c:forEach items="${marksNew}" var="cj" >
<TD class=TableData width="10%" align="center">${cj.score}</strong></TD>
</c:forEach>
<TD class=TableData width="10%" align="center">${cj.score} </TD>
</TR>
</c:forEach>

</TBODY>
</TABLE>
</logic:present>

显示结果是:
姓名 语文 数学 物理 总分
张华
张华
张华
王芳
王芳
王芳
.........
.........

该怎么改呢?
......
......
li72li72 2011-06-19
  • 打赏
  • 举报
回复
只是分数要循环啊,上面的作为表头不用循环。 不是很复杂,楼主在仔细想想。
xuexixuexi2008 2011-06-19
  • 打赏
  • 举报
回复
就是这里卡住调不好,该如何调顺序?
keketian521 2011-06-18
  • 打赏
  • 举报
回复
用sql语句查询出来!不就行了吗?

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧