public void GradeCourse(string courseName)
        {
            var students = courseManager.GetStudentsInCourse(courseName);

            foreach (var student in students)
            {
                var     examGrades = testResultManager.GetAllTestResultsForOneStudentAndOneCourse(courseName, student.Name);
                decimal sum        = 0;
                foreach (var examGrade in examGrades)
                {
                    sum += examGrade.Score * examGrade.ExamAnswer.Exam.FractionOfGrade;
                }
                var    gradeLimits = gradeManager.GetGradeLimits(courseName);
                string gradeLetter = gradeLimits.Where(
                    gl => gl.Limit <= sum)
                                     .OrderByDescending(gl => gl.Limit)
                                     .First().GradeLetter;
                gradeManager.SetGrade(courseName, gradeLetter, student.Name);
            }
        }
Beispiel #2
0
        public void GradeCourse(string courseName)
        {
            // Vi ska sätta betyg på alla elever i en kurs, så vi hämtar
            // alla elever i kursen och loopar igenom dem
            var students = courseManager.GetStudentsInCourse(courseName);

            foreach (var student in students)
            {
                // Sen kollar vi på alla prov som studenten har skrivit
                // i den kursen
                var examGrades = testResultManager.GetAllTestResultsForOneStudentAndOneCourse(courseName, student.Name);
                // Vi ska summera resultatet från alla proven, så vi börjar
                // med en summa på noll, sen loopar vi igenom alla proven
                decimal sum = 0;
                foreach (var examGrade in examGrades)
                {
                    // För varje prov lägger vi till elevens resultat
                    // multiplicerat med det provets andel av totalen
                    sum += examGrade.Score * examGrade.ExamAnswer.Exam.FractionOfGrade;
                }
                // Sen hämtar vi betygsgränserna
                // Vi vill ha det minsta resultatet som krävs för att
                // få ett visst betyg i GradeLimit.Limit, och motsvarande
                // betyg i GradeLetter. Vi tar därför och väljer alla betyg
                // som är mindre än eller lika med elevens resultat, och väljer
                // det högsta genom att sortera dem i fallande ordning och
                // ta det första
                var    gradeLimits = gradeManager.GetGradeLimits(courseName);
                string gradeLetter = gradeLimits.Where(
                    gl => gl.Limit <= sum)
                                     .OrderByDescending(gl => gl.Limit)
                                     .First().GradeLetter;
                // Till s**t sätter vi elevens betyg
                gradeManager.SetGrade(courseName, gradeLetter, student.Name);
            }
        }