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.