Инженерия знаний. Создание системы "Посредник", заключающей договоры на поставку стройматериалов — страница 10

  • Просмотров 4289
  • Скачиваний 398
  • Размер файла 113
    Кб

ask,!, assert(flag(1)), removewindow. correct(_). /* Вспомагательные процедуры удаления данных */ del(1):- makewindow(5,48,107,"Удаление данных о поставщках",0,0,25,80), nl, write(" Введите порядковый номер поставщика : "),readint(X),nl, поставщик(X,Firm,Tov,Proizv,Min,Kol,Price,Srok), retract(поставщик(X,Firm,Tov,Proizv,Min,Kol,Price,Srok)), assert(flag(1)), ok, !, removewindow. del(1):- error, removewindow,!. del(2):- makewindow(5,48,107,"Удаление данных о покупателях",0,0,25,80), nl, write(" Введите порядковый номер покупателя : "),readint(X),nl,

покупатель(X,Firm,Tov,Proizv,Part,Price,Srok), retract(покупатель(X,Firm,Tov,Proizv,Part,Price,Srok)), assert(flag(1)), ok, !, removewindow. del(2):- error, removewindow,!. del(3):- makewindow(5,48,107,"Удаление из классифицирующей сети",0,0,25,80), nl, write(" Введите удаляемого производителя/регеон : "),readln(S),nl, del_sup(S), assert(flag(1)), ok, !, removewindow. del(3):- error, removewindow,!. del(_). /* Процедура запроса на окончание ввода в correct(3) и correct(3) */ ask:- makewindow(10,43,120,"Вопрос",6,18,8,40),nl,nl, write(" Продолжить процесс ввода данных? "),nl,nl,

write(" [Д]а/[Н]ет"), readchar(Ch), removewindow, clearwindow, Ch='Н',!. /* Вывод запроса о сохранении изменённых баз данных */ save_bd:- makewindow(17,74,79,"Сохранение изменений",6,18,8,40),nl, write(" Сохранить произведённые "),nl, write(" изменения на диске?"),nl,nl, write(" [Д]а/[Н]ет"), sound(20,494), sound(30,392), readchar(Ch), removewindow, clearwindow, Ch='Д',!,sve. save_bd. /* Сохранение данных на диске */ sve:-save("kurs1.dat",поставщик), save("kurs2.dat",покупатель), save("web.dat",sup),!. sve:-io_error,removewindow. /* Процедуры

вывода сообщений об ошибках */ error:- makewindow(15,74,79,"ОШИБКА",6,18,8,40), cursor(2,16), write("ОШИБКА"),nl,nl, write(" Нажмите на любую клавишу"), sound(70,294), readchar(_), removewindow, !. io_error:- makewindow(16,74,79,"ОШИБКА",6,18,8,40), cursor(2,7), write("Ошибка ввода/вывода"),nl,nl, write(" Нажмите на любую клавишу"), sound(70,294), readchar(_), removewindow. /* Процедура вывода сообщения об успешном завершении данной операции */ ok:- makewindow(17,27,90,"ОК",6,18,8,40), cursor(2,7), write(" ОПЕРАЦИЯ

ВЫПОЛНЕНА"),nl,nl, write(" Нажмите на любую клавишу"), readchar(_), removewindow. /* Процедура repeat */ repeat. repeat:- repeat. /* Процедура обнаружения связей по классифицирующей сети */ cmp_name(Proizv,Proizv). cmp_name(Proizv,Proizv1):- find_web(Proizv,Proizv1). find_web(X,Y):-sup(X,Y). find_web(X,Y):-sup(X,Z),find_web(Z,Y). /* Процедура обнаружения всех возможных контрактов */ all_contract:- покупатель(N,_,Tov,Proizv,Part,Price,Srok), поставщик(N1,_,Tov,Proizv1,Min1,Kol1,Price1,Srok1), cmp_name(Proizv,Proizv1), Part>=Min1,Part<=Kol1,Price>=Price1,Srok>=Srok1, assertz(contract(N,N1)),

assert(best(N,0,0,0)), assert(best2(N,0,0,1000)), fail. all_contract:-print_contract. /* Процедуры вывода на экран всех возможных контрактов */ print_contract:- makewindow(16,31,26,"Все возможные контракты",0,0,25,80), nl,nl, покупатель(N,Firm,_,_,_,_,_), checkcontr(N), prn(N,Firm), fail. print_contract:- retractall(_,contract), removewindow. prn(N,Firm):- cursor(1,1), write("Для фирмы: ",Firm), nl, write("|=================================================================|"),nl, write("| | | | | Мин . | | | |"),nl, write("|No| Фирма | Товар |Производитель| партия | Кол-во |Цена|Д|"),nl,