|
Здравствуйте! Мне нужно написать программу-тест на Delphi. Но нужен не просто линейный тест, а с ветвлением. То есть, чтобы следующий вопрос зависел от предыдущего ответа. Помогите, пожалуйста, какими-нибудь ссылками на похожие разработки! Спасибо! |
|
Заинтересовал меня этот вопрос и я решил сделать маленькую программулинку в пример. Тут многа букав =/ начну издалека: не надо разводить политосрач, это просто мой взгляд на решение задачи. Это полет моей фантазии, такая базовая заготовка, которую можно, при желании, развить дальше. А теперь по делу: программа считывает данные из ini файла, и на их основе создает дерево. в дереве каждая ветка является вопросом. В зависимости от ответа на вопрос (да или нет) выбирается следующий вопрос. Для программы не имеет значения количество ветвлений дерева. У класса вопрос есть параметр YesNo, его можно использовать для проверки правильности ответа. пример ini файла:
Структура ini файла:
ключ - идентификатор вопроса (не должен повторяться) значение - родитель вопроса (т.е. вопрос предшествующий этому)
ключ - идентификатор вопроса (должен соответствовать ИД из таблицы Questions) значение - текст вопроса
ключ - идентификатор вопроса (должен соответствовать ИД из таблицы Questions) значение - тут можно экспериментировать, как душе угодно Для начала описываем класс вопросов:
Теперь, собственно, код приложения:
TreeView я использовал для удобства отображения/редактирования вопросов
(17 Фев 15:11)
teanЫЧ
Ух, как подробно! Спасибо огромное... Я думала несколько проще будет
(22 Фев 19:35)
Маргарита
я с этим вашим ini файлом не сталкивалась. Как-то не работает у меня эта штука. Мне нужно просто txt файл, отдельно лежащий и из него чтобы считывалось. И структура в виде дерева чтобы была. Ну сейчас попробую отредактировать как-нибудь под себя
(22 Фев 19:39)
Маргарита
при работе с ини файлами нет ничего сложного. Ini-файл отлично подходит для работы с деревьями, так как данные в нем имеют четкую структуру, и можно настраивать связи между ними. ОЧЕНЬ грубо говоря, получается своеобразная реляционная бд, а программа выступает ее системой управления :)
(5 Мар 8:39)
teanЫЧ
В таблице Questions в левой части указаны уникальные номера всех вопросов, в правой части указан родитель вопроса (вышестоящий вопрос). получается разветвление. в таблице QuestionsText указаны тексты вопросов. В таблице YesNo указаны правильные варианты ответа для каждого вопроса. Варианты ответа могут быть какие угодно. Как можно заметить все таблицы в ini-файле связаны между собой по номеру вопроса.
(5 Мар 8:40)
teanЫЧ
|
|
Пусть есть таблица-опросник: 10 заходов по 10 вопросов каждый. Простой вариант. Случайное перемешивание. Для каждого испытуемого свои вопросы (независимо от ответа).
Дерево вопросов.
Почитать про деревья в Delphi: серия статей. Суть я уловила! Низкий поклон! Единственное, что плохо: я недавно узнала, что в программе должен быть встроен редактор правил (или идти отдельным файлом в комплекте).
(13 Фев 20:16)
Маргарита
|
|
Проще всего редактор правил сделать - считыванием информации из файла. Продумайте заранее кол-во максимально возможных вариантов ответа.
|
|
Создать базу данных для теста, где будут указываться вопросы и ссылки на другие последующие вопросы. Выдавать вопросы рандомно, а дальше двигаться по ветке ссылок вопросов. Такой тест несложно писать, если все структурировать и делать правильную нормализацию таблиц. |
Дерево или case of пробовали?
Тест человека или тест кода?
Пока еще ничего не пробовала. Пока собираю советы у опытных людей.
Тест человека. Ну если на пальцах, то вопрос и три варианта ответа, скажем. Только каждый следующий вопрос задается не один и тот же при любом ответе, а варьируется. То есть, если пользователь нажмет "Да", то появится один вопрос. А если нажмет "нет", то другой