А
Б В
Г Д
Е Ж
З И
К Л
М Н
О П
Р С
Т У
Ф Х
Ц Ч
Ш Э
Ю Я
Реферат: Разработка информационно-справочной системы "Водительское удостоверение"
Разработка информационно-справочной системы "Водительское удостоверение"
Задание N П-7 На курсовое проектирование по дисциплине "Логическое программирование" студенту Данченкову Александру Викторовичу гр. ИИ-1-95. 1. Тема: разработка информационно-справочной системы. 2. Исходные данные: Разработать информационно-справочную систему, обеспечиваю- щую работу с базой данных Bit включающей записи вида: ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННН» є СПИСОК АБИТУРЬЕНТОВ є МНННЛННННННННННННННННННННЛННННЛНННННЛНННННННННННННННННННН№ є є ФИО є є No є оценки за экзамены є єNo МНННННННЛНННЛНННННННН№Пол є экз.МННННННЛННННННЛНННННН№ є єФамилияєИмяєОтчествоє єлистає 1 экзє 2 экзє 3 экзє МНННОНННННННОНННОННННННННОННННОНННННОННННННОННННННОНННННН№ Из базы Bit создать базу Вstud с записями вида: ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННН» є СПИСОК СТУДЕНТОВ є МННННЛНННННННННННННННННННННННННННННННННННННЛНННННЛННННННН№ є є ФИО є No є сумма є є No МННННННННННННЛНННННННННННЛНННННННННННН№ экз.є балов є є є Фамилия є Имя є Отчество єлистає є МННННОННННННННННННОНННННННННННОННННННННННННОНННННОННННННН№ Меню системы должно включать режимы корректировки, уничтоже- ния просмотра, загрузки, сохранения. Язык программирования Пролог. 3. Перечень вопросов, подлежащих разработке: 3.1 Разработка меню, обеспечивающее взаимодействие пользо- вателя с системой, в соответствии с заданием, предус- мотрев режимы: - корректировки данных, - уничтожения данных, - просмотра базы, - загрузки базы, - сохранения базы, - создания новой базы. 3.2 Разработка процедур: - корректировки данных, - уничтожения данных, - просмотра базы, - загрузки базы, - сохранения базы, - создания новой базы. 4. Перечень графических материалов: 4.1 структурная схема меню 4.2 структурная схема программы. 5. Календарный план-график работы над курсовой работой: 1. Получение задания 4.10.96 2. Анализ задания, постановка задачи, подбор и изучение литературы 18.10.96 3. Разработка меню и структуры программы 25.10.96 4. Разработка процедур информационно-справочной системы 15.11.96 5. Отладка программы 29.11.96 6. Оформление пояснительной записки и сдача работы на про- верку 24.12.96 7. Защита курсовой работы 25.12.96 Руководитель /Холкин И.И./ Студент /Данченков А.В., ИИ-1-95/ ................... 12 5.22 Error и Io_error ................... 12 5.23 Ok ................................. 12 6. Листинг программы ....................... 13 7. Отладка программы ....................... 24 8. Инструкция пользователя и решение контрольных примеров: ................... 25 Заключение ................................. 28 Список литературы .......................... 29 ННННКННННННННН» ЙННННННКННННННН» є autoload є є main_manu є єДДДДДДДДДДДДДДДДДє єДДДДДДДДДДДДДДє є автозагрузка БД є є главное меню є ИНННННННННННННННННј ИННННННЛНННННННј є ЙННННННННЛННННННННЛННННННННЛНННННННЛННННННОННННННН» є є є є є є є ЙНННКНННННН» є ЙННННННКНННННН» є ЙНННННКНННН» є ЙНННННКНННН» єworking(0)є є є working(1) є є єworking(2)є є єworking(3)є єДДДДДДДДДДє є єДДДДДДДДДДДДДє є єДДДДДДДДДДє є єДДДДДДДДДДє єИнформацияє є єКорректировкає є є Удаление є є є Просмотр є єо системеє є є данных є є є данных є є є базы є ИННННННННННј є ИННННННЛННННННј є ИНННННЛННННј є ИНННННЛННННј ЙННННННННННННН№ Йј є И» є ИННННН» є є є є є ИН» є є ЙНННННКННННН» є ЙННННННКНННННН» є ЙНННННКНННН» є є є working(4)є є є working(5) є є єworking(6)є є є єДДДДДДДДДДДє є єДДДДДДДДДДДДДє є єДДДДДДДДДДє є є є Процедура є є є Процедура є є є Создание є є є єзагрузки БДє є єсохранения БДє є є новой БД є є є ИНННННЛНННННј є ИННННННЛННННННј є ИННННННННННј є є є є ИНННННН» є є є И» МНННННННЛНННННН» є ИННННННННННН» є є ЙНННННННННН» є є є є ИННННН» є є є єworking(7)є є ЙННННКННННН» є ЙННННКННННН» є ЙНННННКННННН» є МН№ДДДДДДДДДДє є єcorrect(1)є є єcorrect(2)є є є accept(N) є є є є Выход є є єДДДДДДДДДДє є єДДДДДДДДДДє є єДДДДДДДДДДДє є є ИННННННННННј є єИзменение є є єВвод новыхє є єОпределениеє є є ЙНННННННННН» є є данных є є є данных є є є удаляемой є є є єworking(_)є є ИННННННННННј є ИННННННННННј є є записи є є ИН№ДДДДДДДДДДє є ЙНННННННКНННННННН» є ИНННННННННННј є є Обработкає є є correct(_) є є є є ошибки є є єДДДДДДДДДДДДДДДДє є є ИННННННННННј є є выход в главноеє є ЙНННј є є меню є є є є ИННННННННННННННННј є є є є є є є є (1) (2) (3) (1) (2) (3) є є є є є ИНН» є ИННННННННННН» є ЙНННННННКНННННННЛННННННННННННЛНННННННННННННН» є є ЙНННННКНННННН» ЙННННННКНННН» ЙНННННКНННННН» ЙНННННКНННН» є є є load_bd(1) є є load_bd(2)є є load_bd(3) є єload_bd(4)є є є єДДДДДДДДДДДДє єДДДДДДДДДДДє єДДДДДДДДДДДДє єДДДДДДДДДДє є є є Загрузка є є Загрузка є є Загрузка є є Загрузка є є є єосновной БД є єосновной БДє є новой БД є є новой БД є є є є из файла є є из файла є є из файла є є из файла є є є єпользователяє є bit.dat є єпользователяє є bstud.datє є є ИННННННННННННј ИНННННННННННј ИННННННННННННј ИННННННННННј є є є є ЙНННННННННННННННЛННННННННННННЛННННННННННННННЛННННННј є ЙНННННКНННННН» ЙННННННКНННН» ЙНННННКНННННН» ЙНННННКНННН» є є save_bd(1) є є save_bd(2)є є save_bd(3) є єsave_bd(4)є є єДДДДДДДДДДДДє єДДДДДДДДДДДє єДДДДДДДДДДДДє єДДДДДДДДДДє є є Сохранение є є Сохранениеє є Сохранение є єСохранениеє є єосновной БД є єосновной БДє є новой БД є є новой БД є є є в файле є є в файле є є в файле є є в файле є є єпользователяє є bit.dat є єпользователяє є bstud.datє є ИННННННННННННј ИНННННННННННј ИННННННННННННј ИННННННННННј є є ЙНННННННННННННННННННЛНННННННННННННННННННЛНННННННННј ЙННННННКНННННН» ЙННННННКНННННН» ЙННННННКНННННН» є view(1) є є view(2) є є view(_) є єДДДДДДДДДДДДДє єДДДДДДДДДДДДДє єДДДДДДДДДДДДДє є Просмотр є є Просмотр є є Выход є є основной БД є є новой БД є є в меню є ИНННННННННННННј ИНННННННННННННј ИНННННННННННННј процедура выводит список пунктов главного меню и ожи- дает от пользователя ввода числа, которое будет занесено в пере- менную C. После этого вызывается процедура обработки основных ре- жимов Working, в которую переменная C передается в качестве аргу- мента. В процедуре использован предикат Repeat, в связи с этим после возврата из процедуры Working в случае, если C не равно 7 происходит повторный вывод пунктов меню и ожидание ввода числа. од сообщения сопровождается подачей звукового сигнала, реализован- ной с помощью встроенного предиката sound. После нажатия клавиши происходит возврат в главное меню. обще- ние (процедура Error). repeat, nl, nl, cursor(10,0), write(" 1 - Просмотр основной базы"),nl, write(" 2 - Просмотр базы BSTUD"),nl, write(" 3 - Выход в главное меню" ),nl, write(" =>"), readint(X), clearwindow, X>0,X"), readint(C), clearwindow, C>0,C"), readint(I), clearwindow, I>0,I ,Nam2,Otch2),Pol2,List2,оцен(E11,E22,E33))), !, mesage, removewindow. /* Процедура добавления новых записей, стр.11 */ correct(2):- makewindow(9,26,48,"Ввод новых данных",0,0,25,80), repeat, nl, write("Введите порядковый номер абитурьента: "),readint(K),nl, write("Введите фамилию : "),readln(F),nl, write("Введите имя : "),readln(N),nl, write("Введите отчество : "),readln(O),nl, write("Введите пол : "),readln(P),nl, write("Введите номер экзаменационного листа: "), readint(L),nl, write("Введите оценки за экзамены -"),nl,nl, write(" За первый : "),readint(E1),nl, write(" За второй : "),readint(E2),nl, write(" За третий : "),readint(E3),nl, N1=K, Fam=F,Nam=N,Otch=O, Pol=P,List=L, Ekz1=E1,Ekz2=E2,Ekz3=E3, assertz(абитурьент(N1,фио(Fam,Nam,Otch),Pol,List,оцен(Ekz1,Ekz2,Ekz3))), ask,!, mesage, removewindow. correct(_). /* Процедура просмотра базы, стр.11 */ view(1):- makewindow(16,31,26,"Просмотp основной базы",0,0,25,80), nl,nl, write("ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННН»"),nl, write("є СПИСОК АБИТУРЬЕНТОВ є"),nl, write("МННННЛНННННННННННННННННННННЛНННЛНННННЛНННННННННННННННННН№"),nl, write("є є ФИО є є No єоценки за экзаменыє"),nl, write("є No МНННННННЛННННЛНННННННН№Полє экз.МНННННЛННННННЛННННН№"),nl, write("є єФамилияєИмя єОтчествоє єлистає1 экзє 2 экзє3 экзє"),nl, write("МННННОНННННННОННННОННННННННОНННОНННННОНННННОННННННОННННН№"),nl, абитурьент(N,фио(Fam,Nam,Otch),Pol,List,оцен(E1,E2,E3)), cursor(Z,_), cursor(Z,2),write(N), cursor(Z,5),write("є",Fam), cursor(Z,18),write("є",Nam), cursor(Z,30),write("є",Otch), cursor(Z,43),write("є ",Pol), cursor(Z,49),write("є ",List), cursor(Z,55),write("є ",E1), cursor(Z,62),write("є ",E2), cursor(Z,69),write("є ",E3), cursor(Z,0),write("є"), cursor(Z,76),write("є"), nl, fail. view(1):- write("ИННННКНННННННКННННКННННННННКНННКНННННКНННННКННННННКНННННј"), nl, cursor(22,26), write("Нажмите на любую клавишу"), readchar(_), removewindow. view(2):- nl, makewindow(13,31,26,"Просмотр новой базы данных",0,0,25,80), write("ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННН»"),nl, write("є СПИСОК СТУДЕНТОВ є"),nl, write("МННННЛННННННННННННННННННННННННННННННННННННЛНННННЛННННННН№"),nl, write("є є ФИО є No є сумма є"),nl, write("є No МННННННННННННЛНННННННННННЛННННННННННН№ экз.є балов є"),nl, write("є є Фамилия є Имя є Отчество єлистає є"),nl, write("МННННОННННННННННННОНННННННННННОНННННННННННОНННННОННННННН№"),nl, студент(N,фио(Fam,Nam,Otch),List,Sum), cursor(Z,_), cursor(Z,11),write(N), cursor(Z,14),write("є",Fam), cursor(Z,27),write("є",Nam), cursor(Z,39),write("є",Otch), cursor(Z,52),write("є ",List), cursor(Z,58),write("є ",Sum), cursor(Z,9),write("є"), cursor(Z,66),write("є"), nl, fail. view(2):- write("ИННННКННННННННННННКНННННННННННКНННННННННННКНННННКНННННННј"), nl, cursor(22,26), write("Нажмите на любую клавишу"), readchar(_), removewindow. view(_). /* Вспомагательная процедура к процедуре */ /* correct(1) и working(2), стр.11 */ accept(N):- nl, cursor(10,0), write(" 1 - известен номер абитурьента"),nl, write(" 2 - известна фамилия"),nl, write(" =>"), readint(X), acp(X,N). acp(1,N):- nl, write(" Введите номер абитурьента: "),nl, write(" >"), readint(N), абитурьент(P,_,_,_,_), P=N. acp(1,N):- N=0. acp(2,N):- nl, write(" Введите фамилию абитурьента: "),nl, write(" >"), readln(L), абитурьент(Y,фио(L,_,_),_,_,_), N=Y. acp(2,N):- N=0. /* Вспомагательная процедура к correct(1), стр.11 */ skip("",Fam,Fam2):- Fam2=Fam, !. skip(Fam1,_,Fam2):- Fam2=Fam1, !. skip1("",Fam,Fam2):- Fam2=Fam, !. skip1(Fam1,_,Fam2):- str_int(Fang 1hяЕ m1,Fam3), Fam2=Fam3, !. /* Процедура чтения с диска, стр.12 */ load_bd(1):- retractall(_,абитурьент),nl,nl, write(" Введите имя файла :"), readln(N), existfile(N), consult(N,абитурьент), ok, !. load_bd(1):- io_error, !. load_bd(2):- retractall(_,абитурьент), existfile("bit.dat"), consult("bit.dat",абитурьент), ok, !. load_bd(2):- io_error, !. load_bd(3):- retractall(_,студент),nl,nl, write(" Введите имя файла :"), readln(N), existfile(N), consult(N,студент), ok, !. load_bd(3):- io_error, !. load_bd(4):- retractall(_,студент), existfile("bstud.dat"), consult("bstud.dat",студент), ok, !. load_bd(4):- io_error, !. load_bd(_). /* Процедура записи на диск, стр.12 */ save_bd(1):- nl,nl, write(" Введите имя файла : "), readln(N), save(N,абитурьент),nl, ok, !. save_bd(1):- error. save_bd(2):- save("bit.dat",абитурьент), ok, !. save_bd(2):- error. save_bd(3):- nl,nl, write(" Введите имя файла : "), readln(N), save(N,студент),nl, ok, !. save_bd(3):- error. save_bd(4):- save("bstud.dat",студент), ok, !. save_bd(4):- error. save_bd(_). /* Процедура запроса на окончание ввода в correct(2), стр.12 */ ask:- makewindow(10,43,120,"Вопрос",6,18,8,40),nl,nl, write(" Продолжить процесс ввода данных? "),nl,nl, write(" [Д]а/[Н]ет"), readchar(Ch), removewindow, clearwindow, Ch='Н',!. /* Вывод предупреждения о необходимости сохранения данных, стр.12 */ mesage:- makewindow(17,74,79,"Предупреждение",6,18,8,40),nl, write(" Не забудьте сохранить "),nl, write(" вновь введенные данные!"),nl,nl, write(" Нажмите на любую клавишу"), readchar(Ch), removewindow. /* Процедуры вывода сообщения об ошибке, стр.12 */ error:- makewindow(15,74,79,"ОШИБКА",6,18,8,40), cursor(2,16), write("ОШИБКА"),nl,nl, write(" Нажмите на любую клавишу"), sound(70,294), readchar(_), removewindow, !. io_error:- makewindow(16,74,79,"ОШИБКА",6,18,8,40), cursor(2,7), write("Данного файла нет на диске"),nl,nl, write(" Нажмите на любую клавишу"), sound(70,294), readchar(_), removewindow. /* Процедура вывода сообщения об успешном завершении */ /* данной операции, стр.12 */ ok:- makewindow(17,27,90,"ОК",6,18,8,40), cursor(2,7), write(" ОПЕРАЦИЯ ВЫПОЛНЕНА"),nl,nl, write(" Нажмите на любую клавишу"), readchar(_), removewindow. /* Процедура repeat */ repeat. repeat:- repeat. оздание окна "Загрузка" и только однократное его удаление. Ошибка была исправ- лена. В процессе конечной отладки и решения контрольных примеров ошибок в программе обнаружено не было. после загрузки она пуста, и чтобы ее просмотреть следует создать эту БД с помощью пункта 6 или загрузить ее с диска с помощью пункта 4 основного меню. Дан- ные дочерней базы представляются также в виде таблицы. Пункт 3 служит для выхода в главное меню.
|