Создание экспертной системы продукционного типа для предметной области «Подбор кадров», страница 2

write(Name_of_position,": "," Age: ",Age_of_person_min," - ",Age_of_person_max,", Education: ",Education,", Major: ",Major,", Experience: ",Experience2,", Timetable: ",Timetable,", Quality: ",Quality,", Salary: ",Salary),nl.

   choice('5'):- /*пункт меню: "Показать всех претендентов"*/

write("People:\n"),

person(Education,University,Faculty,Major,Experience1,Timetable,Age,Gender,Main_personal_quality,Last_name,Name,Second_name),

write(Last_name," ",Name," ",Second_name,": ",Age," years old",", Education:",Education),nl.

   choice('6'):- /*пункт меню: "Принятые на работу"*/

write("Recruiters:\n"),

hireddb(Last_name,Name,Second_name,Name_of_position),

write(Last_name,"",Name,"",Second_name,":",Name_of_position),nl.

   choice('7'):-      /*пункт меню: "Найти должность для человека"*/

 write("What is person's last name?\n"),

readln(Last_name),

write("What is person's name?\n"),

readln(Name),

 write("What is person's second name?\n"),

readln(Second_name),

person(Education,University,Faculty,Major,Experience1,Timetable,Age,Gender,Main_personal_quality,Last_name,Name,Second_name),preferred_position(Name_of_position,Salary),

write("Preferred position is ",Name_of_position," with salary ",Salary),nl,

fail.

choice('8'):- /*пункт меню: "Найти претендентов на должность"*/

write("Put position, please?\n"),

readln(Name_of_position),

position(Name_of_position,Age_of_person_min,Age_of_person_max,Education,Major,Experience2,Timetable,Quality,Salary),

employee(Last_name,Name,Second_name),

write("Challenger: ",Last_name," ",Name," ",Second_name),nl,

fail.

   choice('s'):-/*пункт меню: "Сохранение в файл всех баз данных"*/

save("H://personnel_department.dba",Staff),

write("Information saved successfully\n").

choice('x') :- !.

menu :-         /*предикат меню, позволяющего пользователю*/

repeat,        /*выбирать задания в интерактивном режиме*/   write("------------------------------------\n"),

write("Make your choice:\n"),

write("1 - Add information about challenger\n"),

write("2 - Add position\n"),

write("3 - Get a job\n"),

write("4 - Show all positions\n"),

write("5 - Show all challengers\n"),

write("6 - Show all recruiter\n"),

write("7 - Find positions for people\n"),

write("8 - Find challengers for position\n"),

 write("s - Save database in file\n"),

write("x - exit\n"),

readchar(Choice),

choice(Choice),

Choice='x',

!.

repeat.

repeat :- repeat./*предикат возможности продолжения диалога*/

goal

   consult("H://personnel_department.dba",Staff),

   menu.


База знаний, хранящаяся в файле «personnel_department.dba».

person("High","NSTU","Faculty of Business","Applied Economics",2,"full day",25,"male","industry","Ivanov","Ivan","Ivanovich").

person("Unfinished High","NSU","Faculty of Mechanics and Mathematics","Applied Mathematics",0,"flexible hours",20,"male","skill to communicate","Kriger","Vladimir","Victorovich").

person("Unfinished High","NSTU","Faculty of Energy","Economics",1,"flexible hours",25,"female","resistance to stress","Snegireva","Iana","Nikolaevna").

person("Middle","none","none","none",1,"full day",18,"male","creative","Loskutov","Anton","Sergeevich").

person("High","NSTU","Faculty of Applied Mathematics and Informatics","Applied Mathematics and Informatics",3,"full day",24,"male","creative","Vaganov","Michail","Dmitrievich").

person("High","Harvard University","Harvard Business School","Master of Business Administration",5,"full day",27,"female","industry","Portman","Natalie","Jack").

person("High","NSTU","Faculty of Business","Applied Informatics",5,"full day",30,"male","industry","Lobov","Micheil","Pomanovich").

person("High","NSTU","Faculty of Applied Mathematics and Informatics","Applied Mathematics and Informatics",1,"full day",22,"female","creative","Muchina","Galina","Victorovna").

person("High","NSU","Faculty of Mechanics and Mathematics","Applied Mathematics",7,"full day",32,"male","skill to communicate","Titov","Valery","Georgievich").

person("High","NSTU","Faculty of Applied Mathematics and Informatics","Applied Mathematics and Informatics",1,"full day",22,"male","creative","Orlov","Genady","Ivanovich").

position("Economist-Informatics",24,32,"High","Applied Economics",2,"full day","industry",28000).

position("Junior Developer",21,25,"High","Applied Informatics",1,"full day","resistance to stress",21000).

position("PR Manager",19,22,"Unfinished High","Applied Economics",0,"flexible hours","creative",15000).

position("IT-specialist",27,38,"High","Applied Informatics",4,"full day","industry",30000).

position("Designer of IS",27,38,"High","Applied Economocs",3,"full day","industry",30000).


Тестирование программы

1.  Меню (рисунок 1):

Рисунок 1 - Меню

2.  Пункт меню «Добавить информацию о претенденте» (рисунок 2):

Рисунок 2 – Добавление информации о человеке

3.  Пункт меню «Добавить должность (вакансию)» (рисунок 3):

Рисунок 3 – Добавление должности

4.  Пункт меню «Принять на работу» (рисунок 4):

Рисунок 4 – Принятие на работу

После выполнения операции «Принятие на работу» должность и претендент автоматически удаляются из базы данных и запись добавляется в «Нанятые».

5.  Пункт меню «Показать все вакансии» (рисунок 5):

Рисунок 5 – Все вакансии

6.  Пункт меню «Показать всех претендентов» (рисунок 6):

Рисунок 6 – Все претенденты

7.  Пункт меню «Показать всех принятых» (рисунок 7):

Рисунок 7 – Принятые на работу

8.  Пункт меню «Найти должность для человека» (рисунок 8):

Рисунок 8 – Должность для человека

9.  Пункт меню «Найти претендента для должности» (рисунок 9):

Рисунок 9 – Претендент на должность

10.  Пункт меню «Сохранить базу данных в файл» (рисунок 10):

Рисунок 10 – Сохранение базы данных в файл

11.  Пункт меню «Выход» (рисунок 11):

Рисунок 11 - Выход


Заключение

В рамках данной расчетно-графической работы была создана экспертная система, которая позволяет подбирать кадры для имеющихся вакансий. Программа предусматривает добавление новых записей в базу данных и изменение содержимого базы данных.

В ходе выполнения работы были приобретены навыки работы с языком Turbo Prolog в Visual Prolog 5.2 Personal Edition и изучена оболочка GENI.


Дерево поиска решений для программы GENI

База данных GENI.gni