Вход

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

Курсовая работа* по программированию
Дата добавления: 31 августа 1997
Язык курсовой: Русский
Word, rtf, 251 кб (архив zip, 26 кб)
Курсовую можно скачать бесплатно
Скачать
Данная работа не подходит - план Б:
Создаете заказ
Выбираете исполнителя
Готовый результат
Исполнители предлагают свои условия
Автор работает
Заказать
Не подходит данная работа?
Вы можете заказать написание любой учебной работы на любую тему.
Заказать новую работу
* Данная работа не является научным трудом, не является выпускной квалификационной работой и представляет собой результат обработки, структурирования и форматирования собранной информации, предназначенной для использования в качестве источника материала при самостоятельной подготовки учебных работ.
Очень похожие работы







Задание N П-1



На курсовое проектирование по дисциплине "Логическое прог-

раммирование". Студенту Синельникову А.Г. гр. ИЖ-1-95.


1. Тема исследований:

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


2. Исходные данные:

из базы В1 с записями вида

-----------------------------------------------------------------

Зарплата по НИР

-----------------------------------------------------------------

ФИО | |Зарплата|выдано по кварталам| |

---------------|Каф.|по |-------------------|всего|остаток

Фамилия|Имя|Отч| |НИР |I |II |III |IV | |

-----------------------------------------------------------------

создать базу В2 с признаками, задаваемыми с дисплея. Для базы В1

предусмотреть режимы: сохранения, просмотра-добавления, загрузки,

корректировки; для В2 - режимы: просмотра и сохранения.

Язык программирования Пролог.


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. Оформление пояснительной записки и сдача работы на проверку

13.12.96

7. Защита курсовой работы

20.12.96





Руководитель /Холкин И.И./

Студент /Синельников А.Г., ИЖ-1-95/
















































_AСодержание

_@стр.

Введение .................................. 4

1. Понятие об информационных системах и их

программной реализации ................. 5

2. БД и способы ее представления .......... 5

3. Разработка системного меню ............. 6

4. Разработка структуры программы ......... 7

5. Разработка процедур:

5.1 Управления основным меню ........... 8

5.2 Загрузки базы ...................... 8

5.3 Корректировки базы ................. 9

5.4 Удаления данных ....................10

5.5 Ввода новых данных .................10

5.6 Просмотра базы .....................10

5.7 Создания новой базы ................10

6. Текст программы ........................12

7. Отладка программы ......................18

8. Инструкция пользователя и решение

контрольных примеров: ..................18

8.1 Заполнение БД ......................20

8.2 Сохранение БД ......................20

8.3 Создание новой БД ..................20

8.4 Загрузка БД ........................20

Заключение ................................21

Список литературы .........................22



















_@Введение


Сегодня, в век высоких технологий, особое внимание уделяет-

ся информации и ее обработке.

С появлением компьютерной техники появилась возможность ве-

дения баз данных по разной тематике. В данной курсовой работе

раскрываются принципы создания и ведения баз данных.

Курсовая работа состоит из нескольких частей: общие принци-

пы информационных систем, разработка информационных систем (на

примере системы "Зарплата по НИР") и инструкции по использованию

системы "Зарплата по НИР".

В первой части курсовой (главы 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 < 9,

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<4>

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.


_@Ввод новых данных


Режим ввода новых данных.

В этом режиме производится ввод новых данных в уже создан-

ную базу или создание новой базы.

Фактически от Вас не требуется никаких действий кроме ввода

ответов на запросы программы.


_@Выход из программы


Я думаю тут все понятно.





_@8.1 Заполнение БД


Чтобы заполнить базу в режиме основного меню нажмите цифру

"7" и отвечайте на запросы программы. Повторите эту процедуру

несколько раз для ввода нескольких записей.


_@ 8.2 Сохранение БД


Чтобы сохранить созданную базу в режиме основного меню наж-

мите цифру "5" и укажите в какой файл Вы хотите записать данные.


_@ 8.3 Создание новой БД


Если Вам надо создать новую базу но основе созданной базы -

нажмите клавишу "6" и укажите программе какую именно базу Вы хо-

тите создать.


_@ 8.4 Загрузка БД


Чтобы загрузить для дальнейшей обработки ранее созданную ба-

зу в режиме основного меню нажмите цифру "4" и укажите программе

откуда Вы хотите загрузить базу.



















_@Заключение


В данной курсовой работе были рассмотрены все поставленные

задачи и обсуждены общие принципы построения информационных сис-

тем и их реализации на языке Пролог.


















































_@Список литературы


И.Братко "Программирование на языке Пролог для

искусственного интеллекта"

Л.Стерлинг,Э.Шапиро "Искусство программирования

на языке Пролог"

Дж.Доорс "Пролог - язык программирования будущего"

© Рефератбанк, 2002 - 2024