Диплом: Разработка информационной системы автоматизации работы центра занятости

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
77
После осуществления подбора на экран в зависимости от результата
выдаются полные сведения о подобранных вариантах трудоустройства, которые
содержат следующую информацию:
- регистрационный код, фамилию, имя, отчество претендента
- перечень вариантов трудоустройства, содержащих следующую
информацию:
- должность;
- наименование, адрес и телефон предприятия;
- фамилия, имя, отчество того, к кому надо обратиться.
При необходимости данную информацию можно распечатать.
Работа модуля завершается нажатием кнопки «Выход» или средствами
Windows для закрытия окна, например Alt+F4.
10. Модуль «Подбор кандидатов»
Входные данные
Входными данными модуля является идентификационный код
предприятия, выбранный в перечне предприятий модуля «Предприятия».
Выходные данные
Выходными данными является запись в таблице «Otbor». Для
обеспечения уникальности программно формируется уникальный
идентификационный код подбора претендентов. Запись будет состоять из
следующих полей:
- идентификационный код подбора;
- дата собеседования;
- идентификационный код предприятия.
Также выходными данными являются записи в таблице «Rezult» базы
данных. Уникальность каждой записи обеспечивается ключом, который
включает в себя идентификационный код подбора, код идентификации
должности и код регистрации претендента. Запись состоит из следующих полей:
- идентификационный код подбора;
- идентификационный код должности;
- регистрационный код претендента;
78
- идентификационный код вакансии.
Методы решения
Модуль «Подбор кандидатов» запускается выбором пункта меню
«Подбор | Кандидатов на собеседование» (рисунок №18).
Рисунок №18. Форма модуля «Подбор кандидатов»
На основании идентификационного кода предприятия для
осуществления подбора выбираются следующие данные, соответствующие
перечню вакансий данного предприятия:
- возраст,
- образование,
- перечень профессий.
Подбор кандидатов на собеседование осуществляется перебором
вакансий, соответствующих выбранному предприятию, и перебором всех
соискателей. Для каждой комбинации выполняется сравнение ограничений,
накладываемых на будущего сотрудника, например, возраст, образование, с
индивидуальными данными претендента, например, дата рождения,
79
образование, перечень профессий, при совпадении условий подбора в
результирующую таблицу «Rezult» добавляется запись, содержащая код
идентификации подбора, код идентификации должности, код регистрации
претендента и код идентификации вакансии.
Подбор кандидатов на собеседование выполняется по выбору пункта
меню «Подбор». Ниже приведен программный код реализации функции подбора
кандидатов. Если подходящих кандидатов не будет найдено, выдается
сообщение «Нет кандидатов на собеседование».
procedure TfrRez.N11Click(Sender: TObject);
begin
KolVar:=0;
Kod:=dm.tbOtborKod.AsInteger;
while dm.tbRez.FindFirst do
dm.tbRez.Delete;
dm.tbVakans.Filter:='KodP='+dm.tbOtborKodP.AsString;
if dm.tbVakans.FindFirst then
begin
while not(dm.tbVakans.Eof) do
begin
Kod1:=dm.tbVakansKodV.AsInteger;
Kod3:=dm.tbVakansKodDolg.AsInteger;
dm.ProfDolg.Filter:='KodDolg='+dm.tbVakansKodDolg.AsString;
B1:=dm.ProfDolg.FindFirst;
B3:=not B1;
dm.tbPers.First;
while not(dm.tbPers.Eof) do
begin
80
Kod2:=dm.tbPersKodPers.AsInteger;
if B1 then
begin
dm.tbProfPers.Filter:='KodPers='+IntToStr(Kod2);
B2:=dm.tbProfPers.FindFirst;
if B2 then
begin
dm.tbProfPers.First;
while not(dm.tbProfPers.Eof or B3) do
begin
while not(dm.ProfDolg.Eof or B3) do
begin
B3:=(dm.ProfDolgKodProf.AsInteger=
dm.tbProfPersKodProf.AsInteger);
dm.ProfDolg.Next;
end;
dm.tbProfPers.Next;
end;
end;
end;
if B3 then
begin
dm.tbRez.InsertRecord([Kod,Kod3,Kod2,Kod1]);
Inc(KolVar);
end;
dm.tbPers.Next;
81
end;
dm.tbVakans.Next;
end;
end;
if KolVar=0 then
ShowMessage('Нет кандидатов на собеседование')
else
begin
if dm.tbOtborDate.AsDateTime<(Date+10) then
begin
dm.tbOtbor.Edit;
dm.tbOtborDate.Value:=Date+10;
dm.tbOtbor.Post;
end;
end;
end;
После осуществления подбора на экран в зависимости от результата
выдаются полные сведения о подобранных кандидатах на собеседование,
которые содержат следующую информацию:
- наименование предприятия и дата собеседования;
- перечень вакансий, каждая запись перечня содержит следующую
информацию:
- должность;
- количество вакансий;
- количество претендентов;
- ограничение по возрасту;
- ограничение по образованию;
82
- перечень претендентов, каждая запись перечня содержит
следующую информацию:
- фамилию, имя, отчество, возраст претендента;
- образование;
- перечень профессий, каждая запись перечня содержит
следующую информацию:
- наименование профессии;
- наименование учебного заведения, которое закончил, чтобы
получить данную профессию.
При необходимости данную информацию можно распечатать.
Работа модуля завершается нажатием кнопки «Выход» или средствами
Windows для закрытия окна, например Alt+F4.
2.4 Контрольный пример реализации проекта и его описание
Для анализа работоспособности программы была применена следующая
программа тестирования. Тесты разработаны по стратегии черного ящик
методом эквивалентных разбиений: для каждого значения определяются классы
эквивалентности один правильный и несколько не правильных. Например, для
количества вакансий будут определены следующие классы эквивалентности:
правильный – целое число, не правильные: не число, действительное число,
отсутствие значения.
Тест №1. Исходные данные: Модуль «Предприятия»; код записи
формируется СУБД в виде автоинкремента; определяем два класса
эквивалентности: неправильный – нет наименования предприятия, правильный –
есть наименование предприятия.
В качестве наименования предприятия в поле «Наименование» (рисунок
№19) ввести значение «», затем нажать кнопку «Сохранить».
Результат: Запись «Предприятия» сохраняется. Результат не правильный.
83
Рисунок №19. Редактирование записи «Предприятия»
Для исправления ошибки необходимо добавить следующий
программный код по событиям AfterPos и BeforePost
procedure Tdm.tbFirmaAfterPost(DataSet: TDataSet);
begin
if dm.tbFirmaName.AsString='' then
dm.tbFirma.delete;
end;
procedure Tdm.tbFirmaBeforePost(DataSet: TDataSet);
begin
if dm.tbFirmaName.AsString='' then
if dm.tbFirma.State in [dsEdit] then
dm.tbFirmaName.Value:=old_zn;
end;
procedure Tdm.tbFirmaAfterEdit(DataSet: TDataSet);
begin
old_zn:=dm.tbFirmaName.AsString;
84
end;
Повторный тест. В качестве наименования предприятия в поле
«Наименование» (рисунок №19) ввести значение «», затем нажать кнопку
«Сохранить».
Результат: Запись «Предприятия» не сохраняется. Результат правильный.
Тест №2. Модуль «Список должностей»; код записи формируется СУБД
в виде автоинкремента; определяем два класса эквивалентности: неправильный –
нет наименования должности, правильный – есть наименование должности.
В качестве наименования должности в поле «Наименование» (рисунок
№20) ввести значение «», затем нажать кнопку «Сохранить».
Рисунок №20. Добавление записи «Должности»
Результат: Выдается сообщение об ошибке (рисунок №21). Запись
«Должности» не сохраняется. Результат не правильный.
85
Рисунок №21. Сообщение об ошибке при добавлении записи
«Должности»
Анализ сообщения об ошибке говорит о том, что к ошибке приводит
следующая функция, связывающая должности с профессиями:
procedure TfrRang.DBEdit1Change(Sender: TObject);
begin
if frRang.Showing then
dm.ProfDolg.Filter:='KodDolg='+dm.tbDolgKodDolg.AsString;
end;
Исправленный программный код будет выглядеть следующим образом:
procedure TfrRang.DBEdit1Change(Sender: TObject);
begin
if frRang.Showing then
if dm.tbDolgKodDolg.AsString='' then
dm.ProfDolg.Filter:=''
else
dm.ProfDolg.Filter:='KodDolg='+dm.tbDolgKodDolg.AsString;
end;
Так же для предотвращения ввода «пустых» значений используется
следующий программный код:
procedure Tdm.tbDolgAfterEdit(DataSet: TDataSet);
begin
old_zn:=dm.tbDolgName.AsString;
end;
procedure Tdm.tbDolgBeforePost(DataSet: TDataSet);
begin
86
if dm.tbDolgName.AsString='' then
if dm.tbDolg.State in [dsEdit] then
dm.tbDolgName.Value:=old_zn;
end;
procedure Tdm.tbDolgAfterPost(DataSet: TDataSet);
begin
if dm.tbDolgName.AsString='' then
dm.tbDolg.delete;
end;
Повторный тест. В качестве наименования должности в поле
«Наименование» (рисунок №20) ввести значение «», затем нажать кнопку
«Сохранить».
Результат: Запись «Должности» не сохраняется. Результат правильный.
Тест №3. Исходные данные: Модуль «Список профессий»; код записи
формируется СУБД в виде автоинкремента; определяем два класса
эквивалентности: неправильный – нет наименования профессии, правильный –
есть наименование профессии.
В качестве наименования профессии в поле «Наименование» (рисунок
№22) ввести значение «», затем нажать кнопку «Сохранить».
Результат: Запись «Профессия» не сохраняется. Результат правильный.
Рисунок №22. Редактирование записи «Профессия»

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

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