コード例 #1
0
 //full constructor
 public Klass(string klassName, List <Student> students, PlacementTest placementTest, List <PracticeTest> practiceTests, List <MasteryTest> masteryTests)
 {
     this.KlassName     = klassName;
     this.Students      = students;
     this.PlacementTest = placementTest;
     this.PracticeTests = practiceTests;
     this.MasteryTests  = masteryTests;
 }
コード例 #2
0
        private void btnCreateTest_Click(object sender, EventArgs e)
        {
            btnCreateTest.Text    = "Creating Test";
            btnCreateTest.Enabled = false;

            //if form validation is good then
            if (ValidateForm())
            {
                int      numberOfQuestions      = Convert.ToInt32(cboNumberOfQuestions.SelectedItem);
                int      numberOfQuestionsPerML = numberOfQuestions / 12; //take a few questions from each mastery level
                TimeSpan questionTimeLimit      = new TimeSpan(0, 1, 0);

                PlacementTest placementTest = new PlacementTest();

                for (int ml = 1; ml <= 12; ml++) //get questions from each mastery level
                {
                    //make custom timelimits for each question depending on complexity
                    questionTimeLimit = CalculateQuestionTimeLimit(cboQuestionSpeed.SelectedItem.ToString(), ml);

                    //get the questions for just the current mastery level in this for loop
                    List <Question> tempQuestionList = Question.GenerateRandomQuestions(ml, questionTimeLimit, numberOfQuestionsPerML);

                    foreach (Question q in tempQuestionList) //add current mastery level questions to the actual placement test
                    {
                        placementTest.Questions.Add(q);
                    }
                }

                //set other attributes of the test
                placementTest.MinLevel  = 1;
                placementTest.MaxLevel  = 12;
                placementTest.TimeLimit = TimeSpan.FromTicks(questionTimeLimit.Ticks * numberOfQuestions);

                //insert it
                placementTest.Id = MathWizDB.InsertTest(klassID, placementTest, "Placement Test", 0, placementTest.MinLevel, placementTest.MaxLevel);

                this.Close();

                if (placementTest.Id > 0)
                {
                    MessageBox.Show("Your new randomly generated Placement test has been created");
                }
                else
                {
                    MessageBox.Show("Failed to create placement test", "error");
                }
            }
            else
            {
                MessageBox.Show("A placement test has already been created for this class.", "error");
            }
            btnCreateTest.Text    = "Create Test";
            btnCreateTest.Enabled = true;
        }
コード例 #3
0
ファイル: frmStudentHome.cs プロジェクト: RyanHarpham/MathWiz
        private void backgroundWorkerLoadData_DoWork(object sender, DoWorkEventArgs e)
        {
            klass = MathWizDA.SelectStudentsKlass(student.Id);

            if (student.MasteryLevel == 0) //if student has not taken placement test yet, only load that test
            {
                availablePlacementTest = MathWizDA.SelectKlassesPlacementTest(klass.Id);
            }
            else //load the tests that the student can take, but not the placement test since they already took it
            {
                availableMasteryTests = MathWizDA.SelectKlassesMasteryTests(klass.Id);
            }
        }
コード例 #4
0
        //End SELECT ALL Users Methods

        public static PlacementTest SelectKlassesPlacementTest(int klassID)
        {
            PlacementTest placementTest = new PlacementTest();

            //make the query the safe way by binding values to prevent SQL injection
            string     query         = "SELECT * FROM tests WHERE KlassID = @klassID AND TestType = 'Placement Test'";
            SqlCommand selectCommand = new SqlCommand(query, conn);

            selectCommand.Parameters.AddWithValue("@klassID", klassID);

            try
            {
                conn.Open();

                SqlDataReader reader = selectCommand.ExecuteReader();

                if (reader.Read())
                {
                    placementTest.Id                = Convert.ToInt32(reader["Id"]);
                    placementTest.TimeLimit         = TimeSpan.ParseExact(reader["TimeLimit"].ToString(), "hh\\:mm\\:ss", CultureInfo.InvariantCulture);
                    placementTest.RandomlyGenerated = Convert.ToBoolean(reader["RandomlyGenerated"]);
                    placementTest.MinLevel          = Convert.ToInt32(reader["MinLevel"]);
                    placementTest.MaxLevel          = Convert.ToInt32(reader["MaxLevel"]);
                }
                reader.Close();

                placementTest.Questions = SelectQuestions(placementTest.Id);
            }
            catch (SqlException ex)
            {
                MessageBox.Show("Database SQL Exception\n\n" + ex.ToString());
            }
            catch (Exception ex)
            {
                MessageBox.Show("Generic Exception.\n\n" + ex.ToString());
            }
            finally
            {
                if (conn != null && conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            }
            return(placementTest);
        }
コード例 #5
0
 //full constructor
 public GradedPlacementTest(PlacementTest placementTest, int recommendedLevel, decimal score, TimeSpan timeTakenToComplete, DateTime dateTaken, List <GradedQuestion> rightlyAnsweredQuestions, List <GradedQuestion> wronglyAnsweredQuestions, string feedback = "") : base(score, timeTakenToComplete, dateTaken, rightlyAnsweredQuestions, wronglyAnsweredQuestions, feedback)
 {
     this.PlacementTest    = placementTest;
     this.RecommendedLevel = recommendedLevel;
 }