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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
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;//Открываем набор данных для записи сведений о
прохождении
156
iNumberQuesting:=ADOQuery2.RecordCount; // Запоминаем, сколько
вопросов в данном тесте
iSerialNumber:=0; //Подряковый номер равен 0
iStep:=1;
//Сохранять созданную запись будем в кнопке "Следующий вопрос" }
cmdNextQestion.Enabled:=True;// Разблокируем кнопку "Следующий
вопрос"
cmdStart.Enabled:=false; // А текущую кнопку блокируем
end;
procedure TfrmTesting.DBGrid1DrawColumnCell(Sender: TObject; const Rect:
TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
// {"раскрашиваем" ячейки только для поля Признак правильного ответа}
//if Column.FieldName = 'Признак_правильного_ответа' then
// if (Column.Field.AsInteger mod 2 <> 0) then
// begin
// if
ADOQuery4.FieldByName('Признак_правильного_ответа').AsString='Верно'
then
// DBGrid1.Canvas.Font.Color := clGreen else DBGrid1.Canvas.Font.Color
:= clRed;
// TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
// end;
end;
procedure TfrmTesting.FormClose(Sender: TObject; var Action: TCloseAction);
157
begin
frmMDI.mnuTestThing.Enabled:=true;
ADOQuery5.Close;
ADOQuery4.Close;
ADOQuery3.Close;
ADOQuery2.Close;
ADOQuery1.Close;
action:=caFree;
end;
procedure TfrmTesting.FormCreate(Sender: TObject);
begin
frmMDI.mnuTestThing.Enabled:=false;
lblKOlZap.Caption:='';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('SELECT * FROM Тесты WHERE
Тесты.Должность=:ParamPosition');
ADOQuery1.Parameters.ParamByName('ParamPosition').Value:=sPosition;
ADOQuery1.Open;
ADOQuery2.Open;
ADOQuery3.Open;
ListBox1.Items.Clear;
ADOQuery1.First;
while not ADOQuery1.Eof do begin
ListBox1.Items.Add(ADOQuery1.FieldByName('Наименование_теста').AsStrin
g);
158
ADOQuery1.Next;
end;
end;
procedure TfrmTesting.ListBox1Click(Sender: TObject);
var
iOstPop: integer;
begin
if ListBox1.ItemIndex<>–1 then //Если выбор из списка не является
нулевым, то
begin
ADOQuery1.First;//Ставим указатель на первую запись таблицы
ADOQuery1.Locate('Наименование_теста',
ListBox1.Items[ListBox1.ItemIndex],[]);//Находим в таблице запись с
выбранным сотрудника
lblKolZap.Caption:='Вопрос '+IntToStr(ADOQuery2.RecNo)+' из
'+IntToStr(ADOQuery2.RecordCount);
iKodTesta:=ADOQuery1.FieldByName('Код_теста').AsInteger;
//Присваимваем переменной код выбранного теста
ADOQuery5.Close;
ADOQuery5.SQL.Clear;
ADOQuery5.SQL.Add('Select * From Попытки where
Попытки.Код_сотрудника=:ParamKodSotr2 and
Попытки.Код_теста=:ParamKodTesta2');
ADOQuery5.Parameters.ParamByName('ParamKodSotr2').Value:=iKodSotr;
ADOQuery5.Parameters.ParamByName('ParamKodTesta2').Value:=iKodTesta;
ADOQuery5.Open;
159
//ADOQuery5.Locate('Код_сотрудника','Код_теста', iKodSotr,iKodTesta,[]);
iNumberAttemptCount:=ADOQuery1.FieldByName('Количество_попыток').AsI
nteger;
iNumberAttempt:=ADOQuery5.FieldByName('Номер_попытки').AsInteger;
if iNumberAttempt<iNumberAttemptCount then
begin
iOstPop:=iNumberAttemptCount–iNumberAttempt;
lblKolStart.Caption:='Оставшееся количество попыток:
'+IntToStr(iOstPop);
lblKolStart.Font.Color:=clYellow;
cmdStart.Enabled:=true;
end else
begin
lblKolStart.Caption:='Количество попыток прохождения теста
исчерпано!';
lblKolStart.Font.Color:=clRed;
cmdStart.Enabled:=false;
end;
end;
end;
end.

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)