А
Б В
Г Д
Е Ж
З И
К Л
М Н
О П
Р С
Т У
Ф Х
Ц Ч
Ш Э
Ю Я
Реферат: Разработка информационно-справочной системы "Овощная база".
Разработка информационно-справочной системы "Овощная база".
Задание N П-14 РБД соответствует предикат в Прологе, элементу - факт, атрибуту отно- шения - аргумент предиката и т.д. Встроенные в Пролог предикаты работы с окнами позволяют создать дружественный интерфейс для ра- боты пользователя с информационно - справочной системой. о выбрать интересующий вас объект изменения. Активизация режимов происходит аналогично главному меню с по- мощью нажатия соответствующей цифровой клавиши. Считанное с кла- виатуры число заносится в переменную X, после чего вызывается процедура Select, аргументом которой служит X. С помощью процеду- ры Select , описанной ниже, собственно и реализуетcя режим кор- рекции. В процедуре Process(1) также применен предикат Repeat, с помощью которого реализован повторный вывод меню в случае ошибки ввода. * * * * * ************************** */ domains b,c,d,m,r,z,i,n,n1,ko,ob,pl=integer t,a,f,s,l,p,u,na,j=symbol database -svod1 svod1(a,b,c,d,f,m,t,r,s,l,p,u) database -lolo lolo(a,b,c,d,f,m,t,r,s,l,p,u) database -kuku kuku(a,b,c,d,f,m,t,r,s,l,p,u) database svod(a,b,c,d,f,m,t,r,s,l,p,u) predicates start patch load select(i) sel(i,i) process(i) procedure(i) sve(i) lod(i) repeat goal start. clauses /*Процедура создания основного меню и загрузки базы данных,стр. */ start:- makewindow(1,10,0,"ТЕХНИЧЕСКИЙ ПАСПОРТ АВТОЛЮБИТЕЛЯ",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(" 9 - выход из программы"),nl, write(" =>"), readint(Choice), Choice >= 0, Choice ите номерной знак :"),readint(FFFF),nl, write("Введите серию паспорта :"),readln(OOOO),nl, write("Введите номер паспорта :"),readint(IIII),nl, write("Введите фамилию :"),readln(KKKK),nl, write("Введите инициалы имени :"),readln(TTTT),nl, write(" отчества :"),readln(MMMM),nl, write("Введите район учета :"),readln(GGGG),nl, NA1=F,KO1=Y,OB1=J,PL1=G,FF1=FFFF,OO1=OOOO, YY1=IIII,KK1=KKKK,II1=TTTT,TT1=MMMM,HH1=GGGG, assertz(svod(N1,NA1,KO1,OB1,PL1,FF1,OO1,YY1,KK1,II1,TT1,HH1)), 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 (с) 1996 г. "), nl,nl,nl,nl, write("Нажмите на любую клавишу"), readchar(_), removewindow. /*Процедура изменения содержимого записей базы данных,стр. */ process(1):- makewindow(1,2,7,"Коppекция данных",0,0,25,80), nl, select(N), RR=N, svod(KY,NA,KO,OB,PL,RR,OOO,YYY,KKK,III,TTT,HHH), write("Марка автомобиля :"),write(KY),nl, write("Год выпуска :"),write(NA),nl, write("Номер двигателя :"),write(KO),nl, write("Номер шасси :"),write(OB),nl, write("Цвет автомобиля :"),write(PL),nl, write("Номерной знак :"),write(RR),nl, write("Серия паспорта :"),write(OOO),nl, write("Номер паспорта :"),write(YYY),nl, write("Фамилия :"),write(KKK),nl, write("Инициалы имени :"),write(III),nl, write(" oтчества :"),write(TTT),nl, write("Район учета :"),write(HHH),nl, nl, write("Введите марку автомобиля :"),readln(N1),nl, write("Введите год выпуска :"),readint(NA1),nl, write("Введите номер двигателя :"),readint(KO1),nl, write("Введите номер шасси :"),readint(OB1),nl, write("Введите цвет :"),readln(PL1),nl, write("Введите номерной знак :"),readint(RR1),nl, write("Введите серию паспорта :"),readln(OO1),nl, write("Введите номер паспорта :"),readint(YY1),nl, write("Введите фамилию :"),readln(KK1),nl, write("Введите инициалы имени :"),readln(II1),nl, write(" отчества :"),readln(TT1),nl, write("Введите район учета :"),readln(HH1),nl, retract(svod(KY,NA,KO,OB,PL,RR,OOO,YYY,KKK,III,TTT,HHH)), assert(svod(N1,NA1,KO1,OB1,PL1,RR1,OO1,YY1,KK1,II1,TT1,HH1)), !, removewindow. /*Процедура удаления записей из базы данных,стр. */ process(2):- makewindow(1,2,7,"Удаление записей",0,0,25,80), nl, select(N), X=N, svod(KY,NA,KO,OB,PL,X,OOO,YYY,KKK,III,TTT,HHH), retract(svod(KY,NA,KO,OB,PL,X,OOO,YYY,KKK,III,TTT,HHH)),!, removewindow. /*Процедура просмотра содержимого базы данных,стр. */ process(3):- makewindow(1,2,7,"Просмотp базы",0,0,25,80), nl, write("ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»"), write("є ТЕХНИЧЕСКИЙ ПАСПОРТ АВТОЛЮБИТЕЛЯ є"), write("МНННННЛНННННЛННННННЛНННННЛННННЛННННННЛННННННННЛНННННЛННННН№"), write("ємаркає год є No є No є єномер-єпаспорт є ФИО є є"), write("єавт. євыпу-єдвига-єшассиєцветє ной єНННННЛННОНЛНЛН№районє"), write("є єска є теля є є є знак єсерияєNoєФєИєОє є"), write("МНННННОНННННОННННННОНННННОННННОННННННОНННННОННОНОНОНОННННН№"), svod(KY,NA,KO,OB,PL,N,OOO,YYY,KKK,III,TTT,HHH), cursor(Z,_), cursor(Z,0),write(KY), cursor(Z,8),write(NA), cursor(Z,16),write(KO), cursor(Z,26),write(OB), cursor(Z,32),write(PL), cursor(Z,39),write(N), cursor(Z,46),write(OOO), cursor(Z,52),write(YYY), cursor(Z,58),write(KKK), cursor(Z,66),write(III), cursor(Z,68),write(TTT), cursor(Z,70),write(HHH), nl, fail. process(3):- write("ИНННННННННННННННННННННННННННННННННННННННННННННННННННННННННј nl, write("Нажмите на любую клавишу"), prћ readchar(_), removewindow. /*Процедура загрузки в память базы данных,стр. */ process(4):- nl, makewindow(2,15,4,"Загрузка",5,5,20,70), write("1 - База будет загружена из указанного файла"),nl, write("2 - База будет загружена из файла dima.dat"),nl, write("3 - Выход в основное меню"),nl, write("==>"), readint(C), C>0,C"), readint(I), I>0,I"), readint(O), O>0,O є знак єсерияєNoєФєИєОє є"), write("МНННННОНННННОННННННОНННННОННННОННННННєНННННОННОНОНОНОННННН№"), lolo(KY,S,KO,OB,PL,N,OOO,YYY,KKK,III,TTT,HHH), cursor(Z,_), cursor(Z,0),write(KY), cursor(Z,8),write(S), cursor(Z,16),write(KO), cursor(Z,26),write(OB), cursor(Z,32),write(PL), cursor(Z,39),write(N), cursor(Z,46),write(OOO), cursor(Z,52),write(YYY), cursor(Z,58),write(KKK), cursor(Z,66),write(III), cursor(Z,68),write(TTT), cursor(Z,70),write(HHH), nl, 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(KY,NA,KO,OB,PL,N,OOO,YYY,KKK,III,TTT,HHH), S=PL, S=X, N1=KY,NA1=NA,KO1=KO,OB1=OB,OO1=OOO,YY1=YYY, KK1=KKK,II1=III,TT1=TTT,HH1=HHH,FF1=N, assert(kuku(N1,NA1,KO1,OB1,S,FF1,OO1,YY1,KK1,II1,TT1,HH1)), fail. procedure(3):- write("База создана"),nl, write("ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»"), write("є ТЕХНИЧЕСКИЙ ПАСПОРТ АВТОЛЮБИТЕЛЯ є"), write("МНННННЛНННННЛННННННЛНННННЛННННННЛННННННЛННННННННЛНННННЛННННН№"), write("ємаркає год є No є No є цвет єномер-є паспортє ФИО єрайонє"), write("єавт. євыпу-єдвига-єшассиє є ной МНННННЛННОНЛНЛН№ є"), write("є є ска є теля є є є знак єсерияєNoєФєИєОє є"), write("МНННННОНННННОННННННОНННННОННННННОННННННОНННННОННОНОНОНОННННН№"), kuku(KY,NA,KO,OB,S,N,OOO,YYY,KKK,III,TTT,HHH), cursor(Z,_), cursor(Z,0),write(KY), cursor(Z,8),write(NA), cursor(Z,16),write(KO), cursor(Z,26),write(OB), cursor(Z,32),write(S), cursor(Z,39),write(N), cursor(Z,46),write(OOO), cursor(Z,52),write(YYY), cursor(Z,58),write(KKK), cursor(Z,66),write(III), cursor(Z,68),write(TTT), cursor(Z,70),write(HHH), nl, 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("dima.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("dima.dat"), consult("dima.dat"), write("Все в порядке"), beep, !. lod(2):- write("Файла dima.dat нет на диске"),nl, write("нажмите любую клавишу"), readchar(_). lod(3). repeat. prћ 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("Введите марку автомобиля :"), readln(KY), svod(KY,_,_,_,_,Z,_,_,_,_,_,_), N=Z. sel(1,N):- N=0. sel(2,N):- nl, write("Введите год выпуска :"), readint(L), svod(_,L,_,_,_,Z,_,_,_,_,_,_), N=Z. sel(2,N):- N=0. sel(3,N):- nl, write("Введите цвет : "), readln(F), svod(_,_,_,_,F,Z,_,_,_,_,_,_), 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("Введите номер двигателя :"), readint(PPPP), svod(_,_,PPPP,_,_,Z,_,_,_,_,_,_), N=Z. sel(5,N):- N=0. де таблицы. Для возвращения в меню следует нажать любую клавишу.
|