/// <summary> /// 取的算術總分 /// </summary> /// <param name="isContainFlex">是否包含彈性課程</param> /// <param name="scoreType">領域成績 OR 科目成績</param> /// <param name="enumScoreComposition">定期、平時、定期加平時</param> /// <returns></returns> public decimal?GetScoreArithmeticTotal(bool isContainFlex, EnumScoreType scoreType, EnumScoreComposition enumScoreComposition) { Dictionary <string, IScore> dicScoreInfo = new Dictionary <string, IScore>(); // 確認 是哪一種成績要計算 取用不同dictionary if (scoreType == EnumScoreType.領域) { dicScoreInfo = _ExamDomainScoreDict; } else if (scoreType == EnumScoreType.科目) { dicScoreInfo = _ExamSubjectScoreDict; } else if (scoreType == EnumScoreType.參考科目) { dicScoreInfo = _RefExamSubjectScoreDict; } decimal?result = null; decimal?totalScore = null; //if (dicScoreInfo.Count > 0) //如果有成績紀錄(至少有一科) //{ // totalScore = 0; //} if (isContainFlex) { foreach (IScore sc in dicScoreInfo.Values) { if (this.GetScore(sc, enumScoreComposition).HasValue&& sc.Credit.HasValue) { totalScore = (totalScore.HasValue ? totalScore.Value : 0) + GetScore(sc, enumScoreComposition).Value; } } } else { foreach (IScore sc in dicScoreInfo.Values) { // 過濾彈性課程 if (string.IsNullOrEmpty(sc.DomainName) || sc.DomainName == "彈性課程") { continue; } if (this.GetScore(sc, enumScoreComposition).HasValue&& sc.Credit.HasValue) { totalScore = (totalScore.HasValue ? totalScore.Value : 0) + this.GetScore(sc, enumScoreComposition).Value; } } } result = totalScore; return(result); }
/// <summary> /// 取的算術平均 /// </summary> /// <param name="isContainFlex">是否包含彈性課程</param> /// <param name="scoreType">領域成績 OR 科目成績</param> /// <param name="enumScoreComposition">定期、平時、定期加平時</param> /// <returns></returns> public decimal?GetScoreArithmeticMean(bool isContainFlex, EnumScoreType scoreType, EnumScoreComposition enumScoreComposition) { Dictionary <string, IScore> dicScoreInfo = new Dictionary <string, IScore>(); decimal?result = null; if (scoreType == EnumScoreType.領域) { dicScoreInfo = _ExamDomainScoreDict; } else if (scoreType == EnumScoreType.科目) { dicScoreInfo = _ExamSubjectScoreDict; } else if (scoreType == EnumScoreType.參考科目) { dicScoreInfo = this._RefExamSubjectScoreDict; } decimal?totalScore = null; decimal SubjCount = 0; if (isContainFlex) { foreach (IScore sc in dicScoreInfo.Values) { if (this.GetScore(sc, enumScoreComposition).HasValue&& sc.Credit.HasValue) { totalScore = (totalScore.HasValue ? totalScore.Value : 0) + GetScore(sc, enumScoreComposition).Value; SubjCount++; } } } else { foreach (IScore sc in dicScoreInfo.Values) { // 過濾彈性課程 if (string.IsNullOrEmpty(sc.DomainName) || sc.DomainName == "彈性課程") { continue; } if (this.GetScore(sc, enumScoreComposition).HasValue&& sc.Credit.HasValue) { totalScore = (totalScore.HasValue ? totalScore.Value : 0) + this.GetScore(sc, enumScoreComposition).Value; SubjCount++; } } } if (SubjCount > 0) { result = _Calculator.ParseSubjectScore((totalScore.HasValue ? totalScore.Value : 0) / SubjCount); } // 確認 是哪一種成績要計算 取用不同dictionary return(result); }