Система "Посредник"
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
те цену за единицу товара : "),readreal(Price1),
write(" Введите сроки поставки : "),readInt(Srok1),nl,
X1=X,
retract(покупатель(X,Firm,Tov,Proizv,Part,Price,Srok)),
assertz(покупатель(X1,Firm1,Tov1,Proizv1,Part1,Price1,Srok1)),
ins_sup(Proizv1),
!,
assert(flag(1)),
removewindow.
correct(3):-
makewindow(9,26,48,"Добавление данных о поставщиках",0,0,25,80),
repeat,
nl,
write(" Введите порядковый номер поставщика : "),readint(K),nl,
write(" Введите название фирмы : "),readln(F),
write(" Введите название товара : "),readln(T),
write(" Введите производителя : "),readln(P),
write(" Введите минимальную партию : "),readInt(M),
write(" Введите колличество на складе : "),readInt(Kl),
write(" Введите цену за единицу товара : "),readreal(Pr),
write(" Введите сроки поставки : "),readInt(S),nl,
N1=K,
Firm=F,Tov=T,Proizv=P,
Min=M,Kol=Kl,
Price=Pr,Srok=S,
assertz(поставщик(N1,Firm,Tov,Proizv,Min,Kol,Price,Srok)),
ins_sup(Proizv),
ask,!,
assert(flag(1)),
removewindow.
correct(4):-
makewindow(9,26,48,"Добавление данных о покупателях",0,0,25,80),
repeat,
nl,
write(" Введите порядковый номер покупателя : "),readint(K),nl,
write(" Введите название фирмы : "),readln(F),
write(" Введите название товара : "),readln(T),
write(" Введите производителя : "),readln(P),
write(" Введите необходимую партию : "),readInt(M),
write(" Введите цену за единицу товара : "),readreal(Pr),
write(" Введите сроки поставки : "),readInt(S),nl,
N1=K,
Firm=F,Tov=T,Proizv=P,
Part=M,
Price=Pr,Srok=S,
assertz(покупатель(N1,Firm,Tov,Proizv,Part,Price,Srok)),
ins_sup(Proizv),
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=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,
write("|=================================================================|"),nl,
contract(N,N1),
поставщик(N1,Firm1,Tov1,Proizv1,Min1,Kol1,Price1,Srok1),
cursor(Z,_),
cursor(Z,1),write(N1),
cursor(Z,3),write("",Firm1),
cursor(Z,16),write("",Tov1),
cursor(Z,36),write("",Proizv1),
cursor(Z,50),write("",Min1),
cursor(Z,59),write("",Kol1),
cursor(Z,68),write("",Price1),
cursor(Z,73),write("",Srok1),
cursor(Z,0),write(""),
cursor(Z,76),write(""),
nl,
?/p>