Domains
N,i,n,y,m,d,t,v,p=integer
database-svod1
svod1(n,y,m,d,t,v,p)
database-lolo
lolo(n,y,m,d,t,v,p)
database-kuku
kuku(n,y,m,d,t,v,p)
database
svod(n,y,m,d,t,v,p)
Predicates
start
patch
load
select(i)
sel(i,i)
process(i)
procedure(i)
sve(i)
lod(i)
repeat
goal
start.
Clauses
/*Процедура создания основного меню и загрузки базыданных*/
start:-
makewindow(1,2,7,«C В О Д К А П О Г О Д Ы »,0,0,25,80),
clearwindow,
load,
patch.
/*Процедура управления основным меню*/
patch:-
repeat,
cursor(7,0),
write(" 0 — Опpогpамме... "),nl,
write(" 1- коррекция данных"),nl,
write(" 2- удаление данных"),nl,
write(" 3 — просмотрбазы"),nl,
write(" 4- загрузка базы"),nl,
write(" 5- сохранение базы"),nl,
write(" 6- создание новой базы"),nl,
write(" 7- ввод новых данных"),nl,
write(" 8- просмотр-добавление"),nl,
write(" 9- выход из программы"),nl,
write(" =>"),
readint(Choice),
Choice >= 0,
Choice
clearwindow,
process(Choice),
clearwindow,
Choice = 9,
retractall(_),
removewindow.
/*Процедура поиска и загрузки файла содержащего базуданных*/
load:-
existfile(«lesha.dat»),
consult(«lesha.dat»),
cursor(1,2),
write("Базазагружена").
load:-
cursor(1,2),
write(«Нет базы на диске»).
/*Пpоцедуpа ввода новых данных*/
process(7):-
makewindow(1,2,7,«Ввод новых данных»,0,0,25,80),
nl,
write(«Введите порядковый номер :»),readint(N),nl,
write("ВведитеГод :"),readint(Y),nl,
write("ВведитеМесяц :"),readint(M),nl,
write("ВведитеЧисло :"),readint(D),nl,
write(«ВведитеТемпературу :»),readint(T),nl,
write(«Введите Влажность :»),readint(V),nl,
write(«Введите Давление :»),readint(P),nl,
assertz(svod(N,Y,M,D,T,V,P)),
removewindow,
fail.
/*Процедура просмотра-добавления*/
process(8):-
makewindow(1,2,7,«Просмотр-добавление»,0,0,25,80),
nl,
write(«Введите номер записи:»),readint(A),nl,nl,
svod(A,Y,M,D,T,V,P),
write("Номерзаписи:"),write(A),nl,
write("Год :"),write(Y),nl,
write("Месяц :"),write(M),nl,
write("Число :"),write(D),nl,
write("Температура :"),write(T),nl,
WRITE("Влажность :"),write(V),nl,
write("Давление :"),write(P),nl,nl,nl,
write(«Нажмите на любуюклавишу»),
readchar(_),
removewindow,
!.
process(8):-
write(«Этого номера записи нет в базе.»),
write(«Повторите введенный номер записи ипродолжайте ввод данных»),nl,nl,nl,
write("Введитеномер:"),
readint(N),nl,
write("ВведитеГод :"),readint(Y),nl,
write("ВведитеМесяц :"),readint(M),nl,
write("ВведитеЧисло :"),readint(D),nl,
write(«ВведитеТемпературу :»),readint(T),nl,
write(«Введите Влажность :»),readint(V),nl,
write(«Введите Давление :»),readint(P),
assertz(svod(N,Y,M,D,T,V,P)),
removewindow,
fail.
process(0):-
makewindow(1,2,7,"Опpогpамме...",0,0,25,80),
write(" Инфоpмационно-спpавочнаясистема"),nl,nl,
write(" о пргнoзе погоды "),nl,nl,
write(" Язык-TURBO-PROLOG v.2.0. "),nl,nl,
write(" автоp:МоргунА.В. "),nl,nl,
write(" МГИРЭА, гp.ИИ-1-95 (с) 1996 г. "),nl,nl,nl,nl,
write(«Нажмите на любую клавишу»),
readchar(_),
removewindow.
/*Процедура изменения содержимого записей базы данных*/
process(1):-
makewindow(1,2,7,"Коppекцияданных",0,0,25,80),
nl,
select(N),
X=N,
svod(X,Y,M,D,T,V,P),
write("Номерзаписи :"),write(N),nl,
write("Год :"),write(Y),nl,
write("Месяц :"),write(M),nl,
write("Число :"),write(D),nl,
write("Температура :"),write(T),nl,
write("Влажность :"),write(V),nl,
write("Давление :"),write(P),nl,nl,nl,
write("ВведитеГод :"),readint(Y1),nl,
write("ВведитеМесяц :"),readint(M1),nl,
write("ВведитеЧисло :"),readint(D1),nl,
write(«ВведитеТемпературу :»),readint(T1),nl,
write(«Введите Влажность :»),readint(V1),nl,
write("ВведитеДавление :"),readint(P1),nl,
X1=X,
retract(svod(X,Y,M,D,T,V,P)),
assert(svod(X1,Y1,M1,D1,T1,V1,P1)),
!,
removewindow.
/*Процедура удаления записей из базы данных*/
process(2):-
makewindow(1,2,7,"Удалениезаписей",0,0,25,80),
nl,
select(N),
X=N,
svod(X,Y,M,D,T,V,P),
retract(svod(X,Y,M,D,T,V,P)),!,
removewindow.
/*Процедура просмотра содержимого базы данных*/
process(3):-
makewindow(1,2,7,"Просмотp базы",0,0,25,80),
nl,
write("╔════════════════════════════════════════════════════════════════════╗"),nl,
write("║ СВОДКА ПОГОДЫ ║"),nl,
write("║ ║"),nl,
write("╠═══════╦═══════════════════════╦══════════╦════════════╦════════════╣"),nl,
write("║ ║ Дата ║ Темп-ура║ Влажность ║Давление ║"),nl,
write("║ ╠═══════╦════════╦══════╬══════════╬════════════╬════════════╣"),nl,
write("║Номер║ год ║месяц ║число║ ║ ║ ║"),nl,
write("║ ║ ║ ║ ║ ║ ║ ║"),nl,
write("║ ║ ║ ║ ║ ║ ║ ║"),nl,
nl,
svod(N,Y,M,D,T,V,P),
cursor(Z,_),
cursor(Z,2),write(N),
cursor(Z,11),write(Y),
cursor(Z,20),write(M),
cursor(Z,29),write(D),
cursor(Z,36),write(T),
cursor(Z,47),write(V),
cursor(Z,60),write(P),
cursor(Z,66),write("|"),
nl,
fail.
process(3):-
write("----------------------------------------------------------------------"),
nl,
write("Нажмитеналюбуюклавишу"),
readchar(_),
removewindow.
/*Процедура загрузки в память базы данных*/
process(4):-
nl,
makewindow(2,15,4,«Загрузка»,5,5,20,70),
write(«1 — База будет загружена из указанного файла»),nl,
write(«2 — База будет загружена из файла lesha.dat»),nl,
write(«3 — Выход в основное меню»),nl,
write("==>"),
readint(C),
C>0,C
lod(C),
!,
removewindow.
/*Процедура сохранения базы данных*/
process(5):-
nl,
makewindow(2,15,4,«Запись»,5,5,20,70),
write(«1 — База будет записана в указанный файл»),nl,
write(«2 — База будет записана в файл lesha.dat»),nl,
write(«3 — Выход в основное меню»),nl,
write("==>"),
readint(I),
I>0,I
sve(I),!,
removewindow.
/*Процедура выборасоздания новой базы*/
process(6):-
nl,
makewindow(3,2,7,«Создание новой базы»,0,0,25,80),
write(«1 — База будет создана по Году»),nl,
write(«2 — База будет создана по Месяцу»),nl,
write(«3 — База будет создана по Числу»),nl,
write(«4 — Выход в основноеменю»),nl,
write("==>"),
readint(O),
O>0,O
procedure(O),
removewindow.
process(_).
/*Процедура создания новой базы данных и ее сохранения*/
procedure(1):-
makewindow(1,2,7,«Создание новой базы по Году»,0,0,25,80),
nl,
cursor(7,10),
retractall(_,svod1),
nl,
write(«Если вы хотитеузнать сводку погоды, то»),
nl,
write("ВведитеГод:"),
readint(X),
svod(N,Y,M,D,T,V,P),
S=Y,
S=X,
N1=N,M1=M,D1=D,T1=T,V1=V,P1=P,
assert(svod1(N1,Y,M1,D1,T1,V1,P1)),
fail.
procedure(1):-
write("Базасоздана"),nl,
write("╔════════════════════════════════════════════════════════════════════╗"),nl,
write("║ СВОДКА ПОГОДЫ ║"),nl,
write("║ ║"),nl,
write("╠═══════╦═══════════════════════╦══════════╦════════════╦════════════╣"),nl,
write("║ ║ Дата ║ Темп-ура║ Влажность ║Давление ║"),nl,
write("║ ╠═══════╦════════╦══════╬══════════╬════════════╬════════════╣"),nl,
write("║Номер║ год ║месяц ║число║ ║ ║ ║"),nl,
write("║ ║ ║ ║ ║ ║ ║ ║"),nl,
write("║ ║ ║ ║ ║ ║ ║ ║"),nl,
nl,
svod1(N,S,M,D,T,V,P),
cursor(Z,_),
cursor(Z,2),write(N),
cursor(Z,11),write(S),
cursor(Z,20),write(M),
cursor(Z,29),write(D),
cursor(Z,36),write(T),
cursor(Z,47),write(V),
cursor(Z,60),write(P),
nl,
fail.
procedure(1):-
write("-------------------------------------------------------------------"),
save(«not.dat»,svod1),
nl,
write(«База сохранена в файле not.dat»),
nl,
write(«Нажмите любую клавишу»),
readchar(_),
removewindow,
!.
procedure(1):-
write("-------------------------------------------------------------------"),
nl,
write(«Невозможносохранить созданную базу»),
nl,
write(«Нажмите любую клавишу»),
readchar(_),
makewindow(1,2,7,«С В О Д К А П О Г О Д Ы»,0,0,25,80).
procedure(2):-
makewindow(1,2,7,«Создание новой базы по Месяцу»,0,0,25,80),
nl,
cursor(7,10),
retractall(_,lolo),
nl,
write(«Если вы хотите узнатьсводку погоды то, введите Месяц»),nl,
readint(X),
svod(N,Y,M,D,T,V,P),
S=M,
S=X,
N1=N,Y1=Y,D1=D,T1=T,V1=V,P1=P,
assert(lolo(N1,Y,S,D,T,V,P)),
fail.
procedure(2):-
write("Базасоздана"),nl,
write("╔════════════════════════════════════════════════════════════════════╗"),nl,
write("║ СВОДКА ПОГОДЫ ║"),nl,
write("║ ║"),nl,
write("╠═══════╦═══════════════════════╦══════════╦════════════╦════════════╣"),nl,
write("║ ║ Дата ║ Темп-ура║ Влажность ║Давление ║"),nl,
write("║ ╠═══════╦════════╦══════╬══════════╬════════════╬════════════╣"),nl,
write("║Номер║ год ║месяц ║число║ ║ ║ ║"),nl,
write("║ ║ ║ ║ ║ ║ ║ ║"),nl,
write("║ ║ ║ ║ ║ ║ ║ ║"),nl,
nl,
lolo(N,Y,M,D,T,V,P),
cursor(Z,_),
cursor(Z,2),write(N),
cursor(Z,11),write(Y),
cursor(Z,20),write(M),
cursor(Z,29),write(D),
cursor(Z,36),write(T),
cursor(Z,47),write(V),
cursor(Z,60),write(P),
nl,
fail.
procedure(2):-
write("-----------------------------------------------------------------------------"),
save(«not1.dat»,lolo),
nl,
write(«База сохранена в файле not1.dat»),
nl,
write(«Нажмите любую клавишу»),
readchar(_),
removewindow,
!.
procedure(2):-
write("-------------------------------------------------------------------"),
nl,
write(«Невозможносохранить созданную базу»),
nl,
write(«Нажмите любую клавишу»),
readchar(_),
makewindow(1,2,7,«С В О Д К А П О Г О Д Ы »,0,0,25,80).
procedure(3):-
makewindow(1,2,7,«Созданиебазы данных по Числу»,0,0,25,80),
nl,
cursor(7,10),
retractall(_,kuku),
nl,
write(«Если вы хотите узнатьданные о сводке погоды, то»),
nl,
write("ВведитеЧисло:"),
readint(X),
svod(N,Y,M,D,T,V,P),
S=D,
S=X,
N1=N,Y1=Y,M1=M,T1=T,V1=V,P1=P,
assert(kuku(N1,Y1,M1,S,T1,V1,P1)),
fail.
procedure(3):-
write("Базасоздана"),nl,
write("╔════════════════════════════════════════════════════════════════════╗"),nl,
write("║ СВОДКА ПОГОДЫ ║"),nl,
write("║ ║"),nl,
write("╠═══════╦═══════════════════════╦══════════╦════════════╦════════════╣"),nl,
write("║ ║ Дата ║ Темп-ура║ Влажность ║Давление ║"),nl,
write("║ ╠═══════╦════════╦══════╬══════════╬════════════╬════════════╣"),nl,
write("║Номер║ год ║месяц ║число║ ║ ║ ║"),nl,
write("║ ║ ║ ║ ║ ║ ║ ║"),nl,
write("║ ║ ║ ║ ║ ║ ║ ║"),nl,
nl,
kuku(N,Y,M,D,T,V,P),
cursor(Z,_),
cursor(Z,2),write(N),
cursor(Z,11),write(Y),
cursor(Z,20),write(M),
cursor(Z,29),write(D),
cursor(Z,36),write(T),
cursor(Z,47),write(V),
cursor(Z,60),write(P),
nl,
fail.
procedure(3):-
write("-------------------------------------------------------------------"),
save(«not2.dat»,kuku),
nl,
write(«База сохранена в файле not.dat»),
nl,
write(«Нажмите любую клавишу»),
readchar(_),
removewindow,
!.
procedure(3):-
write("-------------------------------------------------------------------"),
nl,
write(«Невозможносохранить созданную базу»),
nl,
write(«Нажмите любую клавишу»),
readchar(_),
makewindow(1,2,7," С В О Д К А П О Г О Д Ы",0,0,25,80).
/*Процедура записи на диск*/
sve(1):-
write(«Введите имя файла :»),
readln(N),
save(N),
write(«Все в порядке»),
beep,
!.
sve(1):-
write(«Ошибка обмена, нажмите любую клавишу»),
readchar(_).
sve(2):-
save(«lesha.dat»).
sve(3).
/*Процедура чтения с диска*/
lod(1):-
retractall(_),
write("Введитеимяфайла:"),
readln(N),
existfile(N),
consult(N),
write(«Все впорядке»),
beep,
!.
lod(1):-
nl,
write(«Данного файла нет на диске»),nl,
write(«Нажмите любую клавишу»),
readchar(_).
lod(2):-
retractall(_),
existfile(«lesha.dat»),
consult(«lesha.dat»),
write("Всевпорядке"),
beep,
!.
lod(2):-
write("Файлаlesha.dat нетнадиске"),nl,
write("нажмителюбуюклавишу"),
readchar(_).
lod(3).
repeat.
repeat:- repeat.
/*Выборзаписи*/
select(N):-
nl,
write(«1 — известенHoмерзаписи»),nl,
write(«2 — известенГод»),nl,
write(«3- известен Месяц»),nl,
write(«4 — известно Число»),nl,
write(«5 — известна Температура»),nl,
write("==>"),
readint(X),
sel(X,N).
sel(1,N):-
nl,
write(«Введите номер записи :»),
readint(N),
svod(M,_,_,_,_,_,_),
M=N.
sel(1,N):-
N=0.
sel(2,N):-
nl,
write("ВведитеГод:"),
readint(L),
svod(Z,L,_,_,_,_,_),
N=Z.
sel(2,N):-
N=0.
sel(3,N):-
nl,
write("ВведитеМесяц: "),
readint(F),
svod(Z,_,F,_,_,_,_),
N=Z.
sel(3,N):-
N=0.
sel(4,N):-
nl,
write("ВведитеЧисло:"),
readint(Q),
svod(Z,_,_,Q,_,_,_),
N=Z.
sel(4,N):-
N=0.
sel(5,N):-
nl,
write(«Введите Температуру:»),
readint(W),
svod(Z,_,_,_,W,_,_),
N=Z.