C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
ListBox1, Сравнение
dEEp
Отправлено: 07.03.2005, 16:13


Дежурный стрелочник

Группа: Участник
Сообщений: 69



На форме расположены 2 ListBox'a. Предположим, что
в левом столбце вопросы. А в правом ответы на них,
причём расположены не по порядку. Наши действия: в
левом ListBox'e оставляем всё как есть, а в правом
выбираем какую либо строку. Кликаем по кнопке, также
расположенной на форме и в случае, если ответ (т.е.
выделенная строка) является правильным, то
на экране появляется сообщение, что ответ верен.
Вопросы идут поочерёдно, т.е. сначала первый, затем
второй и т.д. А ответы, естественно, как уже говорил,
расположены беспорядочно. Каким образом можно всё это
реализовать? Если что-то не понятно — могу разъяснить.

Присоединить изображение

Присоединить изображение

Георгий
Отправлено: 07.03.2005, 22:43


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



5 таблиц в БД:
1- id1; текст вопроса;
2- id2; текст ответа;
3- id3; id1; id2
4- id4; id1; id3
5- код тестируемого; id3
1 таблица — таблица (список) вопросов
2 таблица — таблица (список) всех возможных ответов
3 таблица — таблица связи вопроса и множества возможных ответов
4 таблица — таблица связи вопроса и правильного или правильных вариантов ответа
5 таблица — таблица выбранных тестируемым субъектом вариантов ответа

приведённая стуктура обеспечивает защиту от ошибок когда в результате ошибочного ввода правильных ответов правильный вариант случайно не попадает в список ответов.

позволяет на один вопрос иметь несколько правильных вариантов ответов (в том числе и ни одного).

позволяет вести протокол тестирования — кто и что отвечал

недостатки — структура позволяет только однократное тестирование субъекта — при последующих тестах выбраные ответы будут путаться.
обход недостатков — в "код тестируемого" включить дату и время начала тестирования.

Asher, RUP, а именно варианты использования, потрасающая вещь!

Отредактировано Георгий — 07/03/2005, 22:49
dEEp
Отправлено: 08.03.2005, 12:52


Дежурный стрелочник

Группа: Участник
Сообщений: 69



Я почти не умею работать с базами данных. Но могу попытаться. БЫло бы хорошо, если бы Вы разъяснили подробнее про то, что написали. Я плохо понял. Хотя в принципе и сам постараюсь. Спасибо заранее.
Treumer
Отправлено: 08.03.2005, 17:17


Станционный диспетчер

Группа: Участник
Сообщений: 92



QUOTE (dEEp @ 07/03/2005, 16:13)
На форме расположены 2 ListBox'a. Предположим, что
в левом столбце вопросы. А в правом ответы на них,
причём расположены не по порядку. Наши действия: в
левом ListBox'e оставляем всё как есть, а в правом
выбираем какую либо строку. Кликаем по кнопке, также
расположенной на форме и в случае, если ответ (т.е.
выделенная строка) является правильным, то
на экране появляется сообщение, что ответ верен.
Вопросы идут поочерёдно, т.е. сначала первый, затем
второй и т.д. А ответы, естественно, как уже говорил,
расположены беспорядочно. Каким образом можно всё это
реализовать? Если что-то не понятно — могу разъяснить.

В общем-то про таблицы толково описано, хотя до них еще надо добраться smile.gif
Если я правильно понимаю, то ListBox-ы на данный момент заполнены вручную ?

Это должно происходить, естественно — автоматически.

Общий алгоритм такой:
0) Идентифицируеи испытуемого.
1) Берем откуда-то (наилучший вариант — из базы данных — из описанной выше таблицы 1) список вопросов и заполняем им левый ListBox.
2) "Встаем" на первый элемент списка вопросов.
3) Заполняем (предварительно очистив) правый ListBox списком возможных ответов (взятых из описанной выше таблицы 2 по правилу в таблице номер 3) для вопроса выбранного в левом ListBox-е.
4) Ожидаем ввода от пользователя, возможные варианты:
- Пользователь выбрал новый вопрос — переход на пункт 3)
- Пользователь выбрал ответ (нажал на кнопку после этого, или 2 раза кликнул на выбранном ответе — все равно) — переходим к пункту 6
- Пользователь завершает работу — переходим к пункту 9
5) См. пункт 4
6) Проверяем — правилен ли выбранный ответ — по таблице правильных ответов 4.
7) Если ответ верен — сообщаем об этом, исключаем из левого ListBox-а вопрос, сохраняем в таблице номер 5 ответ испытуемого,
выделяем в левом ListBox-е следующий вопрос и переходим к пункту 3),
иначе пункт 8)
8) Ответ неверен. Сообщаем об этом, возможно — сохраняем в таблице 5 неверный ответ, переходим к пункту 4)
9) Сообщаем результаты. Завершаем программу.

Естественно, таблицы базы данных можно заменить на что-то еще — файлы, массивы данных введенные в программу вручную и т.п.

Вернуться в Вопросы программирования в C++Builder