我要做一个成绩管理系统,需要实现成绩的统计分析功能。成绩表有班级、课程、学期、学生学号、成绩 等几个字段,需要按班级、课程、学期进行分组,并统计一下平均分,优良中差不及格的人数。
求高手帮忙
Action:
String hql = "select s.term.term_id,s.course.c_id,s.dept.dept_id,max(total),min(total),avg(total)" + " from Score s group by s.term.term_id,s.course.c_id,s.dept.dept_id";
List l = scm.getAllScore(hql);
System.out.print("wwwwww"+l);
for(int i=0;i<l.size();i++){
System.out.println(l.get(i));
问题1:以前都是强转成实体的类型,现在这种情况不知道怎样处理,
}
打印信息如下(不知道这是什么意思):
wwwwww[[Ljava.lang.Object;@1ff66bd, [Ljava.lang.Object;@b217d5, [Ljava.lang.Object;@3ac11b, [Ljava.lang.Object;@15be31e]
[Ljava.lang.Object;@1ff66bd
[Ljava.lang.Object;@b217d5
[Ljava.lang.Object;@3ac11b
[Ljava.lang.Object;@15be31e
以下两个方法是Action调用的代码
Service:
public List getAllScore(String hql) {
List scores = dao.getAllData(hql);
return scores;
}
DAO:
public List getAllData(String hql){
List datas = null;
datas = this.getHibernateTemplate().find(hql);
return datas;
}
问题2:要达到如下的效果一定要用好几条语句才能查出来,如优秀人数是分数90~100之间的而及格的人数是在60~100之间的,怎么把这些结果返回到一个JSP页中
希望得到如下的效果(在JSP 页显示):
班级 课程 学期 平均分 优秀人数 良好人数 中等人数 及格人数
软件一班 软件工程 07年第一学期 56.34 10 12 8 5
------解决方案--------------------------------------------------------
问题1:
List l = scm.getAllScore(hql);
楼主看下方法内放入list的对象是什么,然后强制类型转换就可以了。
问题2:
String hql = "select s.term.term_id,s.course.c_id,s.dept.dept_id,max(total),min(total),avg(total)" + ",sum(case when total>=90 then 1 else 0 end) 优秀人数,sum(case when total>=60 then 1 else 0 end) 及格人数,sum(case when total>=75 and total<90 then 1 else 0 end) 良好人数标准自己改 from Score s group by s.term.term_id,s.course.c_id,s.dept.dept_id";
------解决方案--------------------------------------------------------
第一个问题:以前都是强转成实体的类型,现在这种情况不知道怎样处理。
从数据库中取出来的都是object数组。你遍历获得的list,然后赋值给一个对象就行了。
问题2:要达到如下的效果一定要用好几条语句才能查出来,如优秀人数是分数90~100之间的而及格的人数是在60~100之间的,怎么把这些结果返回到一个JSP页中。
dao层写一个方法,
public List getStuCountByScore(int beginScore,int endScore){
//你的代码。
}
然后你可以在action中进行控制什么的。
只有思路,剩下的代码自己写吧。