domains
FIOABONENTA,TELEPHONE,GODUSTANOVKI,CHISLOABONENTA,PLATAZATELEPHONE=STRING
N=char
S=integer
S1=integer
sp = symbol*
database - ap
ap(string,string,string,string,string)
predicates
inputdate
vivod1(sp,sp,sp,sp)
vivod2(sp,sp,sp,sp)
vivod3(sp,sp,sp,sp)
vivod4(sp,sp,sp,sp)
vivod5(sp,sp,sp,sp)
pfioabonenta(symbol)
ptelephone(symbol)
pgodustanovki(symbol)
pchisloabonentov(symbol)
platazatelephone(symbol)
punktmenu(N)
repeat
clauses
repeat.
repeat:-repeat.
inputdate:-clearwindow,
write("\n FIO ABONENTA: "), readln(FIOABONENTA),
write("\n TELEPHONE: "), readln(TELEPHONE),
write("\n GOD USTANOVKI: "), readln(GODUSTANOVKI),
write("\n CHISLO ABONENTA: "), readln(CHISLOABONENTA),
write("\n PLATA ZA TELEPHONE: "), readln(PLATAZATELEPHONE),
asserta(ap(FIOABONENTA,TELEPHONE,GODUSTANOVKI,CHISLOABONENTA,PLATAZATELEPHONE)),
save("bdap.dat"),
clearwindow.
%Poisk po FIOABONENTA
pfioabonenta(FIOABONENTA) :-
findall(TELEPHONE, ap(FIOABONENTA,TELEPHONE,_,_,_), TELEPHONE_sp ),
findall(GODUSTANOVKI, ap(FIOABONENTA,_,GODUSTANOVKI,_,_), GODUSTANOVKI_sp ),
findall(CHISLOABONENTA, ap(FIOABONENTA,_,_,CHISLOABONENTA,_), CHISLOABONENTA_sp ),
findall(PLATAZATELEPHONE, ap(FIOABONENTA,_,_,_,PLATAZATELEPHONE), PLATAZATELEPHONE_sp ),
vivod1(TELEPHONE_sp,GODUSTANOVKI_sp,CHISLOABONENTA_sp,PLATAZATELEPHONE_sp),!.
pfioabonenta(_) :-nl,write("NET TAKOGO ABONENTA"),!.
vivod1([],[],[],[]):-!.
vivod1([H|T],[R|Y],[L|P],[K|M]) :-
write("TELEPHONE: "),write(H,"\n"),
write("GOD USTANOVKI: "),write(R,"\n"),
write("CHISLO ABONENTA: "),write(L,"\n"),
write("PLATA ZA TELEPHONE: "),write(K,"\n"),
vivod1(T,Y,P,M),!.
%Poisk po TELEPHONE
ptelephone(TELEPHONE) :-
findall(FIOABONENTA, ap(FIOABONENTA,TELEPHONE,_,_,_), FIOABONENTA_sp1 ),
findall(GODUSTANOVKI, ap(_,TELEPHONE,GODUSTANOVKI,_,_), GODUSTANOVKI_sp1 ),
findall(CHISLOABONENTA, ap(_,TELEPHONE,_,CHISLOABONENTA,_), CHISLOABONENTA_sp1 ),
findall(PLATAZATELEPHONE, ap(_,TELEPHONE,_,_,PLATAZATELEPHONE), PLATAZATELEPHONE_sp1 ),
vivod2(FIOABONENTA_sp1,GODUSTANOVKI_sp1,CHISLOABONENTA_sp1,PLATAZATELEPHONE_sp1).
vivod2([],[],[],[]):- !.
vivod2([H|T],[R|Y],[L|P],[K|M]):-
write("FIO ABONENTA: "),write(H,"\n"),
write("GOD USTANOVKI: "),write(R,"\n"),
write("CHISLO ABONENTA: "),write(L,"\n"),
write("PLATA ZA TELEPHONE: "),write(K,"\n"),
vivod2(T,Y,P,M).
%Poisk po GODUSTANOVKI
pgodustanovki(GODUSTANOVKI) :-
findall(FIOABONENTA, ap(FIOABONENTA,_,GODUSTANOVKI,_,_), FIOABONENTA_sp2 ),
findall(TELEPHONE, ap(_,TELEPHONE,GODUSTANOVKI,_,_), TELEPHONE_sp2 ),
findall(CHISLOABONENTA, ap(_,_,GODUSTANOVKI,CHISLOABONENTA,_), CHISLOABONENTA_sp2 ),
findall(PLATAZATELEPHONE, ap(_,_,GODUSTANOVKI,_,PLATAZATELEPHONE), PLATAZATELEPHONE_sp2 ),
vivod3(FIOABONENTA_sp2,TELEPHONE_sp2,CHISLOABONENTA_sp2,PLATAZATELEPHONE_sp2).
vivod3([],[],[],[]):- !.
vivod3([H|T],[R|Y],[L|P],[K|M]):-
write("FIO ABONENTA: "),write(H,"\n"),
write("TELEPHONE: "),write(R,"\n"),
write("CHISLO ABONENTA: "),write(L,"\n"),
write("PLATA ZA TELEPHONE: "),write(K,"\n"),
vivod3(T,Y,P,M).
%Poisk po PLATAZATELEPHONE
platazatelephone(PLATAZATELEPHONE) :-
findall(FIOABONENTA, ap(FIOABONENTA,_,_,_,PLATAZATELEPHONE), FIOABONENTA_sp3 ),
findall(TELEPHONE, ap(_,TELEPHONE,_,_,PLATAZATELEPHONE), TELEPHONE_sp3 ),
findall(GODUSTANOVKI, ap(_,_,GODUSTANOVKI,_,PLATAZATELEPHONE), GODUSTANOVKI_sp3 ),
findall(CHISLOABONENTA, ap(_,_,_,CHISLOABONENTA,PLATAZATELEPHONE), CHISLOABONENTA_sp3 ),
vivod4(FIOABONENTA_sp3,TELEPHONE_sp3,GODUSTANOVKI_sp3,CHISLOABONENTA_sp3).
vivod4([],[],[],[]):- !.
vivod4([H|T],[R|Y],[L|P],[K|M]):-
write("FIO ABONENTA: "),write(H,"\n"),
write("TELEPHONE: "),write(R,"\n"),
write("GOD USTANOVKI: "),write(L,"\n"),
write("CHISLO ABONENTA: "),write(K,"\n"),
vivod4(T,Y,P,M).
%Poisk po CHISLO ABONENTA
pchisloabonentov(CHISLOABONENTA) :-
findall(FIOABONENTA, ap(FIOABONENTA,_,_,CHISLOABONENTA,_), FIOABONENTA_sp4 ),
findall(TELEPHONE, ap(_,TELEPHONE,_,CHISLOABONENTA,_), TELEPHONE_sp4 ),
findall(GODUSTANOVKI, ap(_,_,GODUSTANOVKI,CHISLOABONENTA,_), GODUSTANOVKI_sp4 ),
findall(PLATAZATELEPHONE, ap(_,_,_,CHISLOABONENTA,PLATAZATELEPHONE), PLATAZATELEPHONE_sp4 ),
vivod5(FIOABONENTA_sp4,TELEPHONE_sp4,GODUSTANOVKI_sp4,PLATAZATELEPHONE_sp4 ).
vivod5([],[],[],[]):- !.
vivod5([H|T],[R|Y],[L|P],[K|M]):-
write("FIO ABONENTA: "),write(H,"\n"),
write("TELEPHONE: "),write(R,"\n"),
write("GOD USTANOVKI: "),write(L,"\n"),
write("PLATA ZA TELEPHONE: "),write(K,"\n"),
vivod5(T,Y,P,M).
punktmenu(N):- N='1', inputdate,!.
punktmenu(N):- N='2', clearwindow,
makewindow(1,3,0,"Poisk po FIOABONENTA",0,0,25,80,0,0," "),
write("Enter FIO ABONENTA: "), readln(FIOABONENTA), pfioabonenta(FIOABONENTA),
write("\n Press probel"),
readchar(_), clearwindow,!.
punktmenu(N):- N='3',clearwindow,
makewindow(1,3,0,"Poisk po TELEPHONE",0,0,25,80,0,0," "),
write("Enter TELEPHONE: "), readln(TELEPHONE), ptelephone(TELEPHONE),
write("\n Press probel"),
readchar(_), clearwindow,!.
punktmenu(N):- N='4',clearwindow,
makewindow(1,3,0,"Poisk po GODUSTANOVKI",0,0,25,80,0,0," "),
write("Enter GOD USTANOVKI: "), readln(GODUSTANOVKI), pgodustanovki(GODUSTANOVKI),
write("\n Press probel"),
readchar(_), clearwindow,!.
punktmenu(N):- N='5',clearwindow,
makewindow(1,3,0,"Poisk po CHISLO ABONENTA",0,0,25,80,0,0," "),
write("Enter CHISLO ABONENTA: "), readln(CHISLOABONENTA), pchisloabonentov(CHISLOABONENTA),
write("\n Press probel"),
readchar(_), clearwindow,!.
punktmenu(N):- N='6',clearwindow,
makewindow(1,3,0,"Poisk po PLATAZATELEPHONE",0,0,25,80,0,0," "),
write("Enter PLATAZATELEPHONE: "), readln(PLATAZATELEPHONE), platazatelephone(PLATAZATELEPHONE),
write("\n Press probel"),
readchar(_), clearwindow,!.
punktmenu(_):-!.
goal
repeat,
makewindow(1,3,8,"",0,0,25,80),
clearwindow,
repeat,
write(" \n"),
write(" BD ABONENTPLATA ZA TELEPHONE! \n"),
write(" 1 Entering data about the abonents \n"),
write(" 2 Search by FIO ABONENTA \n"),
write(" 3 Search by TELEPHONE \n"),
write(" 4 Search by GOD USTANOVKI \n"),
write(" 5 Search by CHISLO ABONENTA \n"),
write(" 6 Search by PLATA ZA TELEPHONE \n"),
write(" 7 OUT "),
readchar(N),
clearwindow,
punktmenu(N),N<>'1',N<>'2',N<>'3',N<>'4',N<>'5',N<>'6',N='7'.