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

5 Приложение

5.1 Листинг задачи внутренней базы данных

domains

p_name=string

p_price,p_am=real

database magazin

dsprav(p_name,p_price,p_am)

predicates

repeat

do_mbase

assert_database

clear_database

menu

process(integer)

sprav(p_name,p_price,p_am)

error

goal

do_mbase.

clauses

repeat.

repeat:- repeat.

sprav("Хлеб",18.0,20.0).

sprav("Конфеты",80.0,3.0).

assert_database:-

sprav(P_name,P_price,P_am),

assertz(dsprav(P_name,P_price,P_am)),fail.

assert_database:-!.

clear_database :-

retract(dsprav(_,_,_)),

fail.

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(" * *"),nl,

write(" * * * * * * * * * * * * * * * * * * * * * * * * * * * *"),nl,

nl,

write(" Выберите номер пункта меню: 1, 2, 3, 4 или 5 : "),

readint(Choice),nl,

process(Choice),

Choice = 5,

!.

process(1):-

makewindow(2,7,7,"Добавить данные в базу",2,20,18,58),

shiftwindow(2),

write("Товар: "),

readln(P_name),

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

readreal(P_price),

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

readreal(P_am),

assertz(dsprav(P_name,P_price,P_am)),

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

nl,!,

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

readchar(_),

removewindow.

process(2):-

makewindow(3,7,7,"Удаление из базы",10,30,7,40),

shiftwindow(3),

write("Задайте название товара: "),

readln(P_name),

retract(dsprav(P_name,_,_)),

write(P_name," успешно удален из базы"), nl, !,

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

readchar(_),

removewindow.

process(3):-

makewindow(4,7,7," Просмотр информации по товару ",0,0,25,80),

shiftwindow(4),

write("Задайте наименование товара: "),

readln(P_name),

dsprav(P_name,P_price,P_am),nl,

nl,write(" Товар: ",P_name, " Стоимость: ",P_price, "Количество: ",P_am),

nl,!,

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

readchar(_),

removewindow.

process(3):-

makewindow(5,7,7," Ошибка ",14,7,5,60),

shiftwindow(5),

write("Такого товара нет в базе данных ."),nl,

nl,!,

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

readchar(_),

removewindow,

shiftwindow(1).

process(4):-

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

shiftwindow(6),

dsprav(P_name,P_price,P_am),nl,

nl,write(" Товар : ",P_name, " Стоимость: ",P_price," Количество: ",P_am),

nl,fail,

readchar(_).

process(4):-

nl,!,

readchar(_),

removewindow.

process(5):-

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

readln(Answer),

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

process(Choice):-

Choice<1,error.

process(Choice):-

Choice>5,error.

error:-

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

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

readchar(_).