С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 239
1

Выбор темы

27.03.2017, 12:25. Показов 990. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет, направьте на правильный путь,не совсем понимаю как сделать, есть две формы, форма с выбором темы, и сама тестовая форма, при выборе темы, открывается тестовая форма и в ней должны быть вопросы с данной темы, при этом, если юзер уже успешно завершил какую то из тем,то ее нужно сделать недоступной.
Форма выбора темы
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
namespace AccessAutorization
{
    public partial class predTest : Form
    {
        OleDbConnection connect = new OleDbConnection();
        public predTest()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            this.Hide();
            if (listBox1.SelectedIndex == -1)
            {
                MessageBox.Show("Вы не выбрали тему, выберите тему!");
            }
            if (listBox1.SelectedIndex == 0)
            {
                Test test = new Test();
                test.Show();
                Theme.ID = 1;
            }
        }
 
        private void predTest_Load(object sender, EventArgs e)
        {
            connect.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:/Показать шпаковой 2/Вопросы.mdb";
            connect.Open();
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = connect;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = ("SELECT Темы.[Код], Темы.[Тема], Темы.[Завершенно] FROM Темы");
            OleDbDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                Theme.Text = (string)reader["Тема"];
                listBox1.Items.Add(Theme.Text);
            }
        }
    }
}
Вопросы берет из всех вопросов,не важно код темы 1 или же 2
БД для наглядности
Вложения
Тип файла: rar Вопросы.rar (51.9 Кб, 2 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.03.2017, 12:25
Ответы с готовыми решениями:

Выбор темы с последующим выбором подраздела
Всем привет,возникла некоторая проблема. Есть 2 комбобокса (один - темы,второй - разделы) при...

Выбор темы диплома
Доброго времени суток! Помогите пожалуйста с идеей конкретной темы. Мне дали задание придумать...

Выбор темы для курсовой работы
Люди!!! Помогите выбрать тему курсовой работы.Я учусь на программиста уже второй год и вот пришло...

Выбор темы для дипломного проекта
Доброго времени всем. Я студент колледжа и через год у меня диплом. Посоветуйте пожалуйста что...

4
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 239
27.03.2017, 12:48  [ТС] 2
Тестовая
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
        private void Test_Load(object sender, EventArgs e)
        {
            label1.Text = Users.user;
            timer1.Interval = 1000;
            timer1.Start();
            questions = new List<Question>();
            btn_prev.Enabled = false;
            
            using (var connect = new OleDbConnection(ConnectionString))
            {
                var cmd = new OleDbCommand("SELECT Вопросы.[ID вопроса], Ответы.ID AS [ID ответа], Вопросы.[Текст] AS [Текст вопроса],Вопросы.[Тема_ID], Ответы.[Текст] AS [Текст ответа], [Правильность ответа] FROM Вопросы LEFT JOIN Ответы ON Ответы.[ID вопроса] = Вопросы.[ID вопроса] ORDER BY Вопросы.[ID вопроса], Ответы.ID");
                cmd.Connection = connect;
                connect.Open();
                using (var reader = cmd.ExecuteReader())
                {
                    int prevQuestionId = -1;
                    Question currentQuestions = null;
                    while (reader.Read())
                    {
                        int questionId = (int)reader["ID вопроса"];
                        if (questionId != prevQuestionId)
                        {
                            currentQuestions = new Question()
                            {
                                ID = questionId,
                                Text = (string)reader["Текст вопроса"],
                                ThemeID = (int)reader["Тема_ID"],
                                Answers = new List<Answer>()
                            };
                            questions.Add(currentQuestions);
 
                        }
 
                        currentQuestions.Answers.Add(new Answer
                        {
                            ID = (int)reader["ID ответа"],
                            Text = (string)reader["Текст ответа"],
                            IsCorrect = (bool)reader["Правильность ответа"]
                        });
                        prevQuestionId = questionId;
                    }
                }
            }
            ca = new bool[questions.Count][];
            ua = new bool[questions.Count][];
            for (int q = 0; q < questions.Count; q++)
            {
                ca[q] = new bool[questions[q].Answers.Count];
                ua[q] = new bool[questions[q].Answers.Count];
                for (int a = 0; a < questions[q].Answers.Count; a++)
                {
                    ca[q][a] = questions[q].Answers[a].IsCorrect;
                    ua[q][a] = false;
                }
            }
            int count = 0;
            label4.Text = questions[0].Text;
            groupBox1.Text = "Вопрос №1 из " + questions.Count.ToString();
            for (int i = 0; i < questions[0].Answers.Count; i++)
                if (ca[0][i] == true)
                    count++;
            radioButton1.Hide();
            radioButton2.Hide();
            radioButton3.Hide();
            radioButton4.Hide();
            radioButton5.Hide();
            radioButton6.Hide();
            checkBox1.Hide();
            checkBox2.Hide();
            checkBox3.Hide();
            checkBox4.Hide();
            checkBox5.Hide();
            checkBox6.Hide();
            for (int i = 0; i < questions[0].Answers.Count; i++)
                if (count > 1)
                {
                    if (i == 0)
                    {
                        checkBox1.Visible = true;
                        checkBox1.Text = questions[0].Answers[i].Text;
                    }
                    if (i == 1)
                    {
                        checkBox2.Visible = true;
                        checkBox2.Text = questions[0].Answers[i].Text;
                    }
                    if (i == 2)
                    {
                        checkBox3.Visible = true;
                        checkBox3.Text = questions[0].Answers[i].Text;
                    }
                    if (i == 3)
                    {
                        checkBox4.Visible = true;
                        checkBox4.Text = questions[0].Answers[i].Text;
                    }
                    if (i == 4)
                    {
                        checkBox5.Visible = true;
                        checkBox5.Text = questions[0].Answers[i].Text;
                    }
                    if (i == 5)
                    {
                        checkBox6.Visible = true;
                        checkBox6.Text = questions[0].Answers[i].Text;
                    }
                }
                else
                {
                    if (i == 0)
                    {
                        radioButton1.Visible = true;
                        radioButton1.Text = questions[0].Answers[i].Text;
                    }
                    if (i == 1)
                    {
                        radioButton2.Visible = true;
                        radioButton2.Text = questions[0].Answers[i].Text;
                    }
                    if (i == 2)
                    {
                        radioButton3.Visible = true;
                        radioButton3.Text = questions[0].Answers[i].Text;
                    }
                    if (i == 3)
                    {
                        radioButton4.Visible = true;
                        radioButton4.Text = questions[0].Answers[i].Text;
                    }
                    if (i == 4)
                    {
                        radioButton5.Visible = true;
                        radioButton5.Text = questions[0].Answers[i].Text;
                    }
                    if (i == 5)
                    {
                        radioButton6.Visible = true;
                        radioButton6.Text = questions[0].Answers[i].Text;
                    }
                }
        }
Добавлено через 21 минуту
Я как понимаю, либо делать в каждом SelectedIndex свои sql запросы к вопросам, а при переходе на тестовую форму заполнение листа согласно запросу, или есть варианты попроще?
0
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
27.03.2017, 14:46 3
Цитата Сообщение от connection123 Посмотреть сообщение
есть варианты попроще?
Что значит варианты попроще? Как вы их себе представляете?
C#
1
2
3
4
5
6
7
8
9
10
11
12
for (int i = 0; i < questions[0].Answers.Count; i++)
                if (count > 1)
                {
                   CheckBox cb = this.Controls.Find(String.Format("checkBox{0}",i+1),true) as CheckBox;
                        cb.Visible = true;
                        cb.Text = questions[0].Answers[i].Text;
                 }else
{
RadioButton rb = this.Controls.Find(String.Format("radioButton{0}",i+1),true) as RadioButton;
                       rb.Visible = true;
                        rb.Text = questions[0].Answers[i].Text;
}

Не по теме:

Что за дурацкая привычка использовать русский язык в названии таблиц/полей



Добавлено через 6 минут
Да и сразу логичнее, загрузку вопроса сделать отдельным методом, а не при загрузке формы.
0
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 239
27.03.2017, 15:53  [ТС] 4
Aferuga, Я добавил в класс переменную Темы,она правильно заполняется,каждому вопросу присваивается ид темы,но вопрос в том что изменить в моем коде,добавить/удалить чтобы при выборе темы,загружались вопросы из БД которые = теме данного вопроса (все вопросы под одним айдишником темы) при данном коде он берет все вопросы находящиеся в таблице вопросы,к ней же привязана тема
Пример
В бд щас 15 вопросов с ид темой 1
и предположим 7 вопросов с ид 2
но выведет он мне 22 вопроса при выборе любой темы
Я думал сделать так, на каждый SelectedIndex сделать свой запрос где отфильтровать вопросы самому через WHERE, но это не очень вариант,вдруг появятся новые темы, и тд
Вот ищу более рабочий вариант, ничего толкового пока не приходит на ум
0
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
02.04.2017, 12:19 5
Цитата Сообщение от connection123 Посмотреть сообщение
сделать свой запрос где отфильтровать вопросы самому через WHERE, но это не очень вариант
Это нормальный вариант, особенно если делать через параметр
Цитата Сообщение от connection123 Посмотреть сообщение
вдруг появятся новые темы, и тд
Если загрузка комбобокса правильно сделана из базы такой проблемы не будет.
Таблица с темами у вас есть, грузите её в комбобокс.
0
02.04.2017, 12:19
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.04.2017, 12:19
Помогаю со студенческими работами здесь

Выбор темы
Здравствуйте, уважаемые гуру. Не пинайте сильно) Посоветуйте пожайлуста тему для сайта на WP....

Выбор темы
Доброго всем времени суток) Мне нужна помощь в выборе темы для диссертации.... задача осложнена тем...

Выбор темы диплома
Не давно начала работать в сфере 1с, учусь на 4 курсе прикладной информатики, помогите плиз...

Выбор темы и не только
Доброго времени суток! Посоветуйте пожалуйста какая тема из этих самая простая для написания в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта Gowin Eda и снимок. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
Как создать нейросеть для генерации картинок на Python
InfoMaster 12.01.2025
Генерация изображений с помощью искусственных нейронных сетей стала одним из наиболее захватывающих направлений в области компьютерного зрения и машинного обучения. В этой статье мы рассмотрим. . .
Создание нейросети для генерации текста на Python
InfoMaster 12.01.2025
Нейросети, или искусственные нейронные сети, представляют собой модели машинного обучения, вдохновленные работой человеческого мозга. Они состоят из множества взаимосвязанных узлов, или "нейронов",. . .
Как создать нейросеть распознавания изображений на Python
InfoMaster 12.01.2025
Введение в распознавание изображений с помощью нейросетей Распознавание изображений с помощью нейронных сетей стало одним из самых впечатляющих достижений в области искусственного интеллекта. Эта. . .
Основы искуственного интеллекта
InfoMaster 12.01.2025
Искусственный интеллект (ИИ) представляет собой одну из наиболее динамично развивающихся областей современной науки и технологий. В широком смысле под искусственным интеллектом понимается способность. . .
Python и нейросети
InfoMaster 12.01.2025
Искусственные нейронные сети стали неотъемлемой частью современных технологий, революционизировав множество областей - от медицинской диагностики до автономных транспортных средств. Python, благодаря. . .
Python в машинном обучении
InfoMaster 12.01.2025
Python стал неотъемлемой частью современного машинного обучения, завоевав позицию ведущего языка программирования в этой области. Его популярность обусловлена несколькими ключевыми факторами, которые. . .
Создание UI на Python с TKinter
InfoMaster 12.01.2025
TKinter — это одна из наиболее популярных библиотек для создания графических интерфейсов пользователей (GUI) в языке программирования Python. TKinter входит в стандартную библиотеку Python, что. . .
HTML5 в разработке мобильных приложений
InfoMaster 12.01.2025
Введение: Обзор роли HTML5 в мобильной разработке В современном мире мобильных технологий HTML5 стал ключевым инструментом для разработки кроссплатформенных приложений. Эта технология произвела. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru