Esempio n. 1
0
 /// <summary>
 /// 取的Score 看是要用哪一種 回傳不同
 /// </summary>
 /// <returns>定期加平時 or 定期 or 平時</returns>
 internal decimal?GetScore(IScore socreInfo, EnumScoreComposition EnumScoreComposition)
 {
     if (EnumScoreComposition == EnumScoreComposition.成績)
     {
         if (socreInfo.ScoreT.HasValue && Program.ScoreValueMap.ContainsKey(socreInfo.ScoreT.Value))
         {
             return(Program.ScoreValueMap[socreInfo.ScoreT.Value].Score);
         }
         return(socreInfo.ScoreT);
     }
     else if (EnumScoreComposition == EnumScoreComposition.定期成績)
     {
         if (socreInfo.ScoreF.HasValue && Program.ScoreValueMap.ContainsKey(socreInfo.ScoreF.Value))
         {
             return(Program.ScoreValueMap[socreInfo.ScoreF.Value].Score);
         }
         return(socreInfo.ScoreF);
     }
     else if (EnumScoreComposition == EnumScoreComposition.平時成績)  // 因目前沒有平時成績排名需求 應該用不到
     {
         if (socreInfo.ScoreA.HasValue && Program.ScoreValueMap.ContainsKey(socreInfo.ScoreA.Value))
         {
             return(Program.ScoreValueMap[socreInfo.ScoreA.Value].Score);
         }
         return(socreInfo.ScoreA);
     }
     else
     {
         return(null);
     }
 }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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);
        }