Создание, управление и использование внутрен­них баз данных в Прологе; их использование при про­ектировании программ

Страницы работы

Содержание работы

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Кафедра Экономической информатики

Лабораторная работа №3 по интеллектуальным информационным системам

Выполнили:

Студенты группы ФБИ-62

Старостина Е.А., Сахарова Ю.Д.

Преподаватель: Авдеенко Т.В.

                            Васильев М.А.

Новосибирск

2009


Цель работы

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

Задание

Измените свое задание из лабораторной рабо­ты № 2 таким образом, чтобы все основные факты вашей программы хра­нились во внутренней базе данных (считывались из файла, обрабатывались программой и снова записывались в файл). При этом введите диалог с поль­зователем для добавления и удаления фактов в базу данных, просмотра содержимого базы данных и т.д.

domains

        name, sex=string.

        number, cost, from, to=integer.

database - toy

       nondeterm игрушка (number, name)

database - price

       nondeterm цена (number, cost).

database - gender

       nondeterm пол (number, sex).

database - age

       nondeterm возрастное_ограничение (number, from, to).

predicates

       nondeterm  программа().

       nondeterm  игра(integer).

       nondeterm repeat.

Clauses

repeat.

repeat:- repeat.

программа():- repeat, nl,

write("Спавочно-информацтонная система магазина игрушек \n"),

write ("\n"),

write ("Вы можете получить следующюю информацию о нашем магазине: \n"),

write ("1. Вся информация о игрушках магазина \n"),

write ("2. Цена игрушки \n"),

write ("3. Поиск подходящей игрушки по стоимости \n"),

write ("4. Список наиболее дорогих игрушек  \n"),

write ("5. Поиск игрушки по заданным параметрам \n"),

write ("6. Загрузить базу фактов \n"),

write ("7. Добавить новые данные \n"),

write ("8. Удалить данные \n"),

write ("9. Сохранить данные \n"),

write ("\n"),

readint(X),

игра(X), fail.

игра(1) :-

write("Вы выбрали запрос №1 \n"),

write ("Вы получите подробную информацию обо всех игрушках \n"),

write("\n"),

игрушка(X1,X2), возрастное_ограничение(X1,X3,X4), пол(X1,X5), цена(X1,X6),

write("Номер игрушки    ", X1,  "\n", "Название игрушки   ", X2, "\n", "Игрушка для детей от ", X3, "\n", "до   ",X4, "\n", "Игрушка для мальчиков(М)/Девочек(Ж)  ",X5, "\n", "Стоимость игрушки   ", X6, "\n"),

write("\n").

игра(2) :-

write("Вы выбрали запрос №2 \n"),

write ("Вы получите подробную информацию о стоимости игрушки \n"),

write("\n"),

игрушка(X1,X2), цена(X1,X3),

write("Номер игрушки", X1, "\n", "Название игрушки", X2, "\n", "Стоимость", X3, "\n"),

write("\n").

игра(3) :-

write("Вы выбрали запрос №3 \n"),

write ("Вы подбираете игрушку по стоимости \n"),

write("\n"),

write("Введите цену, которую не должна превышать игрушка \n"),

readint(S),

цена(X1,X2), X2=S, игрушка(X1,X3),

write("Стоимость", X2, "\n", "Номер игрушки", X1, "\n", "Название", X3, "\n"),

write("\n").

игра(4) :-

write("Вы выбрали запрос №4 \n"),

write ("Вы хотите узнать о наиболее дорогих угрушках \n"),

write("\n"),

write("Введите цену наиболее дорогой игрушки \n"),

readint(S),

цена(X1,X2), X2>=S-100, игрушка(X1,X3),

write("Стоимость", X2, "\n", "Номер игрушки", X1, "\n", "Название", X3, "\n"),

write("\n").

игра(5) :-

write("Вы выбрали запрос №5 \n"),

write ("Вы хотите найти игрушку по параметрам \n"),

write("\n"),

write("Пол ребёнка? (М/Ж) \n"),

readln(P),

write("Возраст? \n"),

readint(A),

write("Стоимость до \n"),

readint(S),

игрушка(X1,X2), возрастное_ограничение(X1,X3,X4), X3<=A, пол(X1,X5), X5=P, цена(X1,X6), X6<S,

write("Номер игрушки    ", X1,  "\n", "Название игрушки   ", X2, "\n", "Игрушка для детей от ", X3, "\n", "до   ",X4, "\n", "Игрушка для мальчиков(М)/Девочек(Ж)  ",X5, "\n", "Стоимость игрушки   ", X6, "\n"),

write("\n").

Игра(6):-

write("Вы выбрали запрос №6 \n"),

write("Загрузка базы фактов \n"),

write("\n"),

consult ("C://program files//prolog//examples", toy),

consult ("C://program files//prolog//examples", price),

consult ("C://program files//prolog//examples", gender),

consult ("C:/program files//prolog//examples", age),

write("База фактов успешно загружена \n").

игра(7):-

write("Вы выбрали запрос №7 \n"),

write("Вы сможете добавить новую игрушку \n"),

write("\n"),

write("Введите номер игрушки \n"),

readint(A),

write("Введите название игрушки \n"),

readln(B),

write("Введите цену игрушки \n"),

readint(C),

write("Введите для кого предназначена игрушка М/Ж \n"),

readln(D),

write("Введите от скольки лет игрушка \n"),

readint(E),

write("Введите до скольки лет игрушка \n"),

readint(F),

assertz(игрушка (A, B), toy),

assertz(цена (A,C), price),

assertz(пол (A,D), gender),

assertz(возрастное_ограничение  (A,E,F), age),

write("Вы добавили новую игрушку \n").

игра(8):-

write("Вы выбрали запрос №8 \n"),

write("Вы можете удалить игрушку \n"),

write("\n"),

write("Введите номер игрушки \n"),

readint(A),

retract(игрушка (A, _), toy),

retract(цена(A,_), price),

retract(пол(A,_), gender),

retract(возрастное_ограничение  (A,_,_), age),

write("Вы удалили игрушку \n в случае ошибки, выйдите не сохраняясь").

игра(9):-

write("Вы выбрали запрос №9 \n"),

write("Сохранение данных \n"),

write("\n"),

save ("C://program files//prolog//examples", toy),

save ("C://program files//prolog//examples", price),

save ("C://program files//prolog//examples", gender),

save ("C:/program files//prolog//examples", age),

write("Данные успешно сохранены \n").

goal

программа().

Диалог

Рис. 1 Опции

Рис. 2 Ввод новой игрушки

Схема поиска решений нахождения игрушки по параметрам:

Допустим, нам необходимо найти игрушку для мальчика 5 лет, стоимостью не выше 500 рублей.

1.  A :- B(X), C(X, Y), D(Y, Z).

2.  B(M)

3.  C(M,5)

4.  D(5,500)

Дерево поиска решений будет иметь вид:

Похожие материалы

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