在做评教系统的时候,一方面把评教的数据跟基础数据库分离出来了,那也就意味着所有的功能都需要重构,至少在D层完全需要。另一方面,组长说了不让用存储过程。原来的版本大部分都是用存储过程实现的。为什么不用了呢?
个人理解就是,存储过程是一堆合并的SQL语句集,经编译后存储在数据库当中。只在创建的时候需要编译,相对于一般SQL语句来说,使用存储过程可大大提高执行速度,而且可以完成复杂的判断和较复杂的运算。但是如果我们在项目中大量的使用存储过程,到程序交付使用的时候,随着用户需求的增加会导致数据结构的变化,这样就造成了用户想维护该系统很困难,而且要付出很大的代价。
鉴于此,所以此次评教系统组长决定不使用存储过程,而改用一般的SQL语句。在做统计教师成绩那一块的时候,因为不用存储过程,又对表进行了合并,所以需要对B层和D层进行功能上的重构。统计教师成绩分为这几步:
/// <summary>
/// 统计教师各项目平均分 ——朱火云 2014年3月19日
/// </summary>
/// <returns>Boolean</returns>
public Boolean StaticAverageScore()
{
//调用删除各项目平均成绩方法
Boolean deleteAverageScore = projectAverageScoreDAL.DeleteProjectAverageScore();
if (true == deleteAverageScore)
{
//计算各项目平均成绩方法
DataTable dtSelectAverageScore = projectAverageScoreDAL.QueryProjectDetailScore();
//添加各项目平均成绩方法
Boolean insetAverageScore = projectAverageScoreDAL.InsertProjectDetailScore(dtSelectAverageScore);
if (true == insetAverageScore)
{
ProjectAverageScoreEntity enProjectAverageScore = new ProjectAverageScoreEntity();
return StaticticalTeacherScoresBLL.StaticTeacherTotalScore(enProjectAverageScore);
}
else
{
return false;
}
}
else
{
return false;
}
} /// <summary>
/// 统计教师总成绩,并写入教师总成绩表——朱火云 2014年3月19日
/// </summary>
/// <param name="enProjectAverageScore">平均成绩实体(类型ID、学年、学期)</param>
/// <returns>Boolean</returns>
public static Boolean StaticTeacherTotalScore(ProjectAverageScoreEntity enProjectAverageScore)
{
//获取要计算成绩的课程类型ID、学年、学期
DataTable dtSelectTeacherRecord = teacherTotalScoresDAL.SelectAverageTotalInfo(enProjectAverageScore);
//清空教师总成绩分数表
Boolean deleteTeacherTotalScores = teacherTotalScoresDAL.DeleteTotalScoreInfo(enProjectAverageScore);
if (true == deleteTeacherTotalScores)
{
//计算教师总成绩
DataTable dtTeacherTotalScores = teacherTotalScoresDAL.QueryTeacherTotalScores();
if (dtSelectTeacherRecord.Rows.Count != 0)
{
//添加教师总成绩
Boolean insertTeacherTotalScores = teacherTotalScoresDAL.InsertTeacherTotalScores(dtSelectTeacherRecord);
return true;
}
return true;
}
else
{
return false;
}
} #region 统计教师成绩总分
/// <summary>
/// 统计教师成绩总分 ——朱火云 2014年3月19日
/// </summary>
/// <returns>Boolean</returns>
public Boolean StaticTeacherTotalScores()
{
//删除教师成绩分数信息
Boolean deleteTeacherScores = teacherTotalScoresDAL.DeleteTotalScoreInfo();
//统计教师成绩平均分
Boolean countAverageScore = teacherTotalScoresDAL.QueryProjectAverageScores();
//统计教师成绩总分
Boolean countTotalScore = teacherTotalScoresDAL.QueryTeacherTotalScores();
if (true == deleteTeacherScores & true == countAverageScore & true == countTotalScore)
{
return true;
}
else
{
return false;
}
}
#endregion原文:http://blog.csdn.net/mingxuanyun/article/details/22431739