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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.