Система "Посредник"

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

?редметной области. Таким образом, сигнатура формально представляет одну часть знания о предметной области, а формулы, записанные в этой сигнатуре, представляют другую часть знания.

Графическое представление сигнатуры показано на рис.4, а модельной структуры на рис.5.

Рис.4. Графическое представление сигнатуры

 

Логическая модель в Прологе представляется в виде предикатов и баз данных database. Например:

database договор

дог(Поставщик, Покупатель)

Функцию пост (поставщик) можно реализовать так

пост (N): дог(Покупатель,Поставщик), N=Поставщик.

Функцию можно представить следующим образом:

(Количество1,Количество2):Количество1<= Количество2.

 

7. Организация диалога с пользователем

При загрузке система Посредник выводит главное меню, в котором представлены все режимы работы программы. Каждый режим выбирается посредством нажатия цифровой клавиши. Система меню представлена многоуровневой иерархической структурой, т.е. у многих режимов есть свои подменю.

В программе реализованы обычные для такого типа программ режимы просмотра данных, их коррекции и удаления, наряду с обычным имеется интерактивный режим работы.

Если в базы данных были внесены какие-либо изменения, то при выходе из программы система выведет запрос о необходимости сохранения изменений, сопровождаемый звуковым сигналом.

Схема организации диалога представлена на рис.6.

 

заключение

При написании курсового проекта были использованы разнообразные модели представления знаний, изучаемые инженерией знаний. Система Посредник программно реализована на языке Пролог в среде Turbo Prolog 2.0.

 

Приложение

Текст программы “посредник”

 

/*==========================================================*/

/* Курсовой проект по дисциплине "Инженерия знаний" */

/* Система "Посредник" */

/* Автор: Данченков А.В., гр. ИИ-1-95 */

/*==========================================================*/

 

code=8850

 

domains

Фирма,Товар,Произв,Str=string

Int,N,Парт,Кол_во,Сроки=integer

Цена=real

 

/* Основные и служебные базы данных */

 

database - поставщик

поставщик(integer,Фирма,Товар,Произв,Парт,Кол_во,Цена,Сроки)

 

database - покупатель

покупатель(N,Фирма,Товар,Произв,Парт,Цена,Сроки)

 

database - sup

sup(Str,Str)

 

database - contract

contract(integer,integer)

 

 

database - best

best(integer,integer,integer,integer)

 

database - best2

best2(integer,integer,integer,integer)

 

database - flag

flag(Int)

 

predicates

start

view(Int)

autoload

working(Int)

main_menu

correct(Int)

interact(integer)

warning(integer)

form_best(integer,integer,integer,integer)

form_best2(integer)

f_b2(integer,integer,integer,integer)

fb1(integer,integer,integer,integer)

fb2(integer,integer,integer,integer)

del(Int)

del_sup(string)

ins_sup(string)

view_sup(string)

sve

save_bd

ask

error

io_error

ok

repeat

checkcontr(integer)

all_contract

print_contract

cmp_name(string,string)

find_web(Str,Str)

prn(integer,string)

 

goal

start.

 

 

 

clauses

 

 

/* Основная процедура */

 

start:-

makewindow(1,26,94,"СИСТЕМА ПОСРЕДНИК",0,0,25,80),

clearwindow,

autoload,

main_menu.

 

 

 

 

/* Процедура автоматической загрузки баз данных */

 

autoload:-

retractall(_,поставщик),

existfile("kurs1.dat"),

consult("kurs1.dat",поставщик),

retractall(_,покупатель),

existfile("kurs2.dat"),

consult("kurs2.dat",покупатель),

retractall(_,sup),

existfile("web.dat"),

consult("web.dat",sup),

cursor(21,30),

write("*Базы загружены*").

 

autoload:-

makewindow(2,74,79,"ОШИБКА",6,18,8,40),

cursor(2,10),

write("Нет базы на диске"),

sound(70,294),

removewindow,

!.

 

 

/* Главное меню */

 

main_menu:-

repeat,

cursor(7,0),

write(" 0 - О системе... "),nl,

write(" 1 - Корректировка данных"),nl,

write(" 2 - Уничтожение записей"),nl,

write(" 3 - Просмотр баз данных"),nl,

write(" 4 - Заключение договоров"),nl,

write(" 5 - Интерактивный режим"),nl,

write(" 6 - Выход из программы"),nl,

write(" =>"),

readint(C),

clearwindow,

working(C),

clearwindow,

C = 6,

retractall(_),

removewindow.

 

/* Вывод данных о создателе программы */

 

working(0):-

makewindow(3,27,30,"О системе...",0,0,25,80),

nl,nl,

write(" Инфоpмационно-спpавочная система"),

nl,nl,

write(" Посредник "),

nl,nl,nl,nl,

write(" Программа составлена в среде "),

nl,

write(" TURBO-PROLOG v.2.0."),

nl,nl,nl,

write(" автоp: Данченков А.В."),

nl,nl,

write(" МИРЭА, гp.ИИ-1-95 (С) 1997 г. "),

nl,

sound(5,220),

cursor(22,26),

write("Нажмите на любую клавишу"),

readchar(_),

removewindow,!.

 

/*Процедура вывода меню корректировки данных*/

 

working(1):-

makewindow(4,26,48,"Коppектировка данных",0,0,25,80),

sound(5,220),

repeat,

nl,

nl,

cursor(9,0),

write(" 1 - Изменение данных по поставщикам"),nl,

write(" 2 - Изменение данных по покупателям"),nl,

write(" 3 - Добавление данных по поставщикам"),nl,

write(" 4 - Добавление данных по покупателям"),nl,

write(" 5 - Выход в главное меню" ),nl,

write(" =>"),

readint(X),

clearwindow,

X>0,X<=5,

correct(X),

clearwindow,

X=5,!,

removewindow.

 

 

/* Процедура вывода меню уничтожения данных*/

 

working(2):-

makewindow(5,48,107,"Уничтожение записей",0,0,25,80),

sound(5,220),

repeat,

cursor(7,0),

write(" 1 - Удаление из базы данных поставщиков"),nl,

write(" 2 - Удаление из базы данных покупателей"),nl,

write(" 3 - Удаление из классифицирующей сети"),nl,

write(" 4 - ?/p>