Logo GenDocs.ru

Поиск по сайту:  

Загрузка...

Лабораторная работа - Работа с динамическими базами данных в Турбо-Прологе - файл 1.doc


Лабораторная работа - Работа с динамическими базами данных в Турбо-Прологе
скачать (38.5 kb.)

Доступные файлы (1):

1.doc39kb.24.11.2011 12:16скачать

содержание

1.doc

ГОУ ВПО

Уфимский государственный авиационный технический университет

Кафедра ТК

Лабораторная работа №5

По дисциплине «Логическое программирование»

Работа с динамическими базами данных в Турбо-Прологе

Вариант №3
Выполнил:

Принял: Колоденкова А.Е.

Уфа 2011
Цель работы: Изучение организации баз данных в Турбо-Прологе. Разработка реляционной системы управления базой данных (СУБД).
Задание: Динамическая база содержит информацию о результатах сессии данной группы студентов в виде утверждений следующих видов: математика, физика, химия, информатика (Ф.И.О., оценка). Предполагается, что в группе N студентов, и все они имеют оценки по всем предметам (5,4,3,2). В динамической базе данных (ДБД) для каждого студента может храниться информация об одной или нескольких оценках (т.е. несколько фактов) по каждому предмету, что связано с возможными пересдачами экзаменов.

Требуется написать программу, создающую ДБД и формирующую без дублирования (т.е. одна и та же фамилия дважды не встречается) список студентов, удовлетворяющих следующим условиям: имеющие задолженность по всем предметам
^ Код Пролог-программы:

domains

list=string*

database

dstud(string,string,integer)

predicates

repeat

clear_dbd

stud(string,string,integer)

dodbd

do

menu

process(integer)

print

delete(string,string,integer)

spisok(list)

output(list)

bz_dubl(list,list)

prinadl(string,list)

udalitp(string,list,list)

soed2(list,list,list)

soed3(list,list,list,list)

nesdavsiy(list,list,list,list,string)

nesdavsie(list,list,list,list,list)

clauses

repeat.

repeat:-repeat.

clear_dbd:-retractall(_).

stud("Ivanova K.R.","mat",5).

stud("Petrov E.A.","mat",2).

stud("Rogov J.A..","mat",3).

stud("Tashirin L.M.","mat",2).

stud("Galin A.V.","mat",1).

stud("Ivanova K.R.","fiz",5).

stud("Petrov E.A.","fiz",2).

stud("Rogov J.A..","fiz",4).

stud("Tashirin L.M.","fiz",2).

stud("Galin A.V.","fiz",1).

stud("Ivanova K.R.","him",5).

stud("Petrov E.A.","him",4).

stud("Rogov J.A..","him",3).

stud("Tashirin L.M.","him",2).

stud("Galin A.V.","him",1).

stud("Ivanova K.R.","inf",5).

stud("Petrov E.A.","inf",2).

stud("Rogov J.A..","inf",4).

stud("Tashirin L.M.","inf",2).

stud("Galin A.V.","inf",2).

do_dbd:-stud(F,D,B),assertz(dstud(F,D,B)),fail.

do_dbd:-!.

do:-makewindow(1,9,1,"DBD",2,10,20,60),

menu,clear_dbd,removewindow.

menu:-repeat,clearwindow,nl,

write("1. Clear BD"),nl,

write("2. Create BD"),nl,

write("3. Load BD"),nl,

write("4. View BD"),nl,

write("5. Nesdavshie"),nl,

write("6. Add to BD"),nl,

write("7. Delete from BD"),nl,

write("8. Save BD"),nl,

write("9. Exit "),nl,

write("You choise (1-9): "),

readint(K),process(K),K=9,!.

process(1):-clear_dbd,write("BD clear!"),readchar(_).

process(2):-do_dbd,write("BD greate!"),readchar(_).

process(3):-makewindow(7,7,1,"Load BD",5,10,10,30),

consult("DBD.txt"),!,write("BD loaded!"),

readchar(_),removewindow.

process(4):-makewindow(7,7,1,"View BD",2,10,20,50),nl,

print,nl,write("Press any key"),readchar(_),

removewindow.

process(5):-makewindow(7,7,1,"Student",5,5,20,50),nl,

spisok(L),output(L),nl,

write("Nagmite klavishy"),readchar(_),

removewindow.

process(6):-makewindow(8,7,1,"Add to BD",5,5,15,40),nl,

write("F.I.O.: "),readln(F),

write("Predmet: "),readln(D),

write("Ocenka: "),readint(B),!,

assertz(dstud(F,D,B)),write("Student ",F," was added to BD"),

readchar(_),removewindow.

process(7):-makewindow(8,7,1,"Delete",5,5,15,40),nl,

write("F.I.O.: "),readln(F),

write("Predmet: "),readln(D),

write("Ocenka: "),readint(B),!,

delete(F,D,B),removewindow.

process(8):-save("DBD.txt"),write("BD save!"),readln(_).

process(9):-!.

print:-dstud(F,D,B),write(F," ",D," ",B),nl,fail.

print:-!.

delete(F,D,B):-retract(dstud(F,D,B)),!,write(F," udalena"),readchar(_).

spisok(L6):-findall(X,dstud(X,"mat",2),L11),

findall(X,dstud(X,"mat",1),L12),

soed2(L11,L12,L1),

findall(X,dstud(X,"fiz",2),L21),

findall(X,dstud(X,"fiz",1),L22),

soed2(L21,L22, L2),

findall(X,dstud(X,"him",2),L31),

findall(X,dstud(X,"him",1),L32),

soed2(L31,L32, L3),

findall(X,dstud(X,"inf",2),L41),

findall(X,dstud(X,"inf",1),L42),

soed2(L41,L42, L4),

nesdavsie(L1,L2,L3,L4,L5),

bz_dubl(L5,L6).


nesdavsiy(L1,L2,L3,L4,X):-prinadl(X,L1),prinadl(X,L2),prinadl(X,L3),prinadl(X,L4).

nesdavsie(L1,L2,L3,L4,L5):-findall(X,sdavsiy(L1,L2,L3,L4,X),L5).

soed3(L1,L2,L3,L):-soed2(L1,L2,L12),soed2(L12,L3,L).

soed2([],L,L).

soed2([X|L1],L2,[X|L3]):-soed2(L1,L2,L3).

output([H|L]):-!,write(H),nl,output(L).

output([]).

bz_dubl ([],[]).

bz_dubl([X|L],L1):-prinadl(X,L),bz_dublya(L,L1).

bz_dubl([X|L],[X|L1]):-not(prinadl(X,L)),bz_dublya(L,L1).

prinadl(X,[X|_]).

prinadl(X,[_|L]):-prinadl(X,L).

udalitp(X,[X|L],L).

udalitp(X,[Y|L],[Y|L1]):-X<>Y,udalitp(X,L,L1).


Скачать файл (38.5 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации