Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет пролог.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
246.78 Кб
Скачать

5.2 Листинг задачи внешней базы данных

domains

p_tovar = string

p_price = real

p_kolvo = integer

db_selector = xdb

record = dbrecord(p_tovar, p_price, p_kolvo)

predicates

repeat

do_mbase

assert_database

clear_database

menu

process(integer)

error

goal

do_mbase.

clauses

repeat.

repeat:- repeat.

assert_database:-!.

clear_database.

clear_database:-!.

do_mbase:-

clear_database,

assert_database,

makewindow(1,7,7,"Склад " ,0,0,25,80),

menu.

menu:-

repeat,

clearwindow,

write(" ======================================================="),nl,

write(" | |"),nl,

write(" | 1. Занесение новой информации о товаре |"),nl,

write(" | 2. Удаление записи |"),nl,

write(" | 3. Редактирование записи |"),nl,

write(" | 4. Просмотр содержимого базы данных |"),nl,

write(" | 5. Открыть базу |"),nl,

write(" | 6. Создать базу |"),nl,

write(" | 7. Выход из программы |"),nl,

write(" | |"),nl,

write(" ======================================================="),nl,

nl,

write(" Выберите номер пункта меню: 1..7 : "),

readint(Choice),nl,

process(Choice),

Choice = 7,

!.

process(1):-

makewindow(2,7,7,"Добавить запись о товаре",2,20,18,58),

shiftwindow(2),

write("Наименование: "),

readln(P_tovar),

write("Стоимость: "),

readreal(P_price),

write("Количество: "),

readint(P_kolvo),

chain_insertz(xdb,"Adress",record,dbrecord(P_tovar,P_price,P_kolvo),Ref),

write(P_tovar," помещен в базу данных."),

nl,!,

write("Нажмите пробел. "),

readchar(_),

removewindow.

process(2):-

makewindow(3,7,7,"Удаление записи",12,20,7,40),

shiftwindow(3),

write("Наименование товара: "),

readln(P_tovar),

chain_terms(xdb,"Adress",record,dbrecord(P_tovar,_,_),Ref),

term_delete(xdb,"Adress",Ref),

fail;

write("Запись удалена"), nl, !,

write("Нажмите пробел."),

readchar(_),

removewindow.

process(3):-

makewindow(3,7,7,"Редактирование записи о товаре по наименованию ",0,0,25,80),

shiftwindow(3),

write("Наименование редактируемого товара: "),

readln(P_tovar),nl,

write("Сведения о новом товаре"),nl,

write("Наименование: "),

readln(Fam),

write("Стоимость: "),

readreal(Adress),

write("Количество: "),

readint(Phone),

chain_terms(xdb,"Adress",record,dbrecord(P_tovar,_,_),Ref),

term_replace(xdb,record,Ref,dbrecord(Fam,Adress,Phone)),

nl,!,

nl,write("Нажмите пробел"),

readchar(_),

removewindow.

process(4):-

makewindow(6,7,7,"Просмотр содержимого базы данных ",0,0,25,80),

shiftwindow(6),

chain_terms(xdb,"Adress",record,dbrecord(P_tovar,P_price,P_kolvo),Ref),nl,

nl,write(" Наименование : ",P_tovar, " Стоимость: ",P_price," Количество: ",P_kolvo),

nl,fail,

readchar(_).

process(4):-

nl,!,

readchar(_),

removewindow.

process(7):-

write("Закончить работу с программой? (д/н)"),

readln(Answer),

frontchar(Answer,'д',_), !,

db_flush(xdb),

db_close(xdb).

process(6):-

db_delete("xdata.db", in_file),

db_create(xdb, "xdata.db", in_file),

makewindow(8,7,7,"База данных создана!",12, 20, 7, 40),nl,

shiftwindow(8),

write("Нажмите пробел"),

readchar(_),

removewindow.

process(5):-

db_open(xdb, "xdata.db", in_file),

makewindow(9,7,7,"База данных успешно загружена!",10,30,7,40),nl,

shiftwindow(9),

write("Нажмите пробел"),

readchar(_),

removewindow.

process(Choice):-

Choice<1,error.

process(Choice):-

Choice>7,error.

error:-

write("Укажите число от 1 до 7."),

write("(Нажмите пробел для продолжения )"),

readchar(_).

6. Результат работы программы

6.1 При запуске программы на экран выводится главная форма (рис 1).

Рисунок 1

6.2 Пункт меню «Занесение новой информации о товаре» отображает форму изображенную на рисунке 2.

Рисунок 2

6.3 Пункт меню «Удаление информации» отображает форму изображенную на рисунке 3.

Рисунок 3

6.4 Пункт меню «Редактирование записи» отображает форму изображенную на рисунке 4.

Рисунок 4

6.5 Пункт меню «Просмотр содержимого базы данных» отображает форму изображенную на рисунке 5.

Рисунок 5

6.6 Пункт меню «Создать базу» отображает форму изображенную на рисунке 6.

Рисунок 6

6.7 Пункт меню «Выход из программы» отображает форму изображенную на рисунке 7.

Рисунок 7

7. Список используемой литературы

1. Адаменко А., Кучуков А. «Логическое программирование и Turbo Prolog:»: учебно-методическое пособие - Изд-во БХВ-Петербург, 2003. - 109 с.

2. Стерлинг Л., Шапиро Э. «Искусство программирования на языке Пролог »: Изд-во МИР, 1990. – 256с.

3. Малпас Дж. «Реляционный язык Пролог и его применение » - Изд-во Наука, 1990. – 158с.

15