private void StudentsListBox_SelectedIndexChanged(object sender, EventArgs e) { // Load average and predicted for the selected student. if (StudentsListBox.Items.Count != 0) { // Reset labels homeworkAverageLabel.Text = "--"; testsAverageLabel.Text = "--"; mtgLabel.Text = "--"; predictedGradeLabel.Text = "--"; if (StudentsListBox.SelectedIndex != -1) { // Grab data. GradeData Data = GradeUtils.calculateStudentGrades(StudentsListBox.SelectedIndex + 1, GroupId); // Only bother showing new data if they have homework and test results. if (Data.HwAverage != 0 && Data.TestAverage != 0 && Data.MTG != 0) { homeworkAverageLabel.Text = Grades.FirstOrDefault(k => k.Value == Data.HwAverage).Key; testsAverageLabel.Text = Grades.FirstOrDefault(k => k.Value == Data.TestAverage).Key; mtgLabel.Text = Grades.FirstOrDefault(k => k.Value == Data.MTG).Key; predictedGradeLabel.Text = Grades.FirstOrDefault(k => k.Value == Data.Predicted).Key; } } } }
private void EditResultsForm_Load(object sender, EventArgs e) { // Populate list of assignments PopulateList(); // Assign the boxes their datasources assignmentsBox.DataSource = AssignmentsList; studentsListBox.DataSource = StudentsList; // Add grades into the combobox foreach (KeyValuePair <string, double> grade in GradeUtils.Grades) { resultsComboBox.Items.Add(grade.Key); } // If assignment is provided, select the assignment that was just created. if (assignmentName != null) { assignmentId = GradeUtils.getAssignmentId(assignmentName, isHomework); assignmentsBox.SelectedItem = assignmentName; } else { try { // Encase in try to stop errors if there are no assignments assignmentId = GradeUtils.getAssignmentId((string)assignmentsBox.SelectedItem, isHomework); } catch (Exception) { // No assignment exists. } } if (!isHomework) { assignmentLabel.Text = "Test name:"; } }
private void assignmentsBox_SelectedIndexChanged(object sender, EventArgs e) { assignmentName = assignmentsBox.SelectedItem.ToString(); assignmentId = GradeUtils.getAssignmentId(assignmentName, isHomework); }
public static void UpdateSubjectMLR(int subjectId) { /* * UpdateSubjectMLR is responsible for re-running the MLR line * calculation for a subject. This is a difficult calcuation, * so this shouldn't be done too often. After the calcuation is * done, store the values of each variable in the MLR equation * in the database. */ List <double> homeworkResults = new List <double>(); List <double> testResults = new List <double>(); List <double> minimumTargetGrades = new List <double>(); List <double> finalResults = new List <double>(); /* Populate all the lists. * Remember to convert grades to their double eqv. using the dictonary. */ SqlCommand command = new SqlCommand("SELECT HomeworkResult FROM PreviousResults WHERE SubjectId = @SubjectId"); command.Parameters.AddWithValue("@SubjectId", subjectId); DataTable dt = SqlTools.GetTable(command); for (int i = 0; i < dt.Rows.Count; i++) { homeworkResults.Add(Grades[(string)dt.Rows[i]["HomeworkResult"]]); } command.CommandText = "SELECT TestResult FROM PreviousResults WHERE SubjectId = @SubjectId"; dt = SqlTools.GetTable(command); for (int i = 0; i < dt.Rows.Count; i++) { testResults.Add(Grades[(string)dt.Rows[i]["TestResult"]]); } command.CommandText = "SELECT MTGResult FROM PreviousResults WHERE SubjectId = @SubjectId"; dt = SqlTools.GetTable(command); for (int i = 0; i < dt.Rows.Count; i++) { minimumTargetGrades.Add(Grades[(string)dt.Rows[i]["MTGResult"]]); } command.CommandText = "SELECT FinalResult FROM PreviousResults WHERE SubjectId = @SubjectId"; dt = SqlTools.GetTable(command); for (int i = 0; i < dt.Rows.Count; i++) { finalResults.Add(Grades[(string)dt.Rows[i]["FinalResult"]]); } /* * Calculate the MLR line. * Returned double array: * MLRLine[0]: Constant * MLRLine[1]: Homework result weight * MLRLine[2]: Test result weight * MLRLine[3]: Minimum target grade weight */ double[] MLRLine = GradeUtils.calculateSubjectMLR(homeworkResults, testResults, minimumTargetGrades, finalResults); /* * Setup the SQL command. * SubjectID doesn't change here. */ command.CommandText = "UPDATE Subjects SET SubjectWeightConstant = @SubjectWeightConstant, " + "SubjectHomeworkWeight = @SubjectHomeworkWeight, " + "SubjectTestWeight = @SubjectTestWeight, " + "SubjectMTGWeight = @SubjectMTGWeight WHERE SubjectID = @SubjectID"; // Add each parameter. command.Parameters.AddWithValue("@SubjectWeightConstant", MLRLine[0]); command.Parameters.AddWithValue("@SubjectHomeworkWeight", MLRLine[1]); command.Parameters.AddWithValue("@SubjectTestWeight", MLRLine[2]); command.Parameters.AddWithValue("@SubjectMTGWeight", MLRLine[3]); // Finally, execute the update SqlTools.ExecuteNonQuery(command); }