domains Name,Socket=string Pcie,Sata,Usb,Ddr2,Ddr3,Price=integer key,y,z,A,B,C,D,E,F,G=integer database -db1 motheboard(Name,Socket,Pcie,Sata,Usb,Ddr2,Ddr3,Price) Predicates rpt menu saves(integer) clearb %===================================== key_menu1(key,y) key_menu2(key,y) key_menu41(key,y,A,B,C,D,E,F) key_menu42(key,y,A,B,C,D,E,F,G) key_menu10(key,y) key_menu11(key,y,A) key_menu12(key,y,A,B) key_menu13(key,y,A,B,C) key_menu14(key,y,A,B,C,D) key_menu15(key,y,A,B,C,D,E) key_menu16(key,y,A,B,C,D,E,F) key_menu17(key,y,A,B,C,D,E,F,G) %===================================== go1(integer) go2(integer) go3(integer,integer) go4(integer,integer,integer) go5(integer,integer,integer,integer) go6(integer,integer,integer,integer,integer) go7(integer,integer,integer,integer,integer,integer) go8(integer,integer,integer,integer,integer,integer,integer) go999(integer,integer,integer,integer,integer,integer,integer,integer) %===================================== find1(integer) find2(integer,integer) find3(integer,integer,integer) find4(integer,integer,integer,integer) find5(integer,integer,integer,integer,integer) find6(integer,integer,integer,integer,integer,integer) find7(integer,integer,integer,integer,integer,integer,integer) find8(integer,integer,integer,integer,integer,integer,integer,integer) %===================================== see seeFind(string,string,integer,integer,integer,integer,integer,integer,integer,integer) del(string,string,integer,integer,integer,integer,integer) % seePoisk(integer,integer,integer,integer,integer,integer,integer) clauses rpt. rpt:-!,rpt. saves(1):- save("1.txt",db1),clearb. saves(0):- save("1.txt",db1),clearb,consult("1.txt",db1). clearb:-retract(motheboard(_,_,_,_,_,_,_,_)),fail;true. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% key_menu1(0,Y) :- inkey(Key), key_menu1(Key,Y). key_menu1(72,Y) :- field_attr(Y,0,16,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(4,0). key_menu1(80,Y) :- field_attr(Y,0,16,7), Y<4,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu1(13,Y) :-go1(Y). %----------------------------------------------------- key_menu2(0,Y) :- inkey(Key), key_menu2(Key,Y). key_menu2(72,Y) :- field_attr(Y,0,23,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(2,0). key_menu2(80,Y) :- field_attr(Y,0,23,7), Y<2,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu2(13,Y) :-removewindow,go2(Y). %----------------------------------------------------- key_menu41(0,Y,A,B,C,D,E,F) :- inkey(Key), key_menu41(Key,Y,A,B,C,D,E,F). key_menu41(72,Y,A,B,C,D,E,F) :- field_attr(Y,0,23,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(2,0). key_menu41(80,Y,A,B,C,D,E,F) :- field_attr(Y,0,23,7), Y<2,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu41(13,Y,A,B,C,D,E,F) :-removewindow, go8(A,B,C,D,E,F,Y). %----------------------------------------------------- key_menu42(0,Y,A,B,C,D,E,F,G) :- inkey(Key), key_menu42(Key,Y,A,B,C,D,E,F,G). key_menu42(72,Y,A,B,C,D,E,F,G) :- field_attr(Y,0,23,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(2,0). key_menu42(80,Y,A,B,C,D,E,F,G) :- field_attr(Y,0,23,7), Y<2,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu42(13,Y,A,B,C,D,E,F,G) :-removewindow, go999(A,B,C,D,E,F,G,Y). %----------------------------------------------------- key_menu10(0,Y) :- inkey(Key),key_menu10(Key,Y). key_menu10(72,Y) :- field_attr(Y,0,23,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(2,0). key_menu10(80,Y) :- field_attr(Y,0,23,7), Y<2,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu10(13,Y) :-removewindow,find1(Y). %----------------------------------------------------- key_menu11(0,Y,A) :- inkey(Key),key_menu11(Key,Y,A). key_menu11(72,Y,A) :- field_attr(Y,0,23,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(2,0). key_menu11(80,Y,A) :- field_attr(Y,0,23,7), Y<2,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu11(13,Y,A) :-removewindow,find2(A,Y). %----------------------------------------------------- key_menu12(0,Y,A,B) :- inkey(Key),key_menu12(Key,Y,A,B). key_menu12(72,Y,A,B) :- field_attr(Y,0,23,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(2,0). key_menu12(80,Y,A,B) :- field_attr(Y,0,23,7), Y<2,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu12(13,Y,A,B) :-removewindow,find3(A,B,Y). %----------------------------------------------------- key_menu13(0,Y,A,B,C) :- inkey(Key),key_menu13(Key,Y,A,B,C). key_menu13(72,Y,A,B,C) :- field_attr(Y,0,23,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(4,0). key_menu13(80,Y,A,B,C) :- field_attr(Y,0,23,7), Y<4,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu13(13,Y,A,B,C) :-removewindow,find4(A,B,C,Y). %----------------------------------------------------- key_menu14(0,Y,A,B,C,D) :- inkey(Key),key_menu14(Key,Y,A,B,C,D). key_menu14(72,Y,A,B,C,D) :- field_attr(Y,0,23,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(3,0). key_menu14(80,Y,A,B,C,D) :- field_attr(Y,0,23,7), Y<3,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu14(13,Y,A,B,C,D) :-removewindow,find5(A,B,C,D,Y). %----------------------------------------------------- key_menu15(0,Y,A,B,C,D,E) :- inkey(Key),key_menu15(Key,Y,A,B,C,D,E). key_menu15(72,Y,A,B,C,D,E) :- field_attr(Y,0,23,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(4,0). key_menu15(80,Y,A,B,C,D,E) :- field_attr(Y,0,23,7), Y<4,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu15(13,Y,A,B,C,D,E) :-removewindow,find6(A,B,C,D,E,Y). %----------------------------------------------------- key_menu16(0,Y,A,B,C,D,E,F) :- inkey(Key),key_menu16(Key,Y,A,B,C,D,E,F). key_menu16(72,Y,A,B,C,D,E,F) :- field_attr(Y,0,23,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(4,0). key_menu16(80,Y,A,B,C,D,E,F) :- field_attr(Y,0,23,7), Y<4,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu16(13,Y,A,B,C,D,E,F) :-removewindow,find7(A,B,C,D,E,F,Y). %----------------------------------------------------- key_menu17(0,Y,A,B,C,D,E,F,G) :- inkey(Key),key_menu17(Key,Y,A,B,C,D,E,F,G). key_menu17(72,Y,A,B,C,D,E,F,G) :- field_attr(Y,0,23,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(3,0). key_menu17(80,Y,A,B,C,D,E,F,G) :- field_attr(Y,0,23,7), Y<3,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu17(13,Y,A,B,C,D,E,F,G) :-removewindow,find8(A,B,C,D,E,F,G,Y). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% go1(0):-cursorform(2,2),rpt,makewindow(2,7,7,"Company",0,5,17,25), write("ASRock"),nl, write("ASUS"),nl, write("Gigabyte"), cursor(0,0), rpt, cursor(Y,_), field_attr(Y,0,23,112), inkey(Key),key_menu2(Key,Y), fail. go1(1):-makewindow(10,7,7,"Delete from base",0,5,20,30), write("Vvedite Company: "), readln(A),nl, write("Vvedite Socket: "), readln(B),nl, write("Vvedite Pci_e: "), readint(C),nl, write("Vvedite Sata: "), readint(D),nl, write("Vvedite Usb: "), readint(E),nl, write("Vvedite DDR-2: "), readint(F),nl, write("Vvedite DDR-3: "), readint(G),nl, removewindow, del(A,B,C,D,E,F,G). go1(2):-makewindow(6,7,7,"Company",0,5,17,25), beeP, write("ASRock"),nl, write("ASUS"),nl, write("Gigabyte"), cursor(0,0), rpt, cursor(Y,_), field_attr(Y,0,23,112), inkey(Key),key_menu10(Key,Y), fail. go1(3):-see(). go1(4):-saves(1),exit. %----------------------------------------------------- go2(A):-makewindow(3,7,7,"Kolichestvo Pci-E",0,5,17,25), write("Pci-e: "),readint(X),removewindow, go3(A,X). %----------------------------------------------------- go3(A,B):-makewindow(4,7,7,"Kolichestvo Sata",0,5,17,25), write("Sata: "),readint(X),removewindow, go4(A,B,X). %----------------------------------------------------- go4(A,B,C):-makewindow(5,7,7,"Kolichestvo Usb",0,5,17,25), write("Usb: "),readint(X),removewindow, go5(A,B,C,X). %----------------------------------------------------- go5(A,B,C,D):-makewindow(6,7,7,"Kolichestvo DDR-2",0,5,17,25), write("DDR-2: "),readint(X),removewindow, go6(A,B,C,D,X). %----------------------------------------------------- go6(A,B,C,D,E):-makewindow(7,7,7,"Kolichestvo DDR-3",0,5,17,25), write("DDR-3: "),readint(X),removewindow, go7(A,B,C,D,E,X). %----------------------------------------------------- go7(A,B,C,D,E,F):-makewindow(8,7,7,"Company",0,5,17,25), write("ASRock"),nl, write("ASUS"),nl, write("Gigabyte"),nl, cursor(0,0), rpt, cursor(Y,_), field_attr(Y,0,23,112), inkey(Key),key_menu41(Key,Y,A,B,C,D,E,F), fail. %----------------------------------------------------- go8(A,B,C,D,E,F,G):-makewindow(9,7,7,"Socket",0,5,17,25), write("AM3"),nl, write("AM2"),nl, write("775"),nl, cursor(0,0), rpt, cursor(Y,_), field_attr(Y,0,23,112), inkey(Key),key_menu42(Key,Y,A,B,C,D,E,F,G), fail. %----------------------------------------------------- go999(A,B,C,D,E,F,G,Y):- Y=0,G=0,assert(motheboard("ASRock","AM3",A,B,C,D,E,F)),saves(0),menu; Y=0,G=1,assert(motheboard("ASUS","AM3",A,B,C,D,E,F)),saves(0),menu; Y=0,G=2,assert(motheboard("Gigabyte","AM3",A,B,C,D,E,F)),saves(0),menu; Y=1,G=0,assert(motheboard("ASRock","AM2",A,B,C,D,E,F)),saves(0),menu; Y=1,G=1,assert(motheboard("ASUS","AM2",A,B,C,D,E,F)),saves(0),menu; Y=1,G=2,assert(motheboard("Gigabyte","AM2",A,B,C,D,E,F)),saves(0),menu; Y=2,G=0,assert(motheboard("ASRock","775",A,B,C,D,E,F)),saves(0),menu; Y=2,G=1,assert(motheboard("ASUS","775",A,B,C,D,E,F)),saves(0),menu; Y=2,G=2,assert(motheboard("Gigabyte","775",A,B,C,D,E,F)),saves(0),menu. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% find1(A):-makewindow(1,7,7,"Socket",0,5,17,25), clearwindow, write("AM3"),nl, write("AM2"),nl, write("775"),nl, cursor(0,0), rpt, cursor(Y,_), field_attr(Y,0,23,112), inkey(Key),key_menu11(Key,Y,A), fail. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% find2(A,B):-makewindow(1,7,7,"PCI-E",0,5,17,25), clearwindow, write("0"),nl, write("1"),nl, write("2"),nl, cursor(0,0), rpt, cursor(Y,_), field_attr(Y,0,23,112), inkey(Key),key_menu12(Key,Y,A,B), fail. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% find3(A,B,C):-makewindow(1,7,7,"SATA",0,5,17,25), clearwindow, write("0"),nl, write("1"),nl, write("2"),nl, write("3"),nl, write("4"),nl, cursor(0,0), rpt, cursor(Y,_), field_attr(Y,0,23,112), inkey(Key),key_menu13(Key,Y,A,B,C), fail. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% find4(A,B,C,D):-makewindow(1,7,7,"USB",0,5,17,25), clearwindow, write("0"),nl, write("1"),nl, write("2"),nl, write("3"),nl, cursor(0,0), rpt, cursor(Y,_), field_attr(Y,0,23,112), inkey(Key),key_menu14(Key,Y,A,B,C,D), fail. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% find5(A,B,C,D,E):-makewindow(1,7,7,"DDR-2",0,5,17,25), clearwindow, write("0"),nl, write("1"),nl, write("2"),nl, write("3"),nl, write("4"),nl, cursor(0,0), rpt, cursor(Y,_), field_attr(Y,0,23,112), inkey(Key),key_menu15(Key,Y,A,B,C,D,E), fail. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% find6(A,B,C,D,E,F):-makewindow(1,7,7,"DDR-3",0,5,17,25), clearwindow, write("0"),nl, write("1"),nl, write("2"),nl, write("3"),nl, write("4"),nl, cursor(0,0), rpt, cursor(Y,_), field_attr(Y,0,23,112), inkey(Key),key_menu16(Key,Y,A,B,C,D,E,F), fail. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% find7(A,B,C,D,E,F,G):-makewindow(1,7,7,"Price",0,5,17,25), clearwindow, write("1k..1,5k"),nl, write("1,5k..2k"),nl, write("2k..2,5k"),nl, write("2,5k..3k"),nl, cursor(0,0), rpt, cursor(Y,_), field_attr(Y,0,23,112), inkey(Key),key_menu17(Key,Y,A,B,C,D,E,F,G), fail. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% find8(A,B,C,D,E,F,G,H):- A=0,COM="ASRock"; A=1,COM="ASUS"; A=2,COM="Gigabyte"; B=0,SOCK="AM3"; B=1,SOCK="AM2"; B=2,SOCK="775"; H=0,M=1000,N=1500; H=1,M=1500,N=2000; H=2,M=2000,N=2500; H=3,M=2500,N=3000; seeFind(COM,SOCK,C,D,E,F,G,H,M,N). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% menu :- makewindow(1,7,7,"Motheboards",0,0,8,18), clearwindow, write("Add to base"),nl, write("Del from dase"),nl, write("Find in base"),nl, write("See base"),nl, cursor(0,0), rpt, cursor(Y,_), field_attr(Y,0,16,112), inkey(Key),key_menu1(Key,Y), fail. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% see():-makewindow(10,100,1,"All base",0,10,25,80), write("Company|Socket|Pcie|Sata|Usb|Ddr2|Ddr3|Price\n"), write("--------------------------------------------\n"), motheboard(A,B,C,D,E,F,G,H), writef("%7|%5|%3|%3|%2|%3|%3|%4",A,B,C,D,E,F,G,H),nl,fail;true, readln(HHH),removewindow,menu. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% seeFind(A,B,C,D,E,F,G,H,M,N):-makewindow(10,100,1,"Find results",0,10,25,80), write("Company|Socket|Pcie|Sata|Usb|Ddr2|Ddr3|Price\n"), write("--------------------------------------------\n"), motheboard(A,B,C,D,E,F,G,H), H>M,H