Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 13.12.2012
Сообщений: 43

Как в программах-тестах реализована смена вопроса на следующий?

20.04.2014, 15:37. Показов 1618. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите создать опросник с помощью форм. На форме выводится вопрос и предложены варианты ответа. Пользователь выбирает вариант, затем выводится следующий вопрос и следующие варианты ответа. Как реализовать это обновление?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.04.2014, 15:37
Ответы с готовыми решениями:

Как реализована смена одежды в играх?
Всем привет, может кто знает, как в играх реализуется смена одежды(брони) на персонаже? Это либо тупо замена самого персонажа, либо навес...

Как реализована смена картинок в логотипе
Добрый день. Подскажите как технически реализована смена картинок в фоне логотипа на этом сайте http://www.moscsilk.ru/. Написал в этом...

Как вернуться в activity в тестах
В тестах приложения, когда проверяю нажатия на кнопки открывается другая активити. Как вернуться назад? И ещё вопрос, если над методом...

15
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
20.04.2014, 15:43
Lapidos, задача элементарная. Лист со списком вопросов и вариантами ответов. И что в конце должно произойти? Можете полностью раскрыть задачу?
0
0 / 0 / 1
Регистрация: 13.12.2012
Сообщений: 43
20.04.2014, 15:45  [ТС]
Должны выводится вопросы, пользователь выбирает ответы. Считается количество правильных и неправильных ответов. Далее выводится количество правильных ответов и количество ошибок
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
20.04.2014, 15:51
Какие-нибудь наработки есть или надо с нуля?
0
0 / 0 / 1
Регистрация: 13.12.2012
Сообщений: 43
20.04.2014, 15:52  [ТС]
с нуля(
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
20.04.2014, 15:56
Хорошо, нарисуем.
1
0 / 0 / 1
Регистрация: 13.12.2012
Сообщений: 43
20.04.2014, 17:11  [ТС]
спасибо
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
20.04.2014, 18:11
Лучший ответ Сообщение было отмечено Lapidos как решение

Решение

Lapidos, вот мой велосипед. Там всего 5 вопросов и соответственно 5 комплектов ответов. Ну и текст сами измените, на то что надо
На форме кнопка и 4 лейбла, их имена: btnStart - кнопка, lblQuestion - лейбл вопроса и lblAnswer1, lblAnswer2, lblAnswer3 лейблы для ответов. Текст на них выставиться из листа с данными.
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        List<Question> TestList;
        int index = 0;
        public Form1()
        {
            InitializeComponent();
            TestList = new List<Question>()
            {
                new Question() {quest="Вопрос 1",wrightAnswer=2,
                    answer1=new KeyValuePair<int,string>(1,"Ответ 1-1"),
                    answer2=new KeyValuePair<int,string>(2,"Ответ 1-2"),
                    answer3=new KeyValuePair<int,string>(3,"Ответ 1-3")},
                new Question() {quest="Вопрос 2",wrightAnswer=2,
                    answer1=new KeyValuePair<int,string>(1,"Ответ 2-1"),
                    answer2=new KeyValuePair<int,string>(2,"Ответ 2-2"),
                    answer3=new KeyValuePair<int,string>(3,"Ответ 2-3")},
                new Question() {quest="Вопрос 3",wrightAnswer=1,
                    answer1=new KeyValuePair<int,string>(1,"Ответ 3-1"),
                    answer2=new KeyValuePair<int,string>(2,"Ответ 3-2"),
                    answer3=new KeyValuePair<int,string>(3,"Ответ 3-3")},
                new Question() {quest="Вопрос 4",wrightAnswer=3,
                    answer1=new KeyValuePair<int,string>(1,"Ответ 4-1"),
                    answer2=new KeyValuePair<int,string>(2,"Ответ 4-2"),
                    answer3=new KeyValuePair<int,string>(3,"Ответ 4-3")},
                new Question() {quest="Вопрос 5",wrightAnswer=1,
                    answer1=new KeyValuePair<int,string>(1,"Ответ 5-1"),
                    answer2=new KeyValuePair<int,string>(2,"Ответ 5-2"),
                    answer3=new KeyValuePair<int,string>(3,"Ответ 5-3")}
 
            };
 
            btbStart.Click += (delegate(object sender, EventArgs e)
            {
                if (((Button)sender).Text == "Начать тест")
                {
                    lblQuestion.Text = TestList[index].quest;
                    lblAnswer1.Text = TestList[index].answer1.Value;
                    lblAnswer2.Text = TestList[index].answer2.Value;
                    lblAnswer3.Text = TestList[index].answer3.Value;
 
                    btbStart.Enabled = false;
                    btbStart.Text = "Узнать результат";
                }
                else
                {
                    int wright = 0;
                    int wrong = 0;
                    wright = (from n in TestList where (n.answered == true) select n).Count();
                    wrong =(from n in TestList where (n.answered!=true) select n).Count();
 
                    btbStart.Text = "Начать тест";
                    index = 0;
 
                    UnShow();
 
                    string result = string.Format("Верных ответов: {0:D}, неверных ответов: {1:D}", wright, wrong);
                    MessageBox.Show(result,"Результат теста");
                }
            });
 
            lblAnswer1.Click += (s, e) =>
                {
                    if (index >= TestList.Count)
                        return;
 
                    if (TestList[index].answer1.Key == TestList[index].wrightAnswer)
                    {
                        TestList[index].answered=true;
                    }
 
                    index++;
                    if (index >= TestList.Count)
                        btbStart.Enabled = true;
 
                    UpdateData(index);
                };
            lblAnswer2.Click += (s, e) =>
                {
                    if (index >= TestList.Count)
                        return;
 
                    if (TestList[index].answer2.Key == TestList[index].wrightAnswer)
                    {
                        TestList[index].answered = true;
                    }
 
                    index++;
                    if (index >= TestList.Count)
                        btbStart.Enabled = true;
 
                    UpdateData(index);
                };
            lblAnswer3.Click += (s, e) =>
                {
                    if (index >= TestList.Count)
                        return;
 
                    if (TestList[index].answer3.Key == TestList[index].wrightAnswer)
                    {
                        TestList[index].answered = true;
                    }
 
                    index++;
                    if (index >= TestList.Count)
                        btbStart.Enabled = true;
 
                    UpdateData(index);
                };
        }
        private void UpdateData(int index)
        {
            if (index > TestList.Count-1)
                return;
            lblQuestion.Text = TestList[index].quest;
            lblAnswer1.Text = TestList[index].answer1.Value;
            lblAnswer2.Text = TestList[index].answer2.Value;
            lblAnswer3.Text = TestList[index].answer3.Value;
        }
        private void UnShow()
        {
            lblAnswer1.Text = "";
            lblAnswer2.Text = "";
            lblAnswer3.Text = "";
            lblQuestion.Text = "";
        }
        //Класс для вопроса
        //quest - собственно вопрос
        //wrightAnswer - числовое значение верного ответа: 1, 2 или 3
        //answer1, answer2, answer3 - вопросы,
        //каждый из которых помечен цифрами 1, 2, 3 для анализа ответа
        //answered - переменная типа bool,
        //изначально все в false
        //при совпадении при опросе переводится в true
        public class Question
        {
            public string quest { get; set; }
            public int wrightAnswer { get; set; }
            public bool answered { get; set; }
            public KeyValuePair<int, string> answer1 { get; set; }
            public KeyValuePair<int, string> answer2 { get; set; }
            public KeyValuePair<int, string> answer3 { get; set; }
        }
    }
}
2
0 / 0 / 1
Регистрация: 13.12.2012
Сообщений: 43
20.04.2014, 22:38  [ТС]
спасибо! Буду разбираться!

Добавлено через 1 час 34 минуты
скажите, а как можно посчитать количество правильных и неправильных ответов каким- либо другим способом, кроме как запросом?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
20.04.2014, 22:42
Lapidos, через классический цикл. Более того, можно, к примеру, вывести те вопросы и ответы, где вариант правильный, или где не правильный, или все вместе. Вариантов масса.
1
0 / 0 / 1
Регистрация: 13.12.2012
Сообщений: 43
20.04.2014, 22:48  [ТС]
разобрался спасибо большое!
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
20.04.2014, 22:52
Lapidos, какая ошибка?
Вот так все работает...
C#
1
2
3
4
5
6
7
8
int wright = 0;
int wrong = 0;
for (int i = 0; i < TestList.Count; i++)
{
      if (TestList[i].answered == true)
                            wright++;
}
wrong = TestList.Count - wright;
1
0 / 0 / 1
Регистрация: 13.12.2012
Сообщений: 43
21.04.2014, 12:38  [ТС]
да..понял( глупый косяк(
0
0 / 0 / 1
Регистрация: 13.12.2012
Сообщений: 43
24.04.2014, 16:24  [ТС]
А подскажите, пожалуйста. Хоче сделать вопросы рандомно, но что бы они не повторялись. Как лучше осуществить контроль повтора вопросов?
0
 Аватар для beats
101 / 42 / 9
Регистрация: 09.12.2012
Сообщений: 597
24.04.2014, 18:41
Lapidos, смотри приложение "Экзаменатор" в книге "Visual C# в задачах и примерах - Культин" последнюю версию которой можно купить на гугл.плей.книги
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
24.04.2014, 18:56
Вот было дело писал редактор тестов и программу выводящую вопросы на экран:
Разработать тест для проверки знаний по выбранной теме

Добавлено через 1 минуту
Там, кстати, можно использовать саму библиотеку с классами минуя редактор и программу.

Добавлено через 5 минут
А, и ещё, изначально этот проект писался не для тестов как с правильными и неправильными ответами, а для тестов, в которых можно набирать за ответы определённое кол-во балов и выводить в зависимости от набранного кол-ва какой-то текст, например.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.04.2014, 18:56
Помогаю со студенческими работами здесь

Как реализована данная фича?
Добрый день. Есть такой замечательный модуль turn.js. Вот его главная страница: http://www.turnjs.com/ Модуль к себе на сайт...

Как реализована функция printf
int printf ( const char * format, ... ); http://www.cplusplus.com/reference/clibrary/cstdio/printf/ Смотрю на эту ф-цию и думаю как...

Как реализована VMT в Java
Начал изучать Яву и сразу же возник вопрос: если по умолчанию все методы виртуальные, то как реализуется таблица виртуальных методов?...

Как реализована ленивая инициализация?
Как реализована ленивая инициализация в C#? Код Lazy&lt;Dictionary&lt;string, decimal&gt;&gt; dic= new Lazy&lt;Dictionary&lt;string, decimal&gt;&gt;();...

Как в Joomla реализована работа с TimeZone и как это использовать в своем расширении?
Интересует, собственно, все, связанное с работой со временем и учёт в обработке разницы во временных зонах &quot;между пользователями&quot;...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru