logo search
Моделирование систем / Моделирование систем / Теория / Dop / АИС_Конспект

Приложение №.3. Программа «Внутренняя база данных фактов»

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

Программа:

facts

dbotdel(integer ID_OTD,string NAIM,integer ID_RUK)

facts-fsotrudniki

dbsotrudniki(integer ID_SOTR,string FAM,integer ID_OTD)

predicates

otdel(integer,string,integer) %отделы

sotrudniki(integer,string,integer) %сотрудники

process(integer) %обработка меню

assertdbotdely %инициализация фактов - отделы

assertdbsotr %инициализация фактов - сотрудники

repeat %зацикливание

menu %меню

clauses

%Зацикливание

repeat.

repeat:-repeat.

%Исходные данные

otdel(1,"Бухгалтерия",10).

otdel(2,"Сбыт",20).

sotrudniki(100,"Иванов А.И.",1).

sotrudniki(200,"Котов О.К.",1).

sotrudniki(300,"Ким И.К.",1).

sotrudniki(400,"Зверева О.С.",2).

sotrudniki(500,"Хватова М.И.",2).

%Формирование фактов

assertdbotdely:-

otdel(KOtd,N,KRuk),assertz(dbotdel(KOtd,N,KRuk)),

fail.

assertdbotdely:-!.

assertdbsotr:-

sotrudniki(KSotr,N,KOtd),

assertz(dbsotrudniki(KSotr,N,KOtd),

fsotrudniki),fail.

assertdbsotr:-!.

%вывод меню

menu:-

repeat,

write("Введите код\n1-Добавить отдел"),

write("\n2-Удаление служ\n3-Удалитьсотрудников”),

write(“\n4- Сотрудники\n5- Отделы”),

write(“\n6 – Exit\n > "),

readint(Exec),process(Exec),Exec=6,nl,!.

%Обработка команд меню

process(1):-

write("Код="),readint(K),nl,

write("Название="),readln(N),nl,

write("Код руков="),readint(KR),

assertz(dbotdel(K,N,KR)).

process(2):-

write("Фамилия="),readln(N),

retract(dbsotrudniki(_,N,_),fsotrudniki).

process(3):-

write("Введите код отдела="),

readint(KOtd),retractall(dbsotrudniki(_,_,KOtd),

fsotrudniki).

process(4):-

dbsotrudniki(KSotr,N,KOtd),

write(KSotr,"\t",N,"\t",KOtd),

nl,fail.

process(5):-

dbotdel(KOtd,N,KRuk),write(KOtd,"\t",N,"\t",KRuk),

nl,fail.

process(6):-

write("\nExit ").

goal

%целевая установка

assertdbotdely,assertdbsotr,menu.