Казахстан, Костанайский гос. университет
имени А.Байтурсынова
Знакомство с визуальными компонентами на
примере лабораторной работы «Создания тестирующей программы»
Ильницкий В.Г.
старший преподаватель кафедры программного обеспечения
Тема: Создание тестирующей программы
Задание: Создать тестирующую
программу. Тестовые вопросы хранятся в HTML файлах с названиями 1.HTM, 2.HTM,… 15.HTM. Ответы хранятся в
файле otwet.txt
При запуске
программы, при нажатии на кнопку «Начать тестирование» за каждой кнопкой закрепляется случайным
образом выбранный вопрос. При нажатии на кнопку с номером задания в WebBrowser
отображается соответствующий вопрос. При ответе на вопрос, программа запоминает
ответы, а при нажатии на «Закончить тестирование» проверяется правильность
ответов и подведение итогов.
Ход работы:
Предлагается номера вопросов и варианты ответов учащегося
хранить в двумерном массиве. Количество вопросов можно определить, подсчитав
количество строк в файле otwet.txt
Var a: array [1..20,1..2] of integer; kol_vo,
nom,i,j,werno:integer;
Процедура
нажатия на кнопку «Начать тестирование»
procedure
TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('otwet.txt';
kol_vo:=ListBox1.Count; werno:=0; net:=0; Randomize;
for i:=1 to 20 do
a[i,1]:=random(kol_vo)+1;
StatusBar1.Panels[0].Text:=' Начало -
'+TimeToStr(Time);
end;
При
нажатии на кнопку с номером вопроса из массива считывается номер файла, кнопка
меняет цвет, в WebBrowser загружается соответствующий файл теста.
procedure
TForm1.BitBtn1Click(Sender: TObject);
begin
nom:=StrToInt((Sender as TBitBtn).Caption);
(Sender as TBitBtn).Font.Color:=clRed;
WebBrowser1.Navigate(GetCurrentDir+'\'+IntToStr(a[nom,1])+'.htm');
if a[nom,2]<>0 then Edit1.Text:=Chr(64+a[nom,2]) // буква ответа /
//определяется по коду + 64
else Edit1.Text:='';
end;
При
щелчке по кнопке выбора ответа, номер ответа запоминается в массив
procedure
TForm1.Button3Click(Sender: TObject);
begin
a[nom,2]:=1; Edit1.Text:='A';
end;
При
щелчке по кнопке «Закончить тестирование» проверяются правильность ответов
учащегося путем сравнения данных из массива и сверяя их с i-той строкой из
списка.
procedure
TForm1.Button2Click(Sender: TObject);
begin
for i:=1 to 20 do
begin
if (a[i,2]=1)and
(pos('A',ListBox1.Items.Strings[a[i,1]-1])<>0)
then werno:=werno+1;
if (a[i,2]=2)and (pos('B',ListBox1.Items.Strings[a[i,1]-1])<>0)
then werno:=werno+1;
if (a[i,2]=3)and
(pos('C',ListBox1.Items.Strings[a[i,1]-1])<>0)
then werno:=werno+1;
if (a[i,2]=4)and
(pos('D',ListBox1.Items.Strings[a[i,1]-1])<>0)
then werno:=werno+1;
if (a[i,2]=5)and
(pos('E',ListBox1.Items.Strings[a[i,1]-1])<>0)
then werno:=werno+1;
end;
ShowMessage('Ваша осенка - '+FloatToStr(5*werno/20);
end;