Beispiel #1
0
 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;
             }
         }
     }
 }
Beispiel #2
0
 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:";
     }
 }
Beispiel #3
0
 private void assignmentsBox_SelectedIndexChanged(object sender, EventArgs e)
 {
     assignmentName = assignmentsBox.SelectedItem.ToString();
     assignmentId   = GradeUtils.getAssignmentId(assignmentName, isHomework);
 }
Beispiel #4
0
        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);
        }