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

Загрузить архив:
Файл: 240-0564.zip (6kb [zip], Скачиваний: 170) скачать

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.