/*** * 计算高分人数,低分人数,平均分 * * */ public static StatRecord coreCalc(List<Student> studentList, float highScore, float lowScore, string defaultName) { float meanScore = CoreService.calcMeanScore(studentList); List<Student> highStudentList = CoreService.calcScoreRange(studentList, highScore, 101); List<Student> lowStudentList = CoreService.calcScoreRange(studentList, 0, lowScore); string name = studentList[0].getClazz(); if (!StringUtils.isBlank(defaultName)) { name = defaultName; } StatRecord record = new StatRecord(name, studentList.Count, meanScore, highStudentList, lowStudentList,highScore,lowScore); return record; }
private static DataTable renderStatTable(StatRecord statRecord1, StatRecord statRecord2) { DataTable dt = DataTableManager.newDataTable(new string[] { "名称", "总人数", "平均分", "高分线","高分人数","高分率", "低分线","低分人数","低分率" }); float highRate = statRecord1.getHighScoreCount()*1000*0.1f/statRecord1.getTotalCount(); float lowRate = statRecord1.getLowScoreCount()*1000*0.1f/statRecord1.getTotalCount(); DataRow dr = dt.NewRow(); dr[0] = "上次统计结果"; dr[1] = statRecord1.getTotalCount(); dr[2] = Convert.ToDecimal(statRecord1.getMeanScore()).ToString("0.00"); dr[3] = Convert.ToDecimal(statRecord1.highScoreLine + 0.0001f).ToString("0.00") ; dr[4] = statRecord1.getHighScoreCount(); dr[5] = Convert.ToDecimal(highRate).ToString("0.00")+"%"; dr[6] = Convert.ToDecimal(statRecord1.lowScoreLine + 0.0001f).ToString("0.00"); dr[7] = statRecord1.getLowScoreCount(); dr[8] = Convert.ToDecimal(lowRate).ToString("0.00") + "%"; dt.Rows.Add(dr); dr = dt.NewRow(); float highRate2 = statRecord2.getHighScoreCount()*100/statRecord2.getTotalCount(); float lowRate2 = statRecord2.getLowScoreCount()*100/statRecord2.getTotalCount(); dr[0] = "本次统计结果"; dr[1] = statRecord2.getTotalCount(); dr[2] = Convert.ToDecimal(statRecord2.getMeanScore()).ToString("0.00"); dr[3] = Convert.ToDecimal(statRecord2.highScoreLine+0.0001f).ToString("0.00"); dr[4] = statRecord2.getHighScoreCount(); dr[5] = Convert.ToDecimal(highRate2).ToString("0.00") + "%"; dr[6] = Convert.ToDecimal(statRecord2.lowScoreLine+0.0001f).ToString("0.00"); dr[7] = statRecord2.getLowScoreCount(); dr[8] = Convert.ToDecimal(lowRate2).ToString("0.00") + "%"; dt.Rows.Add(dr); dr = dt.NewRow(); dr[0] = "比较结果"; dr[1] = statRecord2.getTotalCount(); dr[2] = Convert.ToDecimal(statRecord2.getMeanScore()-statRecord1.getMeanScore()).ToString("0.00"); //平均分提升率 dr[3] = statRecord2.highScoreLine - statRecord1.highScoreLine; dr[4] = statRecord2.getHighScoreCount() - statRecord1.getHighScoreCount(); dr[5] = Convert.ToDecimal((highRate2 - highRate)).ToString("0.00") + "%"; //高分提高率 dr[6] = statRecord2.lowScoreLine - statRecord1.lowScoreLine; dr[7] = statRecord2.getLowScoreCount() - statRecord1.getLowScoreCount(); dr[8] = Convert.ToDecimal(lowRate2 - lowRate).ToString("0.00") + "%"; dt.Rows.Add(dr); return dt; }