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

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

Задание
№ 11



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



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



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



Группа ИР-1-95.


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


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



















































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



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




Название



Цена



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



артикула



№ цеха




№склада



детали



руб



коп



год



месяц



число



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


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


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


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


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


загрузки;


сохранения;


просмотра;


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



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


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


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





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


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


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


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


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


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


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


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



Руководитель:
Холкин И.И.
­­____________


Студент:
Пакостина А.В.
____________



Описание


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


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


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


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


¦
¦


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


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


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


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


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


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


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


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


¦
¦


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


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


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

в зависимости
от выбора
пользователя.
Do(‘8’)
завершает
работу с системой.


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


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

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


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


¦
¦


¦
1 :- В bd ¦


¦
2 :- В b1 ¦


¦
3 :- В b2 ¦


¦
4 :- Меню ¦


¦
¦


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


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


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


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


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


¦
¦


¦
1 :- bd ¦


¦
2 :- b1 ¦


¦
3 :- b2 ¦


¦
4 :- Меню ¦


¦
¦


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


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


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


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


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


¦
¦


¦
1 :- bd ¦


¦
2 :- b1 ¦


¦
3 :- b2 ¦


¦
4 :- Меню ¦


¦
¦


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


+----------------------------+Предложения
See(‘1’)
и
See(‘2’)

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


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


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


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


Удаление
записи по признакам
(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)),


<

br /> 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).


Отладка
программы.
Открытие
БД.
+--------------
Системное меню
--------------+


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


¦
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
¦


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


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


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


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

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

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



17




ГОСУДАРСТВЕННЫЙ
КОМИТЕТ РОССИЙСКОЙ
ФЕДЕРАЦИИ



ПО
ВЫСШЕМУ ОБРАЗОВАНИЮ


МОСКОВСКИЙ
ГОСУДАРСТВЕННЫЙ
ИНСТИТУТ



РАДИОТЕХНИКИ,
ЭЛЕКТРОНИКИ
И АВТОМАТИКИ



( ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ
)


Факультет
Кибернетики.



Кафедра
интеллектуальных



технологий
и систем.


Курсовая
работа.


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



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


(III
семестр)







Задание:
11



Студент:

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



Группа:
ИР-1-95



Руководитель:
доцент
кафедры Холкин
Игорь Иванович



1996

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

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

Слов:8787
Символов:54245
Размер:105.95 Кб.