CODE=9003
/* **************************
* КУРСОВАЯ РАБОТА *
* *
* Коломенской Ольги *
* *
**************************
*/
domains
z,nz,n,n1,chp,i=integer
fio,ma,ru,k=symbol
database-svod1
svod1(n,k,nz,ma,ru,chp)
database-lolo
lolo(n,fio,i,ma,ru,chp)
database-kuku
kuku(n,fio,nz,k,ru,chp)
database
svod(n,fio,nz,ma,ru,chp)
predicates
start
patch
load
select(i)
sel(i,i)
process(i)
procedure(i)
sve(i)
lod(i)
repeat
goal
start.
clauses
/*Процедура создания основного меню и загрузки базыданных*/
start:-
makewindow(1,2,7,"КартотекаГАИ",0,0,25,80),
clearwindow,
load,
patch.
/*Процедура управления основным меню*/
patch:-
repeat,
cursor(7,0),
write(" 0 — Опpогpамме... "),nl,
write(" 1- коррекция данных"),nl,
write(" 2- просмотр базы"),nl,
write(" 3- загрузка базы"),nl,
write(" 4- сохранение базы"),nl,
write(" 5- создание новой базы"),nl,
write(" 6- ввод новых данных"),nl,
write(" 7 — просмотр-добавление"),nl,
write(" 8- выход из программы"),nl,
write(" =>"),
readint(Choice),
Choice >= 0,
Choice
clearwindow,
process(Choice),
clearwindow,
Choice = 8,
retractall(_),
removewindow.
/*Процедура поиска и загрузки файла содержащего базуданных*/
load:-
existfile(«olia.dat»),
consult(«olia.dat»),
cursor(1,2),
write("Базазагружена").
load:-
cursor(1,2),
write(«Нет базы на диске»).
/*Пpоцедуpа ввода новых данных*/
process(6):-
makewindow(1,2,7,«Вводновых данных»,0,0,25,80),
nl,
write(«Введите порядковый номер :»),readint(K),nl,
write(«Введите Фамилию.И.О. :»),readln(F),nl,
write(«Введите номерной знак :»),readint(G),nl,
write(«Введите марку автомобиля :»),readln(Y),nl,
write(«Введите район учета :»),readln(T),nl,
write(«Введите число автотранспортных»),nl,
write(" происшествий :"),readint(P),nl,
N1=K,FIO1=F,NZ1=G,MA1=Y,RU1=T,CHP1=P,
assertz(svod(N1,FIO1,NZ1,MA1,RU1,CHP1)),
removewindow,
fail.
/*Процедура просмотра-добавления*/
process(7):-
makewindow(1,2,7,«Просмотр-добавление»,0,0,25,80),
nl,
write(«Введите номер записи:»),readint(A),nl,nl,
svod(N,FIO,NZ,MA,RU,CHP),
A=N,
write("Номерзаписи :"),write(A),nl,
write("Фамилия.И.О. :"),write(FIO),nl,
write("Номернойзнак :"),write(NZ),nl,
write("Маркаавтомобиля :"),write(MA),nl,
write("Районучета :"),write(RU),nl,
write("Числоавтотранспортных"),nl,
write(" происшествий :"),write(CHP),nl,nl,nl,
write(«Нажмите на любуюклавишу»),
readchar(_),
removewindow,
!.
process(7):-
write(«Этого номера записи нет в базе.»),
write(«Повторите введенный номер записи ипродолжайте ввод данных»),nl,nl,nl,
write("Введитеномер:"),
readint(A),nl,
A=N1,
write(«Введите Фамилию.И.О. :»),readln(F),nl,
write(«Введите номерной знак :»),readint(Y),nl,
write(«Введите марку автомабиля :»),readln(J),nl,
write(«Введите район учета :»),readln(G),nl,
write(«Введите число автотранспортных»),nl,
write(" происшествий:"),readint(K),nl,
FIO1=F,NZ1=Y,MA1=J,RU1=G,CHP1=K,
assertz(svod(N1,FIO1,NZ1,MA1,RU1,CHP1)),
removewindow,
fail.
/*Пpоцедуpа вывода данных о пpогpамме*/
process(0):-
makewindow(1,2,7,«О пpогpамме...»,0,0,25,80),
write(" Инфоpмационно-спpавочнаясистема"),nl,nl,
write(" картотеки ГАИ "),nl,nl,
write(" Язык-TURBO-PROLOG v.2.0. "),nl,nl,
write(" автоp: КоломенскаяО. "),nl,nl,
write(" МИРЭА, гp.ИТ-1-95 (с) 1995 г. "),nl,nl,nl,nl,
write(«Нажмите на любую клавишу»),
readchar(_),
removewindow.
/*Процедура изменения содержимого записей базы данных*/
process(1):-
makewindow(1,2,7,"Коppекцияданных",0,0,25,80),
nl,
select(N),
X=N,
svod(X,FIO,NZ,MA,RU,CHP),
write("Номерзаписи :"),write(N),nl,
write("Фамилия.И.О. :"),write(FIO),nl,
write("Номернойзнак :"),write(NZ),nl,
write("Маркаавтомабиля :"),write(MA),nl,
write("Районучета :"),write(RU),nl,
write("Числоавтотранспортных"),nl,
write(" происшествий:"),write(CHP),nl,
nl,
write(«Введите Фамилию.И.О. :»),readln(FIO1),nl,
write(«Введите номерной знак :»),readint(NZ1),nl,
write(«Введите марку автомабиля :»),readln(MA1),nl,
write(«Введите район учета :»),readln(RU1),nl,
write(«Введите числоавтотранспортных»),nl,
write(" происшествий:"),readint(CHP1),nl,
X1=X,
retract(svod(X,FIO,NZ,MA,RU,CHP)),
assert(svod(X1,FIO1,NZ1,MA1,RU1,CHP1)),
!,
removewindow.
/*Процедура просмотра содержимого базы данных*/
process(2):-
makewindow(1,2,7,"Просмотp базы",0,0,25,80),
nl,
write("--------------------------------------------------------------------"),nl,
write(" КАРТОТЕКАГАИ "),nl,
write("--------------------------------------------------------------------"),nl,
write("! поряд.! фамилия ! номерной ! марка ! район ! число авто !"),nl,
write("! номер! И.О.владельца! знак ! а.машины! учета ! происшествий!"),nl,
write("--------------------------------------------------------------------"),nl,
svod(N,FIO,NZ,MA,RU,CHP),
cursor(Z,_),
cursor(Z,0),write(N),
cursor(Z,9),write(FIO),
cursor(Z,24),write(NZ),
cursor(Z,35),write(MA),
cursor(Z,45),write(RU),
cursor(Z,55),write(CHP),
cursor(Z,68),write("!"),
nl,
fail.
process(2):-
write("-------------------------------------------------------------------"),
nl,
write(«Нажмите на любую клавишу»),
readchar(_),
removewindow.
/*Процедура загрузки в память базы данных*/
process(3):-
nl,
makewindow(2,15,4,«Загрузка»,5,5,20,70),
write(«1 — База будет загружена из указанного файла»),nl,
write(«2 — База будет загружена из файла olia.dat»),nl,
write(«3 — Выход в основное меню»),nl,
write("==>"),
readint(C),
C>0,C
lod(C),
!,
removewindow.
/*Процедура сохранения базы данных*/
process(4):-
nl,
makewindow(2,15,4,«Запись»,5,5,20,70),
write(«1 — База будет записана в указанный файл»),nl,
write(«2 — База будет записана в файл olia.dat»),nl,
write(«3 — Выход в основное меню»),nl,
write("==>"),
readint(I),
I>0,I
sve(I),!,
removewindow.
/*Процедура выборасоздания новой базы*/
process(5):-
nl,
makewindow(3,2,7,«Создание новой базы»,0,0,25,80),
write(«1 — База будет создана по Ф.И.О. владельцаа.машины»),nl,
write(«2 — База будет создана по номерному знакуа.машины»),nl,
write(«3- База будет создана по марке а.машины»),nl,
write(«4 — Выход в основное меню»),nl,
write("==>"),
readint(O),
O>0,O
procedure(O),
removewindow.
process(_).
/*Процедура создания новой базы данных и ее сохранения*/
procedure(1):-
makewindow(1,2,7,«Создание новой базы по Ф.И.О. владельцаа.машины»,0,0,25,80),
nl,
cursor(7,10),
retractall(_,svod1),
nl,
write(«Если вы хотите узнатьданные о а.машине, то»),
nl,
write(«Введите Ф.И.О. владельца а.машины:»),
readln(X),
svod(N,FIO,NZ,MA,RU,CHP),
S=FIO,
S=X,
N1=N,NZ1=NZ,MA1=MA,RU1=RU,CHP1=CHP,
assert(svod1(N1,S,NZ1,MA1,RU1,CHP1)),
fail.
procedure(1):-
write("-------------------------------------------------------------------"),nl,
write(" КАРТОТЕКАГАИ "),nl,
write("-------------------------------------------------------------------"),nl,
write("! поряд.! Фамилия ! номерной! марка ! район ! число авто.!"),nl,
write("! номер! И.О. владельца ! знак !а.машины! учета ! происшествий!"),nl,
write("-------------------------------------------------------------------"),nl,
svod1(N1,S,NZ1,MA1,RU1,CHP1),
cursor(Z,_),
cursor(Z,0),write(N1),
cursor(Z,9),write(S),
cursor(Z,24),write(NZ1),
cursor(Z,35),write(MA1),
cursor(Z,45),write(RU1),
cursor(Z,55),write(CHP1),
cursor(Z,68),write("!"),
fail.
procedure(1):-
write("-------------------------------------------------------------------"),
save(«not.dat»,svod1),
nl,
write(«База сохранена в файле not.dat»),
nl,
write(«Нажмите любую клавишу»),
readchar(_),
removewindow,
!.
procedure(1):-
write("-------------------------------------------------------------------"),
nl,
write(«Невозможно сохранить созданную базу»),
nl,
write(«Нажмите любую клавишу»),
readchar(_),
makewindow(1,2,7,"ККАРТОТЕКАГАИ",0,0,25,80).
procedure(2):-
makewindow(1,2,7,«Созданиеновой базы по номерному знаку а.машины»,0,0,25,80),
nl,
cursor(7,10),
retractall(_,lolo),
nl,
write(«Если вы хотите узнать данные о владельцеа.машины, то»),nl,
write(«Введите номерной знак а.машины:»),
readint(X),
svod(N,FIO,NZ,MA,RU,CHP),
S=NZ,
S=X,
N1=N,FIO1=FIO,MA1=MA,RU1=RU,CHP1=CHP,
assert(lolo(N1,FIO1,S,MA1,RU1,CHP1)),
fail.
procedure(2):-
write("-------------------------------------------------------------------"),nl,
write(" КАРТОТЕКАГАИ "),nl,
write("-------------------------------------------------------------------"),nl,
write("! поряд.! Фамилия ! номерной! марка ! район ! число авто.!"),nl,
write("! номер! И.О. владельца! знак ! атомобиля! учета ! происшествий!"),nl,
write("-------------------------------------------------------------------"),nl,
lolo(N1,FIO1,S,MA1,RU1,CHP1),
cursor(Z,_),
cursor(Z,0),write(N1),
cursor(Z,9),write(FIO1),
cursor(Z,24),write(S),
cursor(Z,35),write(MA1),
cursor(Z,45),write(RU1),
cursor(Z,55),write(CHP1),
cursor(Z,68),write("!"),
fail.
procedure(2):-
write("-----------------------------------------------------------------------------"),
save(«not1.dat»,lolo),
nl,
write(«База сохранена в файле not1.dat»),
nl,
write(«Нажмите любую клавишу»),
readchar(_),
removewindow,
!.
procedure(2):-
write("-------------------------------------------------------------------"),
nl,
write(«Невозможносохранить созданную базу»),
nl,
write(«Нажмите любую клавишу»),
readchar(_),
makewindow(1,2,7,"КАРТОТЕКАГАИ",0,0,25,80).
procedure(3):-
makewindow(1,2,7,«Созданиебазы данных по марке автомобиля»,0,0,25,80),
nl,
cursor(7,10),
retractall(_,kuku),
nl,
write(«Если вы хотите узнатьданные о номерах автомобиля, то»),
nl,
write(«Введите марку автомобиля:»),
readln(X),
svod(N,FIO,NZ,MA,RU,CHP),
S=MA,
S=X,
N1=N,FIO1=FIO,NZ1=NZ,RU1=RU,CHP1=CHP,
assert(kuku(N1,FIO1,NZ1,S,RU1,CHP1)),
fail.
procedure(3):-
write("-------------------------------------------------------------------"),nl,
write(" КАРТОТЕКАГАИ "),nl,
write("-------------------------------------------------------------------"),nl,
write("! поряд.! Фамилия ! намерной! марка ! район ! число авто.!"),nl,
write("! номер! И.О. владельца! знак ! автомобиля! учета ! происшествий!"),nl,
write("-------------------------------------------------------------------"),nl,
kuku(N1,FIO1,NZ1,S,RU1,CHP1),
cursor(Z,_),
cursor(Z,0),write(N1),
cursor(Z,9),write(FIO1),
cursor(Z,24),write(NZ1),
cursor(Z,35),write(S),
cursor(Z,45),write(RU1),
cursor(Z,55),write(CHP1),
cursor(Z,68),write("!"),
fail.
procedure(3):-
write("-------------------------------------------------------------------"),
save(«not2.dat»,kuku),
nl,
write(«Базасохранена в файле not.dat»),
nl,
write(«Нажмите любую клавишу»),
readchar(_),
removewindow,
!.
procedure(3):-
write("-------------------------------------------------------------------"),
nl,
write(«Невозможносохранить созданную базу»),
nl,
write(«Нажмите любую клавишу»),
readchar(_),
makewindow(1,2,7,«ХАРАКТЕРИСТИКА ПРЕДПРИЯТИЯ»,0,0,25,80).
/*Процедура записи на диск*/
sve(1):-
write(«Введите имя файла :»),
readln(N),
save(N),
write("Всевпорядке"),
beep,
!.
sve(1):-
write(«Ошибка обмена,нажмите любую клавишу»),
readchar(_).
sve(2):-
save(«olia.dat»).
sve(3).
/*Процедура чтения с диска*/
lod(1):-
retractall(_),
write("Введитеимяфайла:"),
readln(N),
existfile(N),
consult(N),
write(«Все впорядке»),
beep,
!.
lod(1):-
nl,
write(«Данного файла нет на диске»),nl,
write(«Нажмите любую клавишу»),
readchar(_).
lod(2):-
retractall(_),
existfile(«olia.dat»),
consult(«olia.dat»),
write("Всевпорядке"),
beep,
!.
lod(2):-
write(«Файла olia.dat нет на диске»),nl,
write(«нажмите любую клавишу»),
readchar(_).
lod(3).
repeat.
repeat:- repeat.
/*Выборзаписи*/
select(N):-
nl,
write(«1 — известен номер записи»),nl,
write(«2 — известна Фамилия И.О. владельца»),nl,
write(«3 — известен номерной знак»),nl,
write(«4 — известна марка автомобиля „),nl,
write(“5 — известен район учета»),nl,
write("==>"),
readint(X),
sel(X,N).
sel(1,N):-
nl,
write(«Введите номер записи :»),
readint(N),
svod(M,_,_,_,_,_),
M=N.
sel(1,N):-
N=0.
sel(2,N):-
nl,
write(«Введите Фамилию И.О. владельца:»),
readln(L),
svod(Z,L,_,_,_,_),
N=Z.
sel(2,N):-
N=0.
sel(3,N):-
nl,
write(«Введите номерной знак: „),
readint(F),
svod(Z,_,F,_,_,_),
N=Z.
sel(3,N):-
N=0.
sel(4,N):-
nl,
write(“Введите марку автомабиля:»),
readln(Q),
svod(Z,_,_,Q,_,_),
N=Z.
sel(4,N):-
N=0.
sel(5,N):-
nl,
write(«Введите район учета:»),
readln(W),
svod(Z,_,_,_,W,_),
N=Z.
sel(5,N):-
N=0.
sel(6,N):-
nl,
write(«Введитечисло авто происшествий:»),
readint(C),
svod(Z,_,_,_,_,C),
N=Z.
sel(6,N):-
N=0.