public static int SortBySubjectName(SHSubjectSemesterScoreInfo a, SHSubjectSemesterScoreInfo b)
        {
            string a1 = a.SubjectName.Length > 0 ? a.SubjectName.Substring(0, 1) : "";
            string b1 = b.SubjectName.Length > 0 ? b.SubjectName.Substring(0, 1) : "";

            #region 第一個字一樣的時候
            if (a1 == b1)
            {
                //if (a.SubjectName.Length > 1 && b.SubjectName.Length > 1)
                //    return SortBySubjectName(a, b);
                //else
                return(a.SubjectName.Length.CompareTo(b.SubjectName.Length));
            }
            #endregion
            #region 第一個字不同,分別取得在設定順序中的數字,如果都不在設定順序中就用單純字串比較
            int ai = getIntForSubject(a1), bi = getIntForSubject(b1);
            if (ai > 0 || bi > 0)
            {
                return(ai.CompareTo(bi));
            }
            else
            {
                return(a1.CompareTo(b1));
            }
            #endregion
        }
Exemplo n.º 2
0
        //  收集學生修習科目學期成績資料
        private void ProducePersonalSubjectSemesterScoreInfo(Dictionary <string, SHSubjectSemesterScoreInfo> pPersonalSubjectSemesterScoreInfo, SHSchool.Data.SHSubjectScore pSubjectScore, int?pGradeYear)
        {
            string key = pSubjectScore.RefStudentID + "_" + pSubjectScore.SchoolYear.ToString() + "_" + pSubjectScore.Semester.ToString() + "_" + pSubjectScore.Subject + "_" + ((pSubjectScore.Level.HasValue) ? pSubjectScore.Level.ToString() : "");

            SHSubjectSemesterScoreInfo SHSSSI = pPersonalSubjectSemesterScoreInfo[key];

            SHSSSI.StudentID             = pSubjectScore.RefStudentID;
            SHSSSI.SchoolYear            = pSubjectScore.SchoolYear;
            SHSSSI.Semester              = pSubjectScore.Semester;
            SHSSSI.Entry                 = pSubjectScore.Entry;
            SHSSSI.SubjectName           = pSubjectScore.Subject;
            SHSSSI.Level                 = pSubjectScore.Level;
            SHSSSI.Score                 = pSubjectScore.Score;
            SHSSSI.ReExamScore           = pSubjectScore.ScoreReExam;
            SHSSSI.ReCourseScore         = pSubjectScore.ScoreReCourse;
            SHSSSI.ManualScore           = pSubjectScore.ScoreBetter;
            SHSSSI.SchoolYearAdjustScore = pSubjectScore.ScoreSchoolYearAdjust;
            SHSSSI.Credit                = pSubjectScore.Credit;
            //SHSSSI.ProgramCredit = GetPersonalSubjectCreditUsingProgramPlan(_StudentProgramPlan[pSubjectScore.RefStudentID], pSubjectScore.Subject, pSubjectScore.Level);
            SHSSSI.RequiredBy = pSubjectScore.RequiredBy;
            //SHSSSI.ProgramRequiredBy = string.Empty;
            SHSSSI.Required = pSubjectScore.Required;
            //SHSSSI.ProgramRequired = ;
            //SHSSSI.ProgramBranchType = string.Empty;
            SHSSSI.CoreSubject         = IsCoreSubject(pSubjectScore.Subject, pSubjectScore.Level);
            SHSSSI.NotIncludedInCredit = pSubjectScore.NotIncludedInCredit;
            SHSSSI.NotIncludedInCalc   = pSubjectScore.NotIncludedInCalc;
            SHSSSI.Comment             = pSubjectScore.Comment;
            SHSSSI.Pass      = pSubjectScore.Pass;
            SHSSSI.GradeYear = pGradeYear;

            if (!_PersonalAllSemesterSubjectScoreInfo.ContainsKey(pSubjectScore.RefStudentID))
            {
                _PersonalAllSemesterSubjectScoreInfo.Add(pSubjectScore.RefStudentID, new List <SHSubjectSemesterScoreInfo>());
            }

            _PersonalAllSemesterSubjectScoreInfo[pSubjectScore.RefStudentID].Add(SHSSSI);
        }
 public static int SortBySubjectName(SHSubjectSemesterScoreInfo a, SHSubjectSemesterScoreInfo b)
 {
     string a1 = a.SubjectName.Length > 0 ? a.SubjectName.Substring(0, 1) : "";
     string b1 = b.SubjectName.Length > 0 ? b.SubjectName.Substring(0, 1) : "";
     #region 第一個字一樣的時候
     if (a1 == b1)
     {
         //if (a.SubjectName.Length > 1 && b.SubjectName.Length > 1)
         //    return SortBySubjectName(a, b);
         //else
             return a.SubjectName.Length.CompareTo(b.SubjectName.Length);
     }
     #endregion
     #region 第一個字不同,分別取得在設定順序中的數字,如果都不在設定順序中就用單純字串比較
     int ai = getIntForSubject(a1), bi = getIntForSubject(b1);
     if (ai > 0 || bi > 0)
         return ai.CompareTo(bi);
     else
         return a1.CompareTo(b1);
     #endregion
 }
        public List<SHSubjectSemesterScoreInfo> SortSHSubjectSemesterScore(List<SHSubjectSemesterScoreInfo> firstSemesterSubjectScoreInfo, List<SHSubjectSemesterScoreInfo> secondSemesterSubjectScoreInfo)
        {
            SHSubjectSemesterScoreInfo[] byteSecondSemesterSubjectScoreInfo = new List<SHSubjectSemesterScoreInfo>().ToArray();
            if (secondSemesterSubjectScoreInfo != null && secondSemesterSubjectScoreInfo.Count>0)
                byteSecondSemesterSubjectScoreInfo = secondSemesterSubjectScoreInfo.ToArray();

            List<SHSubjectSemesterScoreInfo> reSortedSecondSemesterSubjectScoreInfo = new List<SHSubjectSemesterScoreInfo>();

            if ((firstSemesterSubjectScoreInfo == null || firstSemesterSubjectScoreInfo.Count == 0) && (secondSemesterSubjectScoreInfo == null || secondSemesterSubjectScoreInfo.Count == 0))
                return new List<SHSubjectSemesterScoreInfo>();

            if (secondSemesterSubjectScoreInfo == null || secondSemesterSubjectScoreInfo.Count == 0)
                return firstSemesterSubjectScoreInfo;

            if (firstSemesterSubjectScoreInfo == null || firstSemesterSubjectScoreInfo.Count == 0)
                return secondSemesterSubjectScoreInfo;

            int j = 0;
            SHSubjectSemesterScoreInfo s2 = new SHSubjectSemesterScoreInfo();
            foreach (SHSubjectSemesterScoreInfo s1 in firstSemesterSubjectScoreInfo)
            {
                bool found = false;
                for (int i = 0; i < (byteSecondSemesterSubjectScoreInfo.Length - j); i++)
                {
                    s2 = (byteSecondSemesterSubjectScoreInfo.GetValue(i) as SHSubjectSemesterScoreInfo);

                    if ((s1.SubjectName.Trim() == s2.SubjectName.Trim()) && (s1.GradeYear.HasValue && s2.GradeYear.HasValue && s1.GradeYear == s2.GradeYear))
                    {
                        found = true;

                        reSortedSecondSemesterSubjectScoreInfo.Add(s2);
                        byteSecondSemesterSubjectScoreInfo.SetValue(byteSecondSemesterSubjectScoreInfo.GetValue((byteSecondSemesterSubjectScoreInfo.Length - 1 - j)), i);
                        byteSecondSemesterSubjectScoreInfo.SetValue(s2, (byteSecondSemesterSubjectScoreInfo.Length - 1 - j));

                        j++;
                    }
                }
                if (!found)
                {
                    SHSubjectSemesterScoreInfo _SHSubjectSemesterScoreInfo = new SHSubjectSemesterScoreInfo();

                    _SHSubjectSemesterScoreInfo.SubjectName = string.Empty;
                    _SHSubjectSemesterScoreInfo.StudentID = s2.StudentID;
                    _SHSubjectSemesterScoreInfo.Semester = s2.Semester;
                    _SHSubjectSemesterScoreInfo.Score = null;
                    _SHSubjectSemesterScoreInfo.SchoolYearAdjustScore = null;
                    _SHSubjectSemesterScoreInfo.SchoolYear = s2.SchoolYear;
                    _SHSubjectSemesterScoreInfo.RequiredBy = string.Empty;
                    _SHSubjectSemesterScoreInfo.Required = null;
                    _SHSubjectSemesterScoreInfo.ReExamScore = null;
                    _SHSubjectSemesterScoreInfo.ReCourseScore = null;
                    _SHSubjectSemesterScoreInfo.Pass = null;
                    _SHSubjectSemesterScoreInfo.NotIncludedInCredit = null;
                    _SHSubjectSemesterScoreInfo.NotIncludedInCalc = null;
                    _SHSubjectSemesterScoreInfo.ManualScore = null;
                    _SHSubjectSemesterScoreInfo.Level = null;
                    _SHSubjectSemesterScoreInfo.Entry = string.Empty;
                    _SHSubjectSemesterScoreInfo.Credit = null;
                    _SHSubjectSemesterScoreInfo.CoreSubject = false;
                    _SHSubjectSemesterScoreInfo.Comment = string.Empty;
                    _SHSubjectSemesterScoreInfo.GradeYear = null;
                    _SHSubjectSemesterScoreInfo.ProSubject = false;

                    reSortedSecondSemesterSubjectScoreInfo.Add(_SHSubjectSemesterScoreInfo);
                }
            }
            for (int i = 0; i < (byteSecondSemesterSubjectScoreInfo.Length - j); i++)
            {
                reSortedSecondSemesterSubjectScoreInfo.Add(byteSecondSemesterSubjectScoreInfo[i]);
            }
            return reSortedSecondSemesterSubjectScoreInfo;
        }
        /// <summary>
        /// 由上學期科目取得下學期科目
        /// </summary>
        /// <param name="pStudentID">學生系統編號</param>
        /// <param name="pSchoolYear">學年度</param>
        /// <returns>個人與上學期對齊之下學期科目成績資訊</returns>
        public List<SHSubjectSemesterScoreInfo> GetPersonal2ndSemesterSubjectScoreInfo(string pStudentID, int pSchoolYear1, int pSchoolYear2, int pSemester1, int pSemester2)
        {
            string keyFirstSemester = pStudentID + "_" + pSchoolYear1.ToString() + "_" + pSemester1.ToString();
            string keySecondSemester = pStudentID + "_" + pSchoolYear2.ToString() + "_" + pSemester2.ToString();

            if (!_PersonalSemesterSubjectScoreInfo.ContainsKey(keyFirstSemester))
                return null;

            if (!_PersonalSemesterSubjectScoreInfo.ContainsKey(keySecondSemester))
                return null;

            List<SHSubjectSemesterScoreInfo> firstSemesterSubjectScoreInfo = _PersonalSemesterSubjectScoreInfo[keyFirstSemester];
            SHSubjectSemesterScoreInfo[] secondSemesterSubjectScoreInfo = _PersonalSemesterSubjectScoreInfo[keySecondSemester].ToArray();
            List<SHSubjectSemesterScoreInfo> reSortedSecondSemesterSubjectScoreInfo = new List<SHSubjectSemesterScoreInfo>();

            if (secondSemesterSubjectScoreInfo.Length == 0)
                return null;

            int j = 0;
            foreach (SHSubjectSemesterScoreInfo s1 in firstSemesterSubjectScoreInfo)
            {
                bool found = false;
                SHSubjectSemesterScoreInfo s2 = new SHSubjectSemesterScoreInfo();
                for (int i = 0; i < (secondSemesterSubjectScoreInfo.Length - j); i++)
                {
                    s2 = (secondSemesterSubjectScoreInfo.GetValue(i) as SHSubjectSemesterScoreInfo);

                    if ((s1.SubjectName.Trim() == s2.SubjectName.Trim()) && (s1.GradeYear.HasValue && s2.GradeYear.HasValue && s1.GradeYear == s2.GradeYear))
                    {
                        found = true;

                        reSortedSecondSemesterSubjectScoreInfo.Add(s2);
                        secondSemesterSubjectScoreInfo.SetValue(secondSemesterSubjectScoreInfo.GetValue((secondSemesterSubjectScoreInfo.Length - 1 - j)), i);
                        secondSemesterSubjectScoreInfo.SetValue(s2, (secondSemesterSubjectScoreInfo.Length - 1 - j));

                        j++;
                    }
                }
                if (!found)
                {
                    SHSubjectSemesterScoreInfo _SHSubjectSemesterScoreInfo = new SHSubjectSemesterScoreInfo();

                    _SHSubjectSemesterScoreInfo.SubjectName = string.Empty;
                    _SHSubjectSemesterScoreInfo.StudentID = pStudentID;
                    _SHSubjectSemesterScoreInfo.Semester = s2.Semester;
                    _SHSubjectSemesterScoreInfo.Score = null;
                    _SHSubjectSemesterScoreInfo.SchoolYearAdjustScore = null;
                    _SHSubjectSemesterScoreInfo.SchoolYear = s2.SchoolYear;
                    _SHSubjectSemesterScoreInfo.RequiredBy = string.Empty;
                    _SHSubjectSemesterScoreInfo.Required = null;
                    _SHSubjectSemesterScoreInfo.ReExamScore = null;
                    _SHSubjectSemesterScoreInfo.ReCourseScore = null;
                    _SHSubjectSemesterScoreInfo.Pass = null;
                    _SHSubjectSemesterScoreInfo.NotIncludedInCredit = null;
                    _SHSubjectSemesterScoreInfo.NotIncludedInCalc = null;
                    _SHSubjectSemesterScoreInfo.ManualScore = null;
                    _SHSubjectSemesterScoreInfo.Level = null;
                    _SHSubjectSemesterScoreInfo.Entry = string.Empty;
                    _SHSubjectSemesterScoreInfo.Credit = null;
                    _SHSubjectSemesterScoreInfo.CoreSubject = false;
                    _SHSubjectSemesterScoreInfo.Comment = string.Empty;
                    _SHSubjectSemesterScoreInfo.GradeYear = null;
                    _SHSubjectSemesterScoreInfo.ProSubject = false;

                    reSortedSecondSemesterSubjectScoreInfo.Add(s2);
                }
            }
            for (int i = 0; i < (secondSemesterSubjectScoreInfo.Length-j); i++)
            {
                reSortedSecondSemesterSubjectScoreInfo.Add(secondSemesterSubjectScoreInfo[i]);
            }
            return reSortedSecondSemesterSubjectScoreInfo;
        }
Exemplo n.º 6
0
        /// <summary>
        /// 由上學期科目取得下學期科目
        /// </summary>
        /// <param name="pStudentID">學生系統編號</param>
        /// <param name="pSchoolYear">學年度</param>
        /// <returns>個人與上學期對齊之下學期科目成績資訊</returns>
        public List <SHSubjectSemesterScoreInfo> GetPersonal2ndSemesterSubjectScoreInfo(string pStudentID, int pSchoolYear1, int pSchoolYear2, int pSemester1, int pSemester2)
        {
            string keyFirstSemester  = pStudentID + "_" + pSchoolYear1.ToString() + "_" + pSemester1.ToString();
            string keySecondSemester = pStudentID + "_" + pSchoolYear2.ToString() + "_" + pSemester2.ToString();

            if (!_PersonalSemesterSubjectScoreInfo.ContainsKey(keyFirstSemester))
            {
                return(null);
            }

            if (!_PersonalSemesterSubjectScoreInfo.ContainsKey(keySecondSemester))
            {
                return(null);
            }

            List <SHSubjectSemesterScoreInfo> firstSemesterSubjectScoreInfo = _PersonalSemesterSubjectScoreInfo[keyFirstSemester];

            SHSubjectSemesterScoreInfo[]      secondSemesterSubjectScoreInfo         = _PersonalSemesterSubjectScoreInfo[keySecondSemester].ToArray();
            List <SHSubjectSemesterScoreInfo> reSortedSecondSemesterSubjectScoreInfo = new List <SHSubjectSemesterScoreInfo>();

            if (secondSemesterSubjectScoreInfo.Length == 0)
            {
                return(null);
            }

            int j = 0;

            foreach (SHSubjectSemesterScoreInfo s1 in firstSemesterSubjectScoreInfo)
            {
                bool found = false;
                SHSubjectSemesterScoreInfo s2 = new SHSubjectSemesterScoreInfo();
                for (int i = 0; i < (secondSemesterSubjectScoreInfo.Length - j); i++)
                {
                    s2 = (secondSemesterSubjectScoreInfo.GetValue(i) as SHSubjectSemesterScoreInfo);

                    if ((s1.SubjectName.Trim() == s2.SubjectName.Trim()) && (s1.GradeYear.HasValue && s2.GradeYear.HasValue && s1.GradeYear == s2.GradeYear))
                    {
                        found = true;

                        reSortedSecondSemesterSubjectScoreInfo.Add(s2);
                        secondSemesterSubjectScoreInfo.SetValue(secondSemesterSubjectScoreInfo.GetValue((secondSemesterSubjectScoreInfo.Length - 1 - j)), i);
                        secondSemesterSubjectScoreInfo.SetValue(s2, (secondSemesterSubjectScoreInfo.Length - 1 - j));

                        j++;
                    }
                }
                if (!found)
                {
                    SHSubjectSemesterScoreInfo _SHSubjectSemesterScoreInfo = new SHSubjectSemesterScoreInfo();

                    _SHSubjectSemesterScoreInfo.SubjectName           = string.Empty;
                    _SHSubjectSemesterScoreInfo.StudentID             = pStudentID;
                    _SHSubjectSemesterScoreInfo.Semester              = s2.Semester;
                    _SHSubjectSemesterScoreInfo.Score                 = null;
                    _SHSubjectSemesterScoreInfo.SchoolYearAdjustScore = null;
                    _SHSubjectSemesterScoreInfo.SchoolYear            = s2.SchoolYear;
                    _SHSubjectSemesterScoreInfo.RequiredBy            = string.Empty;
                    _SHSubjectSemesterScoreInfo.Required              = null;
                    _SHSubjectSemesterScoreInfo.ReExamScore           = null;
                    _SHSubjectSemesterScoreInfo.ReCourseScore         = null;
                    _SHSubjectSemesterScoreInfo.Pass = null;
                    _SHSubjectSemesterScoreInfo.NotIncludedInCredit = null;
                    _SHSubjectSemesterScoreInfo.NotIncludedInCalc   = null;
                    _SHSubjectSemesterScoreInfo.ManualScore         = null;
                    _SHSubjectSemesterScoreInfo.Level       = null;
                    _SHSubjectSemesterScoreInfo.Entry       = string.Empty;
                    _SHSubjectSemesterScoreInfo.Credit      = null;
                    _SHSubjectSemesterScoreInfo.CoreSubject = false;
                    _SHSubjectSemesterScoreInfo.Comment     = string.Empty;
                    _SHSubjectSemesterScoreInfo.GradeYear   = null;
                    _SHSubjectSemesterScoreInfo.ProSubject  = false;

                    reSortedSecondSemesterSubjectScoreInfo.Add(s2);
                }
            }
            for (int i = 0; i < (secondSemesterSubjectScoreInfo.Length - j); i++)
            {
                reSortedSecondSemesterSubjectScoreInfo.Add(secondSemesterSubjectScoreInfo[i]);
            }
            return(reSortedSecondSemesterSubjectScoreInfo);
        }
Exemplo n.º 7
0
        public List <SHSubjectSemesterScoreInfo> SortSHSubjectSemesterScore(List <SHSubjectSemesterScoreInfo> firstSemesterSubjectScoreInfo, List <SHSubjectSemesterScoreInfo> secondSemesterSubjectScoreInfo)
        {
            SHSubjectSemesterScoreInfo[] byteSecondSemesterSubjectScoreInfo = new List <SHSubjectSemesterScoreInfo>().ToArray();
            if (secondSemesterSubjectScoreInfo != null && secondSemesterSubjectScoreInfo.Count > 0)
            {
                byteSecondSemesterSubjectScoreInfo = secondSemesterSubjectScoreInfo.ToArray();
            }

            List <SHSubjectSemesterScoreInfo> reSortedSecondSemesterSubjectScoreInfo = new List <SHSubjectSemesterScoreInfo>();

            if ((firstSemesterSubjectScoreInfo == null || firstSemesterSubjectScoreInfo.Count == 0) && (secondSemesterSubjectScoreInfo == null || secondSemesterSubjectScoreInfo.Count == 0))
            {
                return(new List <SHSubjectSemesterScoreInfo>());
            }

            if (secondSemesterSubjectScoreInfo == null || secondSemesterSubjectScoreInfo.Count == 0)
            {
                return(firstSemesterSubjectScoreInfo);
            }

            if (firstSemesterSubjectScoreInfo == null || firstSemesterSubjectScoreInfo.Count == 0)
            {
                return(secondSemesterSubjectScoreInfo);
            }

            int j = 0;
            SHSubjectSemesterScoreInfo s2 = new SHSubjectSemesterScoreInfo();

            foreach (SHSubjectSemesterScoreInfo s1 in firstSemesterSubjectScoreInfo)
            {
                bool found = false;
                for (int i = 0; i < (byteSecondSemesterSubjectScoreInfo.Length - j); i++)
                {
                    s2 = (byteSecondSemesterSubjectScoreInfo.GetValue(i) as SHSubjectSemesterScoreInfo);

                    if ((s1.SubjectName.Trim() == s2.SubjectName.Trim()) && (s1.GradeYear.HasValue && s2.GradeYear.HasValue && s1.GradeYear == s2.GradeYear))
                    {
                        found = true;

                        reSortedSecondSemesterSubjectScoreInfo.Add(s2);
                        byteSecondSemesterSubjectScoreInfo.SetValue(byteSecondSemesterSubjectScoreInfo.GetValue((byteSecondSemesterSubjectScoreInfo.Length - 1 - j)), i);
                        byteSecondSemesterSubjectScoreInfo.SetValue(s2, (byteSecondSemesterSubjectScoreInfo.Length - 1 - j));

                        j++;
                    }
                }
                if (!found)
                {
                    SHSubjectSemesterScoreInfo _SHSubjectSemesterScoreInfo = new SHSubjectSemesterScoreInfo();

                    _SHSubjectSemesterScoreInfo.SubjectName           = string.Empty;
                    _SHSubjectSemesterScoreInfo.StudentID             = s2.StudentID;
                    _SHSubjectSemesterScoreInfo.Semester              = s2.Semester;
                    _SHSubjectSemesterScoreInfo.Score                 = null;
                    _SHSubjectSemesterScoreInfo.SchoolYearAdjustScore = null;
                    _SHSubjectSemesterScoreInfo.SchoolYear            = s2.SchoolYear;
                    _SHSubjectSemesterScoreInfo.RequiredBy            = string.Empty;
                    _SHSubjectSemesterScoreInfo.Required              = null;
                    _SHSubjectSemesterScoreInfo.ReExamScore           = null;
                    _SHSubjectSemesterScoreInfo.ReCourseScore         = null;
                    _SHSubjectSemesterScoreInfo.Pass = null;
                    _SHSubjectSemesterScoreInfo.NotIncludedInCredit = null;
                    _SHSubjectSemesterScoreInfo.NotIncludedInCalc   = null;
                    _SHSubjectSemesterScoreInfo.ManualScore         = null;
                    _SHSubjectSemesterScoreInfo.Level       = null;
                    _SHSubjectSemesterScoreInfo.Entry       = string.Empty;
                    _SHSubjectSemesterScoreInfo.Credit      = null;
                    _SHSubjectSemesterScoreInfo.CoreSubject = false;
                    _SHSubjectSemesterScoreInfo.Comment     = string.Empty;
                    _SHSubjectSemesterScoreInfo.GradeYear   = null;
                    _SHSubjectSemesterScoreInfo.ProSubject  = false;

                    reSortedSecondSemesterSubjectScoreInfo.Add(_SHSubjectSemesterScoreInfo);
                }
            }
            for (int i = 0; i < (byteSecondSemesterSubjectScoreInfo.Length - j); i++)
            {
                reSortedSecondSemesterSubjectScoreInfo.Add(byteSecondSemesterSubjectScoreInfo[i]);
            }
            return(reSortedSecondSemesterSubjectScoreInfo);
        }