Практическое занятие №13
Основные сведения о базах данных. Файл базы данных. Реляционные базы данных. Базы данных в Турбо-Прологе. Задание 1. Исходная информация для БД помещается в программе (Листинг 9.1) в начале раздела clauses. Когда программа запускается на счет, подцель assert_database создает утверждения dplayer, содержащие такие же данные, что и утверждения статического предиката player, и заносит эти утверждения в динамическую БД. После этого можно добавлять, удалять или просматривать данные, выбирая соответствующие опции меню. Искусная обработка большого числа запросов, наглядное меню и выдача на экран, способность работать с большими объемами данных - благодаря всему этому динамическая БД является хорошей демонстрацией мощи Турбо-Пролога. Во второй час- ти главы вы расширите свои познания в создании БД Турбо-Пролога, научившись работать с базами, располагающимися на диске. Запустите на счет программу "Футбольная база данных". Задайте опцию 1 главного меню и введите данные о каком-либо футболисте. Затем выберите опцию 3 и введите имя того же игрока. Теперь вы будете иметь возможность проверить правильность введенных в компьютер данных. Задайте опцию 2 и удалите из базы данные о вашем игроке. Проверьте выполнение этой операции, снова задав опцию 3. Система должна выдать сообщение об ошибке:
Can't find that player in the database.
(Информация об этом игроке отсутствует в БД.) Задание 2. Измените прграмму "Футбольная база данных", добавив в меню еще одну опцию:
5. List players in database
(Выдача списка всех игроков из БД)
Напишите модуль, который будет выполнять эту операцию. Запустите измененный вариант программы и проверьте, справляется ли он со своей задачей. Замечание: Используйте предикат dplayer в форме
dplayer(Name,_,_,_,_,_,_,_).
а также воспользуйтесь методом отката после неудачи (ОПН). Задание 3. Модифицируйте программу "Футбольная база данных" так, чтобы БД сохранялась в файле на диске. Для этой цели используйте предикат
save("player.dat").
Вставьте этот предикат в подходящее место в программе так, чтобы сохранение БД происходило в конце работы программы. Запустите программу на счет и проверьте правильность внес енных изменений.
Задание 4.
Внесите в программу такие изменения, чтобы можно было выводить на экран лишь выборочную информацию об игроках. Добейтесь того, чтобы выдача на экран соответствовала вашим замыслам.
Листинг 9.1 /* Программа: Футбольная база данных */ /* Файл: PROG0901.PRO */ /* */ /* Назначение: Демонстрация примера работающей базы */ /* данных. База данных допускает следую- */ /* дующие операции: добавление, удаление */ /* и выборку данных. Выборка включает */ /* просмотр данных. */ /* */ /* Замечание: Эта программа создает базу данных и */ /* содержит ее в оперативной памяти. */
domains
p_name, t_name, pos, height, college = string p_number, weight, nfl_exp = integer
database
dplayer(p_name, t_name, p_number, pos, height, weight, nfl_exp, college)
predicates
repeat do_mbase assert_database menu process(integer) clear_database player(p_name, t_name, p_number, pos, height, weight, nfl_exp, college) error
goal
do_mbase.
clauses
repeat. repeat :- repeat.
/* Футбольная база данных */
player("Dan Marino","Miami Dolphins",13,"QB", "6-3",215,4,"Pittsburgh"). player("Richart Dent","Chicago Bears",95,"DE", "6-5",263,4,"Tennessee State"). player("Bernie Kosar","Cleveland Browns",19,"QB", "6-5",210,2,"Miami"). player("Doug Cosbie","Dallas Cowboy",84,"TE", "6-6",235,8,"Santa Clara"). player("Mark Malone","Pittsburgh Steelers",16,"QB", "6-4",223,7,"Arizona State").
/* конец начальных данных */
assert_database :- player(P_name,T_name,P_number,Pos,Ht,Wt,Exp, College), assertz( dplayer(P_name,T_name,P_number,Pos,Ht, Wt,Exp,College) ), fail. assert_database :- !.
clear_database :- retract( dplayer(_,_,_,_,_,_,_,_) ), fail. clear_database :- !.
/* Диалог с этой БД осуществляется по принципу меню. При этом используются оконнные средства Турбо-Пролога. Основываясь на запросе пользователя, СУБД активизирует соотствующие процессы для удовлетворения этого запроса. Меню можно расширить за счет включения новых функций. */
/* задание цели в виде правила */
do_mbase :- assert_database, makewindow(1,7,7," PRO FOOTBALL DATABASE ",0,0,25,80), menu, clear_database.
menu :- repeat, clearwindow, write(" * * * * * * * * * * * * * * * * * * * "),nl, write(" * * "),nl, write(" * 1. Add a player to database * "),nl, write(" * 2. Delete a player from database * "),nl, write(" * 3. View a player from database * "),nl, write(" * 4. Quit from this program * "),nl, write(" * * "),nl, write(" * * * * * * * * * * * * * * * * * * * "),nl, nl, write(" Please enter your choice, 1, 2, 3 or 4 : "), readint(Choice),nl, process(Choice), Choice = 4, !.
/* Добавление информации об игроке в БД */
process(1) :- makewindow(2,7,7," Add Player to DATABASE ", 2,20,18,58), shiftwindow(2), write("Enter player name: "), readln(P_name), write("Enter team: "), readln(T_name), write("Enter player number: "), readint(P_number), write("Enter position: "), readln(Pos), write("Enter height: "), readln(Ht), write("Enter weight: "), readint(Wt), write("Enter NFL exp: "), readint(Exp), write("Enter college: "), readln(College),
assertz(dplayer(P_name,T_name,P_number,Pos,Ht,Wt, Exp,College)), write(P_name," has been added to the database."), nl, !, write("Press space bar. "), readchar(_), removewindow.
/* Удаление информации об игроке из БД */
process(2) :- makewindow(3,7,7," Delete Player from DATABASE ", 10,30,7,40), shiftwindow(3), write("Enter name to DELETE: "), readln(P_name), retract(dplayer(P_name,_,_,_,_,_,_,_)), write(P_name," has been deleted from the database."), nl, !, write("Press space bar."), readchar(_), removewindow.
/* Просмотр информации об игроке */
process(3) :-
makewindow(4,7,7," View Window ", 7,30,16,47), shiftwindow(4), write("Enter name to view: "), readln(P_name), dplayer(P_name,T_name,P_number, Pos,Ht,Wt,Exp,College), nl, write(" NFL League Player"),nl, nl, write(" Player Name : ",P_name), nl, write(" Team Name : ",T_name), nl, write(" Position : ",Pos), nl, write(" Player Number : ",P_number), nl, write(" Player's Height : ",Ht," ft-in"), nl, write(" Player's Weight : ",Wt," lb "), nl, write(" Player's NFL-exp : ",Exp," year(s)"), nl, write(" Player's College : ",College), nl, nl, !, nl, write("Press space bar"), readchar(_), removewindow.
process(3) :- makewindow(5,7,7," No Luck ",14,7,5,60), shiftwindow(5), write("Can't find that player in the database."),nl, write("Sorry, bye!"), nl, !, write("Press space bar."), readchar(_), removewindow, shiftwindow(1).
/* Выход из диалога */
process(4) :- write("Are you sure want to quit (y/n)"), readln(Answer), frontchar(Answer,'y',_), !.
/* Неправильное обращение к БД */
process(Choice) :- Choice < 1, error. process(Choice) :- Choice > 4, error.
error :- write("Please enter a number from 1 to 4."), write("(Press the space bar to continue)"), readchar(_).
/***** конец программы *****/ _____________________________ Рассмотрено на Методическом совете Одобрено на Методическом совете факультета _____________________ университета _______________________ Протокол № ____ Протокол № ____ Председатель Методического совета Председатель Методического Совета факультета ____________________ университета ______________________ «____»__________________2012 г. «____»__________________2012 г.
Методическое указание к практическим занятиям по Системы искусственного интеллекта для студентов специальности «Информационные системы»
Составители: ______Карымсакова А.Е. ст.преподаватель, к.п.н.___________
Редактор __Сундетова А.Р._________
Компьютерный набор текста __Карымсакова А.Е._______
_____________ Набрано и отпечатано в учебно-методическом отделе АУ им. Баишева (редакционно - издательский отдел АУ им. С. Баишева. Актобе, ул. Бр.Жубановых, 302 А, тел. 87132974701)
Популярное: Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (357)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |