Реферат

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

Работа добавлена на сайт bukvasha.net: 2015-10-28

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 26.12.2024




Задание № 11

на курсовое проектирование

по дисциплине “Логическое программирование”

студенту Пакостиной Александре Викторовне.

Группа ИР-1-95.
1.   Тема исследования: “Разработка информационно - справочной системы”.

2.   Исходные данные: База данных BD, включающая записи вида:



Характеристика детали

















 



Место хранения

Название

Цена

Дата поступления









артикула

№ цеха

№склада

детали

руб

коп

год

месяц

число

 



















 



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

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

3.1. Разработать меню, обеспечивающее взаимодействие пользователя с системой, в соответствии с заданием, предусмотрев режимы:

3.2. Разработать процедуры:


·       уничтожения записей по признакам;

·       загрузки;

·       сохранения;

·       просмотра;

·       уничтожения;


3.3. Предусмотреть создание из базы BD новых баз данных B1, B2, характеризуемых признаками, задаваемыми пользователем.


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



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








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

5.1. Получение задания: 4.10.96.

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


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


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

5.5. Отладка программы: 29.11.96.

5.6. Оформление пояснительной записки и сдача работы на правку: 13.12.96.

5.7. Защита курсовой работы: 20.12.96.
Руководитель: Холкин И.И. ­­____________
Студент: Пакостина А.В. ____________


Описание
1.   Понятие об информационно-справочных системах и их программная реализация.
Информационно-справочные системы предназначены для управления различными информационными и справочными массивами, в число которых входят и базы данных. Эти системы организовывают определенный интерфейс пользователя с функциями обработки информации самой системы. Набор возможностей таких систем обычно включает в себя коррекцию структуры используемого объекта (инкапсулирующего информацию), работа с его составляющими - дополнение, редактирование, удаление (в случае, когда роль такого объекта выполняет база данных, это - записи), простой просмотр, поиск элементов. Также необходимо обеспечить для такой системы и функции постоянного надежного хранения - в простейшем случае, это - запись базы из памяти в файл на диске и считывание оного с диска в память.
Программная реализация мало отличается от подобной концепции, но конкретизирует абстрактные операции в конкретные процедуры и функции (или же объекты) и зависит полностью от возможностей языка, поставленной задачи и искусства программиста.


2.   Базы данных и способы их представления.
Общая концепция теории простых баз данных подразумевает наличие некоторого множества таблиц и являющихся, собственно, базой данных, имеющей определенный идентификатор (имя). Каждая таблица состоит из
n-го количества записей (величина n зависит от возможностей конкретной системы), каждая из которых имеет одну и ту же структуру (в рамках одной таблицы) и может объединять в себе несколько разнородных объектов (их количество также зависит целиком и полностью от возможностей системы).
Работа с базой данных предполагает в себе возможность работать с записями (либо изменять структуру таблиц).
В языке программирования Пролог база данных описывается в отдельном разделе, именуемом
database. Таких разделов может быть несколько в одной программе и каждый из них, если они действительно представляют собой разные БД, должны иметь разные имена. В случае отсутствия имени у базы данных, ей дается имя по умолчанию - dbasedom.
Работу с загружаемыми базами данных в Прологе реализуют следующие стандартные предикаты:
assert - добавить запись в БД, retract - удалить указанную запись, save - сохранить указанную БД в файле, consult - загрузить БД из файла в память.
В данной работе объявлена главная база данных
bd, имеющая предикат characteristick, и две временные базы b1, b2 с предикатами table1, table2.

3.   Разработка системного меню.
Системное меню объединяет в себе доступ ко всем процедурам информационно - справочной системы. Разработка меню отталкивается от имеющихся функций системы (предикатов). Поскольку объявлен предикат do (char), служащий буфером между системным меню и существующими процедурами, он имеет в себе либо подменю с выбором режимов работы имеющихся предикатов, либо их вызов с последующим возвратом в системное меню:
+-------------- Системное меню --------------+

¦  Выберите вариант работы с базами данных:  ¦

¦                                            ¦

¦   1 :-  Загрузить                          ¦

¦   2 :-  Сохранить                          ¦

¦   3 :-  Просмотреть                        ¦

¦   4 :-  Скорректировать                    ¦

¦   5 :-  Удалить запись по признакам        ¦

¦   6 :-  Создать по признакам               ¦

¦   7 :-  Добавить                           ¦

¦   8 :-  Выход в ДОС                        ¦

¦                                            ¦

¦  ------------------| |------------------   ¦

+--------------------------------------------+



4.   Разработка структуры программы.
Системное меню вызывает только предикаты do (<режим>), определенные для каждой из необходимых задач (номер режим полностью совпадает с нумерацией в главном меню). Каждая из реализаций этого предиката выводит меню, либо сразу вызывает соответствующие процедуры: open, store, adding, correct, see, del, indication. Процедура Indication выводит дополнительное подменю и вызывает либо IndicationB1
,
либо IndicationB2 в зависимости от выбора пользователя. Do(‘8’)
завершает работу с системой.

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

5.1. Загрузка базы данных

(
Open
).
В do(‘1’) имеется меню:
+--------- Загрузить --------+

¦      Куда загрузить ?      ¦

¦                            ¦

¦        1 :-  В bd          ¦

¦        2 :-  В b1          ¦

¦        3 :-  В b2          ¦

¦        4 :-  Меню          ¦

¦                            ¦

¦      ------| |------       ¦

+----------------------------+
процедура Open имеет четыре реализации, для каждого из вариантов работы. Для любого случая перед загрузкой базы данных проверяется существование файла с введенным именем (предикат exists). Для загрузки базы данных используется стандартный предикат consult. При вызове Open(‘1’) загрузка производится в базу bd, при вызове Open(‘
2
’)
в базу b1, при вызове Open(‘3’) - в b2.

5.2. Сохранение
(
Store
).
В do(‘2’) меню:

+--------- Сохранить --------+

¦      Что сохранить ?       ¦

¦                            ¦

¦        1 :-  bd            ¦

¦        2 :-  b1            ¦

¦        3 :-  b2            ¦

¦        4 :-  Меню          ¦

¦                            ¦

¦      ------| |------       ¦

+----------------------------+
Существуют предикаты для записи главной базы и двух временных. Используется стандартный предикат save, записывающий в текстовый файл факты, связанные с данной БД.

5.3. Просмотр
(
See)
.
В do(‘3’) меню:

+-------- Просмотреть -------+

¦      Что просмотреть ?     ¦

¦                            ¦

¦        1 :-  bd            ¦

¦        2 :-  b1            ¦

¦        3 :-  b2            ¦

¦        4 :-  Меню          ¦

¦                            ¦

¦      ------| |------       ¦

+----------------------------+
Предложения See(‘1’) и See(‘2’) создают новые окна и выводят в них найденные записи. После каждой выведенной записи запрашивается нажатие клавиши, затем повторяется поиск с помошью стандартного предиката Fail или происходит выход из предиката в системное меню.

5.4. Добавление
(
Adding)
.
Данный предикат был добавлен в программу по причине облегчения работы с ней, хоть и в задании его не было.
В этой процедуре используется определенная в этой же программе процедура Get, запрашивающая с клавиатуры значения для новой записи в главной базе данных и стандартная процедура assert, добавляющая новый факт в базу данных.

5.5. Корректировка
(
Correct)
.

В данной программе существует два варианта корректировки - редактирование записи, найденной по номеру артикула и найденной по названию детали. В каждой из версий предиката вначале запрашивается номер артикула (или название) изменяемой записи, поиск и вывод на экран, затем происходит ввод новых значений полей, подтверждаются сделанные изменения, удаляется старый факт (retract) и добавляется вновь сформированный (assert).

5.6. Создания базы по признакам
(
Indication)
.

Indication(‘1’)
создает базу b1, а Indication(‘2’) - базу b2. Для каждой базы существует отдельный предикат - IndicationB1 и IndicationB2. Существуют возможности создания таких баз по следующим признакам: по месту хранения, по цене, по дате поступления. В каждом из вариантов производится запрос на несколько параметров сразу и поиск фактов, отвечающих этим требованиям. При успешном поиске, найденный факт добавляется в базу b1 или b2.

5.7. Удаление записи по признакам
(
Del).

Признаками для удаляемой записи могут служить номер артикула, название, а также возможно уничтожить из памяти всю базу данных. Во всех вариантах используется процедура удаления записи retract.

6. Листинг.
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%                                                                        %

%  Пакостина Александра.                                                 %

%         ИР-1-95.                                                       %

%  Задание 11.                                                           %

%                                                                        %

 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
domains
  artikul = integer

  cex, sklad = integer

  name = string

  rubley, kopeek = integer

  year, month, day = integer

  placedom = place(cex, sklad)

  pricedom = price(rubley, kopeek)

  datedom = date(year, month, day)
database - bd
  characteristick(artikul, placedom, name, pricedom, datedom)
database - b1
  table1(artikul, placedom, name, pricedom, datedom)
database - b2
  table2(artikul, placedom, name, pricedom, datedom)
predicates
  windows

  go

  do(char)

  open(char)

  store(char)

  adding

  correct(char)

  indication(char)

  indicationB1(char)

  indicationB2(char)

  see(char)

  del(char)

  exists(string)

  show(artikul, placedom, name, pricedom, datedom)

  get(artikul, placedom, name, pricedom, datedom)
goal
  windows, go.
clauses
  characteristick(1,place(5,6),"Gayka",price(0,45),date(1996,1,4)).

  characteristick(2,place(6,7),"Vint",price(0,65),date(1996,2,45)).
  windows :-

    makewindow(1,52,0,"",24,0,1,80),

    write(" Пакостина Александра."),

    makewindow(2,52,0,"",0,0,1,80),

    write("           Система управления базой данных \"Характеристика детали\""),

    makewindow(3,112,1," Системное меню ",2,17,14,46),

    nl, write("  Выберите вариант работы с базами данных:"), nl,

    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,

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

    framewindow(126).
  go :-

    gotowindow(3), cursor(11,21),

    readchar(X), do(X).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  do('1') :-

    makewindow(4,18,1," Загрузить ",5,25,10,30),

    framewindow(19),

    nl, write("      Куда загрузить ?"), nl,

    nl, write("        1 :-  В bd"),

    nl, write("        2 :-  В b1"),

    nl, write("        3 :-  В b2"),

    nl, write("        4 :-  Меню"), nl,

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

    cursor(7,13), readchar(X), open(X),

    removewindow, go, !.
  do('2') :-

    makewindow(4,18,1," Сохранить ",5,25,10,30),

    framewindow(19),

    nl, write("      Что сохранить ?"), nl,

    nl, write("        1 :-  bd"),

    nl, write("        2 :-  b1"),

    nl, write("        3 :-  b2"),

    nl, write("        4 :-  Меню"), nl,

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

    cursor(7,13), readchar(X), store(X),

    removewindow, go, !.
  do('3') :-

    makewindow(4,18,1," Просмотреть ",5,25,10,30),

    framewindow(19),

    write("      Что просмотреть ?"), nl,

    nl, write("        1 :-  bd"),

    nl, write("        2 :-  b1"),

    nl, write("        3 :-  b2"),

    nl, write("        4 :-  Меню"), nl,

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

    cursor(7,13), readchar(X), see(X),

    removewindow, go, !.
  do('4') :-

    makewindow(4,18,1," Корректировка ",5,25,9,30),

    framewindow(19),

    write(" Способ нахождения записи: "), nl,

    nl, write("  1 :-  по номеру артикула"),

    nl, write("  2 :-  по названию"),

    nl, write("  3 :-  Меню"), nl,

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

    cursor(6,13), readchar(X), correct(X),

    removewindow, go, !.
  do('5') :-

    makewindow(4,18,1," Удаление записи по признаку ",5,25,10,30),

    framewindow(19),

        write("     Введите признак:"), nl,

    nl, write("  1 :-  По артикулу"),

    nl, write("  2 :-  По названию"),

    nl, write("  3 :-  Удалить всю базу"),

    nl, write("  4 :-  Меню"), nl,

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

    cursor(7,13), readchar(X), del(X),

    removewindow, go, !.
  do('6') :-

    makewindow(4,18,1," Создать базу по признаку ",5,25,9,30),

    framewindow(19),

        write("    Какую базу создать ?"), nl,

    nl, write("         1 :-  B1"),

    nl, write("         2 :-  B2"),

    nl, write("         3 :-  Меню"), nl,

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

    cursor(6,13), readchar(X), indication(X),

    removewindow, go, !.
  do('7') :-

    makewindow(4,18,1," Добавить запись к главной базе ",7,10,13,60),

    framewindow(19), adding,

    removewindow, go, !.
  do('8') :-

    makewindow(4,95,1,"Запрос",10,29,5,22), nl,

    framewindow(94),

    write("  Выйти ? (Yes/No)"), readchar(X),

    X='y', exit;

    removewindow, go, !.
  do(_) :-

    makewindow(4,76,1,"Ошибка",8,29,5,22),

    framewindow(75), nl,

    write(" Выберите из меню"), readchar(_),

    removewindow, go.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  open('1') :-

    makewindow(5,95,1,"Загрузка bd",7,20,10,40),

    framewindow(94), nl,

    write(" Имя файла : "), readln(FN),

    exists(FN), consult(FN, bd),

    nl, write(" Загружено"), readchar(_), removewindow, !.
  open('2') :-

    makewindow(5,95,1,"Загрузка b1",7,20,10,40),

    framewindow(94), nl,

    write(" Имя файла : "), readln(FN),

    exists(FN), consult(FN, b1),

    nl, write(" Загружено"), readchar(_), removewindow, !.
  open('3') :-

    makewindow(5,95,1,"Загрузка b2",7,20,10,40),

    framewindow(94), nl,

    write(" Имя файла : "), readln(FN),

    exists(FN), consult(FN, b2),

    nl, write(" Загружено"), readchar(_), removewindow, !.
  open('4') :-

    !.
  open(_) :-

    makewindow(5,76,1,"Ошибка",8,29,5,22),

    framewindow(75), nl,

    write(" Выберите из меню"), readchar(_),

    removewindow, removewindow, do('1').
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  store('1') :-

    makewindow(5,95,1,"Сохранение bd",7,20,10,40),

    framewindow(94), nl,

    write(" Имя файла : "), readln(FN), save(FN, bd),

    nl, write(" Сохранено"), readchar(_), removewindow, !.
  store('2') :-

    makewindow(5,95,1,"Сохранение b1",7,20,10,40),

    framewindow(94), nl,

    write(" Имя файла : "),

    readln(FN), save(FN, b1),

    nl, write(" Сохранено"), readchar(_), removewindow, !.
  store('3') :-

    makewindow(5,95,1,"Сохранение b2",7,20,10,40),

    framewindow(94), nl,

    write(" Имя файла : "),

    readln(FN), save(FN, b2),

    nl, write(" Сохранено"), readchar(_), removewindow, !.
  store('4') :-

    !.
  store(_) :-

    makewindow(5,76,1,"Ошибка",8,29,5,22),

    framewindow(75), nl,

    write(" Выберите из меню"), readchar(_),

    removewindow, removewindow, do('2').
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  see('1') :-

    makewindow(5,95,1," Просмотр bd ",7,10,9,60),

    framewindow(94), nl,

    characteristick(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)),

    show(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)),

    nl,nl,write("Нажмите ENTER для продолжения..."),

    readchar(_), nl, fail.
  see('1') :-

    removewindow, removewindow, do('3'), !.
  see('2') :-

    makewindow(5,95,1," Просмотр b1 ",7,10,9,60),

    framewindow(94), nl,

    table1(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)),

    show(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)),

    nl,nl,write("Нажмите ENTER для продолжения..."),

    readchar(_), nl, fail.
  see('2') :-

    removewindow, removewindow, do('3'), !.
  see('3') :-

    makewindow(5,95,1," Просмотр b2 ",7,10,9,60),

    framewindow(94), nl,

    table2(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)),

    show(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)),

    nl,nl,write("Нажмите ENTER для продолжения..."),

    readchar(_), nl, fail.
  see('3') :-

    removewindow, removewindow, do('3'), !.
  see('4') :-

    !.
  see(_) :-

    makewindow(5,76,1,"Ошибка",8,29,5,22),

    framewindow(75), nl,

    write(" Выберите из меню"), readchar(_),

    removewindow, removewindow, do('3').
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  correct('1') :-

    makewindow(5,95,1," Корректировка записи, найденной по артикулу ",7,10,13,60),

    framewindow(94),

    write("Номер артикула: "), readint(X),

    characteristick(X,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)),

    nl, write("Старая запись:"), nl, nl,

    show(X,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)), nl, nl,

    write("Введите новый вариант:"), nl, nl,

    get(ArtD,place(NCD,NSD),NameD,price(RubD,KopD),date(YearD,MonD,DayD)), nl,

    clearwindow,

    retract(characteristick(X,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day))),

    assert(characteristick(ArtD,place(NCD,NSD),NameD,price(RubD,KopD),date(YearD,MonD,DayD))),

    removewindow, removewindow, do('4'), !.
  correct('1') :-

    removewindow, removewindow, do('4'), !.
  correct('2') :-

    makewindow(5,95,1," Корректировка записи, найденной по названию ",7,10,13,60),

    framewindow(94),

    write("Название: "), readln(X),

    characteristick(Art,place(NC,NS),X,price(Rub,Kop),date(Year,Mon,Day)),

    nl, write("Старая запись:"), nl, nl,

    show(Art,place(NC,NS),X,price(Rub,Kop),date(Year,Mon,Day)), nl, nl,

    write("Введите новый вариант:"), nl, nl,

    get(ArtD,place(NCD,NSD),NameD,price(RubD,KopD),date(YearD,MonD,DayD)), nl,

    clearwindow,

    retract(characteristick(Art,place(NC,NS),X,price(Rub,Kop),date(Year,Mon,Day))),

    assert(characteristick(ArtD,place(NCD,NSD),NameD,price(RubD,KopD),date(YearD,MonD,DayD))),

    removewindow, removewindow, do('4'), !.
  correct('2') :-

    removewindow, removewindow, do('4'), !.
  correct('3') :-

    !.
  correct(_) :-

    makewindow(5,76,1,"Ошибка",8,29,5,22),

    framewindow(75), nl,

    write(" Выберите из меню"), readchar(_),

    removewindow, removewindow, do('4').
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  del('1') :-

    makewindow(5,95,1," Удаление по артикулу ",7,20,10,40),

    framewindow(94),

    write(" Номер артикула: "), readint(X),

    retract(characteristick(X,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day))), nl,

    write(" Готово."), readchar(_),

    removewindow,removewindow, do('5'), !.
  del('1') :-

    makewindow(6,76,1,"Ошибка",8,29,5,22),

    framewindow(75), nl,

    write(" Запись не найдена."), readchar(_),

    removewindow, removewindow, removewindow, do('5').
  del('2') :-

    makewindow(5,95,1," Удаление по названию ",7,20,10,40),

    framewindow(94),

    write(" Название: "), readln(X),

    retract(characteristick(Art,place(NC,NS),X,price(Rub,Kop),date(Year,Mon,Day))), nl,

    write(" Готово."), readchar(_),

    removewindow,removewindow, do('5'), !.
  del('2') :-

    makewindow(6,76,1,"Ошибка",8,29,5,22),

    framewindow(75), nl,

    write(" Запись не найдена."), readchar(_),

    removewindow, removewindow, removewindow, do('5').
  del('3') :-

    makewindow(5,95,1," Удаление всей базы ",7,20,10,40),

    framewindow(94),

    retract(characteristick(_,place(_,_),_,price(_,_),date(_,_,_))),

    fail.
  del('3') :-

    write(" База удалена."), readchar(_),

    removewindow,removewindow, do('5'), !.
  del('4') :-

    !.
  del('_') :-

    makewindow(5,76,1,"Ошибка",8,29,5,22),

    framewindow(75), nl,

    write(" Выберите из меню"), readchar(_),

    removewindow, removewindow, do('5').
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  indication('1') :-

    makewindow(5,18,1," Создать базу B1 по признаку ",8,25,10,30),

    framewindow(19),

        write("      Введите признак:"), nl,

    nl, write("  1 :-  По месту хранения"),

    nl, write("  2 :-  По цене"),

    nl, write("  3 :-  По дате поступления"),

    nl, write("  4 :-  Меню"), nl,

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

    cursor(7,13), readchar(X), indicationB1(X),

    removewindow, removewindow, do('6'), !.
  indication('2') :-

    makewindow(5,18,1," Создать базу B2 по признаку ",8,25,10,30),

    framewindow(19),

        write("      Введите признак:"), nl,

    nl, write("  1 :-  По месту хранения"),

    nl, write("  2 :-  По цене"),

    nl, write("  3 :-  По дате поступления"),

    nl, write("  4 :-  Меню"), nl,

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

    cursor(7,13), readchar(X), indicationB2(X),

    removewindow, removewindow, do('6'), !.
  indication('3') :-

    !.
  indication(_) :-

    makewindow(5,76,1,"Ошибка",8,29,5,22),

    framewindow(75), nl,

    write(" Выберите из меню"), readchar(_),

    removewindow, removewindow, do('6').
  indicationB1('1') :-

    makewindow(6,95,1," Создание базы B1 по месту хранения ",7,20,10,40),

    framewindow(94), nl,

    write(" Номер цеха: "), readint(X),

    write(" Номер склада: "), readint(Y),

    characteristick(Art,place(X,Y),Name,price(Rub,Kop),date(Year,Mon,Day)),

    assert(table1(Art,place(X,Y),Name,price(Rub,Kop),date(Year,Mon,Day))),

    fail.
  indicationB1('1') :-

    removewindow, removewindow, indication('1').
  indicationB1('2') :-

    makewindow(6,95,1," Создание базы B1 по цене ",7,20,10,40),

    framewindow(94), nl,

    write(" Рублей: "), readint(X),

    write(" Копеек: "), readint(Y),

    characteristick(Art,place(NC,NS),Name,price(X,Y),date(Year,Mon,Day)),

    assert(table1(Art,place(NC,NS),Name,price(X,Y),date(Year,Mon,Day))),

    fail.
  indicationB1('2') :-

    removewindow, removewindow, indication('1').
  indicationB1('3') :-

    makewindow(6,95,1," Создание базы B1 по дате поступления ",7,20,10,40),

    framewindow(94), nl,

    write(" Год: "), readint(X),

    write(" Месяц: "), readint(Y),

    write(" День: "), readint(Z),

    characteristick(Art,place(NC,NS),Name,price(Rub,Kop),date(X,Y,Z)),

    assert(table1(Art,place(NC,NS),Name,price(Rub,Kop),date(X,Y,Z))),

    fail.
  indicationB1('3') :-

    removewindow, removewindow, indication('1').
  indicationB1('4') :-

    !.
  indicationB1(_) :-

    makewindow(6,76,1,"Ошибка",8,29,5,22),

    framewindow(75), nl,

    write(" Выберите из меню"), readchar(_),

    removewindow, removewindow, indication('1').
  indicationB2('1') :-

    makewindow(6,95,1," Создание базы B2 по месту хранения ",7,20,10,40),

    framewindow(94), nl,

    write(" Номер цеха: "), readint(X),

    write(" Номер склада: "), readint(Y),

    characteristick(Art,place(X,Y),Name,price(Rub,Kop),date(Year,Mon,Day)),

    assert(table2(Art,place(X,Y),Name,price(Rub,Kop),date(Year,Mon,Day))),

    fail.
  indicationB2('1') :-

    removewindow, removewindow, indication('2').
  indicationB2('2') :-

    makewindow(6,95,1," Создание базы B2 по цене ",7,20,10,40),

    framewindow(94), nl,

    write(" Рублей: "), readint(X),

    write(" Копеек: "), readint(Y),

    characteristick(Art,place(NC,NS),Name,price(X,Y),date(Year,Mon,Day)),

    assert(table2(Art,place(NC,NS),Name,price(X,Y),date(Year,Mon,Day))),

    fail.
  indicationB2('2') :-

    removewindow, removewindow, indication('2').
  indicationB2('3') :-

    makewindow(6,95,1," Создание базы B2 по дате поступления ",7,20,10,40),

    framewindow(94), nl,

    write(" Год: "), readint(X),

    write(" Месяц: "), readint(Y),

    write(" День: "), readint(Z),

    characteristick(Art,place(NC,NS),Name,price(Rub,Kop),date(X,Y,Z)),

    assert(table2(Art,place(NC,NS),Name,price(Rub,Kop),date(X,Y,Z))),

    fail.
  indicationB2('3') :-

    removewindow, removewindow, indication('2').
  indicationB2('4') :-

    !.
  indicationB2(_) :-

    makewindow(6,76,1,"Ошибка",8,29,5,22),

    framewindow(75), nl,

    write(" Выберите из меню"), readchar(_),

    removewindow, removewindow, indication('2').
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  adding :-

    get(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)),

    nl, write(" Вы ввели :"),

    nl, show(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)), nl,

    nl, write(" Добавить ? (Yes/No)"), readchar(A),

    A='y',

    assert(characteristick(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)));

    !.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  exists(FN) :-

    existfile(FN);

    makewindow(6,76,1,"Ошибка",10,25,5,30), nl,

    framewindow(75),

    write(" Файл ",FN," не найден!"),

    readchar(_), removewindow,

    removewindow, removewindow, do('1').
  show(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)) :-

        write(" Артикул                           : ",Art),

    nl, write(" Местоположение (Цех, Склад)       : ",NC,", ",NS),

    nl, write(" Наименование товара               : ",Name),

    nl, write(" Стоимость (Рублей:Копеек)         : ",Rub,":",Kop),

    nl, write(" Дата поступления (Год-Месяц-День) : ",Year,"-",Mon,"-",Day).
  get(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)) :-

    write(" Артикул                           : "), readint(Art),

    write(" Местоположение                    : "), nl,

    write("        Цех                        : "), readint(NC),

    write("        Склад                      : "), readint(NS),

    write(" Наименование товара               : "), readln(Name),

    write(" Стоимость                         : "), nl,

    write("        Рублей                     : "), readint(Rub),

    write("        Копеек                     : "), readint(Kop),

    write(" Дата поступления                  : "), nl,

    write("        Год                        : "), readint(Year),

    write("        Месяц                      : "), readint(Mon),

    write("        День                       : "), readint(Day).



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

Открытие БД.
+-------------- Системное меню --------------+

¦  Выберите вариант работы с базами данных:  ¦

¦   1 :-+--------- Загрузить --------+       ¦

¦   2 :-¦      Куда загрузить ?      ¦       ¦

¦  +--------------Загрузка bd-------------+  ¦

¦  ¦                                      ¦  ¦

¦  ¦ Имя файла : data                     ¦  ¦

¦  ¦                                      ¦  ¦

¦  ¦ Загружено                            ¦  ¦

+--¦                                      ¦--+

   +--------------------------------------+
Сохранение БД.
+-------------- Системное меню --------------+

¦  Выберите вариант работы с базами данных:  ¦

¦                                            ¦

¦   1 :-+--------- Сохранить --------+       ¦

¦   2 :-¦      Что сохранить ?       ¦       ¦

¦  +-------------Сохранение b2------------+  ¦

¦  ¦                                      ¦  ¦

¦  ¦ Имя файла : data2                    ¦  ¦

¦  ¦                                      ¦  ¦

¦  ¦ Сохранено                            ¦  ¦

+--¦                                      ¦--+

   +--------------------------------------+
Просмотр.
   
+-------------- Системное меню --------------+

       ¦  Выберите вариант работы с базами данных:  ¦

       ¦                                            ¦

       ¦   1 :-+-------- Просмотреть -------+       ¦

       ¦   2 :-¦      Что просмотреть ?     ¦       ¦

+----------------------- Просмотр bd ----------------------+

¦ Артикул                           : 2                    ¦

¦ Местоположение (Цех, Склад)       : 6, 7                 ¦

¦ Наименование товара               : Vint                 ¦

¦ Стоимость (Рублей:Копеек)         : 0:65                 ¦

¦ Дата поступления (Год-Месяц-День) : 1996-2-45            ¦

¦                                                          ¦

¦Нажмите ENTER для продолжения...                          ¦

+----------------------------------------------------------+
Корректировка.
   
+-------------- Системное меню --------------+

       ¦  Выберите вариант работы с базами данных:  ¦

       ¦                                            ¦

       ¦   1 :-+------- Корректировка ------+       ¦

       ¦   2 :-¦ Способ нахождения записи:  ¦       ¦

+------- Корректировка записи, найденной по названию ------+

¦Старая запись:                                            ¦

¦                                                          ¦

¦ Артикул                           : 1                    ¦

¦ Местоположение (Цех, Склад)       : 5, 6                 ¦

¦ Наименование товара               : Gayka                ¦

¦ Стоимость (Рублей:Копеек)         : 0:45                 ¦

¦ Дата поступления (Год-Месяц-День) : 1996-1-4             ¦

¦                                                          ¦

¦Введите новый вариант:                                    ¦

¦                                                          ¦

¦ Артикул                           :                      ¦

+----------------------------------------------------------+
Удаление.
+-------------- Системное меню --------------+

¦  Выберите вариант работы с базами данных:  ¦

¦                                            ¦

¦   1 :-+ Удаление записи по признаку+       ¦

¦   2 :-¦     Введите признак:       ¦       ¦

¦  +-------- Удаление по артикулу --------+  ¦

¦  ¦ Номер артикула: 1                    ¦  ¦

¦  ¦                                      ¦  ¦

¦  ¦ Готово.                              ¦  ¦

+--¦                                      ¦--+

   +--------------------------------------+
Создание по признакам.
+-------------- Системное меню --------------+

¦  Выберите вариант работы с базами данных:  ¦

¦                                            ¦

¦   1 :-+- Создать базу по признаку -+       ¦

¦   2 :-¦    Какую базу создать ?    ¦       ¦

¦  +------ Создание базы B1 по цене ------+  ¦

¦  ¦                                      ¦  ¦

¦  ¦ Рублей: 0                            ¦  ¦

¦  ¦ Копеек: 45                           ¦  ¦

+--¦                                      ¦--+

   +--------------------------------------+

        +----------------------------+
Добавление.
   
+-------------- Системное меню --------------+

       ¦  Выберите вариант работы с базами данных:  ¦

       ¦                                            ¦

       ¦   1 :-  Загрузить                          ¦

       ¦   2 :-  Сохранить                          ¦

+------------- Добавить запись к главной базе -------------+

¦ Местоположение                    :                      ¦

¦        Цех                        : 5                    ¦

¦        Склад                      : 6                    ¦

¦ Наименование товара               : Shayba               ¦

¦ Стоимость                         :                      ¦

¦        Рублей                     : 1                    ¦

¦        Копеек                     : 2                    ¦

¦ Дата поступления                  :                      ¦

¦        Год                        : 1996                 ¦

¦        Месяц                      : 23                   ¦

¦        День                       : 3                    ¦

+----------------------------------------------------------+


8.    Инструкция пользователя и решение контрольных примеров.
Решение контрольных примеров основывается на том, что было сделано в отладке программы и может быть изучено по вышестоящей части (7.).
Для работы с программой необходимо выбирать из предлагаемых меню пункты путем нажатия на соответствующие цифры. При появлении подменю повторить операцию, при запросе на имя файла - ввести строку, определяющую имя файла, при запросе на символ, нажать соответствующую клавишу на клавиатуре (не забывайте, пожалуйста об языковой раскладке клавиатуры и состоянии клавиши
CAPSLOCK). Также в нескольких процедурах производится подтверждение (Yes/No - Да/Нет) - необходимо переключиться на английскую раскладку и нажать соответствующую клавишу в нижнем регистре.

9.    Заключение.
Язык программирования Пролог безусловно может быть использован для написания подобных информационно-справочных систем, так как он позволяет легко и быстро создавать логические запросы к базам данных, что безусловно выделяет его среди остальных языков программирования.


10.Список литературы.
1. К. Кларк. “Введение в логическое программирование на
Micro Prologe
”.
2. К. Хоггер. “Введение в логическое программирование”.

1. Статья Физиологическое развитие и школьная успеваемость
2. Реферат на тему Frankenstein Notes Essay Research Paper FrankensteinMary Shelley1831Observations1
3. Контрольная работа Организационная культура персонала. Переподготовка рабочих кадров
4. Диплом на тему Регулювання діяльності комерційних банків в ринкових умовах
5. Реферат на тему Текущая проблема терроризма и ее решение на государственном уровне
6. Реферат Московский Ранний Классицизм
7. Диплом Финансовое планирование в некоммерческих организациях на примере ГАОУ СПО РТ Нефтекамский музыкальный
8. Реферат Становление культуры России
9. Реферат Отраслевая структура экономики России
10. Реферат Внешняя политика ПетраI. Рождение Российской империи