Скачайте в формате документа WORD

Разработка информационно-справочной системы "Картотека ГАИ" Prolog

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 < 9,

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<4,

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<4,

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<5,

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.