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

Сдавался/использовался1997г.
Загрузить архив:
Файл: 240-0562.zip (6kb [zip], Скачиваний: 67) скачать

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.