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

                          Задание N П-21

            На курсовое проектирование подисциплине

             «Логическое  программирование» студенту

            Тарасову Михаилу Сергеевичу гр.ИИ-1-95.

    1. Тема:

       разработка  информационно-справочной системы.

    2. Исходные данные:

       Разработать информационно-справочнуюсистему, обеспечиваю-

       щую работу с базой данных Avtoвключающей записи вида:

 ╔═════════════════════════════════════════════════════════════════════╗

 ║                ТЕХ. ПАСПОРТ АВТОМОБИЛЯ                              ║

 ╠══╦═════════╦═════╦═════╦═════╦════════╦═══════════════════╦═════════╣

 ║N°║ МАРКА   ║ ГОД ║ N°  ║ N° ║ НОМЕРН ║   Ф. И.О.        ║ РАЙОН   ║

 ║ ║АВТОМОБИЛ║ВЫПУС║ДВИГ ║ШАССИ║ ЗНАК   ║                   ║ УЧЕТА   ║

 ╠══╬═════════╬═════╬═════╬═════╬════════╬═══════╦═════╦═════╬═════════╣

    Из базы Avto создать 2 базы Avto1 и Avto2по признакам, определяе-

мым пользователем

    Меню системы  должно включать  режимы корректировки,  уничтожения

просмотра,загрузки, сохранения.

    Язык программирования Пролог.

    3. Перечень вопросов, подлежащихразработке:

       3.1 Разработка меню, обеспечивающеевзаимодействие пользо-

           вателя с системой, в соответствии сзаданием,  предус-

           мотрев режимы:

            — корректировки данных,

            — уничтожения данных,

            — просмотра базы,

            — загрузки базы,

            — сохранения базы,

            — создания новой базы.

       3.2 Разработка процедур:

            — корректировки данных,

            — уничтожения данных,

            — просмотра базы,

            — загрузки базы,

            — сохранения базы,

            — создания новой базы.

    4. Перечень графических материалов:

       4.1 структурная схема меню

       4.2 структурная схема программы.


    5. Календарный план-график работы надкурсовой работой:

       1. Получение задания

                            4.10.96

       2. Анализ задания, постановказадачи,  подбор  и изучение

          литературы

                           с 5.10.96 по20.10.96

       3. Разработка меню и структуры программы

                            22.10.96

       4. Разработка процедуринформационно-справочной системы

                            18.11.96

       5. Отладка программы

                            29.11.96

       6. Доработка программы с учетом вновьизменившихся требований

                            20.12.96

       7. Вторичная отладка программы

                            21.12.96

       8. Оформление пояснительной записки

                            24.12.96

       9. Сдача работы на проверку

                            25.12.96

       7. Защита курсовой работы

                            27.12.96

                              Руководитель          /Холкин И.И./

                              Студент   /Тарасов М.С., ИИ-1-95/


                              2Содержание.

          Введение....................................

          1. Понятие об информационных системахи их

             программной реализации...................

          2. База данных и способы еепредставления ...

          3. Разработка системного меню...............

          4. Разработка структуры программы...........

          5. Разработка процедур:

             5.1 Основной процедуры Nachalo...........

             5.2 Вывода главного меню Mainmenu........

             5.3 Загрузки БД Zagruz...................

             5.4 Вывода информации о программе

                 Rabota (0)...........................

             5.5 Корректировки данных Rabota(1) ......

             5.6 Удаления записей Rabota (2)..........

             5.7 Просмотра базы Rabota (3)............

             5.8 Вывода меню загрузки Rabota(4) .....

             5.9 Вывода меню сохранения Rabota(5) ...

             5.10 Создания новой БД Rabota (6).......

             5.11 Добавления новых записейRabota(7)..

             5.12 Просмотра-добавления данных

                  Rabota(8)...........................

             5.13 Выхода из программы      Rabota(9) ..

             5.14 Процедуры выбораСhoice1............

             5.15 Процедур Sbros и Sbros1      .......

             5.16 Загрузки БД с дискаLoadbase........

             5.17 Сохранения БД на дискеSavebase.....

             5.18 Вспомогательной для коррекцииданых

                  Correct(N)  ........................

          6. Листинг программы.......................

          7. Отладка программы.......................

          8. Инструкция пользователя и решение

             контрольных примеров:...................

          Заключение .................................

          Список литературы..........................

                                     


    Данная курсовая написана на языке Пролог всреде  Turbo  Prolog v

2.0(русифицированная версия).  В структуреязыка заложены возможности

простой ичерезвычайно эффективной работы с базами данных,  что позво-

ляет  на его основе создавать различного родаинформационно — справоч-

ные системы.  Структура языка Пролог соответствуетструктуре реляцион-

ных базданных.  Так отношению в РБДсоответствует предикат в Прологе,

элементу — факт,атрибуту отношения — аргумент предиката и т.д. Встро-

енные в Прологпредикаты работы с окнами позволяют создать дружествен-

ный интерфейс дляработы пользователя  с  информационно -  справочной

системой.

     Информационно-справочные системы — этопрограммы-оболочки, служа-

щие дляуправления массивами и  базами  данных. В  наш  век всеобщей

компьютеризацииинформационно-справочные системы значительно облегчают

труд человека вовсех отраслях народного хозяйства. Значительно упрос-

тилась  работа московской  милиции по обнаружениюугнаного транспорта

после создания вМоскве компьютерных баз данных по угнаным  автомоби-

лям.  Бухгалтерам предприятий  и фирм теперь ненужно перебирать горы

бумаг,  чтобы получить все данные о сотруднике:  достаточно загрузить

информационно-справочную  систему и она в удобной форме выдаст всю не-

обходимуюинформацию.

     Области примененияинформационно-справочных систем воистину безг-

раничны: этоведение статистики удоя скота на ферме, составление ката-

логов книг вбиблиотеках и произведений искусства в музеях, сбор дан-

ных о наличиирабочих вакансий в данном регеоне и многие другие.

     Одним из способов програмной реализации информационно-справочной

системы являетсяиспользование для ее создания языка логического прог-

раммирования  Пролог. В  данной реализации языкасодержится множество

встроенныхпредикатов, существенно облегчающих написание таких систем.

     База данных в простейшем случае — упорядоченная структура  данных

в  виде таблицы,  каждая  запись которой может объединять разнотипные

данные,  причем все записи одной базы имеют одинаковуюструктуру.  Су-

ществуют тримодели представления баз данных: иерархическая, сетевая и

реляционная.  В силу особенностей языка Пролог, с егопомощью реализу-

ется  реляционная модель.  Каждая строка в базе данных называется эле-

ментомотношения,  каждая колонка — атрибутом  отношения,  колличество

колонок — арностью,  а колличество строк — мощностью. В языке програм-

мирования Прологатрибуту отношения соответствует аргумент предиката,

арности  - колличество аргументов в предикате, отношению — предикат,

элементу — факт,и мощности — число фактов.

    Исходя из вышеперечисленных соответствий Пролог является прекрас-

ным средством дляреализации реляционных баз данных.

     Все режимы программы активизируются спомощью меню,  которое реа-

лизовано спомощью процедуры mainmenu. Для активизации какого либо ре-

жима пользователюследует  нажать  цифровую клавишу,  соответствующую

выбранному пунктуменю.


  Меню данной программы состоит из девятипунктов:

     0 — О пpогpамме...       — вывод данных о системе

     1 — коррекция данных     — режим корректировки данных

     2 — удаление данных      — режим удаления данных

     3 — просмотр базы        — режим просмотра базы

     4 — загрузка базы        — режим загрузки базы

     5 — сохранение базы      — режим сохранения базы

     6 — создание новой базы  — режим создания новой базы

     7 — ввод новых данных    — выход из программы

     8 — просмотр-добавление  — просмотр и добавление данных

     9 — выход из программы   — выход

 На следующей странице представлена графическаяструктура меню.


     Процедуры создавались на основетребований,  изложенных в задании

к курсовойработе.

     С помощью процедуры Nachalo разделе GOAL инициируетсяначало  вы-

полнения  программы. Эта процедура запускает процедуру начальной заг-

рузки базы данныхZagruz ,  после чего передает  управление процедуре

вывода главногоменю Mainmenu.

     Эта процедура  выводит список пунктов главного меню и ожидает от

пользователяввода числа, которое будет занесено в переменную C. После

этого вызываетсяпроцедура обработки основных режимов Rabota, в кото-

рую переменная Cпередается в качестве аргумента.  Впроцедуре исполь-

зован предикатPovtor,  в связи с этим после возврата изпроцедуры Ra-

bota вслучае,  если C не равно 7 происходитповторный  вывод  пунктов

меню и ожиданиеввода числа.

     Процедура Zagruz предназначена дляавтоматической загрузки основ-

ной базы данныхпри запуске программы. Это значительно облегчает рабо-

ту ссистемой,  так как не требуется призапуске программы  задгружать

основную БД изрежима «Загрузка». Процедура Zagruz проверяет существо-

вание на дискефайла avto.dat с помощью встроенного предиката existfi-

le и задгружаетБД в память с помощью предиката consult. В случае от-

сутствия файлавыдается сообщение об ошибке.

     Данная процедура выводит информацию оязыке,  на котором написана

система и данныео создателе.

     Процедура Rabota (1) служит коррекцииданных, находящихся в БД, и

внесения новыхзаписей.При активизации процедура запрашивает номер за-

писи и еслитаковая существует выводит ее значения после чего  просит

ввести  новые значения.Если же запись с таковым номером не существует

то процедуравыводит сообщение об этом просит повторить номер  записи

после чегоосуществляется ввод новых данных.

     Данная процедура предназначена дляудаления записей из базы  дан-

ных.  Удалять можно данные по любому признаку ( дляэтого используется

предикат Choice1.После выбора признака все записи содержащие его уда-

ляются с помощьювстроенного предиката Retract.

   Процедура Rabota (3) выводит содержание базыданных в виде таблицы.

    Данная процедура выводит меню,  содержащее следующие пункты: «База

будет загруженаиз указанного файла»,  " Базабудет загружена из файла

avto.dat"," Выход в основное меню". Загрузка баз данных осуществляет-

ся процедуройLoadbase,  аргументом которой служитпеременная C,  счи-

танная с клавиатурыпри вводе пользователем  номера  желаемого пункта

меню.

     Процедура Rabota  (5) аналогична Rabota (4).  Длясохранения баз

данныхприменяется процедура Savebase, рассмотренная ниже, аргументом

которой являетсяпеременная I.


     Данная процедура служит для создания новых базданных.  Процедура

работаетследующим образом: выводится меню выбора признака по которому

будет созданановая БД :

           1 — По марке автомобиля

           2 — По году выпуска

           3 — По району учета

           4 — Выход в основное меню

           =>

    Выбор делается вводом соответствующей цифрыпосле  чего  процедура

передает  управление процедуре  Rabota1(N)  где  N- номер выбранного

пункта. ПроцедураRabota1 будет рассмотрена ниже.

             5.11  Процедура ввода новых данных Rabota(7)

    Процедура предназначена для ввода новыхданных в базу.После ее за-

пуска происходитпоследовательный запрос каждого следующего поля запи-

си.  После введения всех полей записи просисходитвозврат к  основному

меню.

            5.12  Процедура просмотра и добавления данных

    Данная процедура  запрашивает номер  записи и если находит вбазе

запись с таковымномером то выводит ее значения после  нажатия  любой

клавиши происходитвозврат к основному меню.

     Если же записи с данным номером нет вбазе  то процедура  просит

повторить вводномера и после этого производится последовательный ввод

данных.

                                 5.13

    Данная процедура состоит из отсечения,  которое запрещает дальней-

ший перебор.  Процедура оканчивается успехом и  происходит возврат  в

процедуруMainmenu,  в которой выполняется условиеC=7, благодаря чему

происходит выходиз программы.

                                 5.14

    Эта процедура определяет номер желаемойзаписи после ввода пользо-

вателем  либо собственно номера этой записи,  либо после ввода фамилии

другого поля менюи возвращает этот номер в вызывавшую процедуру.

                                 5.15

    Процедуры Sbros  и Sbros1  являются  вспомагательными к процедуре

Correct(1).  Они позволяют определить,  следует ли замещать  имеющийся

элемент записи нановый или нет (если была нажата клавиша ).  В

процедурахпроверяется,  является ли первыйаргумент  пустой  строкой.

Если этотак,  то третьему аргумент присваиваетсявторой. Если же пер-

вый аргумент неявляется пустой строкой,  то онприсваивается третьему

аргументу  (в Sbros1 происходит предварительноепреобразование строко-

вой переменной вцелочисленную).

                                 5.16

      Данная процедура осуществляет загрузкубаз данных из  файлов  на

диске попризнакам, зависящим от аргумента процедуры: Loadbase(1) заг-


ружает основнуюБД из файла, заданного пользователем, Loadbase(2) — из

файла  avto.dat В данных процедурах проверяетсяналичие файла на диске

с помощьюпредиката existfile и загрузка БД в память с помощью  преди-

катаconsult.  В случае отсутствия файла надиске,  выдается соответс-

твующее сообщение.

                                 5.17

     Данная процедура осуществляет сохранениебаз данных в  файлах  на

диске попризнакам, зависящим от аргумента процедуры: Savebase(1) сох-

раняет основнуюБД в файле,  заданном пользователем,  Savebase(2) - в

файле bit.dat.Сохранение БД осуществляется с помощью встроенного пре-

диката save. Вслучае ошибки выдается соответствующее сообщение .

                    5.18  Процедура Cjrrect(j,i).

     Данная процедура обеспечивает вводсоответствующего поля записи.

                                            


domains

        z,n,dvig,god,n1,shasi,i=integer

        j,mark,znac,fam,ima,otc,ucet=string

database -avto1

          avto1(i,j,i,i,i,j,j,j,j,j)

database -avto2

          avto2(i,j,i,i,i,j,j,j,j,j)

database -avto3

          avto3(i,j,i,i,i,j,j,j,j,j)

database

         avto(i,j,i,i,i,j,j,j,j,j)

        predicates

        nachalo

        mainmenu

       zagruz

        choice1(i)

        correct(i,i)

        rabota(i)

        rabota1(i)

        savebase(i)

        loadbase(i)

        povtor

        sbros(j,j,j)

        sbros1(j,i,i)

goal

        nachalo.

clauses

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

        nachalo:-

            makewindow(1,7,7,«ТЕХ. ПАСПОРТАВТОМОБИЛЯ»,0,0,25,80),

            clearwindow,zagruz,

            mainmenu.

/*Процедурауправления основным меню*/

        mainmenu:-

           povtor,

            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(Vibor),

            Vibor >= 0,

            Vibor < 10,

            clearwindow,

            rabota(Vibor),

            clearwindow,

            Vibor = 9,

            retractall(_),

            removewindow.

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

        zagruz:-

            existfile(«avto.dat»),

            consult(«avto.dat»),

            cursor(1,2),

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

        zagruz:-

            cursor(1,2),

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

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

        rabota(7):-

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

            nl,

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

         write(«Введите МАРКУ               :»),readln(F),nl,

         write(«Введите ГОД ВЫПУСКА         :»),readint(Y),nl,

         write(«Введите N ДВИГАТЕЛЯ         :»),readint(J),nl,

         write(«Введите N ШАССИ             :»),readint(G),nl,

         write(«Введите НОМЕРНОЙ ЗНАК       :»),readln(W),nl,

         write(«Введите ФАМИЛИЮ             :»),readln(B),nl,

         write(«Введите ИМЯ                 :»),readln(C),nl,

         write(«Введите ОТЧЕСТВО            :»),readln(D),nl,

         write(«Введите РАЙОН УЧЕТА         :»),readln(R),nl,

  N1=K,MARK1=F,GOD1=Y,DVIG1=J,SHASI1=G,ZNAC1=W,

   FAM1=B,IMA1=C,OTC1=D,UCET1=R,

  assertz(avto(N1,MARK1,GOD1,DVIG1,SHASI1,ZNAC1,FAM1,IMA1,OTC1,UCET1)),

   removewindow, fail.

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

        rabota(8):-

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

         nl,

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

        avto(N,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),

         A=N,


            write(«НОМЕР ЗАПИСИ        :»),write(N),nl,

            write(«МАРКА               :»),write(MARK),nl,

            write(«ГОД ВЫПУСКА         :»),write(GOD),nl,

            write(«N ДВИГАТЕЛЯ         :»),write(DVIG),nl,

            write(«N ШАССИ             :»),write(SHASI),nl,

            write(«НОМЕРНОЙ ЗНАК       :»),write(ZNAC),nl,

            write(«ФАМИЛИЯ             :»),write(FAM),nl,

            write(«ИМЯ                 :»),write(IMA),nl,

            write(«ОТЧЕСТВО            :»),write(OTC),nl,

            write(«РАЙОН УЧЕТА         :»),write(UCET),nl,nl,

            readchar(_),

            removewindow,

            !.

         rabota(8):-

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

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

nl,nl,nl,

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

         readint(A),nl,

         N1=A,

            write(«МАРКА               :»),readln(F),nl,

            write(«ГОД ВЫПУСКА         :»),readint(Y),nl,

            write(«N ДВИГАТЕЛЯ         :»),readint(J),nl,

            write(«N ШАССИ             :»),readint(G),nl,

            write(«НОМЕРНОЙ ЗНАК       :»),readln(W),nl,

            write(«ФАМИЛИЯ             :»),readln(B),nl,

            write(«ИМЯ                 :»),readln(C),nl,

            write(«ОТЧЕСТВО            :»),readln(D),nl,

            write(«РАЙОН УЧЕТА         :»),readln(R),nl,

  MARK1=F,GOD1=Y,DVIG1=J,SHASI1=G,ZNAC1=W,FAM1=B,IMA1=C,OTC1=D,UCET1=R,

  assertz(avto(N1,MARK1,GOD1,DVIG1,SHASI1,ZNAC1,FAM1,IMA1,OTC1,UCET1)),

         removewindow,

         fail.

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

         rabota(0):-

         makewindow(1,54,7,«Опpогpамме...»,5,5,20,50),

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

write(" отехническом паспорте автомобиля "),nl,nl,

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

write("          автоp: ТАРАСОВ М.         "),nl,nl,

write("    МИРЭА, гp.ИИ-1-95  (с) 1996 г. "),nl,nl,nl,

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

         readchar(_),

         removewindow.

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

        rabota(2):-

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


            nl,

            choice1(N),

            X=N,

            avto(X,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),

           retract(avto(X,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET)),!,

            removewindow.

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

        rabota(3):-

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

        nl,

write("╔═════════════════════════════════════════════════════════╗"),nl,

write("║              ТЕХ. ПАСПОРТАВТОМОБИЛЯ                   ║"),nl,

write("╠══╦═════════╦═════╦═════╦═════╦════════╦═══════╦═════════╣"),nl,

write("║N°║ МАРКА   ║ ГОД║ N°  ║ N°  ║ НОМЕРН ║Ф.И.О  ║ РАЙОН   ║"),nl,

write("║ ║АВТОМОБИЛ║ВЫПУС║ДВИГ ║ШАССИ║ ЗНАК   ║      ║ УЧЕТА   ║"),nl,

write("╠══╬═════════╬═════╬═════╬═════╬════════╬═╦═════╬═════════╣"),nl,

          avto(N,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),

           cursor(Z,_),cursor(Z,1),write("║"),

           cursor(Z,2),write(N),cursor(Z,4),write("║"),

           cursor(Z,5),write(MARK),cursor(Z,14),write("║"),

           cursor(Z,15),write(GOD),cursor(Z,20),write("║"),

            cursor(Z,21),write(DVIG),cursor(Z,26),write("║"),

           cursor(Z,27),write(SHASI),cursor(Z,32),write("║"),

           cursor(Z,33),write(ZNAC),cursor(Z,41),write("║"),

           cursor(Z,42),write(FAM),cursor(Z,49),write("║"),

            cursor(Z,50),write(IMA),cursor(Z,58),write("║"),

           cursor(Z,59),write(OTC),cursor(Z,66),write("║"),

            cursor(Z,67),write(UCET),

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

            nl,

            fail.

        rabota(3):-

write("╠══╬═════════╬═════╬═════╬═════╬════════╬══╬═══════╬═════════╣"),

nl,

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

           readchar(_),

            removewindow.

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

        rabota(4):-

            nl,

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

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

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

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

            write("==>"),

            readint(C),

            C>0,C<4,

            loadbase(C),

            !,

            removewindow.


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

        rabota(5):-

            nl,

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

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

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

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

            write("==>"),

            readint(I),

            I>0,I<4,

            savebase(I),!,

            removewindow.

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

        rabota(6):-

            nl,

            makewindow(3,7,7,«Созданиеновой базы»,0,0,25,80),

            write(" 1 — По маркеавтомобиля"),nl,

            write(" 2 — По году выпуска"),nl,

            write(" 3 — По районуучета"),nl,

            write(" 4 — Выход в основноеменю"),nl,

            write("==>"),

            readint(O),

            O>0,O<5,

            rabota(O),

            removewindow.

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

        rabota(1):-

        makewindow(1,7,7,«Коppекцияданных»,0,0,25,80),

            nl,

            choice1(N),

            X=N,

           avto(X,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),

            write(«НОМЕР ЗАПИСИ        :»),write(N),nl,

            write(«МАРКА               :»),write(MARK),nl,

            write(«ГОД ВЫПУСКА         :»),write(GOD),nl,

            write(«N ДВИГАТЕЛЯ         :»),write(DVIG),nl,

            write(«N ШАССИ             :»),write(SHASI),nl,

            write(«НОМЕРНОЙ ЗНАК       :»),write(ZNAC),nl,

            write(«ФАМИЛИЯ             :»),write(FAM),nl,

            write(«ИМЯ                 :»),write(IMA),nl,

            write(«ОТЧЕСТВО            :»),write(OTC),nl,

            write(«РАЙОН УЧЕТА         :»),write(UCET),nl,nl,

            write(«Введите МАРКУ             :»),readln(MARK1),nl,

            write(«Введите ГОДВЫПУСКА       :»),readln(GOD1),nl,

            write(«Введите NДВИГАТЕЛЯ      :»),readln(DVIG1),nl,

            write(«Введите N ШАССИ           :»),readln(SHASI1),nl,

            write(«Введите НОМЕРНОЙЗНАК     :»),readln(ZNAC1),nl,

            write(«Введите ФАМИЛИЮ           :»),readln(FAM1),nl,

            write(«Введите ИМЯ               :»),readln(IMA1),nl,

            write(«Введите ОТЧЕСТВО          :»),readln(OTC1),nl,

            write(«Введите РАЙОНУЧЕТА       :»),readln(UCET1),nl,


            X1=X,

            retract(avto(X,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET)),

            sbros(MARK1,MARK,MARK2),

            sbros1(GOD1,GOD,GOD2),

            sbros1(DVIG1,DVIG,DVIG2),

            sbros1(SHASI1,SHASI,SHASI2),

            sbros(ZNAC1,ZNAC,ZNAC2),

            sbros(FAM1,FAM,FAM2),

            sbros(IMA1,IMA,IMA2),

            sbros(OTC1,OTC,OTC2),

            sbros(UCET1,UCET,UCET2),

           assertz(avto(X1,MARK2,GOD2,DVIG2,SHASI2,ZNAC2,FAM2,

                                                IMA2,OTC2,UCET2)),

            !,

            removewindow.

            rabota(_).

      sbros("",MARK,MARK2):-

            MARK2=MARK,

            !.

      sbros(MARK1,_,MARK2):-

            MARK2=MARK1,

            !.

      sbros1("",MARK,MARK2):-

            MARK2=MARK,

            !.

      sbros1(MARK1,_,MARK2):-

            str_int(MARK1,MARK3),

            MARK2=MARK3,

            !.

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

      rabota1(1):-

  makewindow(1,7,7,«Создание новой базы помарке автомобиля»,0,0,25,80),

            nl,

            cursor(7,10),

            retractall(_,avto1),

            nl,

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

            readln(X),

           avto(N,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),

            S=MARK,

            S=X,

           N1=N,GOD1=GOD,DVIG1=DVIG,SHASI1=SHASI,

           ZNAC1=ZNAC,FAM1=FAM,IMA1=IMA,OTC1=OTC,UCET1=UCET,

           assert(avto1(N1,S,GOD1,DVIG1,SHASI1,ZNAC1,FAM1,

                                          IMA1,OTC1,UCET1)),

            fail.


     rabota1(1):-

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

write("╔═════════════════════════════════════════════════════════╗"),nl,

write("║              ТЕХ. ПАСПОРТ АВТОМОБИЛЯ                    ║"),nl,

write("╠══╦═════════╦═════╦═════╦═════╦═══════╦════════╦═════════╣"),nl,

write("║N°║МАРКА   ║ ГОД ║ N°  ║ N° ║ НОМЕРН║Ф. И. О ║ РАЙОН   ║"),nl,

write("║  ║АВТОМОБИЛ║ВЫПУС║ДВИГ║ШАССИ║ ЗНАК  ║        ║ УЧЕТА   ║"),nl,

write("╠══╬═════════╬═════╬═════╬═════╬═══════╬════════╬═════════╣"),nl,

           avto1(N,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),

           cursor(Z,_),cursor(Z,1),write("║"),

           cursor(Z,2),write(N),cursor(Z,4),write("║"),

            cursor(Z,5),write(MARK),cursor(Z,14),write("║"),

           cursor(Z,15),write(GOD),cursor(Z,20),write("║"),

           cursor(Z,21),write(DVIG),cursor(Z,26),write("║"),

           cursor(Z,27),write(SHASI),cursor(Z,32),write("║"),

           cursor(Z,33),write(ZNAC),cursor(Z,41),write("║"),

           cursor(Z,42),write(FAM),cursor(Z,49),write("║"),

           cursor(Z,50),write(IMA),cursor(Z,58),write("║"),

           cursor(Z,59),write(OTC),cursor(Z,66),write("║"),

            cursor(Z,67),write(UCET),

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

            nl,

            fail.

        rabota1(1):-

write("╠══╬═════════╬═════╬═════╬═════╬════════╬════════╬═════════╣"),

            save(«avto1.dat»,avto1),

            nl,

            write(«База сохранена в файлеavto1.dat»),

            nl,

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

            readchar(_),

            removewindow,

            !.

        rabota1(1):-

write("╠══╬═════════╬═════╬═════╬═════╬════════╬═══════╬═════════╣"),

            nl,

            write(«Невозможно сохранитьсозданную базу»),

            nl,

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

            readchar(_),

            makewindow(1,7,7,«ТЕХ. ПАСПОРТАВТОМОБИЛЯ»,0,0,25,80).

            rabota1(2):-

   makewindow(1,7,7,«Создание новой базыпо году выпуска»,0,0,25,80),

            nl,

            cursor(7,10),

            retractall(_,avto2),

            nl,

            write(«Введите год выпускаавтомобиля:»),


            readint(X),

            avto(N,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),

            S=GOD,

            S=X,

           N1=N,MARK1=MARK,DVIG1=DVIG,SHASI1=SHASI,ZNAC1=ZNAC,FAM1=FAM,

                    IMA1=IMA,OTC1=OTC,UCET1=UCET,

           assert(avto2(N1,MARK1,S,DVIG1,SHASI1,ZNAC1,FAM1,IMA1,

                       OTC1,UCET1)),

            fail.

        rabota1(2):-

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

write("╔════════════════════════════════════════════════════════╗"),nl,

write("║              ТЕХ. ПАСПОРТАВТОМОБИЛЯ                   ║"),nl,

write("╠══╦═════════╦═════╦═════╦═════╦════════╦══════╦═════════╣"),nl,

write("║N°║ МАРКА   ║ ГОД║ N°  ║ N°  ║ НОМЕРН ║Ф И О ║ РАЙОН   ║"),nl,

write("║ ║АВТОМОБИЛ║ВЫПУС║ДВИГ ║ШАССИ║ ЗНАК   ║     ║ УЧЕТА   ║"),nl,

write("╠══╬═════════╬═════╬═════╬═════╬════════╬══════╬═════════╣"),nl,

           avto2(N,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),

           cursor(Z,_),cursor(Z,1),write("║"),

           cursor(Z,2),write(N),cursor(Z,4),write("║"),

            cursor(Z,5),write(MARK),cursor(Z,14),write("║"),

           cursor(Z,15),write(GOD),cursor(Z,20),write("║"),

           cursor(Z,21),write(DVIG),cursor(Z,26),write("║"),

           cursor(Z,27),write(SHASI),cursor(Z,32),write("║"),

            cursor(Z,33),write(ZNAC),cursor(Z,41),write("║"),

           cursor(Z,42),write(FAM),cursor(Z,49),write("║"),

           cursor(Z,50),write(IMA),cursor(Z,58),write("║"),

           cursor(Z,59),write(OTC),cursor(Z,66),write("║"),

            cursor(Z,67),write(UCET),

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

            nl,

            fail.

        rabota1(2):-

write("╠══╬═════════╬═════╬═════╬═════╬════════╬════════╬═════════╣"),

            save(«avto2.dat»,avto2),

            nl,

            write(«База сохранена в файлеavto2.dat»),

            nl,

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

            readchar(_),

            removewindow,

            !.

        rabota1(2):-

write("╠══╬═════════╬═════╬═════╬═════╬═══════╬═══════╬═════════╣"),

            nl,

            write(«Невозможно сохранитьсозданную базу»),

            nl,

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

            readchar(_),

            makewindow(1,7,7,«ТЕХ. ПАСПОРТАВТОМОБИЛЯ»,0,0,25,80).


            rabota1(3):-

   makewindow(1,7,7,«Создание новой базыпо району учета»,0,0,25,80),

            nl,

            cursor(7,10),

            retractall(_,avto3),

            nl,

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

            readln(X),

            avto(N,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),

            S=UCET,

            S=X,

           N1=N,MARK1=MARK,GOD1=GOD,DVIG1=DVIG,SHASI1=SHASI,

                         ZNAC1=ZNAC,FAM1=FAM,IMA1=IMA,OTC1=OTC,

            assert(avto3(N1,MARK1,GOD1,DVIG1,SHASI1,ZNAC1,FAM1,

                                          IMA1,OTC1,S)),

            fail.

        rabota1(3):-

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

write("╔══════════════════════════════════════════════════════╗"),nl,

write("║               ТЕХ. ПАСПОРТАВТОМОБИЛЯ               ║"),nl,

write("╠══╦═════════╦═════╦═════╦═════╦══════╦══════╦═════════╣"),nl,

write("║N°║ МАРКА   ║ ГОД║ N°  ║ N°  ║НОМЕРН║Ф И О ║ РАЙОН   ║"),nl,

write("║ ║АВТОМОБИЛ║ВЫПУС║ДВИГ ║ШАССИ║ ЗНАК║      ║ УЧЕТА   ║"),nl,

write("╠══╬═════════╬═════╬═════╬═════╬══════╬══════╬═════════╣"),nl,

           avto3(N,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),

           cursor(Z,_),cursor(Z,1),write("║"),

           cursor(Z,2),write(

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