Подобные работы

Скорость обработки запросов на SQL серверах

echo "Додатково програмісту додається повний контроль над виявденням і обробкою помилок, пов”язаних з транзакціями. 2.1 ТЕХНОЛОГІЯ DAO ( Data Access Object – об”єкти доступу до данних ) приззначена дл

Разработка информационно-справочной системы

echo "Курсовая работа состоит из нескольких частей: общие принципы информационных систем, разработка информационных систем (на примере системы 'Зарплата по НИР') и инструкции по использованию системы

Разработка информационно-справочной системы "Зарплата по НИР"

echo "Курсовая работа состоит из нескольких частей: общие принципы информационных систем, разработка информационных систем (на примере системы 'Зарплата по НИР') и инструкции по использованию системы

Информационные технологии

echo "Разумеется, перерабатываемая информация связана с определенными материальными носителями и, следовательно, эти процессы включают также переработку вещества и переработку энергии. Но последнее не

Резидентный обработчик клавиатуры (перехват нажатий клавиш и запись в файл)

echo "Содержание : 1. Задание ……………………………………………………………………………………………….2 2. Краткие теоретические сведенья 2.1. Резидентный обработчик прерываний………………………………………………………...3 2.2. Защита резидентной программы

Разработка программного обеспечения решения нелинейных уравнений

echo "Рассматриваемый язык программирования хорошо приспособлен для решения широкого круга задач. Он содержит мощные средства структурирования данных. Персональные компьютеры являются наиболее широко

Автоматизация рабочего места менеджера по учету товара

echo "Выделим предметную область. Это учет товарооборота на фирме занимающейся торговой деятельностью. Сюда входит и учет товаров на складе ( на нескольких складах), оформление документов по отгрузке

Разработка информационно-справочной системы

Курсовая работа состоит из нескольких частей: общие принципы информационных систем, разработка информационных систем (на примере системы 'Зарплата по НИР') и инструкции по использованию системы 'Зарплата по НИР'. В первой части курсовой (главы 1 и 2) раскрываются общие принципы информационных систем и Баз Данных (БД), рассказывается о программной реализации систем и БД. В этой же части будет рассказано о способах построения БД. Во второй части (главы 3-7) рассказывается об принципах создания программ для обработки БД: создания интерфейса пользователя, сохранения БД и т.д. Так же будет рассказано об отладке программы. В конце второй части приведен текст программы 'Зарплата по НИР'. Текст программы приведен для Turbo-Prolog v2.0. В третьей части показаны инструкции по использованию информационной системы 'Зарплата по НИР'. 1. Понятие об информационных системах и их программной реализации Информационные системы - это системы, которые информируют пользователя системы о той или иной сфере жизнедеятельности человека.

Например: информационная система 'Зарплата по НИР', в которой содержится информация о сотрудниках разных кафедр, которые ведут научные исследования.

Оболочка информационной системы - это программа, которая обеспечивает удобное взаимодействие пользователя и системы.

Пользователь, при помощи оболочки, может получить любую интересующую его информацию. Язык Пролог предостовляет довольно большие возможности для программной реализации оболочки информационной системы. Он предоставляет такие средства как: - загрузка базы данных системы с диска (стандартный предикат @consult ); - запись базы на диск (предикат @save ); - добавление в базу новых данных (предикаты @asserta и assertz ); - удаление данных из базы (предикат @retract) и др.

Сочитание всего этого позволяет создавать довольно мощные информационные системы. @2. База данных и способы ее представления База Данных (БД) - это информация, представленная в виде двумерных таблиц. БД содержит множество строк, каждая из которых соответствует объекту. Для каждого объекта используются определенные независимые позиции, которые называются полями.

Представим себе такую БД, содержащую строки и столбцы (простейший случай). Каждая строка, называемая так же записью, соответствует определенному объекту.

Каждый столбец содержит значения соответствующих данных об объекте.

Например - телефонная книжка: ------------------------------------------- |Фамилия |Имя |Отчество |Телефон | ------------------------------------------- Иванов Иван Иванович 000-00-00 Петров Петр Петрович 111-11-11 ------------------------------------------- БД может состоять не из одной таблицы, а из двух, трех и более.

Дополнительную информацию об объекте можно хранить в дополнительных таблицах. Одно из мощных средств БД состоит в том, что информацию можно упорядочивать по тому критерию, который задает пользователь. В Прологе БД представлется в виде списка термов вида: имя_предиката_базы(поля_записи) . Имена БД описываются в разделе @DATABASE. Доступ к записям БД осуществляется с помощью предиката базы.

Пролог предостовляет довольно много средств по работе с такими БД: загрузка, запись, добавление и т.д. @3. Разработка системного меню Системное меню или основное меню должно обеспечивать удобное взаимодействие пользователя с программой. В меню должны войти пункты сохранения, просмотра, ввода новых данных и т.д.

Пользователю нужно всего лишь нажать цифру, символизирующую ту или иную операцию. В меню данной программы присутствует восемь пунктов: 0 - О пpогpамме... - вывод данных о программе 1 - коррекция данных - режим корректировки данных 2 - удаление данных - режим удаления данных 3 - просмотр базы - режим просмотра базы 4 - загрузка базы - режим загрузки другой базы 5 - сохранение базы - режим сохранения базы 6 - создание новой базы - режим создания новой базы 7 - ввод новых данных - режим ввода данных 8 - выход из программы - выход из программы Некоторые режимы предусматривают варианты выполнения данной операции.

Представим структуру меню на следующей схеме: Ъ———————————————ї і Основное меню і А—В—————————————Щ і Ъ———————————ї Г——ґО программеі і А———————————Щ і Ъ————————————————ї Г——ґКоррекция данныхі і А————————————————Щ і Ъ———————————————ї Г——ґУдаление данныхі і А———————————————Щ і Ъ—————————————ї Г——ґПросмотр базыі і А—————————————Щ і Ъ—————————————ї Г——ґЗагрузка базыі і А———В—————————Щ і і Ъ——————————————————————————ї і Г——ґЗагрузка из файла ALEX.DATі і і А——————————————————————————Щ і і Ъ————————————————————————————ї і А——ґЗагрузка из указанного файлаі і А————————————————————————————Щ і Ъ———————————————ї Г——ґСохранение базыі і А———В———————————Щ і і Ъ——————————————————————ї і Г——ґЗапись в файл ALEX.DATі і і А——————————————————————Щ і і Ъ———————————————————————ї і А——ґЗапись в указанный файлі і А———————————————————————Щ і Ъ———————————————————ї Г——ґСоздание новой базыі і А———В———————————————Щ і і Ъ——————————————————————————————————ї і Г——ґСоздание базы по именам и кафедрамі і і А——————————————————————————————————Щ і і Ъ——————————————————————————————ї і Г——ґСоздание базы 'все о зарплате'і і і А——————————————————————————————Щ і і Ъ—————————————————————ї і А——ґВыход в основное менюі і А—————————————————————Щ і Ъ—————————————————ї Г——ґВвод новых данныхі і А—————————————————Щ і Ъ——————————————————ї А——ґВыход из программыі А——————————————————Щ @4. Разработка структуры программы Структура программы должна разрабатываться с учетом дальнейшей ее отладки, т.е. попытать разбить ее на несколько логических блоков, например: AСтруктура программы ALEX - 'Зарплата по НИР' Ъ———————————————————————————ї і Процедура загрузки базы и і і управления основным меню і А—————————————В—————————————Щ і Ъ—————————————Б—————————————ї і Процедуры выполнения реі і жимов, представленных в і і основном меню і А—————————————В—————————————Щ і Ъ—————————————Б—————————————ї і Процедуры создания новой і і базы і А—————————————В—————————————Щ і Ъ—————————————Б—————————————ї і Процедура просмотра новой і і базы і А—————————————В—————————————Щ і Ъ—————————————Б—————————————ї і Процедура REPEAT і А———————————————————————————Щ Подобное разбиение позволит в дальнейшем легко вносить изменение в программу, а также расставлять контрольные точки для отладки.

Отладку мы рассмотрим в п. 7. Так же рекомендуется перед каждой процедурой ставить комментарии, поясняющие функцию процедуры. Это поможет легко отыскать ту или иную процедуру. @5. Разработка процедур @5.1 Процедура управления основным меню @(PATH) Как уже говорилось основное меню должно обеспечивать удобное взаимодействие пользователя с программой. Для этого необходимо разработать вид основного меню и способ управления им. Был выбран циферный способ управления меню, т.е. пользователь будет вводить цифру, символизирующую ту или иную операцию. Надо так же представить в меню все операции, выполняемые программой, и присвоить каждой операции номер (цифру). Представим вид меню: Ъ———————————————————Зарплата по НИР————————————————————————ї і і і і і 0 - О пpогpамме... і і 1 - коррекция данных і і 2 - удаление данных і і 3 - просмотр базы і і 4 - загрузка базы і і 5 - сохранение базы і і 6 - создание новой базы і і 7 - ввод новых данных і і 8 - выход из программы і і >_ і і і і і А——————————————————————————————————————————————————————————Щ После вывода в окне меню происходит ввод целочисленной переменной @Choice и если значение переменной попадает в промежуток от 0 до 8, то выполняется процедура @process(Choice). После выполнения процедуры @process(Choice) снова повторяется ввод переменной @Choice . @ 5.2 Процедура загрузки базы В программе ALEX - 'Зарплата по НИР' определены процедуры начальной загрузки базы и загрузка с участием пользователя.

Рассмотрим каждую процедуру в отдельности. @ AПроцедура начальной загрузки базы (LOAD) С помощью этой процедуры происходит загрузка базы сразу после запуска программы.

Сначала происходит поиск файла 'alex.dat' с помощью предиката @existfile и если он существует, то происходит загрузка этого файла во внутреннюю базу @ALEX с помощью предиката @consult. Если же файл не найден, то производится вывод сообщения о его отсутствии и программа переходит в режим основного меню. AПроцедура загрузки базы с участием пользователя Эта процедура вызывается из процедуры управления основным меню с помощью команды @PROCESS(4). Она имеет свое меню вида: Ъ———————————————Загрузка———————————————————ї і Загрузить из файла ALEX.DAT - 1 і і Загрузить из указанного файла - 2 і і >_ і і і і і А——————————————————————————————————————————Щ, т.е. пользователю предлагается два варианта загрузки базы. После вывода в окне этого меню происходит ввод целочисленной переменной @WHAT и в зависимости от ее содержания производится одна из представленных операций.

Первый вид загрузки полностью аналогичен загрузке, описанной в процедуре @LOAD. Второй вид предполагает ввод имени. После ввода имени файла в переменную @FNAME происходит поиск файла и если он найден, то очищается содержимое базы @ALEX, с помощью предиката @retractall(_,alex), и база загружается из указанного файла. @5.3 Процедура корректировки базы Эта процедура должна обеспечивать удобную корректировку записей базы данных. Она вызывается из процедуры управления основным меню командой @PROCESS(1). После входа в режим корректировки базы из базы @ALEX берется первая запись с помощью предиката базы данных @alex(FIO,NAME,OT,KAF,NIR,K1,K2,K3,K4,TOTAL,OST) и происходит вывод на экран всех полей записи, после чего выводится запрос о корректировке текущей записи и ожидается ввод переменной @WHAT ,@ и в зависимости от ее содержания (1 или 0) производится корректировка записи (1) или переход к следующей записи (0). Представим вид окна при работе этой процедуры: Ъ—————————————————Коррекция данных——————————————————————ї і Фамилия:Иванов (FIO) і і Имя:Иван (NAME) і і Отчество:Иванович (OT) і і Название кафедры:история (KAF) і і Зарплатa по НИР:300 (NIR) і і Выдано за I квартал:50 (K1) і і Выдано за II квартал:40 (K2) і і Выдано за III квартал:50 (K3) і і Выдали за IV квартал:60 (K4) і і Всего выдано:200 (TOTAL) і і Остаток:100 (OST) і і і і Будете корректировать ? (1-да 0-нет) і . . . . А———————————————————————————————————————————————————————Щ При вводе единицы происходит ввод каждого поля записи и после ввода текущая запись удаляется, и в базу добавляется откорректированный вариант записи. При вводе нуля осуществляется переход к следующей записи базы. @5.4 Процедура удаления данных Эта процедура вызывается из процедуры управления основным меню командой @PROCESS(2). Она полность аналогична процедуре корректировки данных, но работает на удаление записи из базы. @5.5 Процедура ввода новых данных Эта процедура должна предоставлять удобный ввод новой записи базы @ALEX. Вызывается из процедуры управления основным меню командой @PROCESS(7). После входа в режим ввода данных происходит запрос на ввод каждого поля записи базы @ALEX. И после ввода новая запись добавляется в конец базы с помощью стандартного предиката @assertz(alex(FIO,NAME,OT,KAF,NIR,K1,K2,K3,K4,TOTAL,OST)). @5.6 Процедура просмотра базы В программе ALEX - 'Зарплата по НИР' определены процедуры просмотра основной базы @ALEX и просмота созданной базы.

Процедура создания новой базы рассмотрена в п.5.7. Обе этих процедуры полностью аналогичны поэтому рассмотрим их общие свойства. Эта процедура должна обеспечивать удобный просмотр базы данных. Она вызывается из процедуры управления основным меню командой @PROCESS(3). После входа в режим просмотра базы происходит вывод шапки таблицы (вид таблицы взят из задания) и далее с помощью предиката @alex(FIO,NAME,OT,KAF,NIR,K1,K2,K3,K4,TOTAL,OST) происходит взятие первой записи базы @ALEX и распечатка каждого поля записи в виде таблицы. Для этого курсор пермещается к началу вывода каждой записи с помощью предиката @CURSOR. Процедура выполняется до тех пор пока не кончатся все записи в базе. При просмотре созданной базы происходит работа с записями базы @ALEX1 . Процедура просмотра созданной базы - @viewbase . @5.7 Процедура создания новой базы Эта процедура должна обеспечивать удобное создание новой базы из основной с заданными признаками. Она вызывается из процедуры упрвления основным меню командой @PROCESS(6) . Процедура имеет свое меню вида: Ъ—————————————Создание новой базы—————————————————ї і Создать базу по именам и кафедрам - 1 і і Создать базу 'все о зарплате' - 2 і і Выход в меню - 3 і і >_ і і і і і А—————————————————————————————————————————————————Щ, т.е. пользователю предлагается выбор создания одной из двух баз, а так же выход из режима. После вывода в окне этого меню происходит ввод целочисленной переменной @WHAT и в зависимости от ее содержания производится одна из представленных операций. A Создание базы по именам и кафедрам Из основной базы @ALEX берется каждая запись и добавляется во вторую базу @ALEX1 с удалением из нее полей, содержащих информацию о зарплате.

Процесс создания этой базы обеспечивает процедура @newbase(1) , которая вызывается из процедуры создания базы. Затем@ следует просмотр созданной базы с помощью процедуры @viewbase . AСоздание базы 'все о зарплате' Из основной базы @ALEX берется каждая запись и добавляется во вторую базу @ALEX1 с удалением из нее полей, содержащих информацию об имени и кафедре.

Процесс создания этой базы обеспечивает процедура @newbase(2) , которая вызывается из процедуры создания базы. Затем@ следует просмотр созданной базы с помощью процедуры @viewbase . После создания каждой базы происходит запись созданной базы на диск под именем 'ALEX1.DAT'. @6. Текст программы DOMAINS i=integer s=symbol DATABASE-alex alex(s,s,s,s,i,i,i,i,i,i,i) DATABASE-alex1 alex1(s,s,s,s,i,i,i,i,i,i,i) PREDICATES start load path process(i) newbase(i) repeat viewbase GOAL start. CLAUSES /* процедура создания основного меню и загрузки базы данных */ start:- makewindow(1,2,7,'ЗАРПЛАТА ПО НИР',0,0,25,80), clearwindow, load, path. /* процедура поиска и загрузки файла содержащего базу данных */ load:- existfile('alex.dat'), consult('alex.dat',alex), cursor(1,2), write('База загружена'). load:- cursor(1,2), write('Нет базы на диске'). path:- 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 = 9, retractall(_), removewindow. /* О программе */ process(0):- makewindow(1,7,4,'О пpогpамме...',10,10,10,60),nl, write(' Инфоpмационно-спpавочная система'),nl, write(' Зарплaта по НИР '),nl, write(' Язык TURBO-PROLOG версия 2.0 '),nl, write(' автоp:Синельников А.Г. '),nl, write(' МИРЭА, гp.ИЖ-1-95 (C) 1996 г. '),nl,nl, write(' Нажмите на любую клавишу'), readchar(_), removewindow. /* процедура удаления данных */ process(2):- makewindow(2,7,2,'Удаление данных',0,0,25,80), alex(FIO,NAME,OT,KAF,NIR,K1,K2,K3,K4,TOTAL,OST), clearwindow, write('Фамилия:',FIO),nl, write('Имя:',NAME),nl, write('Отчество:',OT),nl, write('Название кафедры:',KAF),nl, write('Зарплатa по НИР:',NIR),nl, write('Выдано за I квартал:',K1),nl, write('Выдано за II квартал:',K2),nl, write('Выдано за III квартал:',K3),nl, write('Выдали за IV квартал:',K4),nl, write('Всего выдано:',TOTAL),nl, write('Остаток:',OST),nl,nl, attribute(4), write('Удалить ? (1-да 0-нет) >'),attribute(7), readint(WHAT), WHAT=1, nl, retract(alex(FIO,NAME,OT,KAF,NIR,K1,K2,K3,K4,TOTAL,OST)), clearwindow; WHAT=0,removewindow. /* процедура просмотра содержимого базы данных */ process(3):- makewindow(2,2,7,'Просмотp базы 'Зарплата по НИР'',0,0,25,80), write('------------------------------------------------------------'),nl, write(' ФИО | |Зарплата|выдано по кварталам| |'),nl, write('------------|Каф.|по |-------------------|всего|остаток'),nl, write('Фам.|Имя|Отч| |НИР |I |II |III |IV | |'),nl, write('------------------------------------------------------------'),nl, alex(FIO,NAME,OT,KAF,NIR,K1,K2,K3,K4,TOTAL,OST), cursor(Z,_), cursor(Z,0),write(FIO), cursor(Z,8),write(NAME), cursor(Z,17),write(OT), cursor(Z,26),write(KAF), cursor(Z,34),write(NIR), cursor(Z,43),write(K1), cursor(Z,48),write(K2), cursor(Z,53),write(K3), cursor(Z,58),write(K4), cursor(Z,63),write(TOTAL), cursor(Z,69),write(OST),nl, fail. process(3):- write('------------------------------------------------------------'), nl,attribute(4), write(' Нажмите на любую клавишу'), attribute(2), readchar(_), removewindow. /* процедура загрузки базы */ process(4):- makewindow(2,15,4,'Загрузка',10,10,10,60), write('Загрузить из файла ALEX.DAT - 1'),nl, write('Загрузить из указанного файла - 2'),nl, write('>'), readint(WHAT), WHAT=1, retractall(_,alex), consult('alex.dat',alex), write('База загружена ...'),nl, write(' Нажмите любую клавишу'), readchar(_),!,removewindow; WHAT=2, write('Введите имя файла >'),readln(FNAME), existfile(FNAME), retractall(_,alex), consult(FNAME,alex), write('База загружена ...'),nl, write(' Нажмите любую клавишу'), readchar(_),!,removewindow; nl,attribute(4), write(' Файл не найден !!!'),attribute(7), readchar(_), removewindow. /* процедура сохранения данных */ process(5):- makewindow(2,15,4,'Запись',10,10,10,60), write('Записать в файл ALEX.DAT - 1'),nl, write('Записать в указанный файл - 2'),nl, write('>'), readint(WHAT), WHAT=1, save('alex.dat',alex), write('База записана ...'),nl, write(' Нажмите любую клавишу'), readchar(_),!,removewindow; WHAT=2, write('Введите имя файла >'),readln(FNAME), save(FNAME,alex), write('База записана ...'),nl, write(' Нажмите любую клавишу'), readchar(_),!,removewindow. /* процедура создания новой базы */ process(6):- makewindow(2,2,7,'Создание новой базы',0,0,25,80), write('Создать базу по именам и кафедрам - 1'),nl, write('Создать базу 'все о зарплате' - 2'),nl, write('Выход в меню - 3'),nl, write('>'),readint(WHAT), WHAT>0,WHAT removewindow, newbase(WHAT). /* процедура ввода новых данных */ process(7):- makewindow(2,2,7,'Ввод новых данных',0,0,25,80), write('Введите фамилию:'),readln(FIO), write('Введите имя:'),readln(NAME), write('Введите отчество:'),readln(OT), write('Введите название кафедры:'),readln(KAF), write('Введите зарплату по НИР:'),readint(NIR), write('Сколько выдали за I квартал:'),readint(K1), write('Сколько выдали за II квартал:'),readint(K2), write('Сколько выдали за III квартал:'),readint(K3), write('Сколько выдали за IV квартал:'),readint(K4), TOTAL=K1+K2+K3+K4, OST=NIR-TOTAL, assertz(alex(FIO,NAME,OT,KAF,NIR,K1,K2,K3,K4,TOTAL,OST)), removewindow. /* Процедура коррекции данных */ process(1):- makewindow(2,7,2,'Коррекция данных',0,0,25,80), alex(FIO,NAME,OT,KAF,NIR,K1,K2,K3,K4,TOTAL,OST), clearwindow, write('Фамилия:',FIO),nl, write('Имя:',NAME),nl, write('Отчество:',OT),nl, write('Название кафедры:',KAF),nl, write('Зарплатa по НИР:',NIR),nl, write('Выдано за I квартал:',K1),nl, write('Выдано за II квартал:',K2),nl, write('Выдано за III квартал:',K3),nl, write('Выдали за IV квартал:',K4),nl, write('Всего выдано:',TOTAL),nl, write('Остаток:',OST),nl,nl, attribute(4), write('Будете корректировать ? (1-да 0-нет) >'),attribute(7), readint(WHAT), WHAT=1, nl, write('Введите фамилию:'),readln(FIO1), write('Введите имя:'),readln(NAME1), write('Введите отчество:'),readln(OT1), write('Введите название кафедры:'),readln(KAF1), write('Введите зарплату по НИР:'),readint(NIR1), write('Сколько выдали за I квартал:'),readint(K11), write('Сколько выдали за II квартал:'),readint(K21), write('Сколько выдали за III квартал:'),readint(K31), write('Сколько выдали за IV квартал:'),readint(K41), TOTAL1=K11+K21+K31+K41, OST1=NIR1-TOTAL1, retract(alex(FIO,NAME,OT,KAF,NIR,K1,K2,K3,K4,TOTAL,OST)), assertz(alex(FIO1,NAME1,OT1,KAF1,NIR1,K11,K21,K31,K41,TOTAL1,OST1)), clearwindow; WHAT=0,removewindow. /* Выход из программы */ process(8):- makewindow(2,7,2,'Выход',10,10,3,60), write('Вы уверены ? (1-да 0-нет) >'),readint(WHAT), WHAT=1,exit; WHAT=0,removewindow. /* процедура создания новой базы */ newbase(1):- makewindow(3,7,2,'Создание базы по именам и кафедрам',10,5,4,67), retractall(_,alex1), alex(FIO,NAME,OT,KAF,NIR,K1,K2,K3,K4,TOTAL,OST), FIO1=FIO,NAME1=NAME,OT1=OT,KAF1=KAF, NIR1=0,K11=0,K21=0,K31=0,K41=0,TOTAL1=0,OST1=0, assertz(alex1(FIO1,NAME1,OT1,KAF1,NIR1,K11,K21,K31,K41,TOTAL1,OST1)), fail. newbase(1):- save('alex1.dat',alex1), write('База создана.

Нажмите любую клавишу для просмотра созданной базы.'), readchar(_), viewbase, removewindow,!. newbase(2):- makewindow(3,7,2,'Создание базы 'все о зарплате'',10,5,4,67), retractall(_,alex1), alex(FIO,NAME,OT,KAF,NIR,K1,K2,K3,K4,TOTAL,OST), FIO1='',NAME1='',OT1='',KAF1='', NIR1=NIR,K11=K1,K21=K2,K31=K3,K41=K4,TOTAL1=TOTAL,OST1=OST, assertz(alex1(FIO1,NAME1,OT1,KAF1,NIR1,K11,K21,K31,K41,TOTAL1,OST1)), fail. newbase(2):- save('alex1.dat',alex1), write('База создана.

Нажмите любую клавишу для просмотра созданной базы.'), readchar(_), viewbase, removewindow,!. /* процедура просмотра созданной базы */ viewbase:- makewindow(4,2,7,'Просмотp созданной базы',0,0,25,80), write('------------------------------------------------------------'),nl, write(' ФИО | |Зарплата|выдано по кварталам| |'),nl, write('------------|Каф.|по |-------------------|всего|остаток'),nl, write('Фам.|Имя|Отч| |НИР |I |II |III |IV | |'),nl, write('------------------------------------------------------------'),nl, alex1(FIO,NAME,OT,KAF,NIR,K1,K2,K3,K4,TOTAL,OST), cursor(Z,_), cursor(Z,0),write(FIO), cursor(Z,8),write(NAME), cursor(Z,17),write(OT), cursor(Z,26),write(KAF), cursor(Z,34),write(NIR), cursor(Z,43),write(K1), cursor(Z,48),write(K2), cursor(Z,53),write(K3), cursor(Z,58),write(K4), cursor(Z,63),write(TOTAL), cursor(Z,69),write(OST),nl, fail. viewbase:- write('------------------------------------------------------------'), nl,attribute(4), write(' Нажмите на любую клавишу'),attribute(2), readchar(_), removewindow. repeat. repeat:- repeat. /* конец программы */ @7. Отладка программы Отладка программы происходила следующим образом: расставлялись контрольные точки (с помощью стандартного предиката EXIT) и происходил запуск программы. После выполнения программы, до контрольной точки, происходил выход из программы и можно было на экране просмотреть результаты работы той или иной процедуры (на начальном этапе программа разрабатывалась без оконного интерфейса). Если процедура работала неправильно, то изменялась часть процедуры и производился повторный запуск программы.

Некоторые ошибки 'ловил' сам Пролог в процессе выполнения программы. В основном ошибки попадались в процедурах сохранения баз. Все ошибки были устранены.

Попадались, так же, некоторые 'глюки' в процедуре просмотра базы, в основном из-за того, что не хватало строки для вывода записи, и поэтому было уменьшено количество знакомест для каждого поля записи. В остальных процедурах ошибок не было. @8. Инструкция пользователя и решение контрольных примеров Программа ALEX представляет собой инструмент для ведения базы данных 'Зарплата по НИР', а так же для обработки данных, представленных в базе.

Программа позволяет создать базу и затем сохранить ее в виде файла, а также откорректировать данные, удалить данные, ввести новые данные и создать новую базу данных по именам или зарплатам.

Взаимодействие с програмой осуществляется с помощью меню: 0 - О пpогpамме... - вывод данных о программе 1 - коррекция данных - режим корректировки данных 2 - удаление данных - режим удаления данных 3 - просмотр базы - режим просмотра базы 4 - загрузка базы - режим загрузки другой базы 5 - сохранение базы - режим сохранения базы 6 - создание новой базы - режим создания новой базы 7 - ввод новых данных - режим ввода данных 8 - выход из программы - выход из программы Чтобы войти в необходимый режим следует ввести цифру, стоящую напротив названия режима.

Теперь опишем каждый пункт в отдельности. @О пpогpамме... Вывод данных о программе. @Коррекция данных Режим коррекции данных. После входа в этот режим на экране появится первая запись и вопрос 'Будете корректировать ? (1-Да 0-Нет)'. Если Вам надо откорректировать выведенную запись, то нажмите 1 и отвечайте на запросы программы. Если Вам не надо корректировать выведенную запись нажмите 2 и на экране распечатается следующая запись. После вывода последней записи происходит выход в основное меню. @ Удаление данных Режим удаления данных. Этот режим полностью аналогичен предыдущему за исключением того, что появляется вопрос 'Удалить ? (1-Да 0-Нет)'. @Просмотр базы Режим просмотра базы. Как только Вы войдете в этот режим на экране появится шапка таблицы и под этой шапкой будут распечатаны все данные. После окончания вывода таблицы нажмите любую клавишу для выхода в основное меню. @Загрузка базы Режим загрузки базы. После входа в этот режим появится еще одно меню: Загрузить из файла ALEX.DAT - 1 Загрузить из указанного файла - 2 и Вам следует нажать цифру в зависимости от того, что Вы хотите сделать. Если Вам надо загрузить базу из основного файла программы ALEX.DAT, то нажмите 1; если же Вы хотите загрузить базу из другого файла, то нажмите 2. После загрузки базы происходит выход в основное меню. @Сохранение базы Режим сохранения базы. Этот режим полностью аналогичен режиму загрузки базы с одним отличием - работает на сохранение базы в основной файл или указанный. @Создание новой базы Режим создания новой базы. В этом режиме так же есть меню: Создать базу по именам и кафедрам - 1 Создать базу 'все о зарплате' - 2 Выход в меню - 3 и Вам следует нажать цифру в зависимости от того какую базу Вы хотите сделать. Если Вам надо создать базу только по именам и кафедрам, то нажмите 1; если же Вам надо сделать базу, содержащую все данные о зарплате, то нажмите 2. Для выхода из режима создания нажмите 3. После то как Вы указали какую базы надо сделать последует просмотр созданной базы (см. режим просмотра базы). Затем нажмите любую клавишу для выхода в основное меню.

Созданная база сохраняется в файле ALEX1.DAT. @Ввод новых данных Режим ввода новых данных. В этом режиме производится ввод новых данных в уже созданную базу или создание новой базы.