コード例 #1
0
        private void SemesterChanged(object sender, EventArgs e)
        {
            cbbSemester.Enabled = gridviewStudentScore.Enabled = false;
            lbScoreTittle.Text  = string.Format("Bảng điểm của học sinh {0} ({1}) - HK {2} - năm {3}", studentName, studentID, cbbSemester.Text, DateTime.Now.Year.ToString());
            BackgroundWorker worker = new BackgroundWorker();

            gridviewStudentScore.Rows.Clear();
            mainProgressbar.Visible = lbInformation.Visible = true;
            Dictionary <string, List <Score> > subjectScores       = new Dictionary <string, List <Score> >();
            Dictionary <string, double>        averageSubjectScore = new Dictionary <string, double>();
            List <Subject>      subjects = new List <Subject>();
            LearniningCapacity  learniningCapacitySemester = new LearniningCapacity();
            LearniningCapacity  learniningCapacityYear     = new LearniningCapacity();
            List <AverageScore> averageScores = new List <AverageScore>(3);
            int semester = Int32.Parse(cbbSemester.Text);

            worker.DoWork += (s, e) =>
            {
                subjects            = subjectController.LoadSubjects();
                subjectScores       = scoreController.GetAllScores(studentID, semester, grade);
                averageSubjectScore = scoreController.GetYearAverageListScore(studentID, grade);
                System.Threading.Thread.Sleep(300);
                learniningCapacitySemester = studentController.GetStudentLearnCapacity(studentID, grade, semester);
                learniningCapacityYear     = studentController.GetStudentLearnCapacity(studentID, grade);
                averageScores = scoreController.GetAverageScores(studentID, grade);
            };
            worker.RunWorkerCompleted += (s, e) =>
            {
                cbbSemester.Enabled     = gridviewStudentScore.Enabled = true;
                mainProgressbar.Visible = lbInformation.Visible = false;
                int index = 0;
                if (averageScores != null && learniningCapacitySemester != null)
                {
                    lbLearningCapacitySem.Text = string.Format("Điểm trung bình HK {0}: {1} - Học lực: {2}", semester.ToString(),
                                                               (averageScores[semester - 1].Value > -1) ? averageScores[semester - 1].Value.ToString() : "Chưa có", learniningCapacitySemester.ToString());
                }
                if (averageScores != null && learniningCapacitySemester != null)
                {
                    lbLearningCapacityYear.Text = string.Format("Điểm trung bình cả năm: {0} - Học lực cả năm: {1}",
                                                                (averageScores[2].Value > -1) ? averageScores[2].Value.ToString() : "Chưa có", learniningCapacityYear.ToString());
                }
                foreach (Subject subject in subjects)
                {
                    gridviewStudentScore.Rows.Add(subject.Name);
                    for (int i = 0; i < 9; i++)
                    {
                        try
                        {
                            if (subjectScores[subject.ID][i].Value != -1)
                            {
                                gridviewStudentScore.Rows[index].Cells[i + 1].Value = subjectScores[subject.ID][i].Value;
                            }
                        }
                        catch (Exception ex)
                        {
                            break;
                            //MessageBox.Show(ex.Message);
                        }
                    }
                    if (averageSubjectScore[subject.ID] != -1)
                    {
                        gridviewStudentScore.Rows[index].Cells[10].Value = averageSubjectScore[subject.ID];
                    }
                    index++;
                }
            };
            worker.RunWorkerAsync();
        }
コード例 #2
0
        public LearniningCapacity GetStudentLearnCapacity(string _studentID, int _grade, int _semester = 3)
        {
            ScoreDA scoreDA = new ScoreDA();

            double[]           scoreLimit         = { 8.0, 6.5, 5.0, 3.5, 2.0 };
            LearniningCapacity learniningCapacity = new LearniningCapacity();

            learniningCapacity.type = (AbstractLearn.Type)(_semester - 1);
            List <AverageScore> averageScores = new List <AverageScore>();
            bool success = scoreDA.GetAverageScore(_studentID, _grade, averageScores);

            if (!success)
            {
                return(null);
            }
            int result = 5;

            if (averageScores[_semester - 1].Value == -1)
            {
                learniningCapacity.LearnCapacity = LearniningCapacity.HocLuc.ChuaXet;
                return(learniningCapacity);
            }
            else
            {
                for (int i = 0; i < scoreLimit.Length; i++)
                {
                    if (averageScores[_semester - 1].Value >= scoreLimit[i])
                    {
                        result = i;
                        break;
                    }
                }
                if (result < 4)
                {
                    //xét điều kiện điểm từng môn
                    List <Score> subjectScore = new List <Score>();
                    //cả năm
                    if (_semester > 2)
                    {
                        List <Score> subjectScore2 = new List <Score>();
                        scoreDA.GetAllAverageSubjectScore(_studentID, _grade, 1, subjectScore);
                        scoreDA.GetAllAverageSubjectScore(_studentID, _grade, 2, subjectScore2);
                        for (int i = 0; i < subjectScore.Count; i++)
                        {
                            subjectScore[i].Value = (subjectScore[i].Value + subjectScore2[i].Value) / 2;
                            if (subjectScore[i].Value < scoreLimit[result + 1])
                            {
                                result++;
                                break;
                            }
                        }
                    }
                    else
                    {
                        scoreDA.GetAllAverageSubjectScore(_studentID, _grade, _semester, subjectScore);
                        for (int i = 0; i < subjectScore.Count; i++)
                        {
                            if (subjectScore[i].Value < scoreLimit[result + 1])
                            {
                                result++;
                                break;
                            }
                        }
                    }
                }
            }
            learniningCapacity.LearnCapacity = (LearniningCapacity.HocLuc)result;
            return(learniningCapacity);
        }