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); } }
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); } }