Мегаобучалка Главная | О нас | Обратная связь


Практическое занятие №13



2015-12-04 357 Обсуждений (0)
Практическое занятие №13 0.00 из 5.00 0 оценок




Основные сведения о базах данных. Файл базы данных. Реляционные базы данных. Базы данных в Турбо-Прологе.

Задание 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-12-04 357 Обсуждений (0)
Практическое занятие №13 0.00 из 5.00 0 оценок









Обсуждение в статье: Практическое занятие №13

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (357)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)