:-dynamic record/6.
:- discontiguous process/1.
record(1,'Хлеб','15 января 2017',20,22,'Хлебзавод №1').
record(2,'Батон','14 января 2017',20,25,'Хлебзавод №2').
record(3,'Чай Greenfield','01 января 2018',60,85,'Greenfield ltd').
record(4,'Чай Lipton','01 июня 2018',40,60,'Lipton International').
record(5,'Молоко','01 февраля 2017',60,65,'ЗАО Хладокомбинат').
record(6,'Кефир','27 января 2017',30,50,'ЗАО Хладокомбинат').
record(7,'Масло','04 февраля 2017',10,80,'ООО Экомилк').
record(8,'Шоколад Milka','01 сентября 2017',75,65,'Kraft Foods Ltd').
record(9,'Кофе Jakobs','1 июня 2018',40,60,'Kraft Foods Ltd').
start:-
write('--------------------------------------------'),nl,
write('--------БД Магазина продуктов питания----------'),nl,
write('--------------------------------------------'),nl,nl,menu.
menu:-
write('Введите номер 1..7'),nl,
write('1. Добавить запись в БД'),nl,
write('2. Удалить запись из БД'),nl,
write('3. Поиск по ID'),nl,
write('4. Просмотр всех записей'),nl,
write('5. Поиск по производителю'),nl,
write('6. Поиск по цене'),nl,
write('7. Завершение работы'),nl,
read(C),nl,
process(C),!.
process(1):-
write('-----Добавление записи-----'),nl,nl,
write('ID записи: '),
read(ID),
write('Наименование товара: '),
read(NAME),
write('Срок годности: '),
read(SROK),
write('Количество товара на складе: '),
read(KOL),
write('Цена за 1 шт.: '),
read(PRICE),
write('Производитель: '),
read(PROIZV),
assertz(record(ID,NAME,SROK,KOL,PRICE,PROIZV)),nl,nl,
write('Запись добавленна!'),nl,nl,menu.
process(2):-
write('------Удаление записи------'),nl,nl,
write('Введите ID записи: '),
read(ID),
A = record(ID,_,_,_,_,_,_,_),
retractall(A),
write('Запись удалена!'),nl,nl,nl,menu.
process(3):-
write('------Поиск по ID------'),nl,nl,
write('Введите ID записи: '),nl,
read(ID),nl,
write('------------------'),
record(ID,NAME,SROK,KOL,PRICE,PROIZV),
nl,write(' ID: '),write(ID),
nl,write(' Наименование товара: '),write(NAME),
nl,write(' Срок годности: '),write(SROK),
nl,write(' Количество товара на складе: '),write(KOL),
nl,write(' Цена за 1 шт.: '),write(PRICE),
nl,write(' Производитель: '),write(PROIZV),
nl,write('------------------'),
nl,nl,!,menu.
process(4):-write('------Просмотр всех данных------'),nl,nl,
record(ID,NAME,SROK,KOL,PRICE,PROIZV),
nl,write(' ID: '),write(ID),
nl,write(' Наименование товара: '),write(NAME),
nl,write(' Срок годности: '),write(SROK),
nl,write(' Количество товара на складе: '),write(KOL),
nl,write(' Цена за 1 шт.: '),write(PRICE),
nl,write(' Производитель: '),write(PROIZV),
nl,write('------------------'),
nl,nl,fail;
menu.
process(5):-
write('------Поиск по Производителю------'),nl,nl,
write('Поиск по производителю: '),nl,
read(PROIZV),nl,
write('------------------'),
record(ID,NAME,SROK,KOL,PRICE,PROIZV),
nl,write(' ID: '),write(ID),
nl,write(' Наименование товара: '),write(NAME),
nl,write(' срок годности: '),write(SROK),
nl,write(' Количество товара на складе: '),write(KOL),
nl,write(' Цена за 1 шт.: '),write(PRICE),
nl,write(' Производитель: '),write(PROIZV),
nl,write('------------------'),
nl,nl,!,menu.
process(6):-
write('------Просмотр всех данных------'),nl,nl,
write('Минимальная цена'),nl,
read(MIN),nl,
write('Максимальная цена'),nl,
read(MAX),nl,
record(ID,NAME,SROK,KOL,PRICE,PROIZV),
PRICE>MIN, PRICE<MAX,
nl,write(' ID: '),write(ID),
nl,write(' Наименование товара: '),write(NAME),
nl,write(' Срок годности: '),write(SROK),
nl,write(' Количество товара на складе: '),write(KOL),
nl,write(' Цена за 1 шт.: '),write(PRICE),
nl,write(' Производитель: '),write(PROIZV),
nl,write('------------------'),
nl,nl,fail,menu.
process(7):-
write('Вы уверенны, что хотите завершить работу? (y/n)'),
read(A),esc(A).
esc(A):-
A == 'y',halt.
esc(A):-
A == 'n',nl,start.
process(C):-
C<1,error.
process(C):-
C>6,error.
error:-write('ERROR! enter number 1..9'),nl,nl,menu.