Лабораторная работа - Работа с динамическими базами данных в Турбо-Прологе
скачать (38.5 kb.)
Доступные файлы (1):
1.doc | 39kb. | 24.11.2011 12:16 | ![]() |
содержание
- Смотрите также:
- Отчёт лабораторная работа №8 Тема: Основы работы с динамическими базами данных в Delphi [ документ ]
- Экспертная система [ лабораторная работа ]
- №4 [ лабораторная работа ]
- по логическому программированию [ лекция ]
- Работа с базами данных в СУБД Access [ документ ]
- №1 Проектирование базы данных в субд ms access [ документ ]
- Информационные системы с базами данных [ документ ]
- Access, Базы данных География [ документ ]
- № Введение [ документ ]
- 5 [ документ ]
- 01. Лабораторная работа 02. Лабораторная работа 03. Лабораторная работа 04 [ документ ]
- 01. Лабораторная работа 02. Лабораторная работа 03. Лабораторная работа 04 [ документ ]
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)
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.)