Дипломная работа: Автоматизация процесса аттестации персонала для «ГАОУ ДПО МЦРКПО"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
151
procedure TfrmTesting.cmdNextQestionClick(Sender: TObject);
var
iPercentPrav: integer; //Процент правильных ответов
iBall: integer; // Оценка за прохождение теста
iPec3: integer; //Процент прохождения теста на 3
iPec4: integer; //Процент прохождения теста на 4
iPec5: integer; //Процент прохождения теста на 5
begin
if cmdNextQestion.Caption='Завершить тест' then
begin
//ListBox1.Enabled:=true;
cmdNextQestion.Caption:='Следующий вопрос';
cmdNextQestion.Enabled:=false;
Application.CreateForm(TfrmResult,frmResult);
frmResult.Visible:=false;
frmResult.lblNumber.Caption:=IntToStr(ADOQuery2.RecordCount);
ADOQuery4.Filtered:=false;
ADOQuery4.Filter:='Признак_правильного_ответа='+QuotedStr('Верно');
ADOQuery4.Filtered:=true;
frmResult.lblKolPrav.Caption:=IntToStr(ADOQuery4.RecordCount);
iPercentPrav:=Round(ADOQuery4.RecordCount*100/ADOQuery2.RecordCount)
;
frmResult.lblPercent.Caption:=IntToStr(iPercentPrav) + ' %';
iPec3:=ADOQuery1.FieldByName('Процент_ответов_на_3').AsInteger;
iPec4:=ADOQuery1.FieldByName('Процент_ответов_на_4').AsInteger;
iPec5:=ADOQuery1.FieldByName('Процент_ответов_на_5').AsInteger;
if iPercentPrav < iPec3 then
begin
152
frmResult.lblBall.Caption:= '2';
frmResult.lblBall.Font.Color:=clRed;
frmResult.lblResult.Caption:='Тестнепройден';
frmResult.lblResult.Font.Color:=clRed;
end;
if (iPercentPrav >= iPec3) and (iPercentPrav < iPec4) then
begin
frmResult.lblBall.Caption:= '3';
frmResult.lblBall.Font.Color:=clYellow;
frmResult.lblResult.Caption:='Удовлетворительно';
frmResult.lblResult.Font.Color:=clYellow;
end;
if (iPercentPrav >= iPec4) and (iPercentPrav < iPec5) then
begin
frmResult.lblBall.Caption:= '4';
frmResult.lblBall.Font.Color:=clGreen;
frmResult.lblResult.Caption:='Хорошо';
frmResult.lblResult.Font.Color:=clGreen;
end;
if iPercentPrav >= iPec5 then
begin
frmResult.lblBall.Caption:= '5';
frmResult.lblBall.Font.Color:=clGreen;
frmResult.lblResult.Caption:='Отлично';
frmResult.lblResult.Font.Color:=clGreen;
end;
ADOQuery4.Filtered:=false;
frmResult.ShowModal;
end;
153
if iStep<iNumberQuesting+1 then //Если счетчик меньше количества
вопросов +1 то
begin
iSerialNumber:=iSerialNumber+1;
if ADOQuery2.RecNo=ADOQuery2.RecordCount then
cmdNextQestion.Caption:='Завершить тест';
ADOQuery4.Append; //Создаем запись о прохождении
ADOQuery4.FieldByName('Код_сотрудника').AsInteger:=iKodSotr;//Сразу
записываем в созданную запись код сотрудника
ADOQuery4.FieldByName('Код_теста').AsInteger:=iKodTesta;//Так же
записываем код теста
ADOQuery4.FieldByName('Номер_попытки').AsInteger:=iNumberAttempt;//За
писываем номер попытки
ADOQuery4.FieldByName('Порядковый_номер').AsInteger:=iSerialNumber;//З
аписываем порядковый номер
ADOQuery4.FieldByName('Код_вопроса').AsInteger:=ADOQuery2.FieldByNa
me('Код_вопроса').AsInteger;//Записываем код вопроса
//Сохранять созданную запись будем в кнопке "Следующий вопрос"
cmdNextQestion.Enabled:=True;// Разблокируем кнопку "Следующий
вопрос"
if ADOQuery3.FieldByName('Истинность_ответа').AsBoolean=true then
//Если выбранная строка содержит признак истинности ответа, то
154
sCorrectAnswer:='Верно' //Переменной присваиваем значение верно
else sCorrectAnswer:='Не верно'; //А иначе Не верно
ADOQuery4.FieldByName('Признак_правильного_ответа').AsString:=sCorrect
Answer;
ADOQuery4.Post; //Сохраняем запись
ADOQuery2.Next; //Переходим к следующему вопросу
iStep:=iStep+1;
//if ADOQuery2.RecNo=ADOQuery2.RecordCount+1 then
cmdNextQestion.Caption:='Завершитьтест';
lblKolZap.Caption:='Вопрос '+IntToStr(ADOQuery2.RecNo)+' из
'+IntToStr(ADOQuery2.RecordCount);
end;
end;
procedure TfrmTesting.cmdStartClick(Sender: TObject);
var
iNomPop: integer; //Номер попытки
begin
ListBox1.Enabled:=false; //Блокируем список с выбором тестов
if ADOQuery5.RecordCount=0 then
begin
ADOQuery5.Append;
ADOQuery5.FieldByName('Код_сотрудника').AsInteger:=iKodSotr;
ADOQuery5.FieldByName('Код_теста').AsInteger:=iKodTesta;
ADOQuery5.FieldByName('Номер_попытки').AsInteger:=1;
ADOQuery5.Post;
155
iNumberAttempt:=ADOQuery5.FieldByName('Номер_попытки').AsInteger;
//Запоминаем текущее состояние после внесения изменений
end else
begin
//iNumberAttempt:=ADOQuery5.FieldByName('Номер_попытки').AsInteger;
ADOQuery5.Edit;
ADOQuery5.FieldByName('Номер_попытки').AsInteger:=iNumberAttempt+1;
ADOQuery5.Post;
iNumberAttempt:=ADOQuery5.FieldByName('Номер_попытки').AsInteger;
//Запоминаем текущее состояние после внесения изменений
end;
ADOQuery4.Close;
ADOQuery4.SQL.Clear;
ADOQuery4.SQL.Add('Select * From Прохождение where
Прохождение.Код_сотрудника=:ParamKodSotr and
Прохождение.Код_теста=:ParamKodTesta and
Прохождение.Номер_попытки=:ParamNumberAttempt');
ADOQuery4.Parameters.ParamByName('ParamKodSotr').Value:=iKodSotr;
ADOQuery4.Parameters.ParamByName('ParamKodTesta').Value:=iKodTesta;
ADOQuery4.Parameters.ParamByName('ParamNumberAttempt').Value:=iNumbe
rAttempt;
ADOQuery4.Open;//Открываем набор данных для записи сведений о
прохождении
Источник: https://baza.diplomsite.ru/previewfile/2027