Реферат: Разработка информационно-справочной системы "Водительское удостоверение" Prolog

CODE=12050

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

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

             *                        *

             *   Федорова  Вадима    *

             *                        *

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

*/

domains

        z,i,n,n1,n,no,dat,datv=integer

        gor,fio,se,j=symbol

database-svod1

          svod1(n,j,dat,gor,se,no,datv)

database-lolo

          lolo(n,fio,dat,gor,j,no,datv)

database-kuku

          kuku(n,fio,dat,gor,se,i,datv)

database-svod

         svod(n,fio,dat,gor,se,no,datv)

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

            consult(«mak.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(«Введите город рождения:»),readln(Y),nl,

           write(«Введите серию удостоверения:»),readln(T),nl,

           write(«Введите номер удостоверения:»),readint(V),nl,

           write(«Введите дату выдачи(число, месяц, год):»),readint(A),nl,

            N1=K,FIO1=O,DAT1=I,GOR1=Y,SE1=T,NO1=V,DATV1=A,

           assertz(svod(N1,FIO1,DAT1,GOR1,SE1,NO1,DATV1)),

            removewindow,

            fail.

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

        process(8):-

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

         nl,

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

         svod(N,FIO,DAT,GOR,SE,NO,DATV),

         A=N,

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

         write(«Фамилия, имя, отчествовладельца:»),write(FIO),nl,

        write(«Число, месяц, год рождения:»),write(DAT),nl,

         write("Городрождения:"),write(GOR),nl,

         write(«Серию удостоверения:»),write(SE),nl,

        write(«Номер удостоверения:»),write(NO),nl,

        write(«Датувыдачи(число, месяц, год):»),write(DATV),nl,nl,nl,nl,nl,

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

        readchar(_),

        removewindow,

         !.

         process(8):-

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

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

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

     readint(A),nl,

             A=N1,

           write(«Введите фамилию, имя и отчество владельца:»),readln(F),nl,

           write(«Введите число, месяц и год рождения:»),readint(Y),nl,

           write(«Введите город рождения:»),readln(J),nl,

           write(«Введите серию удостоверения:»),readln(G),nl,

            write(«Введите номерудостоверения:»),readint(E),nl,

           write(«Введите дату выдачи(число, месяц, год):»),readint(Z),nl,

         FIO1=F,DAT1=Y,GOR1=J,SE1=G,NO1=E,DATV1=Z,

        assertz(svod(N1,FIO1,DAT1,GOR1,SE1,NO1,DATV1)),

         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:ФедoровВ.         "),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,FIO,DAT,GOR,SE,NO,DATV),

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

            write(«Фамилия, имя, отчествовладельца:»),write(FIO),nl,

           write(«Число, месяц, год рождения:»),write(DAT),nl,

            write("Городрождения:"),write(GOR),nl,

            write(«Сериюудостоверения:»),write(SE),nl,

           write(«Номер удостоверения:»),write(NO),nl,

           write(«Дату выдачи(число, месяц, год):»),write(DATV),nl,nl,nl,nl,nl,

            nl,

           write(«Введите фамилию, имя и отчество владельца:»),readln(FIO1),nl,

           write(«Введите число, месяц и год рождения:»),readint(DAT1),nl,

           write(«Введите город рождения:»),readln(GOR1),nl,

            write(«Введите сериюудостоверения:»),readln(SE1),nl,

           write(«Введите номер удостоверения:»),readint(NO1),nl,

           write(«Введите датувыдачи(число, месяц, год):»),readint(DATV1),nl,

            X1=X,

            retract(svod(X,FIO,DAT,GOR,SE,NO,DATV)),

           assert(svod(X1,FIO1,DAT1,GOR1,SE1,NO1,DATV1)),

            !,

           removewindow.

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

        process(2):-

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

            nl,

            select(N),

            X=N,

            svod(X,FIO,DAT,GOR,SE,NO,DATV),

           retract(svod(X,FIO,DAT,GOR,SE,NO,DATV)),!,

            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,FIO,DAT,GOR,SE,NO,DATV),

            cursor(Z,_),

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

            cursor(Z,7),write(FIO),

            cursor(Z,25),write(DAT),

            cursor(Z,41),write(GOR),

            cursor(Z,49),write(SE),

            cursor(Z,55),write(NO),

            cursor(Z,61),write(DATV),

            cursor(Z,76),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 — База будет загружена из файла mak.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 — База будет записана в файл mak.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,FIO,DAT,GOR,SE,NO,DATV),

            S=FIO,

            S=X,

           N1=N,DAT1=DAT,GOR1=GOR,SE1=SE,NO1=NO,DATV1=DATV,

           assert(svod1(N1,S,DAT1,GOR1,SE1,NO1,DATV1)),

            fail.

        procedure(1):-

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

            write("____________________________________________________________________________!"),

           write("                       ВОДИТЕЛЬСКОЕ  УДОСТОВЕРЕНИЕ                          "),

            nl,

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

            nl,

           write("! номер!    ФамилияИ.О. !  Дата, место рождения  !    !     ! Дата выдачи   !"),

            nl,

           write("!     !                 ! число, месяц, год! город! серия! номер! число, месяц, год!"),

            nl,

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

            nl,

            svod(N,S,DAT,GOR,SE,NO,DATV),

            cursor(Z,_),

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

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

            cursor(Z,25),write(DAT),

            cursor(Z,41),write(GOR),

            cursor(Z,49),write(SE),

            cursor(Z,55),write(NO),

            cursor(Z,61),write(DATV),

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

            nl,

            fail.

        procedure(1):-

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

            save(«nov.dat»,svod1),

            nl,

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

           readln(X),

            svod(N,FIO,DAT,GOR,SE,NO,DATV),

            S=SE,

            S=X,

           N1=N,FIO1=FIO,DAT1=DAT,GOR1=GOR,NO1=NO,DATV1=DATV,

           assert(lolo(N1,FIO1,DAT1,GOR1,S,NO1,DATV1)),

            fail.

        procedure(2):-

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

            write("____________________________________________________________________________!"),

           write("                       ВОДИТЕЛЬСКОЕ  УДОСТОВЕРЕНИЕ                          "),

            nl,

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

            nl,

           write("! номер!    ФамилияИ.О. !  Дата, место рождения  !    !     ! Дата выдачи   !"),

            nl,

           write("!     !                 ! число, месяц, год! город! серия! номер! число, месяц, год!"),

            nl,

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

            nl,

            svod(N,FIO,DAT,GOR,S,NO,DATV),

            cursor(Z,_),

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

            cursor(Z,7),write(FIO),

            cursor(Z,25),write(DAT),

            cursor(Z,41),write(GOR),

            cursor(Z,49),write(S),

            cursor(Z,55),write(NO),

            cursor(Z,61),write(DATV),

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

            nl,

            fail.

        procedure(2):-

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

            save(«nov1.dat»,lolo),

            nl,

           write(«База сохранена в файле nov1.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,FIO,DAT,GOR,SE,NO,DATV),

            S=NO,

            S=X,

           N1=N,FIO1=FIO,DAT1=DAT,GOR1=GOR,SE1=SE,DATV1=DATV,

           assert(kuku(N1,FIO1,DAT1,GOR1,SE1,S,DATV1)),

            fail.

        procedure(3):-

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

            write("____________________________________________________________________________!"),

           write("                       ВОДИТЕЛЬСКОЕ  УДОСТОВЕРЕНИЕ                          "),

            nl,

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

            nl,

           write("! номер!    ФамилияИ.О. !  Дата, место рождения  !    !     ! Дата выдачи   !"),

            nl,

           write("!     !                 ! число, месяц, год! город! серия! номер! число, месяц, год!"),

            nl,

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

            nl,

            svod(N,FIO,DAT,GOR,SE,S,DATV),

            cursor(Z,_),

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

            cursor(Z,7),write(FIO),

            cursor(Z,25),write(DAT),

            cursor(Z,41),write(GOR),

            cursor(Z,49),write(SE),

            cursor(Z,55),write(S),

            cursor(Z,61),write(DATV),

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

            nl,

            fail.

        procedure(3):-

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

            save(«nov2.dat»,kuku),

            nl,

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

            consult(«mak.dat»),

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

            beep,

            !.

        lod(2):-

           write(«Файла mak.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(“Введите город рождения:»),

        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(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.

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