示例#1
0
        private void PassingTest_Load(object sender, EventArgs e)
        {
            listQuestion.Clear();
            string query;

            string textQuestion,
                   typeQuestion,
                   answers;

            mark = 0;


            SqlConnection connection = new SqlConnection(ClassTotal.connectionString);

            connection.Open();
            try
            {
                //Выборка всех данных из динамической таблицы с вопросами теста
                query = "SELECT * FROM " + ClassTotal.nameTest + "_" + ClassTotal.idTeacher;

                SqlCommand    command    = new SqlCommand(query, connection);
                SqlDataReader dataReader = command.ExecuteReader(); //Все записи
                                                                    //Перенести все вопросы теста в список
                while (dataReader.Read())                           //Перебрать все записи по одной
                {
                    //Получение полей текущей записи
                    textQuestion = dataReader["Text_question"].ToString();
                    typeQuestion = dataReader["Type_question"].ToString();
                    answers      = dataReader["Answers"].ToString();
                    //Создание объекта-вопроса конструктором
                    ClassQuestion question = new ClassQuestion(textQuestion, typeQuestion, answers);
                    listQuestion.Add(question); //Добавление вопроса в список
                }
                dataReader.Close();
                connection.Close();

                totalNumber = listQuestion.Count; //Общее количество вопросов
                this.progressBar.Maximum = totalNumber;
                currentNumber            = 1;     //Текущий номер вопроса
                trueNumber = 0;                   //Количество правильных ответов
                Show_Question();
            }
            catch
            {
                MessageBox.Show("Данный тест был удален.\r\nОбратитесь к преподавателю.");

                connection.Close();
                this.Close();
                return;
            }
        }
示例#2
0
        private void buttonSaveQuestion_Click(object sender, EventArgs e)
        {
            ClassTotal.ans = "";
            int temp_i = 0;
            //Ответы вопроса
            bool right = false;

            if (textBoxQuestion.Text != "")
            {
                switch (ClassTotal.type)
                {
                case "Одиночный выбор":
                    for (int i = 0; i < this.splitContainer3.Panel1.Controls.Count; i += 2)
                    {
                        RadioButton rb = this.splitContainer3.Panel1.Controls[i] as RadioButton;
                        TextBox     tb = this.splitContainer3.Panel1.Controls[i + 1] as TextBox;
                        if (tb.Text != "")     //Сохранять только заполненные вопросы
                        {
                            temp_i++;

                            if (rb.Checked)                            //Кнопка включена – вопрос выбран
                            {
                                ClassTotal.ans += "+" + tb.Text + ";"; //Учитывается +


                                right = true;      //Одна кнопка выбрана
                            }
                            else
                            {
                                ClassTotal.ans += "-" + tb.Text + ";";    //Выключена – «-«
                            }
                        }
                        else
                        {
                            MessageBox.Show("Заполнины не все поля");
                        }
                    }
                    break;

                case "Множественный выбор":
                    for (int i = 0; i < this.splitContainer3.Panel1.Controls.Count; i += 2)
                    {
                        CheckBox rb = this.splitContainer3.Panel1.Controls[i] as CheckBox;
                        TextBox  tb = this.splitContainer3.Panel1.Controls[i + 1] as TextBox;
                        if (tb.Text != "")     //Сохранять только заполненные вопросы
                        {
                            temp_i++;

                            if (rb.Checked)                            //Кнопка включена – вопрос выбран
                            {
                                ClassTotal.ans += "+" + tb.Text + ";"; //Учитывается +


                                right = true;     //Одна кнопка выбрана
                            }
                            else
                            {
                                ClassTotal.ans += "-" + tb.Text + ";";      //Выключена – «-«
                            }
                        }
                        else
                        {
                            MessageBox.Show("Заполнины не все поля");
                        }
                    }

                    break;

                case "Ввод слова":
                    for (int i = 0; i < this.splitContainer3.Panel1.Controls.Count; i++)
                    {
                        TextBox tb = this.splitContainer3.Panel1.Controls[i] as TextBox;
                        if (tb.Text != "")     //Сохранять только заполненные вопросы
                        {
                            temp_i          = 2;
                            ClassTotal.ans += tb.Text + ";";
                            right           = true;
                        }
                        else
                        {
                            MessageBox.Show("Заполнины не все поля");
                        }
                    }
                    break;

                case "Ввод значения":
                    for (int i = 0; i < this.splitContainer3.Panel1.Controls.Count; i++)
                    {
                        TextBox tb = this.splitContainer3.Panel1.Controls[i] as TextBox;
                        if (tb.Text != "")     //Сохранять только заполненные вопросы
                        {
                            temp_i          = 2;
                            ClassTotal.ans += tb.Text;
                            right           = true;
                        }
                        else
                        {
                            MessageBox.Show("Заполнины не все поля");
                        }
                    }
                    break;

                case "На соответствие":
                    for (int i = 0; i < this.splitContainer3.Panel1.Controls.Count; i += 2)
                    {
                        TextBox tb  = this.splitContainer3.Panel1.Controls[i] as TextBox;
                        TextBox tb1 = this.splitContainer3.Panel1.Controls[i + 1] as TextBox;

                        if (tb.Text != "" && tb1.Text != "")
                        {
                            temp_i++;
                            ClassTotal.ans += tb.Text + "&" + tb1.Text + ";";
                            right           = true;
                        }
                        else
                        {
                            MessageBox.Show("Заполнины не все поля");
                        }
                    }
                    break;
                }

                if (right == true && temp_i > 1)
                {
                    ClassQuestion question = new ClassQuestion(textBoxQuestion.Text, ClassTotal.type, ClassTotal.ans);
                    listQuestion.Add(question);
                    ClassTotal.QuantityQuestions++;
                    //toolStripLabelNumberQuestion.Text = "Номер вопроса: " + ClassTotal.NumberQuestion;
                    toolStripLabelQuantityQuestions.Text = "Количество вопросов: " + ClassTotal.QuantityQuestions;
                    MessageBox.Show(ClassTotal.ans);
                    listBox.Items.Add(textBoxQuestion.Text);
                    this.splitContainer3.Panel1.Controls.Clear();
                    this.textBoxQuestion.Text = "";
                    ClassTotal.type           = null;
                }
                else
                {
                    MessageBox.Show("Заполнины не все поля");
                }
            }
            else
            {
                MessageBox.Show("Заполните вопрос");
            }
        }
示例#3
0
        private void Show_Question()
        {
            ClassQuestion question = listQuestion[currentNumber - 1]; //Объект-текущий вопрос теста

            this.textBoxTextQ.Text = question.textQuestion;           //Получение информации о вопросе
            typeQuestion           = question.typeQuestion;           //Тип вопроса
            answers = question.answers;

            answerMas    = answers.Split(';');       //Деление ответов на части
            countAnswers = answerMas.Length - 1;     //Количество ответов
            splitContainer2.Panel2.Controls.Clear(); //Готовим панель для динамических компонентов
            trueAnswer = "";                         //Строка правильных ответов
            //Отображаем динамические компоненты в зависимости от типа вопроса
            switch (typeQuestion)
            {
            case "Одиночный выбор":
                for (int i = 0; i < countAnswers; i++)
                {
                    trueAnswer += answerMas[i][0];     //Первый символ в ответе хранит правильность: + или –
                                                       //Динамические компоненты ответа зависят от типа вопроса
                    ClassTotal.RadioButtonDynamic(splitContainer2.Panel2, 20, zazorTop + i * comHieght + i * zazor, 30, comHieght);
                    ClassTotal.LabelDynamic(splitContainer2.Panel2, 60, zazorTop + i * comHieght + i * zazor, splitContainer2.Panel2.Width - 70, comHieght, answerMas[i].Remove(0, 1));
                }
                break;

            case "Множественный выбор":
                for (int i = 0; i < countAnswers; i++)
                {
                    trueAnswer += answerMas[i][0];
                    ClassTotal.CheckBoxDynamic(splitContainer2.Panel2, 3, 3 + (i * 40), 17, 20);
                    ClassTotal.LabelDynamic(splitContainer2.Panel2, 25, 3 + (i * 40), 637, 20, answerMas[i].Remove(0, 1));
                }
                break;

            case "Ввод значения":
                trueAnswer = answerMas[0];
                ClassTotal.TextBoxDynamic(splitContainer2.Panel2, 3, 3, 330, 30);
                break;

            case "Ввод слова":
                for (int i = 0; i < countAnswers; i++)
                {
                    trueAnswer += answerMas[i];
                    ClassTotal.TextBoxDynamic(splitContainer2.Panel2, 3, 3 + (i * 40), 330, 30);
                }
                break;

            case "На соответствие":
                string[] first  = new string[countAnswers];
                string[] second = new string[countAnswers];
                for (int i = 0; i < countAnswers; i++)
                {
                    string[] an = answerMas[i].Split('&');
                    first[i]  = an[0];
                    second[i] = an[1];
                }
                for (int i = 0; i < countAnswers; i++)
                {
                    trueAnswer += second[i];
                    ClassTotal.LabelDynamic(splitContainer2.Panel2, 17, 3 + (i * 40), 300, 20, first[i]);
                    ClassTotal.ComboBoxDynamic(splitContainer2.Panel2, 348, 3 + (i * 40), 300, 20, second);
                }
                break;
            }
        }