unit Unit11;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

  type Vopros = record    //объявляем тип запись где будем хранить вопросы и варианты ответов к ним
Vopros:string;//здесь храниться вопрос
VariantOtveta1:string;//здесь храниться вариант ответа 1
VariantOtveta2:string;//здесь храниться вариант ответа 2
VariantOtveta3:string;//здесь храниться вариант ответа 3
VariantOtveta4:string;//здесь храниться вариант ответа 4
Variant1TrueOrFalse:boolean;// хранит значение true если вариант ответа верный иначе хранит false
Variant2TrueOrFalse:boolean;// хранит значение true если вариант ответа верный иначе хранит false
Variant3TrueOrFalse:boolean;// хранит значение true если вариант ответа верный иначе хранит false
Variant4TrueOrFalse:boolean;// хранит значение true если вариант ответа верный иначе хранит false
end ;

type
  TForm11 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Memo1: TMemo;
    Memo2: TMemo;
    Memo3: TMemo;
    Memo4: TMemo;
    Memo5: TMemo;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form11: TForm11;
Number:integer;
  MasVoprosov4 : array[1..5]of Vopros;//объявляем переменную типа массив из 10 элементов типа Vopros
  MasDataOtvetov:array[1..5]of Vopros;// будем хранить в этом массиве ответы пользователя

implementation

uses Unit2;

{$R *.dfm}


procedure TForm11.Button1Click(Sender: TObject);
begin
// кнопка начать тестирование
//сначала наш массив с элементами типа запись с именем vopros мы заполняем 10  вопросами
//заполняем 1 вопрос
MasVoprosov4[1].Vopros:='Какова причина использования технологии Flexgrid?';
MasVoprosov4[1].VariantOtveta1:='Управление частотой сигнала';
MasVoprosov4[1].VariantOtveta2:='Управление скоростью передачи';
MasVoprosov4[1].VariantOtveta3:='Объединение множества когерентных оптических носителей';
MasVoprosov4[1].VariantOtveta4:='Возможность гибкого развертывания и удаленного конфигурирования спектральных каналов';
MasVoprosov4[1].Variant1TrueOrFalse:=true;
MasVoprosov4[1].Variant2TrueOrFalse:=true;
MasVoprosov4[1].Variant3TrueOrFalse:=false;
MasVoprosov4[1].Variant4TrueOrFalse:=false;
//заполняем 2 вопрос
MasVoprosov4[2].Vopros:='Flexgrid предлагает';
MasVoprosov4[2].VariantOtveta1:='Частичную совместимость с стандартными сетями ITU с частотой 100 ГГц';
MasVoprosov4[2].VariantOtveta2:='Частичную совместимость с стандартными сетями ITU с частотой 50 ГГц';
MasVoprosov4[2].VariantOtveta3:='Полную совместимость с стандартными сетями ITU с частотой 100 ГГц';
MasVoprosov4[2].VariantOtveta4:='Полную совместимость с стандартными сетями ITU с частотой 50 ГГц';
MasVoprosov4[2].Variant1TrueOrFalse:=false;
MasVoprosov4[2].Variant2TrueOrFalse:=false;
MasVoprosov4[2].Variant3TrueOrFalse:=true;
MasVoprosov4[2].Variant4TrueOrFalse:=true;
//заполняем 3 вопрос
MasVoprosov4[3].Vopros:='Преимущества Flexgrid';
MasVoprosov4[3].VariantOtveta1:='Планы каналов настраиваются "На лету"';
MasVoprosov4[3].VariantOtveta2:='Возможность реализации больших скоростей';
MasVoprosov4[3].VariantOtveta3:='Возможность корректировки пропускной способности канала';
MasVoprosov4[3].VariantOtveta4:='Совместимость со стандартными сетями ITU';
MasVoprosov4[3].Variant1TrueOrFalse:=true;
MasVoprosov4[3].Variant2TrueOrFalse:=true;
MasVoprosov4[3].Variant3TrueOrFalse:=true;
MasVoprosov4[3].Variant4TrueOrFalse:=true;
//заполняем 4 вопрос
MasVoprosov4[4].Vopros:='Flexgrid позволяет использовать динамическое управление центральной частотой канала с разрешением';
MasVoprosov4[4].VariantOtveta1:='6,25 ГГц';
MasVoprosov4[4].VariantOtveta2:='12,5 ГГц';
MasVoprosov4[4].VariantOtveta3:='25 ГГц';
MasVoprosov4[4].VariantOtveta4:='50 ГГц';
MasVoprosov4[4].Variant1TrueOrFalse:=true;
MasVoprosov4[4].Variant2TrueOrFalse:=false;
MasVoprosov4[4].Variant3TrueOrFalse:=false;
MasVoprosov4[4].Variant4TrueOrFalse:=false;
//заполняем 5 вопрос
MasVoprosov4[5].Vopros:='Flexgrid позволяет использовать динамическое управление центральной частотой канала с шириной канала в ';
MasVoprosov4[5].VariantOtveta1:='6,25 ГГц';
MasVoprosov4[5].VariantOtveta2:='12,5 ГГц';
MasVoprosov4[5].VariantOtveta3:='25 ГГц';
MasVoprosov4[5].VariantOtveta4:='50 ГГц';
MasVoprosov4[5].Variant1TrueOrFalse:=false;
MasVoprosov4[5].Variant2TrueOrFalse:=true;
MasVoprosov4[5].Variant3TrueOrFalse:=false;
MasVoprosov4[5].Variant4TrueOrFalse:=false;

// после того как все вопросы заполнены прячем кнопку 'начать тестирование'
Button1.visible:=false;
Button2.visible:=true;
// выводим первый вопрос и варианты ответов к нему в memo1,memo2,memo3,memo4,memo5
Number:=1;//
memo1.Text:=MasVoprosov4[Number].Vopros;
memo2.Text:=MasVoprosov4[Number].VariantOtveta1;
memo3.Text:=MasVoprosov4[Number].VariantOtveta2;
memo4.Text:=MasVoprosov4[Number].VariantOtveta3;
memo5.Text:=MasVoprosov4[Number].VariantOtveta4;


end;

procedure TForm11.Button2Click(Sender: TObject);
var i:integer;//переменная цикла for
Error:integer;// переменная количества ошибок
ocenka,Stroka:string;// оценка/ строка для вывода
ColVop:integer;//количество  вопросов на которые были даны неправильные ответы
begin
if (Number<>5)then
begin
// сначала запоминаем в массиве MasDataOtvetov ответы данные пользователем
//если пользователь поставил галочку на первом
//варианте ответов запишем true в соответствующюю запись иначе запишем false
//
if(CheckBox1.Checked=true)then MasDataOtvetov[Number].Variant1TrueOrFalse:=true else
MasDataOtvetov[Number].Variant1TrueOrFalse:=false;
//если пользователь поставил галочку на 2
//варианте ответов запишем true в соответствующюю запись иначе запишем false
if(CheckBox2.Checked=true)then MasDataOtvetov[Number].Variant2TrueOrFalse:=true else
MasDataOtvetov[Number].Variant2TrueOrFalse:=false;
//если пользователь поставил галочку на 3
//варианте ответов запишем true в соответствующюю запись иначе запишем false
if(CheckBox3.Checked=true)then MasDataOtvetov[Number].Variant3TrueOrFalse:=true else
MasDataOtvetov[Number].Variant3TrueOrFalse:=false;
//если пользователь поставил галочку на 4
//варианте ответов запишем true в соответствующюю запись иначе запишем false
if(CheckBox4.Checked=true)then MasDataOtvetov[Number].Variant4TrueOrFalse:=true else
MasDataOtvetov[Number].Variant4TrueOrFalse:=false;
//закончили запись данных ответов в массив
// увеличиваем номер вопроса на единицу если это не десятый вопрос
 Number:=Number+1;
// очищаем CheckBox1,CheckBox2,CheckBox3,CheckBox4
CheckBox1.Checked:=false;
CheckBox2.Checked:=false;
CheckBox3.Checked:=false;
CheckBox4.Checked:=false;
//выводим следующий вопрос и варианты ответа к нему
memo1.Text:=MasVoprosov4[Number].Vopros;
memo2.Text:=MasVoprosov4[Number].VariantOtveta1;
memo3.Text:=MasVoprosov4[Number].VariantOtveta2;
memo4.Text:=MasVoprosov4[Number].VariantOtveta3;
memo5.Text:=MasVoprosov4[Number].VariantOtveta4;
end
else
begin
// записываем ответы данные пользователем на последний вопрос
if(CheckBox1.Checked=true)then MasDataOtvetov[Number].Variant1TrueOrFalse:=true else
MasDataOtvetov[Number].Variant1TrueOrFalse:=false;
//если пользователь поставил галочку на 2
//варианте ответов запишем true в соответствующюю запись иначе запишем false
if(CheckBox2.Checked=true)then MasDataOtvetov[Number].Variant2TrueOrFalse:=true else
MasDataOtvetov[Number].Variant2TrueOrFalse:=false;
//если пользователь поставил галочку на 3
//варианте ответов запишем true в соответствующюю запись иначе запишем false
if(CheckBox3.Checked=true)then MasDataOtvetov[Number].Variant3TrueOrFalse:=true else
MasDataOtvetov[Number].Variant3TrueOrFalse:=false;
//если пользователь поставил галочку на 4
//варианте ответов запишем true в соответствующюю запись иначе запишем false
if(CheckBox4.Checked=true)then MasDataOtvetov[Number].Variant4TrueOrFalse:=true else
MasDataOtvetov[Number].Variant4TrueOrFalse:=false;
//закончили запись данных ответов в массив
Button2.Visible:=false;// прячем кнопку 'следующий вопрос'
// обнуляем переменную ошибок
Error:=0;
//подсчитываем количество не правильных ответов
for i:= 1 to 5 do
 begin
   //при сравнении записей двух массивов если записи разные то переменной ошибок Error
   //добавляем единицу
  if (MasVoprosov4[i].Variant1TrueOrFalse<>MasDataOtvetov[i].Variant1TrueOrFalse)or
  (MasVoprosov4[i].Variant2TrueOrFalse<>MasDataOtvetov[i].Variant2TrueOrFalse)or
  (MasVoprosov4[i].Variant3TrueOrFalse<>MasDataOtvetov[i].Variant3TrueOrFalse)or
  (MasVoprosov4[i].Variant4TrueOrFalse<>MasDataOtvetov[i].Variant4TrueOrFalse)then
    begin
    Error:=Error+1;
    end;
 end;
//подсчитываем оценку
if (Error=0) then ocenka:='5';
if (Error=1) then ocenka:='4';
if (Error=2) then ocenka:='3';
if (Error=3) then ocenka:='2';
if (Error=4) then ocenka:='2';
if (Error=5) then ocenka:='2';
//формируем строку для вывода в сообщение
Stroka:='вы ответили правильно на :'+''+IntToStr(5-Error)+' вопросов,ваша оценка:'+ocenka;
if strtoint(ocenka)>2 then
begin
  unit2.p4:=true;
  unit2.form2.done4.visible:=true;
end;
 //выводим оценку в сообщении
 ShowMessage(Stroka);
 // после закрываем наше приложение закрывая главную форму
  unit2.Form2.ocenka.caption:=('Ваша оценка-' + ocenka);
  Button1.visible:=true;
    Form11.Close;
end;
end;


end.

