Реферат: Разработка информационно-справочной системы "Овощная база" Prolog

CODE=12050

/*          **************************

             *   КУРСОВАЯ  РАБОТА    *

             *                        *

             *   Котова Владимира     *

             *                        *

             **************************            

*/            

            

            

domains

      z,i,n,n1,kol,tkol,tel,faks=integer

      prod,adr,j=symbol

database-svod1

          svod1(n,j,kol,tkol,adr,tel,faks)

database-lolo

          lolo(n,prod,kol,i,adr,tel,faks)         

database-kuku

          kuku(n,prod,kol,tkol,j,i,i)

database-svod

             svod(n,prod,kol,tkol,adr,tel,faks)

      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,"ОВОЩНАЯБАЗА",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(«kot.dat»),

         consult(«kot.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(K),nl,

          write(«Введите наименованиетовара  :»),readln(O),nl,

          write(«Введите количество на складе:»),readint(I),nl,

          write(«Введите требуемое количество:»),readint(Y),nl,

          write(«Введите адрес получателя     :»),readln(T),nl,

          write(«Введите телефон получателя   :»),readint(V),nl,

          write(«Введите факс получателя      :»),readint(A),nl,

          N1=K,PROD1=O,KOL1=I,TKOL1=Y,ADR1=T,TEL1=V,FAKS1=A,

         assertz(svod(N1,PROD1,KOL1,TKOL1,ADR1,TEL1,FAKS1)),

          removewindow,

          fail.

/*Процедура просмотра-добавления*/

        process(8):-

        makewindow(1,2,7,«Просмотр-добавление»,0,0,25,80),

         nl,

        write(«Введите номер записи:»),readint(A),nl,nl,

         svod(N,PROD,KOL,TKOL,ADR,TEL,FAKS),

         A=N,

         write("Номерзаписи        :"),write(A),nl,

         write(«Наименованиетовара  :»),write(PROD),nl,

        write(«Количество на складе :»),write(KOL),nl,

        write(«Требуемое количество :»),write(TKOL),nl,

        write(«Адрес получателя    :»),write(ADR),nl,

        write(«Телефон получателя  :»),write(TEL),nl,

        write(«Факс получателя     :»),nl,nl,nl,nl,nl,

        write(«Нажмите на любую клавишу»),

        readchar(_),

        removewindow,

         !.

        process(8):-

        write(«Этого номера записи нет в базе.»),

        write(«Повторите введенный номер записи и продолжайте вводданных»),nl,nl,nl,

         write("Введитеномер:"),

         readint(A),nl,

         A=N1,

        write(«Введите наименование товара  :»),readln(F),nl,

        write(«Введите количество на складе :»),readint(Y),nl,

        write(«Введите требуемое количество :»),readint(J),nl,

        write(«Введите адрес получателя     :»),readln(G),nl,

        write(«Введите телефон получателя   :»),readint(E),nl,

        write(«Введите факс получателя      :»),readint(Z),nl,

         PROD1=F,KOL1=Y,TKOL1=J,ADR1=G,TEL1=E,FAKS1=Z,

        assertz(svod(N1,PROD1,KOL1,TKOL1,ADR1,TEL1,FAKS1)),

         removewindow,

         fail.        

        

/*Пpоцедуpа вывода данных о пpогpамме*/

        process(0):-

        makewindow(1,2,7,«О пpогpамме...»,0,0,25,80),

        write("                    Инфоpмационно-спpавочная система"),nl,nl,

        write("                          об овощной базе          "),nl,nl,

         write("                        Язык-TURBO-PROLOG v.2.0.     "),nl,nl,

         write("                            автоp:КотовВ.В.         "),nl,nl,

         write("                      МИРЭА, гp.ИТ-1-94  (с) 1995 г. "),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,PROD,KOL,TKOL,ADR,TEL,FAKS),

            write("Номерзаписи              :"),write(N),nl,

          write(«Наименованиетовара        :»),write(PROD),nl,

          write(«Количество товара наскладе:»),write(KOL),nl,

          write(«Требуемое количество       :»),write(TKOL),nl,

          write(«Адрес получателя           :»),write(ADR),nl,

          write(«Телефон получателя         :»),write(TEL),nl,

          write(«Факс получателя            :»),write(FAKS),nl,

          nl,        

          write(«Введите наименованиетовара  :»),readln(PROD1),

          write(«Введите количество на складе:»),readint(KOL1),

          write(«Введите требуемое количество:»),readint(TKOL1),

          write(«Введите адрес получателя     :»),readln(ADR1),

          write(«Введите телефон получателя   :»),readint(TEL1),

          write(«Введите факс получателя      :»),readint(FAKS1), 

          X1=X,

         retract(svod(X,PROD,KOL,TKOL,ADR,TEL,FAKS)),

         assert(svod(X1,PROD1,KOL1,TKOL1,ADR1,TEL1,FAKS1)),

          !,

          removewindow.

         

         

/*Процедура удаления записей из базы данных*/     

      process(2):-

         makewindow(1,2,7,"Удалениезаписей",0,0,25,80),

         nl,

         select(N),

         X=N,

         svod(X,PROD,KOL,TKOL,ADR,TEL,FAKS),

         retract(svod(X,PROD,KOL,TKOL,ADR,TEL,FAKS)),!,

          removewindow.

          

/*Процедура просмотра содержимого базы данных*/     

      process(3):-

      makewindow(1,2,7,"Просмотp базы",0,0,25,80),

      nl,

         write("____________________________________________________________________________!"),

         write("                       ОВОЩНАЯБАЗА                                             "),

         nl,            

          write("----------------------------------------------------------------------------!"),

          nl,

          write("! номер! название! колна! треб  !          получатель                          !"),

          nl,

          write("!     ! тавара! складе! кол-во!          адрес         ! телефон   !   факс !"),

          nl,

         write("-----------------------------------------------------------------------------"),

          nl,

            svod(N,PROD,KOL,TKOL,ADR,TEL,FAKS),

         cursor(Z,_),

         cursor(Z,0),write(N),

         cursor(Z,7),write(PROD),

         cursor(Z,18),write(KOL),

         cursor(Z,23),write(TKOL),

         cursor(Z,33),write(ADR),

         cursor(Z,55),write(TEL),

         cursor(Z,67),write(FAKS),

         cursor(Z,77),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 — База будет загружена из файла kot.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 — База будет записана в файл kot.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(«Введите наименование товара:»),

            readln(X),

            svod(N,PROD,KOL,TKOL,ADR,TEL,FAKS),

            S=PROD,

            S=X,

           N1=N,KOL1=KOL,TKOL1=TKOL,ADR1=ADR,TEL1=TEL,FAKS1=FAKS,

           assert(svod1(N1,S,KOL1,TKOL1,ADR,TEL,FAKS)),

            fail.

           

        procedure(1):-       

            write("Базасоздана"),nl,

          write("----------------------------------------------------------------------------!"),

          nl,

          write("! номер! название! колна! треб  !          получатель                          !"),

          nl,

          write("!     ! тавара! складе! кол-во!          адрес         ! телефон   !   факс !"),

          nl,

         write("-----------------------------------------------------------------------------"),

          nl,

            svod(N,S,KOL,TKOL,ADR,TEL,FAKS),

         N1=N,

         cursor(Z,_),

         cursor(Z,0),write(N1),

         cursor(Z,7),write(S),

         cursor(Z,18),write(KOL),

         cursor(Z,23),write(TKOL),

         cursor(Z,33),write(ADR),

         cursor(Z,55),write(TEL),

         cursor(Z,67),write(FAKS),

         cursor(Z,77),write("!"),

         nl,

         fail.

         

      procedure(1):-

         write("-----------------------------------------------------------------------------"),

         save(«now.dat»,svod1),

          nl,

          write(«База сохранена в файлеnow.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,

           write(«Введите начальное значение требуемого количества:»),

            readint(X),

            svod(N,PROD,KOL,TKOL,ADR,TEL,FAKS),

            S=TKOL,

            S>=X,

           N1=N,PROD1=PROD,KOL1=KOL,ADR1=ADR,TEL1=TEL,FAKS1=FAKS,

            assert(lolo(N1,PROD1,KOL1,S,ADR1,TEL1,FAKS1)),

            fail.

           

        procedure(2):-

            write("Базасоздана"),nl,

            write("-----------------------------------------------------------------------------"),

          nl,

          write("! номер! название! колна! треб  !          получатель                          !"),

          nl,

          write("!     ! тавара! складе! кол-во!          адрес         ! телефон   !   факс !"),

          nl,

         write("-----------------------------------------------------------------------------"),

          nl,

          lolo(N,PROD,KOL,S,ADR,TEL,FAKS),

          N1=N,

          cursor(Z,_),

          cursor(Z,0),write(N1),

          cursor(Z,7),write(PROD),

          cursor(Z,18),write(KOL),

          cursor(Z,23),write(S),

          cursor(Z,33),write(ADR),

          cursor(Z,55),write(TEL),

          cursor(Z,67),write(FAKS),

          cursor(Z,77),write("!"),

          nl,

          fail.

         

      procedure(2):-

         write("-----------------------------------------------------------------------------"),

          save(«now1.dat»,lolo),

          nl,

          write(«База сохранена в файлеnow1.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(«Введите данные получателя:»),

           readln(X),

           readint(Y),

           readint(Z),

           svod(N,PROD,KOL,TKOL,ADR,TEL,FAKS),

            S=ADR,

            D=TEL,

            C=FAKS,

            S=X,

            D=Y,

            C=Z,

           N1=N,PROD1=PROD,KOL1=KOL,TKOL1=TKOL,

           assert(kuku(N1,PROD1,KOL1,TKOL1,S,D,C)),

            fail.

       procedure(3):-

           write(«База создана»),nl,

           write("----------------------------------------------------------------------------!"),

          nl,

          write("! номер! название! колна! треб  !          получатель                          !"),

          nl,

          write("!     ! тавара! складе! кол-во!          адрес         ! телефон   !   факс !"),

          nl,

         write("-----------------------------------------------------------------------------"),

          nl,

          kuku(N,PROD,KOL,TKOL,S,D,C),

          N1=N,

          cursor(Z,_),

          cursor(Z,0),write(N1),

          cursor(Z,7),write(PROD),

          cursor(Z,18),write(KOL),

          cursor(Z,23),write(TKOL),

          cursor(Z,33),write(S),

          cursor(Z,55),write(D),

          cursor(Z,67),write(C),

          cursor(Z,77),write("!"),

          nl,

          fail.

         

      procedure(3):-

         write("-----------------------------------------------------------------------------"),

          save(«now2.dat»,svod1),

          nl,

          write(«База сохранена в файлеnow2.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(«kot.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(«kot.dat»),

           consult(«kot.dat»),

           write(«Все в порядке»),

            beep,

            !.

           

        lod(2):-

           write(«Файла kot.dat нет на диске»),nl,

           write(«нажмите любую клавишу»),

           readchar(_).

            

        lod(3).

                   

      repeat.

      repeat:-repeat.

     

/*Выбор записи*/

      select(N):-

      nl,

      write(«1- известен номер записи»),nl,

      write(«2- известно наименование товара»),nl,

      write(«3- известно количество на складе»),nl,

      write(«4 — известно требуемое количество»),nl,

      write(«5- известен адрес получателя»),nl,

      write(«6- известен телефон получателя»),nl,

      write(«7- известен факс получателя»),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(«Введите наименование предприятия:»),

        readln(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(«Введите объем продукции (млн.руб):»),

        readln(W),

       svod(Z,_,_,_,W,_,_),

        N=Z.

       

        sel(5,N):-

        N=0.

       

        sel(6,N):-

        nl,

       write(«Введите занимаемую площадь:»),

        readint(E),

       svod(Z,_,_,_,_,E,_),

        N=Z.

       

        sel(6,N):-

        N=0.

       

        sel(7,N):-

        nl,

       write(«Введите факс получателя:»),

        readint(A),

       svod(Z,_,_,_,_,_,A),

        N=Z.

       

        sel(7,N):-

        N=0.

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