Реферат: Разработка информационно-справочной системы "Картотека ГАИ" Prolog

CODE=9003

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

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

             *                        *

             *  Коломенской Ольги    *

             *                        *

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

*/

domains

        z,nz,n,n1,chp,i=integer

        fio,ma,ru,k=symbol

database-svod1

          svod1(n,k,nz,ma,ru,chp)

database-lolo

          lolo(n,fio,i,ma,ru,chp)

database-kuku

          kuku(n,fio,nz,k,ru,chp)

database

         svod(n,fio,nz,ma,ru,chp)

        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("                     =>"),

            readint(Choice),

            Choice >= 0,

            Choice < 9,

           clearwindow,

            process(Choice),

            clearwindow,

            Choice = 8,

            retractall(_),

           removewindow.

/*Процедура поиска и загрузки файла содержащего базуданных*/

        load:-

            existfile(«olia.dat»),

            consult(«olia.dat»),

            cursor(1,2),

            write("Базазагружена").

        load:-

            cursor(1,2),

           write(«Нет базы на диске»).

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

       process(6):-

        makewindow(1,2,7,«Вводновых данных»,0,0,25,80),

            nl,

           write(«Введите порядковый номер     :»),readint(K),nl,

           write(«Введите Фамилию.И.О.         :»),readln(F),nl,

           write(«Введите номерной знак        :»),readint(G),nl,

           write(«Введите марку автомобиля     :»),readln(Y),nl,

           write(«Введите район учета          :»),readln(T),nl,

           write(«Введите число автотранспортных»),nl,

            write("              происшествий   :"),readint(P),nl,

           N1=K,FIO1=F,NZ1=G,MA1=Y,RU1=T,CHP1=P,

           assertz(svod(N1,FIO1,NZ1,MA1,RU1,CHP1)),

            removewindow,

            fail.

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

        process(7):-

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

         nl,

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

         svod(N,FIO,NZ,MA,RU,CHP),

         A=N,

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

         write("Фамилия.И.О.          :"),write(FIO),nl,

         write("Номернойзнак         :"),write(NZ),nl,

         write("Маркаавтомобиля     :"),write(MA),nl,

         write("Районучета           :"),write(RU),nl,

         write("Числоавтотранспортных"),nl,

         write("        происшествий :"),write(CHP),nl,nl,nl,

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

        readchar(_),

        removewindow,

         !.

        process(7):-

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

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

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

         readint(A),nl,

         A=N1,

        write(«Введите Фамилию.И.О.         :»),readln(F),nl,

        write(«Введите номерной знак        :»),readint(Y),nl,

        write(«Введите марку автомабиля     :»),readln(J),nl,

         write(«Введите район учета           :»),readln(G),nl,

        write(«Введите число автотранспортных»),nl,

         write("                  происшествий:"),readint(K),nl,

         FIO1=F,NZ1=Y,MA1=J,RU1=G,CHP1=K,

         assertz(svod(N1,FIO1,NZ1,MA1,RU1,CHP1)),

         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-95  (с) 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,FIO,NZ,MA,RU,CHP),

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

            write("Фамилия.И.О.          :"),write(FIO),nl,

            write("Номернойзнак         :"),write(NZ),nl,

            write("Маркаавтомабиля     :"),write(MA),nl,

            write("Районучета           :"),write(RU),nl,

            write("Числоавтотранспортных"),nl,

            write("          происшествий:"),write(CHP),nl,

            nl,

           write(«Введите Фамилию.И.О.         :»),readln(FIO1),nl,

           write(«Введите номерной знак        :»),readint(NZ1),nl,

           write(«Введите марку автомабиля     :»),readln(MA1),nl,

           write(«Введите район учета          :»),readln(RU1),nl,

            write(«Введите числоавтотранспортных»),nl,

            write("                  происшествий:"),readint(CHP1),nl,

            X1=X,

            retract(svod(X,FIO,NZ,MA,RU,CHP)),

           assert(svod(X1,FIO1,NZ1,MA1,RU1,CHP1)),

            !,

           removewindow.

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

        process(2):-

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

        nl,

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

write("                КАРТОТЕКАГАИ                                      "),nl,

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

write("! поряд.! фамилия     ! номерной !  марка !  район  ! число авто !"),nl,

write("! номер! И.О.владельца! знак     ! а.машины!  учета ! происшествий!"),nl,

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

          

           svod(N,FIO,NZ,MA,RU,CHP),

            cursor(Z,_),

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

            cursor(Z,9),write(FIO),

            cursor(Z,24),write(NZ),

            cursor(Z,35),write(MA),

            cursor(Z,45),write(RU),

            cursor(Z,55),write(CHP),

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

            nl,

            fail.

        process(2):-

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

nl,

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

          readchar(_),

           removewindow.

/*Процедура загрузки в память базы данных*/

       process(3):-

            nl,

           makewindow(2,15,4,«Загрузка»,5,5,20,70),

           write(«1 — База будет загружена из указанного файла»),nl,

           write(«2 — База будет загружена из файла olia.dat»),nl,

           write(«3 — Выход в основное меню»),nl,

            write("==>"),

            readint(C),

            C>0,C<4,

            lod(C),

            !,

           removewindow.

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

       process(4):-

            nl,

           makewindow(2,15,4,«Запись»,5,5,20,70),

           write(«1 — База будет записана в указанный файл»),nl,

           write(«2 — База будет записана в файл olia.dat»),nl,

           write(«3 — Выход в основное меню»),nl,

            write("==>"),

            readint(I),

            I>0,I<4,

            sve(I),!,

           removewindow.

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

        process(5):-

            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,FIO,NZ,MA,RU,CHP),

            S=FIO,

            S=X,

            N1=N,NZ1=NZ,MA1=MA,RU1=RU,CHP1=CHP,

           assert(svod1(N1,S,NZ1,MA1,RU1,CHP1)),

            fail.

        procedure(1):-

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

write("                       КАРТОТЕКАГАИ                               "),nl,

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

write("! поряд.!    Фамилия    ! номерной!  марка !  район  ! число авто.!"),nl,

write("! номер! И.О. владельца !  знак  !а.машины!  учета  ! происшествий!"),nl,

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

      svod1(N1,S,NZ1,MA1,RU1,CHP1),

     

      cursor(Z,_),

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

      cursor(Z,9),write(S),

      cursor(Z,24),write(NZ1),

      cursor(Z,35),write(MA1),

      cursor(Z,45),write(RU1),

      cursor(Z,55),write(CHP1),

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

      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,

write(«Введите номерной знак а.машины:»),

            readint(X),

            svod(N,FIO,NZ,MA,RU,CHP),

            S=NZ,

            S=X,

           N1=N,FIO1=FIO,MA1=MA,RU1=RU,CHP1=CHP,

           assert(lolo(N1,FIO1,S,MA1,RU1,CHP1)),

            fail.

        procedure(2):-

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

write("                         КАРТОТЕКАГАИ                            "),nl,

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

write("! поряд.! Фамилия        ! номерной! марка   ! район  ! число авто.!"),nl,

write("! номер! И.О. владельца! знак   ! атомобиля! учета   ! происшествий!"),nl,

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

      lolo(N1,FIO1,S,MA1,RU1,CHP1),

     

      cursor(Z,_),

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

      cursor(Z,9),write(FIO1),

      cursor(Z,24),write(S),

      cursor(Z,35),write(MA1),

      cursor(Z,45),write(RU1),

      cursor(Z,55),write(CHP1),

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

      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(«Введите марку автомобиля:»),

            readln(X),

            svod(N,FIO,NZ,MA,RU,CHP),

            S=MA,

            S=X,

            N1=N,FIO1=FIO,NZ1=NZ,RU1=RU,CHP1=CHP,

           assert(kuku(N1,FIO1,NZ1,S,RU1,CHP1)),

            fail.

        procedure(3):-

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

write("                        КАРТОТЕКАГАИ                             "),nl,

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

write("! поряд.! Фамилия        ! намерной! марка    ! район ! число авто.!"),nl,

write("! номер! И.О. владельца! знак   ! автомобиля! учета  ! происшествий!"),nl,

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

      kuku(N1,FIO1,NZ1,S,RU1,CHP1),

     

      cursor(Z,_),

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

      cursor(Z,9),write(FIO1),

      cursor(Z,24),write(NZ1),

      cursor(Z,35),write(S),

      cursor(Z,45),write(RU1),

      cursor(Z,55),write(CHP1),

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

      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(«olia.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(«olia.dat»),

            consult(«olia.dat»),

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

            beep,

            !.

        lod(2):-

           write(«Файла olia.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("==>"),

        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(“Введите марку автомабиля:»),

        readln(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(C),

      svod(Z,_,_,_,_,C),

      N=Z.

     

      sel(6,N):-

      N=0.

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