Процедура Cjrrect(j,i)
|
domains
z,n,dvig,god,n1,shasi,i=integer
j,mark,znac,fam,ima,otc,ucet=string
database -avto1
avto1(i,j,i,i,i,j,j,j,j,j)
database -avto2
avto2(i,j,i,i,i,j,j,j,j,j)
database -avto3
avto3(i,j,i,i,i,j,j,j,j,j)
database
avto(i,j,i,i,i,j,j,j,j,j)
predicates
nachalo
mainmenu
zagruz
choice1(i)
correct(i,i)
rabota(i)
rabota1(i)
savebase(i)
loadbase(i)
povtor
sbros(j,j,j)
sbros1(j,i,i)
goal
nachalo.
clauses
/*Процедура создания основного меню и загрузки базы данных*/
nachalo: makewindow(1,7,7,"ТЕХ. ПАСПОРТ АВТОМОБИЛЯ",0,0,25,80),
clearwindow,zagruz,
mainmenu.
/*Процедура управления основным меню*/
mainmenu: povtor,
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(" 9 - выход из программы"),nl,
write(" =>"),
readint(Vibor),
Vibor >= 0,
Vibor < 10,
clearwindow,
rabota(Vibor),
clearwindow,
Vibor = 9,
retractall(_),
removewindow.
/*Процедура поиска и загрузки файла содержащего базу данных*/
zagruz: existfile("avto.dat"),
consult("avto.dat"),
cursor(1,2),
write("База загружена").
zagruz: cursor(1,2),
write("Нет базы на диске").
/*Пpоцедуpа ввода новых данных*/
rabota(7): makewindow(1,7,7,"Ввод новых данных",0,0,25,80),
nl,
WRITE("Введите порядковый номер :"),readint(K),nl,
write("Введите МАРКУ :"),readln(F),nl,
write("Введите ГОД ВЫПУСКА :"),readint(Y),nl,
write("Введите N ДВИГАТЕЛЯ :"),readint(J),nl,
write("Введите N ШАССИ :"),readint(G),nl,
write("Введите НОМЕРНОЙ ЗНАК :"),readln(W),nl,
write("Введите ФАМИЛИЮ :"),readln(B),nl,
write("Введите ИМЯ :"),readln(C),nl,
write("Введите ОТЧЕСТВО :"),readln(D),nl,
write("Введите РАЙОН УЧЕТА :"),readln(R),nl,
N1=K,MARK1=F,GOD1=Y,DVIG1=J,SHASI1=G,ZNAC1=W,
FAM1=B,IMA1=C,OTC1=D,UCET1=R,
assertz(avto(N1,MARK1,GOD1,DVIG1,SHASI1,ZNAC1,FAM1,IMA1,OTC1,UCET1)),
removewindow, fail.
/*Процедура просмотра-добавления*/
rabota(8): makewindow(1,7,7,"Просмотр-добавление",0,0,25,80),
nl,
write("Введите номер записи:"),readint(A),nl,nl,
avto(N,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),
A=N,
write("НОМЕР ЗАПИСИ :"),write(N),nl,
write("МАРКА :"),write(MARK),nl,
write("ГОД ВЫПУСКА :"),write(GOD),nl,
write("N ДВИГАТЕЛЯ :"),write(DVIG),nl,
write("N ШАССИ :"),write(SHASI),nl,
write("НОМЕРНОЙ ЗНАК :"),write(ZNAC),nl,
write("ФАМИЛИЯ :"),write(FAM),nl,
write("ИМЯ :"),write(IMA),nl,
write("ОТЧЕСТВО :"),write(OTC),nl,
write("РАЙОН УЧЕТА :"),write(UCET),nl,nl,
readchar(_),
removewindow,
!.
rabota(8): write("Этого номера записи нет в базе."),
write("Повторите введенный номер записи и продолжайте ввод данных"),
nl,nl,nl,
write("Введите номер:"),
readint(A),nl,
N1=A,
write("МАРКА :"),readln(F),nl,
write("ГОД ВЫПУСКА :"),readint(Y),nl,
write("N ДВИГАТЕЛЯ :"),readint(J),nl,
write("N ШАССИ :"),readint(G),nl,
write("НОМЕРНОЙ ЗНАК :"),readln(W),nl,
write("ФАМИЛИЯ :"),readln(B),nl,
write("ИМЯ :"),readln(C),nl,
write("ОТЧЕСТВО :"),readln(D),nl,
write("РАЙОН УЧЕТА :"),readln(R),nl,
MARK1=F,GOD1=Y,DVIG1=J,SHASI1=G,ZNAC1=W,FAM1=B,IMA1=C,OTC1=D,UCET1=R,
assertz(avto(N1,MARK1,GOD1,DVIG1,SHASI1,ZNAC1,FAM1,IMA1,OTC1,UCET1)),
removewindow,
fail.
/*Пpоцедуpа вывода данных о пpогpамме*/
rabota(0): makewindow(1,54,7,"О пpогpамме...",5,5,20,50),
write(" Инфоpмационно-спpавочная система"),nl,nl,
write(" о техническом паспорте автомобиля "),nl,nl,
write(" Язык-TURBO-PROLOG v.2.0. "),nl,nl,
write(" автоp:ТАРАСОВ М. "),nl,nl,
write(" МИРЭА, гp.ИИ-1-95 (с) 1996 г. "),nl,nl,nl,
write(" Нажмите на любую клавишу"),
readchar(_),
removewindow.
/*Процедура удаления записей из базы данных*/
rabota(2): makewindow(1,7,7,"Удаление записей",0,0,25,80),
nl,
choice1(N),
X=N,
avto(X,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),
retract(avto(X,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET)),!,
removewindow.
/*Процедура просмотра содержимого базы данных*/
rabota(3): makewindow(1,7,7,"Просмотp базы",0,0,25,80),
nl,
write(" ╔═════════════════════════════════════════════════════════╗"),nl,
write(" ║ ТЕХ. ПАСПОРТ АВТОМОБИЛЯ ║"),nl,
write(" ╠══╦═════════╦═════╦═════╦═════╦════════╦═══════╦═════════╣"),nl,
write(" ║N°║ МАРКА ║ ГОД ║ N° ║ N° ║ НОМЕРН ║Ф.И.О ║ РАЙОН ║"),nl,
write(" ║ ║АВТОМОБИЛ║ВЫПУС║ДВИГ ║ШАССИ║ ЗНАК ║ ║ УЧЕТА ║"),nl,
write(" ╠══╬═════════╬═════╬═════╬═════╬════════╬═╦═════╬═════════╣"),nl,
avto(N,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),
cursor(Z,_),cursor(Z,1),write("║"),
cursor(Z,2),write(N),cursor(Z,4),write("║"),
cursor(Z,5),write(MARK),cursor(Z,14),write("║"),
cursor(Z,15),write(GOD),cursor(Z,20),write("║"),
cursor(Z,21),write(DVIG),cursor(Z,26),write("║"),
cursor(Z,27),write(SHASI),cursor(Z,32),write("║"),
cursor(Z,33),write(ZNAC),cursor(Z,41),write("║"),
cursor(Z,42),write(FAM),cursor(Z,49),write("║"),
cursor(Z,50),write(IMA),cursor(Z,58),write("║"),
cursor(Z,59),write(OTC),cursor(Z,66),write("║"),
cursor(Z,67),write(UCET),
cursor(Z,76),write("║"),
nl,
fail.
rabota(3): write(" ╠══╬═════════╬═════╬═════╬═════╬════════╬══╬═══════╬═════════╣"),
nl,
write("Нажмите на любую клавишу"),
readchar(_),
removewindow.
/*Процедура загрузки в память базы данных*/
rabota(4): nl,
makewindow(2,15,4,"Загрузка",5,5,20,70),
write("1 - База будет загружена из указанного файла"),nl,
write("2 - База будет загружена из файла avto.dat"),nl,
write("3 - Выход в основное меню"),nl,
write("==>"),
readint(C),
C>0,C<4,
loadbase(C),
!,
removewindow.
/*Процедура сохранения базы данных*/
rabota(5): nl,
makewindow(2,15,4,"Запись",5,5,20,70),
write("1 - База будет записана в указанный файл"),nl,
write("2 - База будет записана в файл avto.dat"),nl,
write("3 - Выход в основное меню"),nl,
write("==>"),
readint(I),
I>0,I<4,
savebase(I),!,
removewindow.
/*Процедура выбора создания новой базы*/
rabota(6): nl,
makewindow(3,7,7,"Создание новой базы",0,0,25,80),
write(" 1 - По марке автомобиля"),nl,
write(" 2 - По году выпуска"),nl,
write(" 3 - По району учета"),nl,
write(" 4 - Выход в основное меню"),nl,
write("==>"),
readint(O),
O>0,O<5,
rabota(O),
removewindow.
/*Процедура изменения содержимого записей базы данных*/
rabota(1): makewindow(1,7,7,"Коppекция данных",0,0,25,80),
nl,
choice1(N),
X=N,
avto(X,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),
write("НОМЕР ЗАПИСИ :"),write(N),nl,
write("МАРКА :"),write(MARK),nl,
write("ГОД ВЫПУСКА :"),write(GOD),nl,
write("N ДВИГАТЕЛЯ :"),write(DVIG),nl,
write("N ШАССИ :"),write(SHASI),nl,
write("НОМЕРНОЙ ЗНАК :"),write(ZNAC),nl,
write("ФАМИЛИЯ :"),write(FAM),nl,
write("ИМЯ :"),write(IMA),nl,
write("ОТЧЕСТВО :"),write(OTC),nl,
write("РАЙОН УЧЕТА :"),write(UCET),nl,nl,
write("Введите МАРКУ :"),readln(MARK1),nl,
write("Введите ГОД ВЫПУСКА :"),readln(GOD1),nl,
write("Введите N ДВИГАТЕЛЯ :"),readln(DVIG1),nl,
write("Введите N ШАССИ :"),readln(SHASI1),nl,
write("Введите НОМЕРНОЙ ЗНАК :"),readln(ZNAC1),nl,
write("Введите ФАМИЛИЮ :"),readln(FAM1),nl,
write("Введите ИМЯ :"),readln(IMA1),nl,
write("Введите ОТЧЕСТВО :"),readln(OTC1),nl,
write("Введите РАЙОН УЧЕТА :"),readln(UCET1),nl,
X1=X,
retract(avto(X,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET)),
sbros(MARK1,MARK,MARK2),
sbros1(GOD1,GOD,GOD2),
sbros1(DVIG1,DVIG,DVIG2),
sbros1(SHASI1,SHASI,SHASI2),
sbros(ZNAC1,ZNAC,ZNAC2),
sbros(FAM1,FAM,FAM2),
sbros(IMA1,IMA,IMA2),
sbros(OTC1,OTC,OTC2),
sbros(UCET1,UCET,UCET2),
assertz(avto(X1,MARK2,GOD2,DVIG2,SHASI2,ZNAC2,FAM2,
IMA2,OTC2,UCET2)),
!,
removewindow.
rabota(_).
sbros("",MARK,MARK2): MARK2=MARK,
!.
sbros(MARK1,_,MARK2): MARK2=MARK1,
!.
sbros1("",MARK,MARK2): MARK2=MARK,
!.
sbros1(MARK1,_,MARK2): str_int(MARK1,MARK3),
MARK2=MARK3,
!.
/*Процедура создания новой базы данных и ее сохранения*/
rabota1(1): makewindow(1,7,7,"Создание новой базы по марке автомобиля",0,0,25,80),
nl,
cursor(7,10),
retractall(_,avto1),
nl,
write("Введите марку автомобиля:"),
readln(X),
avto(N,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),
S=MARK,
S=X,
N1=N,GOD1=GOD,DVIG1=DVIG,SHASI1=SHASI,
ZNAC1=ZNAC,FAM1=FAM,IMA1=IMA,OTC1=OTC,UCET1=UCET,
assert(avto1(N1,S,GOD1,DVIG1,SHASI1,ZNAC1,FAM1,
IMA1,OTC1,UCET1)),
fail.
rabota1(1): write("База создана"),nl,
write("╔═════════════════════════════════════════════════════════╗"),nl,
write("║ ТЕХ. ПАСПОРТ АВТОМОБИЛЯ ║"),nl,
write("╠══╦═════════╦═════╦═════╦═════╦═══════╦════════╦═════════╣"),nl,
write("║N°║ МАРКА ║ ГОД ║ N° ║ N° ║ НОМЕРН║Ф. И. О ║ РАЙОН ║"),nl,
write("║ ║АВТОМОБИЛ║ВЫПУС║ДВИГ ║ШАССИ║ ЗНАК ║ ║ УЧЕТА ║"),nl,
write("╠══╬═════════╬═════╬═════╬═════╬═══════╬════════╬═════════╣"),nl,
avto1(N,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),
cursor(Z,_),cursor(Z,1),write("║"),
cursor(Z,2),write(N),cursor(Z,4),write("║"),
cursor(Z,5),write(MARK),cursor(Z,14),write("║"),
cursor(Z,15),write(GOD),cursor(Z,20),write("║"),
cursor(Z,21),write(DVIG),cursor(Z,26),write("║"),
cursor(Z,27),write(SHASI),cursor(Z,32),write("║"),
cursor(Z,33),write(ZNAC),cursor(Z,41),write("║"),
cursor(Z,42),write(FAM),cursor(Z,49),write("║"),
cursor(Z,50),write(IMA),cursor(Z,58),write("║"),
cursor(Z,59),write(OTC),cursor(Z,66),write("║"),
cursor(Z,67),write(UCET),
cursor(Z,76),write("║"),
nl,
fail.
rabota1(1): write(" ╠══╬═════════╬═════╬═════╬═════╬════════╬════════╬═════════╣"),
save("avto1.dat",avto1),
nl,
write("База сохранена в файле avto1.dat"),
nl,
write("Нажмите любую клавишу"),
readchar(_),
removewindow,
!.
rabota1(1): write(" ╠══╬═════════╬═════╬═════╬═════╬════════╬═══════╬═════════╣"),
nl,
write("Невозможно сохранить созданную базу"),
nl,
write("Нажмите любую клавишу"),
readchar(_),
makewindow(1,7,7,"ТЕХ. ПАСПОРТ АВТОМОБИЛЯ",0,0,25,80).
rabota1(2): makewindow(1,7,7,"Создание новой базы по году выпуска",0,0,25,80),
nl,
cursor(7,10),
retractall(_,avto2),
nl,
write("Введите год выпуска автомобиля:"),
readint(X),
avto(N,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),
S=GOD,
S=X,
N1=N,MARK1=MARK,DVIG1=DVIG,SHASI1=SHASI,ZNAC1=ZNAC,FAM1=FAM,
IMA1=IMA,OTC1=OTC,UCET1=UCET,
assert(avto2(N1,MARK1,S,DVIG1,SHASI1,ZNAC1,FAM1,IMA1,
OTC1,UCET1)),
fail.
rabota1(2): write("База создана"),nl,
write(" ╔════════════════════════════════════════════════════════╗"),nl,
write(" ║ ТЕХ. ПАСПОРТ АВТОМОБИЛЯ ║"),nl,
write(" ╠══╦═════════╦═════╦═════╦═════╦════════╦══════╦═════════╣"),nl,
write(" ║N°║ МАРКА ║ ГОД ║ N° ║ N° ║ НОМЕРН ║Ф И О ║ РАЙОН ║"),nl,
write(" ║ ║АВТОМОБИЛ║ВЫПУС║ДВИГ ║ШАССИ║ ЗНАК ║ ║ УЧЕТА ║"),nl,
write(" ╠══╬═════════╬═════╬═════╬═════╬════════╬══════╬═════════╣"),nl,
avto2(N,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),
cursor(Z,_),cursor(Z,1),write("║"),
cursor(Z,2),write(N),cursor(Z,4),write("║"),
cursor(Z,5),write(MARK),cursor(Z,14),write("║"),
cursor(Z,15),write(GOD),cursor(Z,20),write("║"),
cursor(Z,21),write(DVIG),cursor(Z,26),write("║"),
cursor(Z,27),write(SHASI),cursor(Z,32),write("║"),
cursor(Z,33),write(ZNAC),cursor(Z,41),write("║"),
cursor(Z,42),write(FAM),cursor(Z,49),write("║"),
cursor(Z,50),write(IMA),cursor(Z,58),write("║"),
cursor(Z,59),write(OTC),cursor(Z,66),write("║"),
cursor(Z,67),write(UCET),
cursor(Z,76),write("║"),
nl,
fail.
rabota1(2): write(" ╠══╬═════════╬═════╬═════╬═════╬════════╬════════╬═════════╣"),
save("avto2.dat",avto2),
nl,
write("База сохранена в файле avto2.dat"),
nl,
write("Нажмите любую клавишу"),
readchar(_),
removewindow,
!.
rabota1(2): write(" ╠══╬═════════╬═════╬═════╬═════╬═══════╬═══════╬═════════╣"),
nl,
write("Невозможно сохранить созданную базу"),
nl,
write("Нажмите любую клавишу"),
readchar(_),
makewindow(1,7,7,"ТЕХ. ПАСПОРТ АВТОМОБИЛЯ",0,0,25,80).
rabota1(3): makewindow(1,7,7,"Создание новой базы по району учета",0,0,25,80),
nl,
cursor(7,10),
retractall(_,avto3),
nl,
write("Введите район учета:"),
readln(X),
avto(N,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),
S=UCET,
S=X,
N1=N,MARK1=MARK,GOD1=GOD,DVIG1=DVIG,SHASI1=SHASI,
ZNAC1=ZNAC,FAM1=FAM,IMA1=IMA,OTC1=OTC,
assert(avto3(N1,MARK1,GOD1,DVIG1,SHASI1,ZNAC1,FAM1,
IMA1,OTC1,S)),
fail.
rabota1(3): write("База создана"),nl,
write(" ╔══════════════════════════════════════════════════════╗"),nl,
write(" ║ ТЕХ. ПАСПОРТ АВТОМОБИЛЯ ║"),nl,
write(" ╠══╦═════════╦═════╦═════╦═════╦══════╦══════╦═════════╣"),nl,
write(" ║N°║ МАРКА ║ ГОД ║ N° ║ N° ║НОМЕРН║Ф И О ║ РАЙОН ║"),nl,
write(" ║ ║АВТОМОБИЛ║ВЫПУС║ДВИГ ║ШАССИ║ ЗНАК ║ ║ УЧЕТА ║"),nl,
write(" ╠══╬═════════╬═════╬═════╬═════╬══════╬══════╬═════════╣"),nl,
avto3(N,MARK,GOD,DVIG,SHASI,ZNAC,FAM,IMA,OTC,UCET),
cursor(Z,_),cursor(Z,1),write("║"),
cursor(Z,2),write(N),cursor(Z,4),write("║"),
cursor(Z,5),write(MARK),cursor(Z,14),write("║"),
cursor(Z,15),write(GOD),cursor(Z,20),write("║"),
cursor(Z,21),write(DVIG),cursor(Z,26),write("║"),
cursor(Z,27),write(SHASI),cursor(Z,32),write("║"),
cursor(Z,33),write(ZNAC),cursor(Z,41),write("║"),
cursor(Z,42),write(FAM),cursor(Z,49),write("║"),
cursor(Z,50),write(IMA),cursor(Z,58),write("║"),
cursor(Z,59),write(OTC),cursor(Z,66),write("║"),
cursor(Z,67),write(UCET),
cursor(Z,76),write("║"),
nl,
fail.
rabota1(3): write(" ╠══╬═════════╬═════╬═════╬═════╬════════╬════════╬═════════╣"),
save("avto3.dat",avto3),
nl,
write("База сохранена в файле avto3.dat"),
nl,
write("Нажмите любую клавишу"),
readchar(_),
removewindow,
!.
rabota1(3): write(" ╠══╬═════════╬═════╬═════╬═════╬════════╬════════╬═════════╣"),
nl,
write("Невозможно сохранить созданную базу"),
nl,
write("Нажмите любую клавишу"),
readchar(_),
makewindow(1,7,7,"ТЕХ. ПАСПОРТ АВТОМОБИЛЯ",0,0,25,80).
/*Процедура записи на диск*/
savebase(1): write("Введите имя файла :"),
readln(N),
save(N),
write("Все в порядке"),
beep,
!.
savebase(1): write("Ошибка обмена, нажмите любую клавишу"),
readchar(_).
savebase(2): save("avto.dat").
savebase(3).
/*Процедура чтения с диска*/
loadbase(1): retractall(_),
write("Введите имя файла :"),
readln(N),
existfile(N),
consult(N),
write("Все в порядке"),
beep,
!.
loadbase(1): nl,
write("Данного файла нет на диске"),nl,
write("Нажмите любую клавишу"),
readchar(_).
loadbase(2): retractall(_),
existfile("avto.dat"),
consult("avto.dat"),
write("Все в порядке"),
beep,
!.
loadbase(2): write("Файла avto.dat нет на диске"),nl,
write("нажмите любую клавишу"),
readchar(_).
loadbase(3).
povtor.
povtor:- povtor.
/*Выбор записи*/
choice1(N): nl,
write("1 - известен номер записи "),nl,
write("2 - известна МАРКА "),nl,
write("3 - известен ГОД ВЫПУСКА "),nl,
write("4 - известен N ДВИГАТЕЛЯ "),nl,
write("5 - известен N ШАССИ "),nl,
write("6 - известен НОМЕРНОЙ ЗНАК "),nl,
write("7 - известна ФАМИЛИЯ "),nl,
write("8 - известно ИМЯ "),nl,
write("9 - известно ОТЧЕСТВО "),nl,
write("10- известен РАЙОН УЧЕТА "),nl,
write("=>"),
readint(X),
correct(X,N).
correct(1,N): nl,
write("Введите номер записи :"),
readint(N),
avto(M,_,_,_,_,_,_,_,_,_),
M=N.
correct(1,N): N=0.
correct(2,N): nl,
write("Введите марку автомобиля :"),
readln(L),
avto(Z,L,_,_,_,_,_,_,_,_),
N=Z.
correct(2,N): N=0.
correct(3,N): nl,
write("Введите Год выпуска : "),
readint(F),
avto(Z,_,F,_,_,_,_,_,_,_),
N=Z.
correct(3,N): N=0.
correct(4,N): nl,
write("Введите N двигателя :"),
readint(Q),
avto(Z,_,_,Q,_,_,_,_,_,_),
N=Z.
correct(4,N): N=0.
correct(5,N): nl,
write("Введите N шасси :"),
readint(W),
avto(Z,_,_,_,W,_,_,_,_,_),
N=Z.
correct(5,N): N=0.
correct(6,N): nl,
write(":"),
readln(ZNAC),
avto(Z,_,_,_,_,ZNAC,_,_,_,_),
N=Z.
correct(6,N): N=0.
correct(7,N): nl,
write(":"),
readln(FAM),
avto(Z,_,_,_,_,_,FAM,_,_,_),
N=Z.
correct(7,N): N=0.
correct(8,N): nl,
write(":"),
readln(IMA),
avto(Z,_,_,_,_,_,_,IMA,_,_),
N=Z.
correct(8,N): N=0.
correct(9,N): nl,
write(":"),
readln(OTC),
avto(Z,_,_,_,_,_,_,_,OTC,_),
N=Z.
correct(9,N): N=0.
correct(10,N): nl,
write(":"),
readln(UCET),
avto(Z,_,_,_,_,_,_,_,_,UCET),
N=Z.
© Реферат плюс