コード例 #1
0
ファイル: User.xaml.cs プロジェクト: Warestone/Questionnaire
        private void NextQuest_Click(object sender, RoutedEventArgs e) // переход к следующему вопросу
        {
            if (AnswearText.Text == "//ENDQ\\")
            {
                MessageBox.Show("Данный ввод недопустим!", "Ошибка");
                AnswearText.Clear();
                return;
            }
            List <int> Index = new List <int>();

            foreach (object item in Answers.SelectedItems)
            {
                Index.Add(Answers.Items.IndexOf(item));
            }
            if (Index.Count > NumVar)
            {
                MessageBox.Show("Нельзя выбрать больше " + NumVar + " ответов!", "Ошибка");
                Answers.SelectedIndex = -1;
                return;
            }
            Question.Text = "Вопрос: " + QuestionsL[NumQuestion]; // новый вопрос
            AnswersL.Add(QuestionsL[NumQuestion]);                // занесение вопроса в массив
            int i = 0;

            while (Index.Count > i)
            {
                AnswersL.Add(INFO[Index[i]]); // занесение выбранного ответа в массив
                i++;
            }
            if (INFO[Answers.SelectedIndex] == "Напишите свой ответ")
            {
                AnswersL.Add(AnswearText.Text);
                AnswearText.Clear();
            }
            AnswersL.Add("//ENDQ\\");
            NumQuestion++;
            INFO.Clear();
            GetAllAnswers();
            if (NumVar > 1)
            {
                Answers.SelectionMode = SelectionMode.Multiple;
            }
            else
            {
                Answers.SelectionMode = SelectionMode.Single;
            }
            NextQuest.Opacity   = 0.3;
            NextQuest.IsEnabled = false;
        }
コード例 #2
0
ファイル: User.xaml.cs プロジェクト: Warestone/Questionnaire
 private void Answers_SelectionChanged(object sender, SelectionChangedEventArgs e) // событие отвечающее за блокировку/разблокировку кнопок при выборе ответа
 {
     if (Answers.SelectedIndex != -1 && NumQuestion + 1 != TotalQuestions && INFO[Answers.SelectedIndex] != "Напишите свой ответ")
     {
         NextQuest.Opacity   = 0.5;
         NextQuest.IsEnabled = true;
     }
     else if (Answers.SelectedIndex != -1 && NumQuestion + 1 == TotalQuestions && INFO[Answers.SelectedIndex] != "Напишите свой ответ")
     {
         NextQuest.Opacity    = 0.3;
         NextQuest.IsEnabled  = false;
         StartQuest.Opacity   = 0.5;
         StartQuest.IsEnabled = true;
     }
     else
     {
         NextQuest.Opacity   = 0.3;
         NextQuest.IsEnabled = false;
     }
     if (Answers.SelectedIndex != -1 && NumQuestion + 1 != TotalQuestions && INFO[Answers.SelectedIndex] == "Напишите свой ответ")
     {
         AnswearTextLabel.Opacity = 0.9;
         AnswearText.IsEnabled    = true;
         AnswearText.Focus();
     }
     else if (Answers.SelectedIndex != -1 && NumQuestion + 1 == TotalQuestions && INFO[Answers.SelectedIndex] == "Напишите свой ответ")
     {
         AnswearTextLabel.Opacity = 0.9;
         AnswearText.IsEnabled    = true;
         AnswearText.Focus();
     }
     else
     {
         AnswearTextLabel.Opacity = 0.5;
         AnswearText.IsEnabled    = false;
     }
 }
コード例 #3
0
ファイル: User.xaml.cs プロジェクト: Warestone/Questionnaire
        private void StartQuest_Click(object sender, RoutedEventArgs e) // кнопка начала и окончания прохождения анкет
        {
            if (StartQuest.Content.ToString() == "Начать прохождение анкеты")
            {
                CommandText = "SELECT QuestN FROM Question WHERE ID_F = (SELECT ID_F FROM Form WHERE FormN ='" + ListOfQuest.SelectedItem.ToString() + "');";
                GetSomeData = true;
                ConnectDB(CommandText); // вызов функци подключения к БД с командой на получение вопросов
                if (FiledConnect)
                {
                    FiledConnect = false;
                    return;
                }
                NameQuestLabel.Opacity = 0.5; // блокировка/разблокировка объектов интерфейса
                ListOfQuest.IsEnabled  = false;
                ListOfQuest.Opacity    = 0.5;
                NameGroupLabel.Opacity = 0.5;
                ListOfGroup.IsEnabled  = false;
                ListOfGroup.Opacity    = 0.5;
                Question.Opacity       = 0.9;
                Question.IsEnabled     = true;
                Answers.Opacity        = 0.8;
                Answers.IsEnabled      = true;
                CourseLabel.Opacity    = 0.5;
                CourseList.Opacity     = 0.5;
                CourseList.IsEnabled   = false;
                StartQuest.Content     = "Завершить прохождение анкеты";
                StartQuest.Opacity     = 0.3;
                StartQuest.IsEnabled   = false;
                foreach (var Question in INFO)
                {
                    QuestionsL.Add(Question); // занесение вопросов в массив
                }
                INFO.Clear();
                TotalQuestions = QuestionsL.Count(); // подсчёт количества вопросов
                GetAllAnswers();                     // вызов функции получения ответов на вопрос
                if (NumVar > 1)
                {
                    Answers.SelectionMode = SelectionMode.Multiple;
                }
                else
                {
                    Answers.SelectionMode = SelectionMode.Single;
                }
            }
            else
            {
                if (AnswearText.Text == "//ENDQ\\")
                {
                    MessageBox.Show("Данный ввод недопустим!", "Ошибка");
                    AnswearText.Clear();
                    return;
                }
                List <int> Index = new List <int>();
                foreach (object item in Answers.SelectedItems)
                {
                    Index.Add(Answers.Items.IndexOf(item));
                }
                if (Index.Count > NumVar)
                {
                    MessageBox.Show("Нельзя выбрать больше " + NumVar + " ответов!", "Ошибка");
                    Answers.SelectedIndex = -1;
                    return;
                }
                AnswersL.Add(QuestionsL[NumQuestion]); // занесение финальных значений перед отправкой в БД
                int d = 0;
                while (Index.Count > d)
                {
                    AnswersL.Add(INFO[Index[d]]); // занесение выбранного ответа в массив
                    d++;
                }
                if (INFO[Answers.SelectedIndex] == "Напишите свой ответ")
                {
                    AnswersL.Add(AnswearText.Text);
                }
                AnswersL.Add("//ENDQ\\");
                int Course = 0;
                switch (CourseList.SelectedIndex) // проверка выбранного курса
                {
                case 0:
                    Course = 1;
                    break;

                case 1:
                    Course = 2;
                    break;

                case 2:
                    Course = 3;
                    break;

                case 3:
                    Course = 4;
                    break;
                }
                int FinalAddr = 0;
                for (int i = 0; i < AnswersL.Count; i++) // цикл отправки данных в БД
                {
                    if (AnswersL[i + 1] == "Напишите свой ответ")
                    {
                        CommandText = "INSERT INTO TextAnswear (ID_Q, ID_A, TextTA) VALUES ((SELECT ID_Q FROM Question WHERE QuestN ='" + AnswersL[i] + "'), (SELECT ID_A FROM Answear WHERE AnswN ='" + AnswersL[i + 1] + "' AND ID_Q = (SELECT ID_Q FROM Question WHERE QuestN = '" + AnswersL[i] + "')), '" + AnswersL[i + 2] + "')";
                        ConnectDB(CommandText); // отправка ответов, введённых вручную, в БД
                        CommandText = "INSERT INTO MainTable (ID_F, ID_Q, ID_A, ID_TA, ID_G, Course, Specialization) VALUES ((SELECT ID_F FROM Form WHERE FormN ='" + ListOfQuest.SelectedItem.ToString() + "'), (SELECT ID_Q FROM Question WHERE QuestN ='" + AnswersL[i] + "'), (SELECT ID_A FROM Answear WHERE AnswN ='" + AnswersL[i + 1] + "'), (SELECT ID_TA FROM TextAnswear WHERE TextTA = '" + AnswersL[i + 2] + "'), (SELECT ID_G FROM [Group] WHERE GroupN ='" + ListOfGroup.SelectedItem.ToString() + "'), '" + Course + "', (SELECT Specialization FROM [Group] WHERE GroupN ='" + ListOfGroup.SelectedItem.ToString() + "')); ";
                        ConnectDB(CommandText); // отправка выбранных ответов
                        i += 3;
                    }
                    else
                    {
                        for (int s = i; s < AnswersL.Count; s++)
                        {
                            if (AnswersL[s] == "//ENDQ\\")
                            {
                                FinalAddr = s;
                                break;
                            }
                        }
                        for (int q = i; q < FinalAddr - 1; q++)
                        {
                            CommandText = "INSERT INTO MainTable (ID_F, ID_Q, ID_A, ID_TA, ID_G, Course, Specialization) VALUES ((SELECT ID_F FROM Form WHERE FormN ='" + ListOfQuest.SelectedItem.ToString() + "'), (SELECT ID_Q FROM Question WHERE QuestN ='" + AnswersL[i] + "'), (SELECT ID_A FROM Answear WHERE AnswN ='" + AnswersL[q + 1] + "'), '0', (SELECT ID_G FROM [Group] WHERE GroupN ='" + ListOfGroup.SelectedItem.ToString() + "'), '" + Course + "', (SELECT Specialization FROM [Group] WHERE GroupN ='" + ListOfGroup.SelectedItem.ToString() + "')); ";
                            ConnectDB(CommandText); // отправка выбранных ответов
                        }
                        i = FinalAddr;
                    }
                }
                if (FiledConnect)
                {
                    FiledConnect = false;
                    MessageBox.Show("Результаты не были сохранены из-за превышеного ожидания доступа к базе данных 'QDB.db'!\n", "Ошибка");
                    return;
                }
                INFO.Clear(); // откат объектов интерфейса окна в изначальное состояние
                QuestionsL.Clear();
                AnswersL.Clear();
                StartQuest.Content  = "Начать прохождение анкеты";
                NextQuest.Opacity   = 0.3;
                NextQuest.IsEnabled = false;
                Answers.Items.Clear();
                Question.Text             = "Вопрос:";
                Question.Opacity          = 0.3;
                Question.IsEnabled        = false;
                NameQuestLabel.Opacity    = 0.9;
                ListOfQuest.Opacity       = 0.9;
                ListOfQuest.IsEnabled     = true;
                NameGroupLabel.Opacity    = 0.9;
                ListOfGroup.Opacity       = 0.9;
                ListOfGroup.IsEnabled     = true;
                Answers.Opacity           = 0.5;
                Answers.IsEnabled         = false;
                ListOfGroup.SelectedIndex = -1;
                ListOfQuest.SelectedIndex = -1;
                CourseList.SelectedIndex  = -1;
                StartQuest.Opacity        = 0.3;
                StartQuest.IsEnabled      = false;
                CourseLabel.Opacity       = 0.9;
                CourseList.Opacity        = 0.9;
                CourseList.IsEnabled      = true;
                AnswearText.Clear();
                AnswearText.IsEnabled    = false;
                Answers.SelectionMode    = SelectionMode.Single;
                AnswearTextLabel.Opacity = 0.5;
                NumQuestion     = 0;
                TotalQuestions  = 0;
                TotalSleepCycle = 0;
                MessageBox.Show("Анкета успешно пройдена, результаты сохранены!", "Сообщение");
            }
        }