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

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.

еще рефераты
Еще работы по программированию, базе данных