Вход

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

Курсовая работа по программированию
Дата добавления: 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 - 2017