Скачайте в формате документа WORD

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

Задание № 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.   Базы данных и способы их представления.
Общая концепция теории простых баз данных подразумевает наличие некоторого множества таблиц и являющихся, собственно, базой данных, имеющей определенный идентификатор (имя). Каждая таблица состоит из Работ с базой данных предполагает в себе возможность работать с записями (либо изменять структуру таблиц).
В языке программирования Пролог база данных описывается в отдельном разделе, именуемом database. Таких разделов может быть несколько в одной программе и каждый из них, если они действительно представляют собой разные БД, должны иметь разные имена. В случае отсутствия имени у базы данных, ей дается имя по молчанию - dbasedom.
Работу с загружаемыми базами данных в Прологе реализуют следующие стандартные предикаты: В данной работе объявлена главная база данных

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

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

ж ж

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

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

ж 3 :-а Просмотреть ж

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

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

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

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

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

ж ж

жа <------------------| |------------------ ж

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

4.   Разработка структуры программы.
Системное меню вызывает только предикаты do (<режим>), определенные для каждой из необходимых задач (номер режим полностью совпадает с нумерацией в главном меню). Каждая из реализаций этого предиката выводит меню, либо сразу вызывает соответствующие процедуры:

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

5.1. Загрузка базы данных (Open).
В do(СТ) имеется меню:
<+--------- Загрузить --------+

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

ж ж

ж 1 :-а В bd ж

ж 2 :-а В b1 ж

ж 3 :-а В b2 ж

ж 4 :-а Меню ж

ж ж

ж <------| |------ ж

+----------------------------+
процедура Open имеет четыре реализации, для каждого из вариантов работы. Для любого случая перед загрузкой базы данных проверяется существование файла с введенным именем (предикат exists). Для загрузки базы данных используется стандартный предикат

5.2. Сохранение (Store).
В do(СТ) ìåíþ:

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

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

ж ж

ж 1 :-а

ж 2 :-а

ж 3 :-а

ж 4 :-а Меню ж

ж ж

ж <------| |------ ж

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

5.3. Просмотр (See).
В do(СТ) меню:

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

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

ж ж

ж 1 :-а

ж 2 :-а

ж 3 :-а

ж 4 :-а Меню ж

ж ж

ж <------| |------ ж

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

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

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

5.6. Создания базы по признакам (Indication).
Indication(СТ) создает базу

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

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

% <%

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

% ИР-1-95. <%

%а Задание 11. <%

% <%

<%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


domains


rubley, kopeek = integer

datedom = date(year, month, day)


database - bd



database - b1



database - b2



predicates


do(char)

del(char)


goal



clauses




readchar(X), do(X).


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


do('1') :

removewindow, go, !.


do('2') :

removewindow, go, !.


do('3') :

removewindow, go, !.


do('4') :

removewindow, go, !.


do('5') :

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

removewindow, go, !.


do('6') :

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

removewindow, go, !.


do('7') :

removewindow, go, !.


do('8') :-

X='y', exit;

removewindow, go, !.


do(_) :-

removewindow, go.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%






removewindow, removewindow, do('1').


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



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


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



removewindow, removewindow, do('2').


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


readchar(_), nl, fail.



readchar(_), nl, fail.



readchar(_), nl, fail.




removewindow, removewindow, do('3').


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


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

removewindow, removewindow, do('4'), !.



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

removewindow, removewindow, do('4'), !.




removewindow, removewindow, do('4').


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


del('1') :

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

removewindow,removewindow, do('5'), !.


del('1') :-

removewindow, removewindow, removewindow, do('5').


del('2') :

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

removewindow,removewindow, do('5'), !.


del('2') :-

removewindow, removewindow, removewindow, do('5').


del('3') :

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


del('3') :

removewindow,removewindow, do('5'), !.


del('4') :

del('_') :-

removewindow, removewindow, do('5').


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


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

removewindow, removewindow, do('6'), !.


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

removewindow, removewindow, do('6'), !.



removewindow, removewindow, do('6').







а




removewindow, removewindow, indication('1').









removewindow, removewindow, indication('2').


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


A='y',


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


readchar(_), removewindow,

аremovewindow, removewindow, do('1').


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



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. К. Хоггер. Введение в логическое программирование.