Exemplo n.º 1
0
        //Thread for saving the graded test (and sometimes the practice test
        void backgroundWorkerSaveTest_DoWork(object sender, DoWorkEventArgs e)
        {
            switch (this.Tag.ToString())
            {
            case "placement":

                //just insert the graded test
                MathWizDB.InsertGradedTest(gradedPlacementTest, student.Id, gradedPlacementTest.PlacementTest.Id, "Placement Test", gradedPlacementTest.RecommendedLevel);

                //update student's mastery level
                MathWizDB.UpdateMasteryLevel(student.Username, gradedPlacementTest.RecommendedLevel);

                break;

            case "practice":

                //first insert the test since the teacher did not make it, but the student just generated it
                gradedPracticeTest.PracticeTest.Id = MathWizDB.InsertTest(klass.Id, gradedPracticeTest.PracticeTest, "Practice Test", 0, gradedPracticeTest.PracticeTest.MinLevel, gradedPracticeTest.PracticeTest.MaxLevel);

                //then insert the graded test. The insertGradedTest method also inserts the graded Questions
                gradedPracticeTest.Id = MathWizDB.InsertGradedTest(gradedPracticeTest, student.Id, gradedPracticeTest.PracticeTest.Id, "Practice Test");

                break;

            case "mastery":

                //just insert the graded test
                MathWizDB.InsertGradedTest(gradedMasteryTest, student.Id, gradedMasteryTest.MasteryTest.Id, "Mastery Test", 0, 1, gradedMasteryTest.Passed);

                break;
            }
        }
Exemplo n.º 2
0
 private void btnChange_Click(object sender, EventArgs e)
 {
     if (Validation.IsInteger(txtNewMasteryLevel) && Validation.IsWithinRangeInclusive(txtNewMasteryLevel, 12, 0))
     {
         int newML = Convert.ToInt32(txtNewMasteryLevel.Text);
         MathWizDB.UpdateMasteryLevel(username, newML);
         this.Close();
     }
 }
Exemplo n.º 3
0
        //MARK Button Handlers
        private void btnStartFinish_Click(object sender, EventArgs e)
        {
            if (btnStartFinish.Text == "Start Test") //start test, show the first question
            {
                testFinished        = false;
                btnStartFinish.Text = "Finish Test";
                btnStartFinish.Hide();

                gbxQuestion.Show();

                currentQuestionNum = 0; //array starts at 0

                timerTest.Start();

                switch (this.Tag.ToString())
                {
                case "placement":

                    ShowQuestion(gradedPlacementTest.PlacementTest.Questions[currentQuestionNum]);

                    break;

                case "practice":

                    ShowQuestion(gradedPracticeTest.PracticeTest.Questions[currentQuestionNum]);

                    break;

                case "mastery":

                    ShowQuestion(gradedMasteryTest.MasteryTest.Questions[currentQuestionNum]);

                    break;
                }
            }
            else if (btnStartFinish.Text == "Finish Test") //finish test, record score, write score to db
            {
                switch (this.Tag.ToString())               //record information for the completed test
                {
                case "placement":

                    gradedPlacementTest.Score = (decimal)gradedPlacementTest.CorrectlyAnsweredQuestions.Count / (decimal)(gradedPlacementTest.CorrectlyAnsweredQuestions.Count + (decimal)gradedPlacementTest.WronglyAnsweredQuestions.Count) * 100;
                    gradedPlacementTest.TimeTakenToComplete = gradedPlacementTest.PlacementTest.TimeLimit - TimeSpan.ParseExact(lblTimerTest.Text, "mm\\:ss", CultureInfo.InvariantCulture);
                    gradedPlacementTest.DateTaken           = DateTime.Now;
                    gradedPlacementTest.Feedback            = gradedPlacementTest.Score.ToString();

                    int minLevelWrong = 12;
                    for (int i = 0; i < gradedPlacementTest.WronglyAnsweredQuestions.Count; i++)
                    {
                        if (gradedPlacementTest.WronglyAnsweredQuestions[i].Question.MasteryLevel < minLevelWrong)
                        {
                            minLevelWrong = gradedPlacementTest.WronglyAnsweredQuestions[i].Question.MasteryLevel;
                        }
                    }

                    gradedPlacementTest.RecommendedLevel = minLevelWrong;

                    MessageBox.Show("You have been placed at Mastery Level: " + gradedPlacementTest.RecommendedLevel.ToString() + "\nYour Score was: " + gradedPlacementTest.Score.ToString("###.##"));

                    break;

                case "practice":

                    gradedPracticeTest.Score = (decimal)gradedPracticeTest.CorrectlyAnsweredQuestions.Count / (decimal)(gradedPracticeTest.CorrectlyAnsweredQuestions.Count + (decimal)gradedPracticeTest.WronglyAnsweredQuestions.Count) * 100;
                    gradedPracticeTest.TimeTakenToComplete = gradedPracticeTest.PracticeTest.TimeLimit - TimeSpan.ParseExact(lblTimerTest.Text, "mm\\:ss", CultureInfo.InvariantCulture);
                    gradedPracticeTest.DateTaken           = DateTime.Now;
                    gradedPracticeTest.Feedback            = gradedPracticeTest.Score.ToString();

                    MessageBox.Show("Your Score was: " + gradedPracticeTest.Score.ToString());

                    break;

                case "mastery":

                    gradedMasteryTest.Score = (decimal)gradedMasteryTest.CorrectlyAnsweredQuestions.Count / (decimal)(gradedMasteryTest.CorrectlyAnsweredQuestions.Count + (decimal)gradedMasteryTest.WronglyAnsweredQuestions.Count) * 100;
                    gradedMasteryTest.TimeTakenToComplete = gradedMasteryTest.MasteryTest.TimeLimit - TimeSpan.ParseExact(lblTimerTest.Text, "mm\\:ss", CultureInfo.InvariantCulture);
                    gradedMasteryTest.DateTaken           = DateTime.Now;
                    gradedMasteryTest.Feedback            = gradedMasteryTest.Score.ToString();

                    if (gradedMasteryTest.Score > gradedMasteryTest.MasteryTest.PassThreshhold)    //determine whether they passed or not.
                    {
                        gradedMasteryTest.Passed = true;
                        MathWizDB.UpdateMasteryLevel(student.Username, ++student.MasteryLevel);     //bump the master level up
                        MessageBox.Show("You scored " + gradedMasteryTest.Score.ToString("###.##") + " and have now passed to level " + student.MasteryLevel);
                    }
                    else
                    {
                        gradedMasteryTest.Passed = false;
                        MessageBox.Show("You scored " + gradedMasteryTest.Score.ToString("###.##") + " and will need to take this test again");
                    }

                    break;
                }

                //write test to database in another thread
                backgroundWorkerSaveTest.RunWorkerAsync();
            }
        }