其中,系统表示层采用Struts2 技术来完成,主要实现系统中控制器和视图部分;系统持久层通过 Hibernate 技术来完成,它使开发者可以以面向对象编程的方式来操作数据库,其中后台数据库使用 Mysql关系数据库工具来创建;系统业务层使用 Spring 技术来负责,它主要完成两方面任务:第一是通过调用 DAO 类来实现业务逻辑,第二是编写Server方法, 最后利用 Spring的IoC容器功能来有机整合系统表示层、业务层和持久层,并通过Ajax技术实现客服端和服务器端异步通信,具体如下图2所示[5]。
3评测系统的实现
3.1表示层
学生、教师、领导登录系统后可以对相关同学或学生进行评测,评测类型共有四种,分别是思想评测(thinking)、心理评测(heat)、身体评测(body)、专业评测(major)。每种类型提供十余个问题,学生、教师、领导通过相应的选择得出评测总分,并提交数据库。当被评用户登录后会显示评测详情,若此人还未被评测则显示“暂无评测”,其核心代码如下。
生成柱状图的代码:
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);
Font font = new Font('宋体', Font.BOLD, 17);
JFreeChart chart = ChartFactory.createBarChart3D('大学生综合素质评测统计',
'评测类型', '得分情况', dataset, PlotOrientation.VERTICAL, true,
false, false);
CategoryPlot plot = chart.getCategoryPlot();
chart.getTitle().setFont(font);
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
rangeAxis.setLabelFont(font);
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setLabelFont(font);
BarRenderer3D renderer = new BarRenderer3D(){};
显示柱状图的代码:
<%String filename=ServletUtilities.saveChartAsPNG((JFreeChart)
request.getAttribute(jfreechart), 500, 300, null, session);
String graphURL = request.getContextPath()+'/DisplayChart?
filename=' + filename;%>
暂无评价
具体运行效果如下图3所示。
图3 评测结果3D柱状图
3.2业务逻辑层
评测一个学生需要对一些试题进行选择,而这些试题则是通过系统后台的试题管理模块进行添加的,管理员通过将试题及试题选项录入数据库,从而使得学生、教师或领导在对被评测人做出相应的评测时能及时地从数据库中提取试题并作出相应的选择,然后提交被评测人的对应素质成绩。其添加试题关键代码如下:
public void addtest(TestQuestionVo test,EvaluateType evaluateType){
TestQuestion testq=new TestQuestion();
testq.setTitle(test.getTitle());
testq.setAnswerA(test.getAnswerA());
……
testq.setAnswerDValue(test.getAnswerDValue());
testq.setEvaltypeid(evaluateType);
testQuestionDao.addtest(testq);}
当学生登录系统时,系统就会在后台采用加权平均算法统计该学生思想素质、心理素质、身体素质、专业素质的各个成绩以及该学生的最后总成绩。然后分别以3D柱状体和3D饼状图显示。其统计分数的部分关键代码如下:
public double getallOneSroce(List list,Student stu){
double Score=0.0;
double xuesheng=getOneStuOrTeaSroce(list,stu,0);
double jiaoshi=getOneStuOrTeaSroce(list,stu,1);
double fdyuan=getOneStuOrTeaSroce(list,stu,2);
if(xuesheng!=0&&jiaoshi!=0&& fdyuan!=0){
Score=(xuesheng*2)/10+(jiaoshi*3)/10+( fdyuan *5)/10;
return Score;
}else if(xuesheng!=0&&jiaoshi==0&&fdyuan==0){
Score=(xuesheng*9)/10; return Score;
}else if(xuesheng==0&&jiaoshi!=0&&fdyuan==0){
Score=(jiaoshi*8.5)/10; return Score;
}else if(xuesheng==0&&jiaoshi==0&&fdyuan!=0){
Score=( fdyuan *8)/10; return Score;
}else{return 0;}}
3.3数据持久层
在数据持久层中,本系统采用Hibernate技术来实现各类业务数据与数据库中数据进行交互,并以面向对象的方式来操作各类数据,以下是评测系统中的数据持久类(以学生为例)。其部分代码如下[6]:
public List evalNoStudent(Student stu){……
String hql='from Student where sentrancetime='+stu.getSentrancetime()
+' and grade='+stu.getGrade()+' and snumber!='+stu. 2/3 首页 上一页 1 2 3 下一页 尾页 |