Лабораторная работа динамические базы данных (продолжение)




Скачать 48.27 Kb.
НазваниеЛабораторная работа динамические базы данных (продолжение)
Дата21.12.2012
Размер48.27 Kb.
ТипЛабораторная работа
Лабораторная работа

ДИНАМИЧЕСКИЕ БАЗЫ ДАННЫХ (продолжение)

Цель работы – овладеть приемами создания и ведения реляционных баз данных на Прологе.

Задание. Разработать программу, реализующую компьютерный вариант телефонного справочника. В программе должны быть реализованы следующие операции:


  1. Получение информации о телефонном номере по фамилии человека.

  2. Получение информации о фамилии абонента по телефонному номеру.

  3. Добавление новой записи в телефонную базу.

  4. Изменение существующей в телефонной базе записи.

  5. Удаление записи из телефонной базы.


При разработке программы учесть следующее:

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

2. При запуске программы появляется меню, в котором указаны действия по работе с базой данных (см. выше). При работе с меню необходимо учесть, что:

1) пользователь может ошибиться и нажать клавишу, не соответствующую ни одной из пяти указанных операций;

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

3) выход из программы должен происходить без выполнения действий и при этом факты телефонной базы должны быть сохранены из оперативной памяти в файл на диске, а оперативная память очищена от ненужных фактов.


Указания к выполнению задания.


Введем следующие описания.

DOMAINS

name, number = String /* фамилия и тел. номер будут храниться в виде строк*/

file=f /*файловый домен будет использоваться для считывания с диска и записи на диск телефонной базы */

DATABASE

phone(name, number) /* описание предиката внутренней базы данных */


PREDICATES

name_phone(name, number) /* предикат для нахождения номера телефона по фамилии*/

phone_name(name, number) /* предикат для нахождения фамилии по номеру телефона*/

process(char) /*предикат для реализации выполнения соответствующего пункта меню*/

menu /* предикат для реализации вывода меню и обработки выбора пункта меню*/

start /* этот предикат проверяет наличие файла с телефонной базой на диске и, если такой файл существует, загружает факты из нее во внутреннюю базу данных, а если его не было, то создает этот файл*/


Рассмотрим правила, реализующие ряд вышеприведенных требований к программе.

  1. Организация меню.


menu:– clearwindow, /* очистка текущего окна */

write("1– Получение телефонного номера по фамилии "),nl,

write("2 — Получение фамилии абонента по номеру телефона "),nl,

write("3 — Добавление новой записи в телефонную базу."),nl,

write("4 — Изменение номера абонента"),nl,

write("5 — Удаление записи из телефонной базы"),nl,

write("0 — Выход из программы"),nl,

readchar(C), /* читаем символ с клавиатуры */

process(C). /* вызываем выполнение соответствующего пункта меню */


  1. При ошибочном нажатии клавиши срабатывает следующее правило:


process (_):– menu. /* отображается меню еще раз */

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

process ('1'):–

write("Введите фамилию"), nl,

readln(Name),

name_phone(Name, Phone), /* вызывается предикат, который помещает

в переменную Phone телефонный номер,

соответствующий фамилии Name или сообщение

об отсутствии информации */

write("Номер телефона: ",Phone),

readchar(_), /* ожидание нажатия любой клавиши */

menu. /* возвращаемся в меню */

name_phone(Name,Phone):–

phone(Name,Phone),!.

name_phone(_,"Нет информации о телефонном номере").

/* если нужного факта во внутренней базе данных

не нашлось, то выводится сообщение об его отсутствии */


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


process ('3'):–

write("Введите фамилию"),nl,

readln(Name),

write("Введите номер телефона"),nl,

readln(Phone),

assert(phone(Name,Phone)), /*добавление факта во внутреннюю бд*/

menu.

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

process ('4'):–

clearwindow,

write("Введите фамилию"),nl,

readln(Name),

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

readln(Phone),

retract(phone(Name,_)), /* удаление прежней информации из

внутренней базы данных */

assert(phone(Name,Phone)), /* добавление новой информации

в телефонную базу */

menu.


  1. Выход из программы.


process ('0'):–

save("phones.ddb "), /* сохранение телефонной базы в файл */

retractall(_)./* удаление всех фактов из внутренней бд*/



  1. В начале работы программы факты из телефонной базы, хранящейся в файле на диске, должны загружаться во внутреннюю базу данных, в случае, если такой файл существует. Для начала работы программы введем предикат start.

Примечание. Предикат existfile проверяет существование файла с указанным именем.


start:–

existfile("phones.ddb"),!,

consult("phones.ddb "), /* загрузка фактов во внутреннюю бд*/

menu.

start:–

menu. /* если файла еще нет, просто вызывается меню */



  1. Описать предикаты для выполнения второго и пятого пунктов меню.

  2. Представить полный листинг программы.

Похожие:

Лабораторная работа динамические базы данных (продолжение) iconЛабораторная работа динамические базы данных
Цель работы – овладеть приемами создания и ведения реляционных баз данных на Прологе
Лабораторная работа динамические базы данных (продолжение) iconЛабораторная работа № Создание простейшей базы данных 8 Лабораторная работа № Создание базы данных «Библиотека»
База данных – это организованная структура, предназначенная для хранения информации. В современных базах данных хранятся не только...
Лабораторная работа динамические базы данных (продолжение) iconВопросы к экзамену по курсу "Сетевые базы данных"
Понятия: база данных, система управления базами данных, банк данных, словарь данных, администратор базы данных
Лабораторная работа динамические базы данных (продолжение) iconЛабораторная работа №1 Создание базы данных Access
Создать первую таблицу, согласно заданию из приложения 1, с использованием мастера
Лабораторная работа динамические базы данных (продолжение) iconЛабораторная работа ╧ 1
Первая часть цикла лабораторных работ к курсу "Базы данных и знаний" изучению основных принципов работы с субд access
Лабораторная работа динамические базы данных (продолжение) icon«Базы данных» Разработал докт физ мат наук, Ш. Т. Ишмухаметов Содержание
Лабораторная работа Выполнение расчетов с использованием программирования в среде Visual Basic for Applications (vba). 8
Лабораторная работа динамические базы данных (продолжение) iconЛабораторная работа №1. Создание файла базы данных и таблицы в среде
Субд ms access, об основных объектах, с которыми работает пользователь в среде ms access
Лабораторная работа динамические базы данных (продолжение) iconИнформационные системы, использующие базы данных: оборудование, программное обеспечение, данные, люди
Информационная система это нечто большее, чем просто данные или данные в сочетании с программным обеспечением базы данных. Полная...
Лабораторная работа динамические базы данных (продолжение) iconСтатья посвящена описанию речевой базы данных русского языка, разработанной в Институте системного анализа ран при поддержке Российского Фонда Фундаментальных Исследований
Рассматриваются вопросы, связанные с разработкой структуры базы данных, подбором текстовых материалов, вводом и разметкой речевых...
Лабораторная работа динамические базы данных (продолжение) iconПонятия о базах данных и системах управления ими. Классификация баз данных. Основные средства обработки данных базы данных являются одним из основных
Базы данных являются одним из основных компонентов современных информационных систем
Разместите кнопку на своём сайте:
Библиотека


База данных защищена авторским правом ©lib.znate.ru 2014
обратиться к администрации
Библиотека
Главная страница