Ejemplo n.º 1
0
        private void NavigateExam(NavOption option)
        {
            lbl_explanation.Visible = false;

            if (option == NavOption.Begin)
            {
                if (_settings.Questions.Count > 0)
                {
                    _currentQuestionIndex = 0;
                    PrintQuestionToScreen();
                }

                if (_settings.Questions.Count > 1)
                {
                    btn_next.Enabled = true;
                }
            }
            else if (option == NavOption.Next)
            {
                //Save current answer
                _userAnswers[_currentQuestionIndex] = SelectedAnswer();

                RemoveOptions();

                _currentQuestionIndex++;
                PrintQuestionToScreen();

                btn_previous.Enabled = true;

                if (_currentQuestionIndex == _settings.Questions.Count - 1)
                {
                    btn_next.Enabled = false;
                }
            }
            else if (option == NavOption.Previous)
            {
                //Save current answer
                _userAnswers[_currentQuestionIndex] = SelectedAnswer();

                RemoveOptions();

                _currentQuestionIndex--;
                PrintQuestionToScreen();

                btn_next.Enabled = true;

                if (_currentQuestionIndex == 0)
                {
                    btn_previous.Enabled = false;
                }
            }
            else if (option == NavOption.End)
            {
                //Save current answer
                _userAnswers[_currentQuestionIndex] = SelectedAnswer();
                for (int i = 0; i < _userAnswers.Length; i++)
                {
                    if (_userAnswers[i] == null)
                    {
                        _userAnswers[i] = '\0';
                    }
                }

                _settings.ElapsedTime = TimeSpan.FromSeconds(_exam.Properties.TimeLimit * 60 - _timeLeft);

                var numOfCorrectAnswers = 0;
                for (var i = 0; i < _settings.Questions.Count; i++)
                {
                    if (_userAnswers[i].GetType().IsArray)
                    {
                        if (((char[])_userAnswers[i]).SequenceEqual(_settings.Questions[i].Answers))
                        {
                            numOfCorrectAnswers++;
                        }
                    }
                    else if ((char)_userAnswers[i] == _settings.Questions[i].Answer)
                    {
                        numOfCorrectAnswers++;
                    }
                }

                _settings.NumberOfCorrectAnswers = numOfCorrectAnswers;

                foreach (var section in _settings.Sections)
                {
                    var numOfQuestions = 0;
                    var numOfCorrect   = 0;
                    for (var i = 0; i < _settings.Questions.Count; i++)
                    {
                        if (section.Questions.Contains(_settings.Questions[i]))
                        {
                            numOfQuestions++;
                            if (_userAnswers[i].GetType().IsArray)
                            {
                                if (((char[])_userAnswers[i]).SequenceEqual(_settings.Questions[i].Answers))
                                {
                                    numOfCorrect++;
                                }
                            }
                            else if ((char)_userAnswers[i] == _settings.Questions[i].Answer)
                            {
                                numOfCorrect++;
                            }
                        }
                    }

                    _settings.ResultSpread.Add(new Tuple <string, int, int>(section.Title, numOfQuestions,
                                                                            numOfCorrect));
                }

                var ss = new ScoreSheetUi(_settings, _exam);
                Hide();
                ss.ShowDialog();
                Close();
            }
        }
Ejemplo n.º 2
0
 private void NavigateExam(NavOption option)
 {
     lbl_explanation.Visible = false;
     //
     if (option == NavOption.Begin)
     {
         if (settings.Questions.Count > 0)
         {
             currentQuestionIndex = 0;
             PrintQuestionToScreen();
         }
         //
         if (settings.Questions.Count > 1)
         {
             btn_next.Enabled = true;
         }
     }
     else if (option == NavOption.Next)
     {
         //Save current answer
         userAnswers[currentQuestionIndex] = SelectedAnswer();
         //
         RemoveOptions();
         //
         currentQuestionIndex++;
         PrintQuestionToScreen();
         //
         btn_previous.Enabled = true;
         //
         if (currentQuestionIndex == settings.Questions.Count - 1)
         {
             btn_next.Enabled = false;
         }
     }
     else if (option == NavOption.Previous)
     {
         //Save current answer
         userAnswers[currentQuestionIndex] = SelectedAnswer();
         //
         RemoveOptions();
         //
         currentQuestionIndex--;
         PrintQuestionToScreen();
         //
         btn_next.Enabled = true;
         //
         if (currentQuestionIndex == 0)
         {
             btn_previous.Enabled = false;
         }
     }
     else if (option == NavOption.End)
     {
         //Save current answer
         userAnswers[currentQuestionIndex] = SelectedAnswer();
         //
         settings.ElapsedTime = TimeSpan.FromSeconds(exam.Properties.TimeLimit * 60 - timeLeft);
         //
         int numOfCorrectAnswers = 0;
         for (int i = 0; i < settings.Questions.Count; i++)
         {
             if (userAnswers[i] == settings.Questions[i].Answer)
             {
                 numOfCorrectAnswers++;
             }
         }
         settings.NumberOfCorrectAnswers = numOfCorrectAnswers;
         //
         foreach (var section in settings.Sections)
         {
             int numOfQuestions = 0;
             int numOfCorrect   = 0;
             for (int i = 0; i < settings.Questions.Count; i++)
             {
                 if (section.Questions.Contains(settings.Questions[i]))
                 {
                     numOfQuestions++;
                     if (userAnswers[i] == settings.Questions[i].Answer)
                     {
                         numOfCorrect++;
                     }
                 }
             }
             settings.ResultSpread.Add(new Tuple <string, int, int>(section.Title, numOfQuestions, numOfCorrect));
         }
         //
         Score_Sheet ss = new Score_Sheet(settings, exam);
         this.Hide();
         ss.ShowDialog();
         this.Close();
     }
 }