Мегаобучалка Главная | О нас | Обратная связь


Пример 2 (психологический тест)



2020-02-04 243 Обсуждений (0)
Пример 2 (психологический тест) 0.00 из 5.00 0 оценок




Пусть имеется заданный набор из n, заранее фиксированного числа вопросов. На каждый из вопросов может быть выбран один из трех ответов: «да», «нет», «не знаю». После ответов на все вопросы должен выдаваться результат. Предположим, что необходимо выдавать только количество первых, вторых и третьих ответов, хотя в реальных тестах, как правило, происходит подсчет баллов, на основании некоторого принципа.

Для решения данной задачи поместим на форму компонент Edit, в котором будет выдаваться очередной вопрос, а следовательно, свойству ReadOnly придадим значение True. Компонент RadioGroup служит для задания вариантов ответов, которые в данном случае будут «да», «нет», «не знаю», при этом начальное значение свойства ItemIndex должно быть равно единицы. Компонент Label 1 будет необходим для выдачи результатов тестирования.

В модуле опишем константу n для задания количества вопросов и целочисленные переменные i, i 1, i 2, i 3, в первой из которых будет содержаться номер вопроса, а в остальных — количество ответов каждого
варианта. Необходимо отметить, что это только общий вид решения задачи, поскольку можно задать более совершенный способ генерации вопросов и более интересный способ подсчета баллов.

В данной задаче нельзя воспользоваться событием OnClick для самого компонента RadioGroup, поскольку не всегда на следующий вопрос будет выбираться другой ответ. Следовательно, на форму необходимо поместить два компонента Button. При нажатии на первую кнопку происходит начало тестирования, т. е. обнуляются соответствующие переменные,
и выводится первый вопрос. При нажатии на вторую кнопку происходит анализ выбранного ответа и выдача следующего вопроса. Форма может иметь вид, представленный на рисунке 18.

Рисунок 18

 

В модуле опишем дополнительную функцию, которая на основании целочисленного значения формировала соответствующий вопрос. Для создания реального теста эту функцию необходимо доработать в соответствии со способом задания вопросов, например, вопросы можно читать из файла.

Тогда программа может иметь вид:

Const n=5;

Var i,i1,i2,i3:Integer;

 

function Query(i:integer):String ;

begin

Query:='Вопрос'+IntToStr(i);{Функция формирования очередного вопроса}

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

 i:=1;

 Edit1.Text:=Query(1)

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

 i:=1; i1:=0; i2:=0; i3:=0;

 Edit1.Text:=Query(1);

 Label1.Caption:='';

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

 i:=i+1;

 Case RadioGroup1.ItemIndex of

 0:i1:=i1+1;

 1:i2:=i2+1;

 2:i3:=i3+1;

 end;

 if i<=n then

 Edit1.Text:=Query(i)

 else

 begin

 Label1.Caption:=' " Да" '+IntToStr(i1)+

 ' "Нет" '+IntToStr(i2)+ ' "Не знаю" '+IntToStr(i3);

 Label1.Visible:=True;

 end;

end;

Переключатель с независимой фиксацией (выключатель) предназначен для задания одного из двух (трех) состояний. Во включенном состоянии
в этот прямоугольник помещается символ «галочка», а в выключенном — прямоугольник пуст. В нейтральном состоянии, если оно доступно, «галочка» имеет серый цвет.

К ним можно отнести компоненты CheckBox со страницы Standat, CheckListBox со страницы Additional и компонент ListBox, который может выполнять функции переключателя. Основное свойство AllowGrayed определяет, может ли опция находиться в двух или трех состояниях (включена, выключена и включена частично). В случае, если опция может находиться в двух различных состояниях, логическое свойство Checked определяет, выбрана или нет данная опция. Если имеются три различных варианта, необходимо применять свойство State, значение которого может быть cbUnChecked — опция выключена, cbChecked — опция включена, cbGrayed — опция включена, однако изображается серым цветом.

Пример 3

Необходимо на основании курса подсчитать, сколько лет еще необходимо учиться.

Для решения данной задачи поместим на экран компонент CheckBox, свойству AllowGrayed придадим значение True. В этом случае данный компонент может имееть три состояния, что соответствует трем возможным вариантам ответа: включена — имеется высшее образование, выключена — нет высшего образования, частично включена — неполное высшее. Поместим на форме компонент RadioGroup, в котором посредством свойства Item зададим возможные варианты курсов: первый, второй
и т. д. Свойству Visible придадим значение False, чтобы при начальном исполнении программы данного компонента на экране не было. В компоненте Label будем выдавать ответ.

Проанализируем два различных события: нажатие на компоненты CheckBox 1 и RadioGroup 1. При первом событии происходит анализ его состояния, если он включен частично, то на экран выводится группа переключателей, во всех других случаях данную группу убираем с экрана,
и в зависимости от того, включена или выключена данная опция, выдается соответствующее сообщение. При частично включенной опции происходит анализ нажатия клавиши на группе переключателей, и в зависимости от выбранной альтернативы выдается подсчитанное количество лет.

Вся программа может иметь следующий вид:

procedure TForm1.CheckBox1Click(Sender: TObject);

begin

 If CheckBox1.State=cbGrayed

 Then

 begin

 RadioGroup1.Visible:=True;

 RadioGroup1.ItemIndex:=-1;

 Label1.Caption:=’’

 end

 Else

 begin

 RadioGroup1.Visible:=False;

 If CheckBox1.State=cbChecked

 Then Label1.Caption:=’Есть высшее образование’

 Else Label1.Caption:=’Нет высшего образования’

 end;

end;

procedure TForm1.RadioGroup1Click(Sender: TObject);

begin

 Label1.Caption:=’Еще учиться’+IntToStr(5-RadioGroup1.ItemIndex)

end;

Рассмотрим компоненты, которые могут задавать несколько опций,
т. е. компоненты ListBox и CheckListBox, с дополнительной закладки компонентов Addition. Начальное значение опций в обоих компонентах задается свойством Items инспектора объектов. При выполнении программы для проверки выбранных опций компонент CheckListBox может использоваться логическое свойство Checked[Index], которое выдает значение True, если опция выбрана. Для компонента CheckListBox смысл свойств AllowGrayed и State остается тем самым.

Пример 4

Выбрать все отмеченные опции из компонента CheckListBox в Memo. Данную задачу можно интерпретировать как составление счета, при условии, что список опций — это меню.

Поместим на экран компонент CheckListBox, в нем с помощью пункта Item зададим начальные опции (пункты, которые могут быть выбраны).
В компоненте Memo будем создавать список нажатием кнопки Button. Тогда процедура будет иметь вид:

procedure TForm1.Button1Click(Sender: TObject);

Var i:Integer;

begin

 Memo1.Lines.Clear;

for i:=0 to CheckListBox1.Items.Count-1 do

begin

 If CheckListBox1.Checked[i]

 then

 Memo1.Lines.Add(CheckListBox1.Items.Strings[i]);

 end;

end;

Компонент ListBox предназначен для отображения на экране списка строк и в отличие от компонента CheckListBox, позволяющего включать или выключать опции, помогает выбирать некоторые строки из списка. На этапе проектирования, кроме свойства Item, рассмотрим два логических свойства MultiSelect и EnternetSelect. Если первое свойство имеет значение True, то можно выделять несколько строк, в противном случае выделяется только одна строка. Второе свойство определяет способ выделения строк. Если оно имеет значение True, то выбор нескольких рядом стоящих строк осуществляется с помощью клавиши Shift, а не рядом стоящих строк посредством клавиши Ctrl. Для проверки выбранных строк на этапе выполнения может использоваться целочисленное свойство ItemIndex, задающий номер единственной выбранной строки и логическое свойство Selected[Index], принимающее значение True, если соответствующая строка выбрана.

Задания:

1. Проверьте все примеры из лабораторной работы.

2. Доработайте пример 3 таким образом, чтобы имелась возможность вернуться на один вопрос назад.

3. Задана компонента ComboBox, в свойстве Items записаны различные цвета. Сделайте, чтобы при выборе определенного цвета, изменялся цвет формы. Данную задачу выполните и с RadioGroup.



2020-02-04 243 Обсуждений (0)
Пример 2 (психологический тест) 0.00 из 5.00 0 оценок









Обсуждение в статье: Пример 2 (психологический тест)

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (243)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)