|
Разработка информационно-справочной системы
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%
see('1') :-
makewindow(5,95,1," Просмотр bd ",7,10,9,60),
framewindow(94), nl,
characteristick(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)),
show(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)),
nl,nl,write("Нажмите ENTER для продолжения..."),
readchar(_), nl, fail.
see('1') :-
removewindow, removewindow, do('3'), !.
see('2') :-
makewindow(5,95,1," Просмотр b1 ",7,10,9,60),
framewindow(94), nl,
table1(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)),
show(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)),
nl,nl,write("Нажмите ENTER для продолжения..."),
readchar(_), nl, fail.
see('2') :-
removewindow, removewindow, do('3'), !.
see('3') :-
makewindow(5,95,1," Просмотр b2 ",7,10,9,60),
framewindow(94), nl,
table2(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)),
show(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)),
nl,nl,write("Нажмите ENTER для продолжения..."),
readchar(_), nl, fail.
see('3') :-
removewindow, removewindow, do('3'), !.
see('4') :-
!.
see(_) :-
makewindow(5,76,1,"Ошибка",8,29,5,22),
framewindow(75), nl,
write(" Выберите из меню"), readchar(_),
removewindow, removewindow, do('3').
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%
correct('1') :-
makewindow(5,95,1," Корректировка записи, найденной по артикулу
",7,10,13,60),
framewindow(94),
write("Номер артикула: "), readint(X),
characteristick(X,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)),
nl, write("Старая запись:"), nl, nl,
show(X,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)), nl, nl,
write("Введите новый вариант:"), nl, nl,
get(ArtD,place(NCD,NSD),NameD,price(RubD,KopD),date(YearD,MonD,DayD)), nl,
clearwindow,
retract(characteristick(X,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day
))),
assert(characteristick(ArtD,place(NCD,NSD),NameD,price(RubD,KopD),date(YearD
,MonD,DayD))),
removewindow, removewindow, do('4'), !.
correct('1') :-
removewindow, removewindow, do('4'), !.
correct('2') :-
makewindow(5,95,1," Корректировка записи, найденной по названию
",7,10,13,60),
framewindow(94),
write("Название: "), readln(X),
characteristick(Art,place(NC,NS),X,price(Rub,Kop),date(Year,Mon,Day)),
nl, write("Старая запись:"), nl, nl,
show(Art,place(NC,NS),X,price(Rub,Kop),date(Year,Mon,Day)), nl, nl,
write("Введите новый вариант:"), nl, nl,
get(ArtD,place(NCD,NSD),NameD,price(RubD,KopD),date(YearD,MonD,DayD)), nl,
clearwindow,
retract(characteristick(Art,place(NC,NS),X,price(Rub,Kop),date(Year,Mon,Day)
)),
assert(characteristick(ArtD,place(NCD,NSD),NameD,price(RubD,KopD),date(YearD
,MonD,DayD))),
removewindow, removewindow, do('4'), !.
correct('2') :-
removewindow, removewindow, do('4'), !.
correct('3') :-
!.
correct(_) :-
makewindow(5,76,1,"Ошибка",8,29,5,22),
framewindow(75), nl,
write(" Выберите из меню"), readchar(_),
removewindow, removewindow, do('4').
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%
del('1') :-
makewindow(5,95,1," Удаление по артикулу ",7,20,10,40),
framewindow(94),
write(" Номер артикула: "), readint(X),
retract(characteristick(X,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day
))), nl,
write(" Готово."), readchar(_),
removewindow,removewindow, do('5'), !.
del('1') :-
makewindow(6,76,1,"Ошибка",8,29,5,22),
framewindow(75), nl,
write(" Запись не найдена."), readchar(_),
removewindow, removewindow, removewindow, do('5').
del('2') :-
makewindow(5,95,1," Удаление по названию ",7,20,10,40),
framewindow(94),
write(" Название: "), readln(X),
retract(characteristick(Art,place(NC,NS),X,price(Rub,Kop),date(Year,Mon,Day)
)), nl,
write(" Готово."), readchar(_),
removewindow,removewindow, do('5'), !.
del('2') :-
makewindow(6,76,1,"Ошибка",8,29,5,22),
framewindow(75), nl,
write(" Запись не найдена."), readchar(_),
removewindow, removewindow, removewindow, do('5').
del('3') :-
makewindow(5,95,1," Удаление всей базы ",7,20,10,40),
framewindow(94),
retract(characteristick(_,place(_,_),_,price(_,_),date(_,_,_))),
fail.
del('3') :-
write(" База удалена."), readchar(_),
removewindow,removewindow, do('5'), !.
del('4') :-
!.
del('_') :-
makewindow(5,76,1,"Ошибка",8,29,5,22),
framewindow(75), nl,
write(" Выберите из меню"), readchar(_),
removewindow, removewindow, do('5').
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%
indication('1') :-
makewindow(5,18,1," Создать базу B1 по признаку ",8,25,10,30),
framewindow(19),
write(" Введите признак:"), nl,
nl, write(" 1 :- По месту хранения"),
nl, write(" 2 :- По цене"),
nl, write(" 3 :- По дате поступления"),
nl, write(" 4 :- Меню"), nl,
nl, write(" ------| |------"),
cursor(7,13), readchar(X), indicationB1(X),
removewindow, removewindow, do('6'), !.
indication('2') :-
makewindow(5,18,1," Создать базу B2 по признаку ",8,25,10,30),
framewindow(19),
write(" Введите признак:"), nl,
nl, write(" 1 :- По месту хранения"),
nl, write(" 2 :- По цене"),
nl, write(" 3 :- По дате поступления"),
nl, write(" 4 :- Меню"), nl,
nl, write(" ------| |------"),
cursor(7,13), readchar(X), indicationB2(X),
removewindow, removewindow, do('6'), !.
indication('3') :-
!.
indication(_) :-
makewindow(5,76,1,"Ошибка",8,29,5,22),
framewindow(75), nl,
write(" Выберите из меню"), readchar(_),
removewindow, removewindow, do('6').
indicationB1('1') :-
makewindow(6,95,1," Создание базы B1 по месту хранения ",7,20,10,40),
framewindow(94), nl,
write(" Номер цеха: "), readint(X),
write(" Номер склада: "), readint(Y),
characteristick(Art,place(X,Y),Name,price(Rub,Kop),date(Year,Mon,Day)),
assert(table1(Art,place(X,Y),Name,price(Rub,Kop),date(Year,Mon,Day))),
fail.
indicationB1('1') :-
removewindow, removewindow, indication('1').
indicationB1('2') :-
makewindow(6,95,1," Создание базы B1 по цене ",7,20,10,40),
framewindow(94), nl,
write(" Рублей: "), readint(X),
write(" Копеек: "), readint(Y),
characteristick(Art,place(NC,NS),Name,price(X,Y),date(Year,Mon,Day)),
assert(table1(Art,place(NC,NS),Name,price(X,Y),date(Year,Mon,Day))),
fail.
indicationB1('2') :-
removewindow, removewindow, indication('1').
indicationB1('3') :-
makewindow(6,95,1," Создание базы B1 по дате поступления
",7,20,10,40),
framewindow(94), nl,
write(" Год: "), readint(X),
write(" Месяц: "), readint(Y),
write(" День: "), readint(Z),
characteristick(Art,place(NC,NS),Name,price(Rub,Kop),date(X,Y,Z)),
assert(table1(Art,place(NC,NS),Name,price(Rub,Kop),date(X,Y,Z))),
fail.
indicationB1('3') :-
removewindow, removewindow, indication('1').
indicationB1('4') :-
!.
indicationB1(_) :-
makewindow(6,76,1,"Ошибка",8,29,5,22),
framewindow(75), nl,
write(" Выберите из меню"), readchar(_),
removewindow, removewindow, indication('1').
indicationB2('1') :-
makewindow(6,95,1," Создание базы B2 по месту хранения ",7,20,10,40),
framewindow(94), nl,
write(" Номер цеха: "), readint(X),
write(" Номер склада: "), readint(Y),
characteristick(Art,place(X,Y),Name,price(Rub,Kop),date(Year,Mon,Day)),
assert(table2(Art,place(X,Y),Name,price(Rub,Kop),date(Year,Mon,Day))),
fail.
indicationB2('1') :-
removewindow, removewindow, indication('2').
indicationB2('2') :-
makewindow(6,95,1," Создание базы B2 по цене ",7,20,10,40),
framewindow(94), nl,
write(" Рублей: "), readint(X),
write(" Копеек: "), readint(Y),
characteristick(Art,place(NC,NS),Name,price(X,Y),date(Year,Mon,Day)),
assert(table2(Art,place(NC,NS),Name,price(X,Y),date(Year,Mon,Day))),
fail.
indicationB2('2') :-
removewindow, removewindow, indication('2').
indicationB2('3') :-
makewindow(6,95,1," Создание базы B2 по дате поступления
",7,20,10,40),
framewindow(94), nl,
write(" Год: "), readint(X),
write(" Месяц: "), readint(Y),
write(" День: "), readint(Z),
characteristick(Art,place(NC,NS),Name,price(Rub,Kop),date(X,Y,Z)),
assert(table2(Art,place(NC,NS),Name,price(Rub,Kop),date(X,Y,Z))),
fail.
indicationB2('3') :-
removewindow, removewindow, indication('2').
indicationB2('4') :-
!.
indicationB2(_) :-
makewindow(6,76,1,"Ошибка",8,29,5,22),
framewindow(75), nl,
write(" Выберите из меню"), readchar(_),
removewindow, removewindow, indication('2').
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%
adding :-
get(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)),
nl, write(" Вы ввели :"),
nl, show(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)),
nl,
nl, write(" Добавить ? (Yes/No)"), readchar(A),
A='y',
assert(characteristick(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Da
y)));
!.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%
exists(FN) :-
existfile(FN);
makewindow(6,76,1,"Ошибка",10,25,5,30), nl,
framewindow(75),
write(" Файл ",FN," не найден!"),
readchar(_), removewindow,
removewindow, removewindow, do('1').
show(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)) :-
write(" Артикул : ",Art),
nl, write(" Местоположение (Цех, Склад) : ",NC,", ",NS),
nl, write(" Наименование товара : ",Name),
nl, write(" Стоимость (Рублей:Копеек) : ",Rub,":",Kop),
nl, write(" Дата поступления (Год-Месяц-День) : ",Year,"-",Mon,"-
",Day).
get(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)) :-
write(" Артикул : "), readint(Art),
write(" Местоположение : "), nl,
write(" Цех : "), readint(NC),
write(" Склад : "), readint(NS),
write(" Наименование товара : "), readln(Name),
write(" Стоимость : "), nl,
write(" Рублей : "), readint(Rub),
write(" Копеек : "), readint(Kop),
write(" Дата поступления : "), nl,
write(" Год : "), readint(Year),
write(" Месяц : "), readint(Mon),
write(" День : "), readint(Day).
7. Отладка программы.
Открытие БД.
+-------------- Системное меню --------------+
¦ Выберите вариант работы с базами данных: ¦
¦ 1 :-+--------- Загрузить --------+ ¦
¦ 2 :-¦ Куда загрузить ? ¦ ¦
¦ +--------------Загрузка bd-------------+ ¦
¦ ¦ ¦ ¦
¦ ¦ Имя файла : data ¦ ¦
¦ ¦ ¦ ¦
¦ ¦ Загружено ¦ ¦
+--¦ ¦--+
+--------------------------------------+
Сохранение БД.
+-------------- Системное меню --------------+
¦ Выберите вариант работы с базами данных: ¦
¦ ¦
¦ 1 :-+--------- Сохранить --------+ ¦
¦ 2 :-¦ Что сохранить ? ¦ ¦
¦ +-------------Сохранение b2------------+ ¦
¦ ¦ ¦ ¦
¦ ¦ Имя файла : data2 ¦ ¦
¦ ¦ ¦ ¦
¦ ¦ Сохранено ¦ ¦
+--¦ ¦--+
+--------------------------------------+
Просмотр.
+-------------- Системное меню --------------+
¦ Выберите вариант работы с базами данных: ¦
¦ ¦
¦ 1 :-+-------- Просмотреть -------+ ¦
¦ 2 :-¦ Что просмотреть ? ¦ ¦
+----------------------- Просмотр bd ----------------------+
¦ Артикул : 2 ¦
¦ Местоположение (Цех, Склад) : 6, 7 ¦
¦ Наименование товара : Vint ¦
¦ Стоимость (Рублей:Копеек) : 0:65 ¦
¦ Дата поступления (Год-Месяц-День) : 1996-2-45 ¦
¦ ¦
¦Нажмите ENTER для продолжения... ¦
+----------------------------------------------------------+
Корректировка.
+-------------- Системное меню --------------+
¦ Выберите вариант работы с базами данных: ¦
¦ ¦
¦ 1 :-+------- Корректировка ------+ ¦
¦ 2 :-¦ Способ нахождения записи: ¦ ¦
+------- Корректировка записи, найденной по названию ------+
¦Старая запись: ¦
¦ ¦
¦ Артикул : 1 ¦
¦ Местоположение (Цех, Склад) : 5, 6 ¦
¦ Наименование товара : Gayka ¦
¦ Стоимость (Рублей:Копеек) : 0:45 ¦
¦ Дата поступления (Год-Месяц-День) : 1996-1-4 ¦
¦ ¦
¦Введите новый вариант: ¦
¦ ¦
¦ Артикул : ¦
+----------------------------------------------------------+
Удаление.
+-------------- Системное меню --------------+
¦ Выберите вариант работы с базами данных: ¦
¦ ¦
¦ 1 :-+ Удаление записи по признаку+ ¦
¦ 2 :-¦ Введите признак: ¦ ¦
¦ +-------- Удаление по артикулу --------+ ¦
¦ ¦ Номер артикула: 1 ¦ ¦
¦ ¦ ¦ ¦
¦ ¦ Готово. ¦ ¦
+--¦ ¦--+
+--------------------------------------+
Создание по признакам.
+-------------- Системное меню --------------+
¦ Выберите вариант работы с базами данных: ¦
¦ ¦
¦ 1 :-+- Создать базу по признаку -+ ¦
¦ 2 :-¦ Какую базу создать ? ¦ ¦
¦ +------ Создание базы B1 по цене ------+ ¦
¦ ¦ ¦ ¦
¦ ¦ Рублей: 0 ¦ ¦
¦ ¦ Копеек: 45 ¦ ¦
+--¦ ¦--+
+--------------------------------------+
+----------------------------+
Добавление.
+-------------- Системное меню --------------+
¦ Выберите вариант работы с базами данных: ¦
¦ ¦
¦ 1 :- Загрузить ¦
¦ 2 :- Сохранить ¦
+------------- Добавить запись к главной базе -------------+
¦ Местоположение : ¦
¦ Цех : 5 ¦
¦ Склад : 6 ¦
¦ Наименование товара : Shayba ¦
¦ Стоимость : ¦
¦ Рублей : 1 ¦
¦ Копеек : 2 ¦
¦ Дата поступления : ¦
¦ Год : 1996 ¦
¦ Месяц : 23 ¦
¦ День : 3 ¦
+----------------------------------------------------------+
8. Инструкция пользователя и решение контрольных примеров.
Решение контрольных примеров основывается на том, что было сделано в
отладке программы и может быть изучено по вышестоящей части (7.).
Для работы с программой необходимо выбирать из предлагаемых меню пункты
путем нажатия на соответствующие цифры. При появлении подменю повторить
операцию, при запросе на имя файла - ввести строку, определяющую имя
файла, при запросе на символ, нажать соответствующую клавишу на
клавиатуре (не забывайте, пожалуйста об языковой раскладке клавиатуры и
состоянии клавиши CAPSLOCK). Также в нескольких процедурах производится
подтверждение (Yes/No - Да/Нет) - необходимо переключиться на английскую
раскладку и нажать соответствующую клавишу в нижнем регистре.
9. Заключение.
Язык программирования Пролог безусловно может быть использован для
написания подобных информационно-справочных систем, так как он позволяет
легко и быстро создавать логические запросы к базам данных, что
безусловно выделяет его среди остальных языков программирования.
10. Список литературы.
1. К. Кларк. “Введение в логическое программирование на Micro Prologe”.
2. К. Хоггер. “Введение в логическое программирование”.
Страницы: 1, 2
|
Приглашения
09.12.2013 - 16.12.2013
09.12.2013 - 16.12.2013
|