Главная » Каталог    
рефераты Разделы рефераты
рефераты
рефератыГлавная

рефератыБиология

рефератыБухгалтерский учет и аудит

рефератыВоенная кафедра

рефератыГеография

рефератыГеология

рефератыГрафология

рефератыДеньги и кредит

рефератыЕстествознание

рефератыЗоология

рефератыИнвестиции

рефератыИностранные языки

рефератыИскусство

рефератыИстория

рефератыКартография

рефератыКомпьютерные сети

рефератыКомпьютеры ЭВМ

рефератыКосметология

рефератыКультурология

рефератыЛитература

рефератыМаркетинг

рефератыМатематика

рефератыМашиностроение

рефератыМедицина

рефератыМенеджмент

рефератыМузыка

рефератыНаука и техника

рефератыПедагогика

рефератыПраво

рефератыПромышленность производство

рефератыРадиоэлектроника

рефератыРеклама

рефератыРефераты по геологии

рефератыМедицинские наукам

рефератыУправление

рефератыФизика

рефератыФилософия

рефератыФинансы

рефератыФотография

рефератыХимия

рефератыЭкономика

рефераты
рефераты Информация рефераты
рефераты
рефераты

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


Задание № 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. К. Хоггер. “Введение в логическое программирование”.
ГОСУДАРСТВЕННЫЙ КОМИТЕТ РОССИЙСКОЙ
ФЕДЕРАЦИИ
ПО ВЫСШЕМУ ОБРАЗОВАНИЮ
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ  ИНСТИТУТ
РАДИОТЕХНИКИ, ЭЛЕКТРОНИКИ И АВТОМАТИКИ
( ТЕХНИЧЕСКИЙ 
УНИВЕРСИТЕТ )
Факультет
Кибернетики.
Кафедра
интеллектуальных
технологий и систем.
Курсовая работа.
Тема: "Разработка информационно - справочной
системы"
по дисциплине "Логическое программирование".
(III семестр)
                           Задание:              11
Студент:             Пакостина Александра
Группа:               ИР-1-95
Руководитель:   доцент
кафедры Холкин Игорь Иванович         
1996
Теория информационно справочная система создание базы данных для обращения граждан. Разработка базы данных и интерфейса информационно справочной системы Производство. Понятие информационно справочной системы их виды и примеры конкретных систем. Понятие про информационно справочные системы и их программная реализация. Кто из ученых занимался разработкой информационно справочной систмы. Разработка информационно справочной системы экономическая часть. Разработка проекта информационно справочной системы начальника. Разработка информационно справочной системы цель и назначение. Реферат на тему разработка информационно справочной системы. Готовые темы рефераты Информационно справочные документы. Информационно справочная система в человеческом обществе. Технология разработки информационно справочных систем. Конкретные информационно справочные системы реферат. Информационно справочные системы основанные на эвм. Реферат на тему информационно справочные документы.
рефераты Рекомендуем рефератырефераты

     
Рефераты @2011