Скачайте в формате документа WORD

Разработка информационно-справочной системы "Сводка погоды"

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 < 10,

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<4,

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<4,

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<5,

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.