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

Курсовой проект

Базы данных — это совокупность структур, предназначенных для хранения больших объемов информации и программных модулей, осуществляющих управление данными, их выборку, сортировку и другие подобные действия. Информация базы данных хранится в одной либо нескольких таблицах. Любая таблица с данными состоит из набора однотипных записей, расположенных друг за другом. Они представляют собой строки таблицы, которые можно добавлять, удалять или изменять. Каждая запись является набором именованных полей, или ячеек, которые могут хранить самую разнообразную информацию, начиная от даты рождения и заканчивая подробным описанием домашнего адреса. Однотипные поля разных записей образуют столбец таблицы.

В БелГУТе существует автоматизированная система управления вузом, которая решает ряд определенных задач. Однако все задачи разобщены, но с другой стороны они взаимосвязаны. Так вновь прибывшие сотрудники, в том числе и преподаватели, проходят через отдел кадров, у которого своя система учета и фиксирования рабочих мест и кадров. При смене места работы или должности затрагиваются различные подразделения БелГУТа, которые связаны друг с другом некоторой общей информацией (Бухгалтерия).

Таким образом, появляется необходимость централизации базы данных, дополнения ее информацией.

Для решения поставленной задачи были написаны различные триггеры, фиксирующие любые внесенные изменения, процедуры, выполняющие определенные действия, представления, для удобной визуализации разобщенной информации и клиентское приложение.

1. Проектирование базы данных

1.1 Описание предметной области и требуемых функций

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

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

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

37 стр., 18434 слов

Проектирование Базы Данных для коммерческого предприятия

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

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

Кроме этого методисту необходимо вести учет студентов, которые выполняют общественную работу на факультете.

Так же методисту факультета необходимо формировать списки студентов по факультету и группе, и учитывать в них статус студента.

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

1.2 Создание базы данных и ограничений

1 Приводятся структуры таблиц с описанием типа, размера и информации, хранящейся в каждом поле. В этом же разделе выполняется разработка скриптов для создания таблиц и ограничений базы данных.

Структура администрируемых таблиц и справочников приведена в таблицах 1 — 11.

Таблица 1-Student(Студенты БелГУТа).

Столбцы

Атрибут

Тип

Размер

Ограничение

ID

Идентификатор

Длинное целое

Первичный ключ

Abitur_ID

Абитуриент

Длинное целое

Внешняя ссылка на Abitur (ID)

Last_Name

Фамилия

Текстовый

30

First_Name

Имя

Текстовый

20

Middle_Name

Отчество

Текстовый

20

Initials

Инициалы

Текстовый

10

Speciality_ID

Специальность

Числовой

Внешняя ссылка на Kind_Speciality (ID)

Personal_File_Number

Номер личного дела

Текстовой

10

Sex

Пол

Текстовый

3

(муж / жен)

Birth_Date

Дата рождения

Дата

Дата

Affiliated_Societies_ID

УКП (длязаочников)

Длинное целое

Внешняя ссылка на Kind _Affiliated_Societies (ID)

Foreign_ID

Иностранный язык

Длинное целое

Внешняя ссылка на Kind_Foreign (ID)

Competition_ID

Вид конкурса

Длинное целое

Внешняя ссылка на Kind_Competition (ID)

Category_Entrant_ID

Категория поступающего (льготы)

Длинное целое

Внешняя ссылка на Kind_Entrant (ID)

Maintenance_ID

Вид гос. обеспечения

Длинное целое

Внешняя ссылка на Kind_Maintenance (ID)

Study_Byelorussian

Изучал белорусский язык

Текстовый

3

ограничение (да / нет)

Citizenship_ID

Гражданство

Длинное целое

Внешняя ссылка на Kind_Citizenship (ID)

Marital_Status_ID

Семейное положение

Длинное целое

Внешняя ссылка на Kind_Marital_Status (ID)

City_ID

Населенный пункт

Длинное целое

Внешняя ссылка на Kind_City (ID)

Home_Adress

Домашний адрес

Текстовый

255

Улица, дом, квартира

Home_Phone

Дом. телефон

Текстовый

30

Passport_Series

Серия паспорта

Текстовый

4

Passport_Number

Номер паспорта

Текстовый

10

Passport_Department

Кемвыдан

Текстовый

150

Passport_Date

Дата выдачи

Дата

Militarian_ID

Отношение к воинской службе

Длинное целое

Внешняя ссылка на Kind_Militarian (ID)

Department_Militarian_ID

Военкомат

Длинное целое

Внешняя ссылка на Kind _Department_Militarian (ID)

Made

Судимость

Текстовый

4

(есть / нет)

Work_Place

Место работы

Текстовый

255

(для заочников)

Work_Post

Должность

Текстовый

255

(для заочников)

Work_Phone

Раб. телефон

Текстовый

30

(для заочников)

Address_Enterprise

Адрес предприятия

Текстовый

255

(для заочников)

General_Experience_ Monthrs

Стаж месяцев(общий)

Длинное целое

Special_Experience_ Monthrs

Стаж месяцев (спец.)

Длинное целое

Record_Book_Number

Номер зачетки

Текстовый

10

Photo

Ссылка на файл с Фотографией

Текстовый

50

Gruppa_ID

Учебная группа

Длинное целое

Внешняя ссылка на Kind_Grupp (ID)

Education_Type_ID

Вид обучения

Длинное целое

ВнешняяссылканаKind_Education_Type (ID)

Sub_Gruppa

Учебная подгруппа

Целое

Requires_Hostel

Нуждается в общежитии

Текстовый

3

Student_Status_ID

Статус студента

Длинное целое

ВнешняяссылканаKind_Student_Status (ID)

Таблица 2- Student_Family(семья студента).

Столбцы

Атрибут

Тип

Размер

Ограничение

ID

Идентификатор

Длинное целое

Первичный ключ

Student_ID

Студент

Длинное целое

Внешняя ссылка на Student (ID)

Relation_Degree_ID

Степень родства

Длинное целое

Внешняя ссылка на Kind_Relation_Degree (ID)

Middle_Student_ID

Является ли родственник студентом БелГУТа

Длинное целое

Внешняя ссылка на Student (ID) (допускает пустое значение)

Last_Name

Фамилия

Текстовый

30

First_Name

Имя

Текстовый

20

Middle_Name

Отчество

Текстовый

20

Birth_Date

Дата рождения

Дата

Invalid_ID

Инвалидность родственника

Длинное целое

Внешняя ссылка на Kind_Invalid (ID)

Home_Adress

Дом.адрес

Текстовый

255

Home_Phone

Дом.телефон

Текстовый

30

Place_Work

Место работы

Текстовый

255

Post

Должность

Текстовый

255

Work_Phone

Раб.телефон

Текстовый

30

Address_Enterprise

Адрес предприятия

Текстовый

255

Таблица 3 — Student_Last_Name_Modify(данные о смене фамилии студентами).

Столбцы

Атрибут

Тип

Размер

Ограничение

ID

Идентификатор

Длинное целое

Первичный ключ

Student_ID

Студент

Длинное целое

Внешняя ссылка на Student (ID)

Order_Date

Дата приказа

Дата

Order_Number

Номер приказа

Текстовый

10

Last_Name_ Modify_ID

Причина смены фамилии

Длинное целое

Внешняя ссылка на Kind_Last_Name_Modify (ID)

Last_Name_Old

Прежняя фамилия

Текстовый

30

Таблица 4 — Student_Actor(участие в художественной самодеятельности).

Столбцы

Атрибут

Тип

Размер

Ограничение

ID

Идентификатор

Длинное целое

Первичный ключ

Student_ID

Студент

Длинное целое

Внешняя ссылка на Student (ID)

Art_ID

Вид художественной самодеятельности

Длинное целое

Внешняя ссылка на Kind_Art (ID)

Actor

В качестве кого

Текстовый

50

Result

Достижения

Текстовый

255

Таблица 5 — Student_Work_Public(общественная работа).

Столбцы

Атрибут

Тип

Размер

Ограничение

ID

Идентификатор

Длинное целое

Первичный ключ

Student_ID

Студент

Длинное целое

Внешняя ссылка на Student (ID)

Work_Public_ID

Вид общественной работы

Длинноецелое

Внешняя ссылка на Kind_Work_public (ID)

Таблица 6 — Kind_Last_Name_Modify(справочник причин смены фамилии).

Столбцы

Атрибут

Тип

Размер

Ограничение

ID

Идентификатор

Длинное целое

Первичный ключ

Last_Name_Modify

Причина смены фамилии

Текстовый

40

Таблица 7 — Kind_Art (справочник видов художественной самодеятельности).

Столбцы

Атрибут

Тип

Размер

Ограничение

ID

Идентификатор

Длинное целое

Первичный ключ

Art

Вид художественной самодеятельности

Текстовый

50

Таблица 8 — Kind_Work_Public (справочник видов общественных работ)

Столбцы

Атрибут

Тип

Размер

Ограничение

ID

Идентификатор

Длинное целое

Первичный ключ

Public_Work

Вид общественной работы

Текстовый

255

Таблица 9 — Kind_Foreign (справочник иностранных языков).

Столбцы

Атрибут

Тип

Размер

Ограничение

ID

Идентификатор

Длинное целое

Первичный ключ

Foreign_Name

Изучаемый иностранный язык

Текстовый

15

Foreign_Cod

Код иностранного языка

Текстовый

1

Таблица 10- Kind_Relation_Degree (справочник степеней родства).

Столбцы

Атрибут

Тип

Размер

Ограничение

ID

Идентификатор

Длинное целое

Первичный ключ

Relation_Degree

Степень родства

Текстовый

10

Таблица 11 — Kind_Marital_Status (справочник видов семейного положения).

Столбцы

Атрибут

Тип

Размер

Ограничение

ID

Идентификатор

Длинное целое

Первичный ключ

Marital_Status

Вид семейного положения

Текстовый

12

Sex

Пол

Текстовый

3

(муж / жен)

Для создания поля, которое заполняется автоматически при добавлении записи в таблицу, используется генератор, а для его вызова — триггер. Разработанные триггеры для протоколирования работы и таблицами и для реализации автоинкрементных полей (ID) всех таблиц приведены в приложении Б. Триггеры для протоколирования работы и таблицами вносят в таблицу Protocol следующие значения:

  • имя таблицы
  • операция (удаление, вставка, редактирование)
  • имя пользователя
  • ID редактируемой записи
  • старое значение редактируемого поля
  • новое значение редактируемого поля
  • дата внесения изменений
  • время внесения изменений.

Триггер по заданию работает следующим образом: Если родственник является студентом БелГУТа, то поля, начиная с фамилии (Last_Name), заполняются с помощью триггера автоматически при добавлении записи или изменении поля «Является ли родственник сотрудником БелГУТа» (Middle_Student_ID).

При пустом значении поля Middle_Student_IDэти поля должны заполняться вручную.

Второй триггер по заданию работает следующим образом:При добавлении записи в таблицу Student_Last_Name_Modify триггер заносит значение новой фамилии из поля new.Last_Name_Old в поле Last_Name таблицы Student, а значение поля Student(Last_Name) заносит в new. Last_Name_Old, т.е. меняет их местами. Таким образом, в таблицу при добавлении записи вставляется новая фамилия, а реально триггер поменяет ее местами со старой.

Для решения определенных задач используются специальные хранимые процедуры:

1. Locality_Address. По ID населенного пункта формирует его полный адрес (от государства и далее до населенного пункта) по таблицам Kind_Administrative_District и Kind_City. Возвращает строку с адресом.

2 .District_Locality_All. По ID административной единицы возвращает ID всех входящих в нее населенных пунктов.

3.District_District_Down.По ID административной единицы возвращает ID всех входящих в нее административных единиц более низкого уровня (одно вложение)

4. Locality_State.По ID населенного пункта возвращает ID государства, в которое он входит.

5.Locality_District.Входные параметры: ID населенного пункта и ID административной единицы.Определяет, входит ли данный населенный пункт в эту административную единицу. Учитывается любая вложенность ссылок. Возвращает 1 (true) или 0 (false).

6.Locality_Region.По ID населенного пункта возвращает ID района, в который он входит.

7.Locality_State.По ID населенного пункта возвращает ID области, в которую он входит.

Скрипт для процедур приведен в приложении Б.

2. Разработка руководства пользователя

2.1 Описание интерфейса пользователя и порядка работы с программным обеспечением

В приложении разработан парольный вход (рисунок 1), который позволяет ограничить доступ к приложению. Таким образом, выполняется необходимые условия для безопасного функционирования программы.

Рисунок 1 — Форма парольного входа в приложение.

Данная форма разделена на три части:

ь Идентификация

ь Вход

В части «Идентификация» находятся поля Логин и Пароль для парольного входа в приложение. При успешном подключении к базе данных становится активным главное окно программы (рисунок 2).

Данная форма показывает главное меню:

Для дальнейшей работы необходимо выбрать интересующий раздел:

ь Работа со справочниками.

ь Работа таблицами.

ь Поиск информации по различным параметрам.

ь Форма для формирования списков студентов

ь Вызвать «Помощь».

Рисунок 2 -Форма главного меню.

Порядок работы с формами справочников (и с большой частью таблиц) аналогичен, поэтому подробное описание приведем для одной формы.

Справочник видов искусств.

Форма «Справочник видов искусств» содержит (рисунок 3):

  • идентификатор вида искусства
  • названия вида искусства

Форма «Справочник видов искусств» решает следующие задачи:

  • Добавление новой записи
  • Редактирование уже существующей записи
  • Удаление уже существующей записи

Рисунок 3 — Форма для работы со справочником видов искусств.

Для реализации функции «редактирование» нужно выбрать в окне отображения данных необходимую строку (рисунок 3).

Нажать кнопку «Изменить» и корректировать нужную информацию, затем подтвердить изменения, нажав кнопку «Подтвердить» (рисунок 4).

Рисунок 4 — Форма для работы со справочником видов искусств.

Также в таблицах было реализовано окно для инкрементного поиска. Для начала работы нужно параметр, который необходимо найти (рисунок 5).

Для удаления ненужной информации необходимо выбрать нужную строку и нажать кнопку «Удалить». Появится соответствующее сообщение «О подтверждении». Нужно подтвердить или отменить действие, нажав кнопку «ДА» или «НЕТ» (рисунок 6).

Справочник видов общественных работ.

Форма «Справочник видов общественных работ» содержит(рисунок 7):

  • идентификатор справочника видов общественных работ.
  • Название вида общественных работ

Рисунок 5 — Пример работы автоинкрементного поиска.

Рисунок 6 — Окно о подтверждении удаления.

Форма «Справочник видов общественных работ» решает следующие задачи (рисунок 7):

  • Добавление новой записи
  • Редактирование уже существующей записи
  • Удаление уже существующей записи

Справочник причин изменения фамилии.

Форма «Справочник причин изменения фамилии» содержит (рис. 8):

  • идентификатор причин изменения фамилии
  • причину изменения фамилии

Форма «Справочник причин изменения фамилии» предоставляет возможности (рисунок 8):

Рисунок 7 — Форма для работы со справочником видов общественных работ.

Рисунок 8 — Форма для работы со справочником причин изменения фамилии.

  • Добавление новой записи
  • Редактирование уже существующей записи
  • Удаление уже существующей записи

Справочник иностранных языков.

Форма «Справочник иностранных языков» содержит (рисунок 9):

  • идентификатор иностранного языка
  • код языка
  • название языка

Форма «Справочник иностранных языков» предоставляет возможности (рисунок 9):

  • Добавление новой записи
  • Редактирование уже существующей записи
  • Удаление уже существующей записи

Рисунок 9 — Форма для работы с иностранными языками.

Справочник родственных отношений.

Форма «Справочник родственных отношений» содержит (рисунок 10):

  • идентификатор вида родственных отношений
  • степень родственных отношений

Форма «Справочник родственных отношений» предоставляет возможности (рисунок 10):

  • Добавление новой записи
  • Редактирование уже существующей записи
  • Удаление уже существующей записи

Рисунок 10 — Форма для работы с видами родственных отношений.

Справочник семейного статуса.

Форма «Справочник семейного статуса» содержит (рисунок 11):

  • идентификатор вида семейного статуса
  • пол
  • семейный статус

Форма «Справочник семейного статуса» предоставляет возможности (рисунок 11):

  • Добавление новой записи
  • Редактирование уже существующей записи
  • Удаление уже существующей записи

Рисунок 11 — Форма для работы с видами семейного статуса.

Таблица студентов изменивших фамилию.

Форма «Таблица студентов изменивших фамилию» содержит (рис. 12):

  • идентификатор записи
  • фамилию, имя, отчество студента
  • группа
  • причина изменения фамилии
  • старая фамилия
  • номер приказа
  • дата приказа

Форма «Таблица студентов изменивших фамилию» предоставляет возможности (рисунок 12):

  • Добавление новой записи
  • Редактирование уже существующей записи
  • Удаление уже существующей записи

Рисунок 12 — Форма для работы со студентами, изменившими фамилию.

Таблица студентов участвующих в творческой самодеятельности.

Форма «Таблица студентов участвующих в творческой самодеятельности» содержит (рисунок 13):

  • идентификатор записи
  • фамилию, инициалы студента
  • группа
  • вид искусства
  • вид деятельности
  • результат

Форма «Таблица студентов участвующих в творческой самодеятельности» предоставляет возможности (рисунок 13):

  • Добавление новой записи
  • Редактирование уже существующей записи
  • Удаление уже существующей записи

Рисунок 13 — Форма для работы со студентами, участвующими в творческой деятельности.

Таблица студентов исполняющих общественные работы.

Форма «Таблица студентов исполняющих общественные работы» содержит (рисунок 14):

  • идентификатор записи
  • фамилию, инициалы студента
  • группа
  • вид общественной работы

Форма «Таблица студентов исполняющих общественные работы» предоставляет возможности (рисунок 14):

  • Добавление новой записи
  • Редактирование уже существующей записи
  • Удаление уже существующей записи

Рисунок 14 — Форма для работы со студентами, участвующими в творческой деятельности.

Поиск

Форма поиска позволяет осуществить поиск студента по различным параметрам (рисунок 15).

Осуществлен поиск студента, по таким параметрам как:

§ Фамилия

§ Имя

§ Отчество

§ Пол(муж/жен)

§ Дата рождения

§ Специализации

§ Иностранный язык

§ Вид конкурса

§ Льготы

§ Вид гос. обеспечения

§ Гражданство

§ Место проживания

§ Домашний адрес

§ Отношение к воинской службе

§ Военкомат

§ Место работы

§ Группа

§ Вид обучения

§ Подгруппа

§ Нуждается в общежитии

§ Статус студента

§ Семейное положение

  • Для выполнения поиска необходимо отметить галочками поля для поиска, и нажать кнопку «Поиск». Информация будет отображена на формы.

Рисунок 15 — Общий вид формы расширенного поиска по различным параметрам.

Работа с формой личной карточки студента.

Фильтрация нужной информации по специализации, группе и фамилии, имени, отчества студентов представлена в верхней левой части формы (рисунок 16).

Рисунок 16 — Фильтры по специализации, группе, и ФИО студента.

Для добавления, редактирования и удаления доступны следующая информация. (рисунок 17):

  • Факультет
  • Номер зачетной книжке
  • Номер студенческого билета
  • Фотография (Загрузка оп нажатию на кнопку “Загрузка фотографии”)
  • Имя
  • Отчество
  • Фамилия
  • Специальность
  • Специализация
  • Дата рождения
  • Пол
  • Место проживания
  • Гражданство
  • Выполняемая общественная работа
  • Образование (Учебное заведение и год окончания)
  • Выполняемая работа до поступления в БелГУТ (Где и кем)
  • Семейное положение
  • Сведения о родителях (ФИО, дата рождения, должность, рабочий телефон, адрес и домашний телефон отца и матери)
  • Домашний адрес

Рисунок 17 — Пример работы формы для личной карточки студента.

Работа с формой закрепления студента за подгруппой.

Фильтрация нужной информации по специализации, группе и фамилии, имени, отчества студентов представлена в верхней левой части формы (рисунок 18).

Рисунок 18 — Фильтры по специализации, группе, и ФИО студента.

В данной форме мы можем изменять подгруппу студента. Пример приведен на рисунке 19

Рисунок 19 — Форма изменения подгруппы студента.

Формирование списков студентов.

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

К дополнительной информации относят

  • Вид обучения
  • Адрес
  • Семейное положение
  • Дату рождения
  • Пол

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

Рисунок 20 — Пример формирования списка для группы ЭМ-22.

Результат выполненных действий:

Таблица 12 Список студентов с основной информацией

Балина

Евгения

Владимировна

ЭМ-22

уч.

Барсуков

Артём

Геннадьевич

ЭМ-22

уч.

Борисова

Марина

Александровна

ЭМ-22

уч.

Бороденок

Сергей

Константинович

ЭМ-22

уч.

Головин+

Павел+

Николаевич+

ЭМ-22

уч.

Гриньков

Сергей

Петрович

ЭМ-22

уч.

Зюзина

Алёна

Владимировна

ЭМ-22

уч.

Качанович

Максим

Валерьевич

ЭМ-22

уч.

Клименок

Ольга

Владимировна

ЭМ-22

уч.

Кожемякин

Сергей

Валентинович

ЭМ-22

уч.

Кравцов

Валерий

Александрович

ЭМ-22

уч.

Криднер

Максим

Олегович

ЭМ-22

уч.

Крупенич

Александр

Геннадьевич

ЭМ-22

уч.

Кузьменко

Руслан

Александрович

ЭМ-22

уч.

Кулагина

Анна

Валерьевна

ЭМ-22

уч.

Курага

Инна

Александравна

ЭМ-22

уч.

Мищук

Евгений

Юрьевич

ЭМ-22

уч.

Надточей

Кристина

Николаевна

ЭМ-22

уч.

Новомлинец

Алексей

Васильевич

ЭМ-22

уч.

Окручинский

Дмитрий

Александрович

ЭМ-22

уч.

Олейник

Александр

Игоревич

ЭМ-22

уч.

Савенок

Дмитрий

Сергеевич

ЭМ-22

уч.

Симончик

Георгий

Константинович

ЭМ-22

уч.

Ткач

Александр

Михайлович

ЭМ-22

уч.

Ф

Ы

В

ЭМ-22

уч.

Харлап

Денис

Сергеевич

ЭМ-22

уч.

Цыганок

Данил

Иванович

ЭМ-22

уч.

Шведова

Мария

Сергеевна

ЭМ-22

уч.

Шереметьев

Роман

Владимирович

ЭМ-22

уч.

Якубчик

Дмитрий

Юрьевич

ЭМ-22

уч.

2.2 Разработка справки и контекстной помощи

Важным элементом приложения является интегрированная справочная система. И хотя многое очевидно для опытного пользователя, все равно всегда остаётся что-то, что нужно уточнить; кроме того, неопытные пользователи не могут свободно ориентироваться и правильно трактовать информацию, выводимую компьютером, т.е. понимать значение элементов меню, окон, диалогов или даже просто сообщений.

В курсовом проекте для создания справки используется программа Dr.Explain.

Простая и надёжная программа, для создания справочной документации в форматах HTML, CHM, RTF, PDF. Идеальный вариант для тех, кто хочет сделать качественную справку, не имея специальных знаний в данной области. Преимущества: простой и интуитивный интерфейс; встроенный модуль захвата экрана, который самостоятельно делит изображение на области; удобная панель инструментов; полезный редактор изображений, в котором можно расставить стрелки и подписи для объектов; мгновенный просмотр CHM и HTML; модуль проверки правописания. Недостатки: отсутствие многопользовательского редактирования; поддержка только основных форматов справки

Рисунок 21 — Вид окна контекстной помощи.

В данном разделе показаны примеры и описания работы со всеми таблицами и справочниками, поисковыми системами, формирования отчетности.

автоматизация интерфейс программный справка

Заключение

Разработано программное обеспечение для методиста факультета. ПО решает следующие задачи:

  • ввод и редактирование справочников и таблиц;
  • ввод и редактирование личных карточек студентов БелГУТа;
  • закрепление студентов БелГУТа за подгруппами;
  • проверку корректности вводимых данных;
  • поиск информации по различным критериям, в том числе по составным критериям (согласовывается с преподавателем).

Дополнительно реализованы такие задачи как:

  • Система контекстной помощи.
  • Удобный пользовательский интерфейс.
  • Защита информации от несанкционированного доступа (права доступа).

Данная информационно-поисковая система полностью интегрирована в общую информационно-поисковую систему БелГУТа, что позволяет сделать вывод практической важности и целесообразности данной работы.

Список использованных источников

[Электронный ресурс]//URL: https://inzhpro.ru/kursovoy/razrabotka-informatsionno-poiskovoy-sistemyi-2/

1. Архангельский А.Я. Программирование в C++Builder 6. — М.: Бином, 2003.

2. Архангельский А.Я.C++Builder 6. Справочное пособие. Книга 2. Классы и компоненты. — М.: Бином, 2002.

Приложение А

Виды списков

Реализованы следующие виды списков:

1. с основной информацией

Список студентов с основной информацией

Балина

Евгения

Владимировна

ЭМ-22

уч.

Барсуков

Артём

Геннадьевич

ЭМ-22

уч.

Борисова

Марина

Александровна

ЭМ-22

уч.

Бороденок

Сергей

Константинович

ЭМ-22

уч.

Головин+

Павел+

Николаевич+

ЭМ-22

уч.

Гриньков

Сергей

Петрович

ЭМ-22

уч.

Зюзина

Алёна

Владимировна

ЭМ-22

уч.

Качанович

Максим

Валерьевич

ЭМ-22

уч.

Клименок

Ольга

Владимировна

ЭМ-22

уч.

Кожемякин

Сергей

Валентинович

ЭМ-22

уч.

Кравцов

Валерий

Александрович

ЭМ-22

уч.

Криднер

Максим

Олегович

ЭМ-22

уч.

Крупенич

Александр

Геннадьевич

ЭМ-22

уч.

Кузьменко

Руслан

Александрович

ЭМ-22

уч.

Кулагина

Анна

Валерьевна

ЭМ-22

уч.

Курага

Инна

Александравна

ЭМ-22

уч.

Мищук

Евгений

Юрьевич

ЭМ-22

уч.

Надточей

Кристина

Николаевна

ЭМ-22

уч.

Новомлинец

Алексей

Васильевич

ЭМ-22

уч.

Окручинский

Дмитрий

Александрович

ЭМ-22

уч.

Олейник

Александр

Игоревич

ЭМ-22

уч.

Савенок

Дмитрий

Сергеевич

ЭМ-22

уч.

Симончик

Георгий

Константинович

ЭМ-22

уч.

Ткач

Александр

Михайлович

ЭМ-22

уч.

Ф

Ы

В

ЭМ-22

уч.

Харлап

Денис

Сергеевич

ЭМ-22

уч.

Цыганок

Данил

Иванович

ЭМ-22

уч.

Шведова

Мария

Сергеевна

ЭМ-22

уч.

Шереметьев

Роман

Владимирович

ЭМ-22

уч.

Якубчик

Дмитрий

Юрьевич

ЭМ-22

уч.

2. с дополнительной информацией

Список студентов с дополнительной информацией

Головин+

Павел+

Николаевич+

ЭМ-22

уч.

внебюдж.

ул. Советская д.140/24

холост

31.05.1993

муж

Приложение Б

Хранимые процедуры и триггеры:

Код хранимой процедуры Locality_Address

Locality_Address

SET TERM ^ ;

CREATE PROCEDURE «LOCALITY_ADDRESS»

(«ID_DEP» INTEGER)

RETURNS

(«FULL_ADRESS» VARCHAR(100) CHARACTER SET WIN1251)

AS

BEGIN EXIT; END ^

ALTER PROCEDURE «LOCALITY_ADDRESS»

(«ID_DEP» INTEGER)

RETURNS

(«FULL_ADRESS» VARCHAR(100) CHARACTER SET WIN1251)

AS

DECLARE VARIABLE ID_DISTRICT_UP integer;

  • DECLARE VARIABLE count_id integer;
  • DECLARE VARIABLE BUFFER_NAME varchar(100);
  • DECLARE VARIABLE CITY_NAME varchar(100);

BEGIN

full_adress=»;

  • ID_DISTRICT_UP=null;
  • BUFFER_NAME=»;
  • CITY_NAME=»;
  • count_id=1;
  • SELECT LOCALITY_NAME,ADMINISTRATIVE_DISTRICT_ID from kind_CITY where id=:ID_DEP INTO :CITY_NAME,:ID_DISTRICT_UP;
  • full_adress=full_adress ||’ ‘|| CITY_NAME;
  • while (count_id>0) DO

begin

SELECT ADMINISTRATIVE_DISTRICT_ID,ADMINISTRATIVE_FULL_NAME from Kind_ADMINISTRATIVE_DISTRICT

where ID=:ID_DISTRICT_UP INTO :ID_DISTRICT_UP,:BUFFER_NAME;

  • full_adress=full_adress ||’ ‘|| BUFFER_NAME;

if(ID_DISTRICT_UP is null) then

count_id=0;

END

SUSPEND;

end

^

SET TERM ; ^

Код хранимой процедуры District_Locality_All

District_Locality_All

SET TERM ^ ;

/* Stored procedures */

CREATE PROCEDURE «DISTRICT_LOCALITY_ALL»

(«ID_UP» INTEGER)

RETURNS

(«ID_DOWN» INTEGER)

AS

BEGIN EXIT; END ^

ALTER PROCEDURE «DISTRICT_LOCALITY_ALL»

(«ID_UP» INTEGER)

RETURNS

(«ID_DOWN» INTEGER)

AS

DECLARE VARIABLE ID_DISTRICT integer;

BEGIN

ID_DISTRICT=null;

FOR SELECT ID FROM Kind_City WHERE Administrative_District_ID=: ID_UP INTO:ID_DOWN

DO

SUSPEND;

for SELECT ID FROM KIND_ADMINISTRATIVE_DISTRICT where ADMINISTRATIVE_DISTRICT_ID=:ID_UP INTO :ID_DISTRICT

DO

for SELECT *FROM DISTRICT_LOCALITY_ALL(:ID_DISTRICT) INTO :ID_DOWN

DO SUSPEND;

END

^

SET TERM ; ^

КодхранимойпроцедурыDistrict_District_Down

District_District_Down

SET TERM ^ ;

/* Stored procedures */

CREATE PROCEDURE «DISTRICT_DISTRICT_DOWN»

(«ID_UP» INTEGER)

RETURNS

(«ID_DOWN» INTEGER)

AS

BEGIN EXIT; END ^

ALTER PROCEDURE «DISTRICT_DISTRICT_DOWN»

(«ID_UP» INTEGER)

RETURNS

(«ID_DOWN» INTEGER)

AS

BEGIN

FOR SELECT ID FROM KIND_ADMINISTRATIVE_DISTRICT WHERE ADMINISTRATIVE_DISTRICT_ID=:ID_UP INTO:ID_DOWN

DO

SUSPEND;

END

^

SET TERM ; ^

Код хранимой процедуры Locality_State

Locality_State

SET TERM ^ ;

/* Stored procedures */

CREATE PROCEDURE «LOCALITY_STATE»

«ID_UP» INTEGER

RETURNS

«ID_DOWN» INTEGER

AS

BEGIN EXIT; END ^

ALTER PROCEDURE «LOCALITY_STATE»

(«ID_UP» INTEGER)

RETURNS

(«ID_DOWN» INTEGER)

AS

DECLARE VARIABLE ID_DISTRICT_UP integer;

  • DECLARE VARIABLE count_id integer;
  • DECLARE VARIABLE ADMIN_LEVEL integer;

BEGIN

ID_DISTRICT_UP=null;

  • count_id=1;
  • ADMIN_LEVEL=null;
  • SELECT ADMINISTRATIVE_DISTRICT_ID from KIND_CITY where id=:ID_UP INTO: ID_DISTRICT_UP;
  • while (count_id>0) DO

begin

SELECT ADMINISTRATIVE_LEVEL_ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ADMIN_LEVEL;

if(ADMIN_LEVEL=2) then

BEGIN

count_id=0;

  • SELECT ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ID_DOWN;

END

ELSE

BEGIN

SELECT ADMINISTRATIVE_DISTRICT_ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ID_DISTRICT_UP;

END

END

SUSPEND;

END

^

SET TERM ; ^

Код хранимой процедуры Locality_Region

Locality_Region

SET TERM ^ ;

/* Stored procedures */

CREATE PROCEDURE «LOCALITY_REGION»

(«ID_CITY» INTEGER)

RETURNS

(«ID_REGION» INTEGER)

AS

BEGIN EXIT; END ^

ALTER PROCEDURE «LOCALITY_REGION»

(«ID_CITY» INTEGER)

RETURNS

(«ID_REGION» INTEGER)

AS

DECLARE VARIABLE ID_DISTRICT_UP integer;

  • DECLARE VARIABLE count_id integer;
  • DECLARE VARIABLE ADMIN_LEVEL integer;

BEGIN

ID_DISTRICT_UP=null;

  • count_id=5;
  • ADMIN_LEVEL=null;
  • SELECT ADMINISTRATIVE_DISTRICT_ID from KIND_CITY where id=:ID_CITY INTO: ID_DISTRICT_UP;
  • while (count_id>0) DO

begin

SELECT ADMINISTRATIVE_LEVEL_ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ADMIN_LEVEL;

if(ADMIN_LEVEL=5) then

BEGIN

count_id=0;

  • SELECT ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ID_REGION;

END

ELSE

BEGIN

SELECT ADMINISTRATIVE_DISTRICT_ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ID_DISTRICT_UP;

  • count_id= count_id-1;

END

end

SUSPEND;

END

^

SET TERM ; ^

Код хранимой процедуры LOCALITY_STATE_AREAL

LOCALITY_STATE_AREAL

SET TERM ^ ;

/* Stored procedures */

CREATE PROCEDURE «LOCALITY_STATE_AREAL»

(«ID_CITY» INTEGER)

RETURNS

(«ID_REGION» INTEGER)

AS

BEGIN EXIT; END ^

ALTER PROCEDURE «LOCALITY_STATE_AREAL»

(«ID_CITY» INTEGER)

RETURNS

(«ID_REGION» INTEGER)

AS

DECLARE VARIABLE ID_DISTRICT_UP integer;

  • DECLARE VARIABLE count_id integer;
  • DECLARE VARIABLE ADMIN_LEVEL integer;

BEGIN

ID_DISTRICT_UP=null;

  • count_id=5;
  • ADMIN_LEVEL=null;
  • SELECT ADMINISTRATIVE_DISTRICT_ID from KIND_CITY where id=:ID_CITY INTO: ID_DISTRICT_UP;
  • while (count_id>0) DO

begin

SELECT ADMINISTRATIVE_LEVEL_ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ADMIN_LEVEL;

if(ADMIN_LEVEL=3) then

BEGIN

count_id=0;

  • SELECT ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ID_REGION;

END

ELSE

BEGIN

SELECT ADMINISTRATIVE_DISTRICT_ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ID_DISTRICT_UP;

  • count_id= count_id-1;

END

end

SUSPEND;

END

^

SETTERM ; ^

Так как триггеры выполняют аналогичные задачи, то рассмотрим триггер на примере таблицы «STUDENT_LAST_NAME_MODIFY»:

1)Созданиегенератора.

CREATE GENERATOR GEN_STUDENT_LAST_NAME_MODIFY_ID;

2) Триггер для идентификатора.

SETTERM~;

CREATE TRIGGER “STUDENT_Last_NAME_MODIFY_ID FOR STUDENT_LAST_NAME_MODIFY”

BEFORE INSERT

AS BEGIN

new.ID=GEN_ID(GEN_STUDENT_LAST_NAME_MODIFY_ID, 1);

END~

3) Триггервставки:

  • SET TERM ~;

CREATE TRIGGER «TR_STUDENT_LNM_INSERT» FOR «STUDENT_LAST_NAME_MODIFY»

ACTIVE AFTER INSERT POSITION 2

AS

BEGIN

INSERT INTO Protocol(Tablename, Typename, username, recordid, fieldname, oldvalue, newvalue, changedate, changetime) VALUES(‘STUDENT_LAST_NAME_MODIFY’, ‘insert’, user, NEW.ID, NULL,

NULL, NULL,

‘NOW’, ‘NOW’);

END~

SET TERM ; ~

4)Триггерудаления:

  • SET TERM ~;

CREATE TRIGGER «TR_STUDENT_LNM_DELETE» FOR «STUDENT_LAST_NAME_MODIFY»

ACTIVE AFTER DELETE POSITION 1

AS

BEGIN

INSERT INTO Protocol(Tablename, Typename, username, recordid, fieldname, oldvalue, newvalue, changedate, changetime) VALUES(‘STUDENT_LAST_NAME_MODIFY’, ‘delete’, user, OLD.ID, NULL,

NULL, NULL,

‘NOW’, ‘NOW’);

END~

SET TERM ; ~

5)Триггерредактирования:

  • SET TERM ~;

CREATE TRIGGER «TR_STUDENT_LNM_UPDATE» FOR «STUDENT_LAST_NAME_MODIFY»

ACTIVE AFTER UPDATE POSITION 3

AS

BEGIN

IF (OLD.ID <> NEW.ID) THEN

BEGIN

INSERT INTO Protocol(Tablename, Typename, username, recordid, fieldname, oldvalue, newvalue, changedate, changetime) VALUES(‘STUDENT_LAST_NAME_MODIFY’, ‘edit’, user, OLD.ID,

‘ID’, OLD.ID, NEW.ID, ‘NOW’, ‘NOW’);

END

IF (OLD.Student_ID<>NEW.Student_ID) THEN

BEGIN

INSERT INTO Protocol(Tablename, Typename, username, recordid, fieldname, oldvalue, newvalue, changedate, changetime) VALUES(‘STUDENT_LAST_NAME_MODIFY’, ‘edit’, user, OLD.ID,

‘Student_ID’, OLD.Student_ID, NEW.Student_ID, ‘NOW’, ‘NOW’);

END

IF (OLD.Order_Date<>NEW.Order_Date) THEN

BEGIN

INSERT INTO Protocol(Tablename, Typename, username, recordid, fieldname, oldvalue, newvalue, changedate, changetime) VALUES(‘STUDENT_LAST_NAME_MODIFY’, ‘edit’, user, OLD.ID,

‘Order_Date’, OLD.Order_Date, NEW.Order_Date, ‘NOW’, ‘NOW’);

END

IF (OLD.Order_Number<>NEW.Order_Number) THEN

BEGIN

INSERT INTO Protocol(Tablename, Typename, username, recordid, fieldname, oldvalue, newvalue, changedate, changetime) VALUES(‘STUDENT_LAST_NAME_MODIFY’, ‘edit’, user, OLD.ID,

‘Order_Number’, OLD.Order_Number, NEW.Order_Number, ‘NOW’, ‘NOW’);

END

IF (OLD.Last_Name_Modify_ID<>NEW.Last_Name_Modify_ID) THEN

BEGIN

INSERT INTO Protocol(Tablename, Typename, username, recordid, fieldname, oldvalue, newvalue, changedate, changetime) VALUES(‘STUDENT_LAST_NAME_MODIFY’, ‘edit’, user, OLD.ID,

‘Last_Name_Modify_ID’, OLD.Last_Name_Modify_ID, NEW.Last_Name_Modify_ID, ‘NOW’, ‘NOW’);

END

IF (OLD.Last_Name_Old<>NEW.Last_Name_Old) THEN

BEGIN

INSERT INTO Protocol(Tablename, Typename, username, recordid, fieldname, oldvalue, newvalue, changedate, changetime) VALUES(‘STUDENT_LAST_NAME_MODIFY’, ‘edit’, user, OLD.ID,

‘Last_Name_Old’, OLD.Last_Name_Old, NEW.Last_Name_Old, ‘NOW’, ‘NOW’);

END

END~

SETTERM ; ~END~

6)Триггер по заданию(Если родственник является студентом БелГУТа, то поля, начиная с Last_Name, заполняются с помощью триггера автоматически при добавлении записи или изменении поля Middle_Student_ID. При пустом значении поля Middle_Student_ID эти поля должны заполняться вручную).

SET TERM ~;

CREATE TRIGGER «STUDENT_FAMILY_RELATIVE_INSERT» FOR «STUDENT_FAMILY»

ACTIVE BEFORE INSERT POSITION 0

AS

declare variable a varchar(10);

  • declare variable b varchar(30);
  • declare variable c varchar(20);
  • declare variable e date;
  • declare variable f VARCHAR(255);
  • declare variable g VARCHAR(30);
  • declare variable i integer;
  • declare variable h VARCHAR(255);
  • declare variable j VARCHAR(255);
  • declare variable k VARCHAR(30);
  • declare variable l VARCHAR(255);

BEGIN

IF(new.MIDDLE_STUDENT_ID is not NULL) then

begin

select Last_Name,First_Name,Middle_Name,Birth_Date, Home_Adress,Home_Phone,WORK_PLACE,WORK_POST,WORK_PHONE,ADDRESS_ENTERPRISE

from student

where Student.ID=new.MIDDLE_STUDENT_ID

into :a,:b,:c,:e,:f,:g,:h,:j,:k,:l;

  • new.LAST_NAME=:a;
  • new.FIRST_NAME=:b;
  • new.MIDDLE_NAME=:c;
  • new.BIRTH_DATE=:e;
  • new.INVALID_ID=4;
  • new.HOME_ADRESS=:f;
  • new.HOME_PHONE=:g;
  • new.WORK_PLACE=:h;
  • new.WORK_POST=:j;
  • new.WORK_PHONE=:k;
  • new.ADDRESS_ENTERPRISE=:l;

END

END~

SET TERM ; ~

Специальный триггер 2 делает следующие дейтсвия:1 При добавлении записи в таблицу триггер заносит значение новой фамилии из поля new.Last_Name_Old в поле Last_Name таблицы Student, а значение поля Student(Last_Name) заносит в new.Last_Name_Old, т.е. меняет их местами. Таким образом, в таблицу при добавлении записи вставляется новая фамилия, а реально триггер поменяет ее местами со старой.

SET TERM ~;

CREATE TRIGGER «TR_STUDENT_LNM» FOR «STUDENT_LAST_NAME_MODIFY»

ACTIVE BEFORE INSERT POSITION 0

AS

declare variable famvarchar(30);

  • declare variable fam2 varchar(30);

BEGIN

select LAST_NAME from STUDENT where STUDENT.ID=STUDENT_LAST_NAME_MODIFY.STUDENT_ID into fam;

ыуд

update STUDENT set STUDENT.LAST_NAME=new.LAST_NAME_OLD where STUDENT.ID=STUDENT_LAST_NAME_MODIFY.STUDENT_ID;

  • new.LAST_NAME_OLD=fam;

END~

SET TERM ; ~

Приложение В

Содержимое HELP-ФАЙЛА

Рисунок21 — Пример HELP-файла для справочника «Виды искусств».

Рисунок 22 — Пример HELP-файла для поиска.

Рисунок 23 — Пример HELP-файла для формирования отчетов.

Приложение Г

Листинг программы.

//—————————————————————————

#include <vcl.h>

#pragma hdrstop

#include «Unit4.h»

//—————————————————————————

#pragma package(smart_init)

#pragma resource «*.dfm»

TKind_Work_Public *Kind_Work_Public;

  • int change4=0;

//—————————————————————————

__fastcallTKind_Work_Public::TKind_Work_Public(TComponent* Owner)

: TForm(Owner)

{

}

//—————————————————————————

void __fastcallTKind_Work_Public::Button1Click(TObject *Sender)

{

IBQuery1->First();

}

//—————————————————————————

void __fastcallTKind_Work_Public::Button2Click(TObject *Sender)

{

IBQuery1->Next();

}

//—————————————————————————

void __fastcallTKind_Work_Public::Button3Click(TObject *Sender)

{

IBQuery1->Prior();

}

//—————————————————————————

void __fastcallTKind_Work_Public::Button4Click(TObject *Sender)

{

IBQuery1->Last();

}

//—————————————————————————

void __fastcallTKind_Work_Public::Button5Click(TObject *Sender)

{

change4=1;

  • Edit1->Text=»»;
  • Edit2->Text=»»;
  • Edit1->Enabled=true;
  • Edit2->Enabled=true;
  • Button5->Enabled=false;
  • Button6->Enabled=false;
  • Button7->Enabled=false;
  • Button8->Enabled=true;
  • Button9->Enabled=true;
  • Button8->Caption=»Добавитьещё»;

}

//—————————————————————————

void __fastcallTKind_Work_Public::Button6Click(TObject *Sender)

{

change4=2;

  • Edit1->Enabled=true;
  • Edit2->Enabled=false;
  • Button5->Enabled=false;
  • Button6->Enabled=false;
  • Button7->Enabled=false;
  • Button8->Enabled=true;
  • Button9->Enabled=true;

}

//—————————————————————————

void __fastcallTKind_Work_Public::Button7Click(TObject *Sender)

{

if(Application->MessageBox(«Вы действительно хотите удалить запись ?»,»Внимание»,MB_YESNO)==6){

IBQuery4->ParamByName(«ID»)->AsInteger=Edit2->Text.ToInt();

  • IBQuery4->ExecSQL();
  • IBQuery1->Active=false;
  • IBQuery1->Active=true;

}

}

//—————————————————————————

void __fastcallTKind_Work_Public::Button8Click(TObject *Sender)

{

if(change4==1){

IBQuery2->ParamByName(«PUBLIC_WORK»)->AsString=Edit1->Text;

  • IBQuery2->ParamByName(«ID»)->AsInteger=Edit2->Text.ToInt();
  • IBQuery2->ExecSQL();
  • IBQuery1->Active=false;
  • IBQuery1->Active=true;
  • TKind_Work_Public::Button5Click(Sender);

}

if (change4==2){

IBQuery3->ParamByName(«PUBLIC_WORK»)->AsString=Edit1->Text;

  • IBQuery3->ParamByName(«ID»)->AsInteger=Edit2->Text.ToInt();
  • IBQuery3->ExecSQL();
  • IBQuery1->Active=false;
  • IBQuery1->Active=true;
  • Edit1->Enabled=false;
  • Edit2->Enabled=false;
  • Button5->Enabled=true;
  • Button6->Enabled=true;
  • Button7->Enabled=true;
  • Button8->Enabled=false;
  • Button9->Enabled=false;
  • change4=0;

}

}

//—————————————————————————

void __fastcallTKind_Work_Public::Button9Click(TObject *Sender)

{

Edit1->Text=»»;

  • Edit2->Text=»»;
  • Edit1->Enabled=false;
  • Edit2->Enabled=false;
  • Button5->Enabled=true;
  • Button6->Enabled=true;
  • Button7->Enabled=true;
  • Button8->Enabled=false;
  • Button9->Enabled=false;
  • Button8->Caption=»Подтвердить»;
  • change4=0;

}

//—————————————————————————

void __fastcallTKind_Work_Public::DataSource1DataChange(TObject *Sender,

TField *Field)

{

Edit1->Text=IBQuery1->FieldByName(«PUBLIC_WORK»)->Value;

  • Edit2->Text=IBQuery1->FieldByName(«ID»)->Value;
  • Button5->Enabled=true;
  • Button6->Enabled=true;
  • Button7->Enabled=true;
  • Button8->Enabled=false;
  • Button9->Enabled=false;
  • Edit1->Enabled=false;
  • Edit2->Enabled=false;
  • Button8->Caption=»Подтвердить»;

}

//—————————————————————————

void __fastcallTKind_Work_Public::FormCreate(TObject *Sender)

{

IBQuery1->Active=true;

}

//—————————————————————————

void __fastcallTKind_Work_Public::Button12Click(TObject *Sender)

{

WinExec(«hh.exe html_help_source.chm::Kind_work_public.html «, SW_SHOWNORMAL);

}

//—————————————————————————