Цель работы - создать программу, которая тестирует учащегося по информатике и математике.
Проект должен содержать последовательность форм, реализующих диалог с тестируемым учащимся.
На первой форме происходит регистрация учащегося.
Рис. 25.1
Фрагмент программы (unitl): uses Unit2; {$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin Close;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Label3.Caption:=Form l.Editl.Text;
Form2.ShowModal;
end;
На второй форме предлагается выбрать один из тестов.
Рис. 25.2
Фрагмент программы (unit2):
uses Unit3, Unit6; {$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
Form3.ShowModal;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Form2.Close;
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
Form6.Edit2.Text:=";
Form6.ShowModal;
end;
На третьей форме предлагается проути тест по информатике.
Рис. 25.3
Фрагмент программы (unit3): uses Unit4, Unit2; {$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
begin
k:=0;
if (Form3.Edit1.Text='монитор') or (Form3.Edit1.Text='Монитор') or
(Form3.Edit1.Text='МОНИТОР') then k:=k+1; if (Form3.Edit2.Text='Клавиатура') or (Form3.Edit2.Text='клавиатура')
or (Form3.Edit2.Text='КЛАВИАТУРА') then k:=k+1; if Form3.Edit3.Text='8' then k:=k+1; Form4.Label2.Caption:=IntToStr(k); if k=0 then Form4.Label1.Caption:='Очень плохо' else
if k=1 then Form4.Label1.Caption:='Плохо' else
if k=2 then Form4.Label1.Caption:='Хорошо' else
if k=3 then Form4.Label1.Caption:='Очень хорошо';
Form3.Edit1.Text:='';
Form3.Edit2.Text:='';
Form3.Edit3.Text:='';
Form4.ShowModal;
end;
procedure TForm3.Button2Click(Sender: TObject);
begin
Form3.Close;
end;
На следующей форме отображается результат тестирования и предложение о просмотре ответа.
Рис. 25.4
Фрагмент программы (unit4): uses Unit1, Unit5, Unit3, Unit2; {$R *.dfm}
procedure TForm4.Button2Click(Sender: TObject);
begin
Form4.Close;
end;
procedure TForm4.Button1Click(Sender: TObject);
begin
Form4.Close;
Form3.Close;
end;
procedure TForm4.Button3Click(Sender: TObject);
begin
Form5.ShowModal;
end;
На следующей форме отображаются правильные ответы.
Рис. 25.5
Фрагмент программы (unit5):
uses Unit4, Unit3, Unit2, Unit1;
{$R *.dfm}
procedure TForm5.Button1Click(Sender: TObject);
begin
Form4.Close;
Form3.Close;
Form2.Close;
Form1.Close;
Form5.Close;
end;
Если учащийся выбрал тест по математике, то ему предлагается проверить свои знания таблицы умножения. На следующей форме случайным образом выбираются числа. Учащийся должен ввести значение произведения в текстовое поле. С помощью кнопки "проверка" выясняется правильность введенного ответа. Если ответ правильный, то можно сгенерировать следующий пример. После нескольких примеров можно проверить свой рейтинг.
Рис. 25.6
Фрагмент программы (unit6): uses Unit7, Unitl; {$R *.dfm}
procedure TForm6.Button1Click(Sender: TObject);
var n,i:integer;
begin
randomize;
a:=random(10)-0;
b:=random(l0)-0;
Form6.Label1.Caption:=IntToStr(a);
Form6.Label2.Caption:=IntToStr(b);
Form6.Edit2.Text:-'; Form6.Label6.Caption:='';
end;
procedure TForm6.Button2Click(Sender: TObject);
begin
if (a*b=StrToInt(Form6.Edit2.Text)) then begin
Form6.Label6.Caption:='Правильно';
m:=m+1;
r:=r+1;
q:=q+1;
end else begin
Form6.Label6.Caption:='Не правильно'; r:=r-1;
q:=q+1;
end;
Form6.Label1.Caption:=''; Form6.Label2.Caption:='';
end;
procedure TForm6.Button3Click(Sender: TObject); var
c:real;
begin
Form7.Label2.Caption:=Form1.Edit1.Text;
Form7.Label1.Caption:='Вы ответили на '+IntToStr(q)+' вопросов, из них правильно '+IntToStr(m);
Form7.Label4.Caption:='Ваш рейтинг = '+IntToStr(r);
c:=m/q;
if c=0 then Form7.Label3.Caption:='Очень плохо' else if (c>0)and(c<0.5) then Form7.Label3.Caption:='Плохо' else if c=0.5 then Form7.Label3.Caption:='Надо доучить' else if (c>0.5) and (c<1) then Form7.Label3.Caption:='Хорошо' else if c=1 then Form7.Label3.Caption:='Молодец!'; Form7.ShowModal;
end;
При нажатии на кнопке "Ваш рейтинг" на следующей форме появляется результаты рейтенга. Тестирование можно завершить.
Рис. 25.7
Фрагмент программы (unit7): uses Unit6; {$R *.dfm}
procedure TForm7.Button1Click(Sender: TObject);
begin
Form7.Close;
Form6.Close;
end;
Обратите внимание на подключение модулей в строке Uses. Таким образом, происходит обращение к соответствующей форме. Для отображения формы используется функция
function ShowModal: Integer;
Данная функция позволяет показывать форму в работе режима диалога.