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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    17,67 Кб
  • Опубликовано:
    2016-02-22
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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















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

на тему:

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

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

СтолбцыАтрибутТипРазмерОграничениеIDИдентификаторДлинное целоеПервичный ключAbitur_IDАбитуриентДлинное целоеВнешняя ссылка на Abitur (ID)Last_NameФамилияТекстовый30First_NameИмяТекстовый20Middle_NameОтчествоТекстовый20InitialsИнициалыТекстовый10Speciality_IDСпециальностьЧисловойВнешняя ссылка на Kind_Speciality (ID)Personal_File_NumberНомер личного делаТекстовой10SexПолТекстовый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Дом. телефонТекстовый30Passport_SeriesСерия паспортаТекстовый4Passport_NumberНомер паспортаТекстовый10Passport_DepartmentКемвыданТекстовый150Passport_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Номер зачеткиТекстовый 10PhotoСсылка на файл с ФотографиейТекстовый 50Gruppa_IDУчебная группаДлинное целоеВнешняя ссылка на Kind_Grupp (ID)Education_Type_IDВид обученияДлинное целоеВнешняяссылканаKind_Education_Type (ID)Sub_GruppaУчебная подгруппаЦелоеRequires_HostelНуждается в общежитии Текстовый 3Student_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ФамилияТекстовый30First_NameИмяТекстовый20Middle_NameОтчествоТекстовый20Birth_DateДата рожденияДатаInvalid_IDИнвалидность родственникаДлинное целоеВнешняя ссылка на Kind_Invalid (ID)Home_AdressДом.адресТекстовый255Home_PhoneДом.телефонТекстовый30Place_WorkМесто работыТекстовый255PostДолжностьТекстовый255Work_PhoneРаб.телефонТекстовый30Address_EnterpriseАдрес предприятияТекстовый255

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

СтолбцыАтрибутТипРазмерОграничениеIDИдентификаторДлинное целоеПервичный ключStudent_IDСтудент Длинное целоеВнешняя ссылка на Student (ID)Order_DateДата приказаДатаOrder_NumberНомер приказаТекстовый10Last_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В качестве когоТекстовый50ResultДостиженияТекстовый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Изучаемый иностранный языкТекстовый15Foreign_CodКод иностранного языкаТекстовый1

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

СтолбцыАтрибутТипРазмерОграничениеIDИдентификаторДлинное целоеПервичный ключRelation_DegreeСтепень родстваТекстовый10

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

СтолбцыАтрибутТипРазмерОграничениеIDИдентификаторДлинное целоеПервичный ключMarital_StatusВид семейного положенияТекстовый12SexПолТекстовый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. Возвращает строку с адресом.

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

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

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

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

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

.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 - Форма для работы со студентами, изменившими фамилию.

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

Форма «Таблица студентов участвующих в творческой самодеятельности» содержит (рисунок 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 Разработка справки и контекстной помощи

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

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

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

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

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

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

Заключение

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

ввод и редактирование справочников и таблиц;

ввод и редактирование личных карточек студентов БелГУТа;

закрепление студентов БелГУТа за подгруппами;

проверку корректности вводимых данных;

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

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

Система контекстной помощи.

Удобный пользовательский интерфейс.

Защита информации от несанкционированного доступа (права доступа).

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

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

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

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

Приложение А

Виды списков

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

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

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

БалинаЕвгенияВладимировнаЭМ-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уч.

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

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

Головин+Павел+Николаевич+ЭМ-22уч.внебюдж.ул. Советская д.140/24холост31.05.1993муж

Приложение Б

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

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

Locality_AddressTERM ^ ;PROCEDURE "LOCALITY_ADDRESS"

("ID_DEP" INTEGER)

("ID_DEP" INTEGER)

("FULL_ADRESS" VARCHAR(100) CHARACTER SET WIN1251)VARIABLE ID_DISTRICT_UP integer;VARIABLE count_id integer;VARIABLE BUFFER_NAME varchar(100);VARIABLE CITY_NAME varchar(100);_adress='';_DISTRICT_UP=null;_NAME='';_NAME='';_id=1;LOCALITY_NAME,ADMINISTRATIVE_DISTRICT_ID from kind_CITY where id=:ID_DEP INTO :CITY_NAME,:ID_DISTRICT_UP;_adress=full_adress ||' '|| CITY_NAME;(count_id>0) DOADMINISTRATIVE_DISTRICT_ID,ADMINISTRATIVE_FULL_NAME from Kind_ADMINISTRATIVE_DISTRICTID=:ID_DISTRICT_UP INTO :ID_DISTRICT_UP,:BUFFER_NAME;_adress=full_adress ||' '|| BUFFER_NAME;(ID_DISTRICT_UP is null) then_id=0;;

^TERM ; ^

Код хранимой процедуры District_Locality_All_Locality_AllTERM ^ ;

/* Stored procedures */PROCEDURE "DISTRICT_LOCALITY_ALL"

("ID_UP" INTEGER)

("ID_DOWN" INTEGER)EXIT; END ^PROCEDURE "DISTRICT_LOCALITY_ALL"

("ID_UP" INTEGER)

("ID_DOWN" INTEGER)VARIABLE ID_DISTRICT integer;_DISTRICT=null;SELECT ID FROM Kind_City WHERE Administrative_District_ID=: ID_UP INTO:ID_DOWN;SELECT ID FROM KIND_ADMINISTRATIVE_DISTRICT where ADMINISTRATIVE_DISTRICT_ID=:ID_UP INTO :ID_DISTRICTSELECT *FROM DISTRICT_LOCALITY_ALL(:ID_DISTRICT) INTO :ID_DOWNSUSPEND;

^TERM ; ^

КодхранимойпроцедурыDistrict_District_Down_District_DownTERM ^ ;

/* Stored procedures */PROCEDURE "DISTRICT_DISTRICT_DOWN"

("ID_UP" INTEGER)

("ID_DOWN" INTEGER)EXIT; END ^PROCEDURE "DISTRICT_DISTRICT_DOWN"

("ID_UP" INTEGER)

("ID_DOWN" INTEGER)SELECT ID FROM KIND_ADMINISTRATIVE_DISTRICT WHERE ADMINISTRATIVE_DISTRICT_ID=:ID_UP INTO:ID_DOWN;

^TERM ; ^

Код хранимой процедуры Locality_State_StateTERM ^ ;

/* Stored procedures */PROCEDURE "LOCALITY_STATE"

(

"ID_UP" INTEGER

)

(

"ID_DOWN" INTEGER

)EXIT; END ^PROCEDURE "LOCALITY_STATE"

("ID_UP" INTEGER)

("ID_DOWN" INTEGER)VARIABLE ID_DISTRICT_UP integer;VARIABLE count_id integer;VARIABLE ADMIN_LEVEL integer;_DISTRICT_UP=null;_id=1;_LEVEL=null;ADMINISTRATIVE_DISTRICT_ID from KIND_CITY where id=:ID_UP INTO: ID_DISTRICT_UP;(count_id>0) DOADMINISTRATIVE_LEVEL_ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ADMIN_LEVEL;(ADMIN_LEVEL=2) then_id=0;ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ID_DOWN;ADMINISTRATIVE_DISTRICT_ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ID_DISTRICT_UP;;

^TERM ; ^

Код хранимой процедуры Locality_Region_RegionTERM ^ ;

/* Stored procedures */PROCEDURE "LOCALITY_REGION"

("ID_CITY" INTEGER)

("ID_REGION" INTEGER)EXIT; END ^PROCEDURE "LOCALITY_REGION"

("ID_CITY" INTEGER)

("ID_REGION" INTEGER)VARIABLE ID_DISTRICT_UP integer;VARIABLE count_id integer;VARIABLE ADMIN_LEVEL integer;_DISTRICT_UP=null;_id=5;_LEVEL=null;ADMINISTRATIVE_DISTRICT_ID from KIND_CITY where id=:ID_CITY INTO: ID_DISTRICT_UP;(count_id>0) DOADMINISTRATIVE_LEVEL_ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ADMIN_LEVEL;(ADMIN_LEVEL=5) then_id=0;ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ID_REGION;ADMINISTRATIVE_DISTRICT_ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ID_DISTRICT_UP;_id= count_id-1;;

^TERM ; ^

Код хранимой процедуры LOCALITY_STATE_AREAL_STATE_AREALTERM ^ ;

/* Stored procedures */PROCEDURE "LOCALITY_STATE_AREAL"

("ID_CITY" INTEGER)

("ID_REGION" INTEGER)EXIT; END ^PROCEDURE "LOCALITY_STATE_AREAL"

("ID_CITY" INTEGER)

("ID_REGION" INTEGER)VARIABLE ID_DISTRICT_UP integer;VARIABLE count_id integer;VARIABLE ADMIN_LEVEL integer;_DISTRICT_UP=null;_id=5;_LEVEL=null;ADMINISTRATIVE_DISTRICT_ID from KIND_CITY where id=:ID_CITY INTO: ID_DISTRICT_UP;(count_id>0) DOADMINISTRATIVE_LEVEL_ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ADMIN_LEVEL;(ADMIN_LEVEL=3) then_id=0;ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ID_REGION;ADMINISTRATIVE_DISTRICT_ID FROM KIND_ADMINISTRATIVE_DISTRICT where id=:ID_DISTRICT_UP INTO: ID_DISTRICT_UP;_id= count_id-1;;

END

^

SETTERM ; ^

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

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

) Триггер для идентификатора.~;TRIGGER STUDENT_Last_NAME_MODIFY_ID FOR STUDENT_LAST_NAME_MODIFYINSERTBEGIN.ID=GEN_ID(GEN_STUDENT_LAST_NAME_MODIFY_ID, 1);~

) Триггервставки:TERM ~;TRIGGER "TR_STUDENT_LNM_INSERT" FOR "STUDENT_LAST_NAME_MODIFY" AFTER INSERT POSITION 2INTO Protocol(Tablename, Typename, username, recordid, fieldname, oldvalue, newvalue, changedate, changetime) VALUES('STUDENT_LAST_NAME_MODIFY', 'insert', user, NEW.ID, NULL,, NULL,

'NOW', 'NOW');~TERM ; ~

)Триггерудаления: TERM ~;TRIGGER "TR_STUDENT_LNM_DELETE" FOR "STUDENT_LAST_NAME_MODIFY" AFTER DELETE POSITION 1INTO Protocol(Tablename, Typename, username, recordid, fieldname, oldvalue, newvalue, changedate, changetime) VALUES('STUDENT_LAST_NAME_MODIFY', 'delete', user, OLD.ID, NULL,, NULL,

'NOW', 'NOW');~TERM ; ~

)Триггерредактирования:TERM ~;TRIGGER "TR_STUDENT_LNM_UPDATE" FOR "STUDENT_LAST_NAME_MODIFY" AFTER UPDATE POSITION 3(OLD.ID <> NEW.ID) THENINTO 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');(OLD.Student_ID<>NEW.Student_ID) THENINTO 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');(OLD.Order_Date<>NEW.Order_Date) THENINTO 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');(OLD.Order_Number<>NEW.Order_Number) THENINTO 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');(OLD.Last_Name_Modify_ID<>NEW.Last_Name_Modify_ID) THENINTO 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');(OLD.Last_Name_Old<>NEW.Last_Name_Old) THENINTO 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~

SETTERM ; ~END~

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

SET TERM ~;TRIGGER "STUDENT_FAMILY_RELATIVE_INSERT" FOR "STUDENT_FAMILY" BEFORE INSERT POSITION 0variable a varchar(10);variable b varchar(30);variable c varchar(20);variable e date;variable f VARCHAR(255);variable g VARCHAR(30);variable i integer;variable h VARCHAR(255);variable j VARCHAR(255);variable k VARCHAR(30);variable l VARCHAR(255);(new.MIDDLE_STUDENT_ID is not NULL) thenLast_Name,First_Name,Middle_Name,Birth_Date, Home_Adress,Home_Phone,WORK_PLACE,WORK_POST,WORK_PHONE,ADDRESS_ENTERPRISEstudentStudent.ID=new.MIDDLE_STUDENT_ID:a,:b,:c,:e,:f,:g,:h,:j,:k,:l;.LAST_NAME=:a;.FIRST_NAME=:b;.MIDDLE_NAME=:c;.BIRTH_DATE=:e;.INVALID_ID=4;.HOME_ADRESS=:f;.HOME_PHONE=:g;.WORK_PLACE=:h;.WORK_POST=:j;.WORK_PHONE=:k;.ADDRESS_ENTERPRISE=:l;~TERM ; ~

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

SET TERM ~;TRIGGER "TR_STUDENT_LNM" FOR "STUDENT_LAST_NAME_MODIFY"BEFORE INSERT POSITION 0variable famvarchar(30);variable fam2 varchar(30);LAST_NAME from STUDENT where STUDENT.ID=STUDENT_LAST_NAME_MODIFY.STUDENT_ID into fam;

ыудSTUDENT set STUDENT.LAST_NAME=new.LAST_NAME_OLD where STUDENT.ID=STUDENT_LAST_NAME_MODIFY.STUDENT_ID;.LAST_NAME_OLD=fam;

END~TERM ; ~

Приложение В

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

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

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

Приложение Г

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

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit4.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"_Work_Public *Kind_Work_Public;change4=0;

//---------------------------------------------------------------------------

__fastcallTKind_Work_Public::TKind_Work_Public(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------__fastcallTKind_Work_Public::Button1Click(TObject *Sender)

{->First();

}

//---------------------------------------------------------------------------__fastcallTKind_Work_Public::Button2Click(TObject *Sender)

{->Next();

}

//---------------------------------------------------------------------------__fastcallTKind_Work_Public::Button3Click(TObject *Sender)

{->Prior();

}

//---------------------------------------------------------------------------__fastcallTKind_Work_Public::Button4Click(TObject *Sender)

{->Last();

}

//---------------------------------------------------------------------------__fastcallTKind_Work_Public::Button5Click(TObject *Sender)

{=1;->Text="";->Text="";->Enabled=true;->Enabled=true;->Enabled=false;->Enabled=false;->Enabled=false;->Enabled=true;->Enabled=true;->Caption="Добавитьещё";

}

//---------------------------------------------------------------------------__fastcallTKind_Work_Public::Button6Click(TObject *Sender)

{=2;->Enabled=true;->Enabled=false;->Enabled=false;->Enabled=false;->Enabled=false;->Enabled=true;->Enabled=true;

}

//---------------------------------------------------------------------------__fastcallTKind_Work_Public::Button7Click(TObject *Sender)

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

IBQuery4->ParamByName("ID")->AsInteger=Edit2->Text.ToInt();->ExecSQL();->Active=false;->Active=true;

}

}

//---------------------------------------------------------------------------__fastcallTKind_Work_Public::Button8Click(TObject *Sender)

{(change4==1){->ParamByName("PUBLIC_WORK")->AsString=Edit1->Text;->ParamByName("ID")->AsInteger=Edit2->Text.ToInt();->ExecSQL();->Active=false;->Active=true;_Work_Public::Button5Click(Sender);

}(change4==2){->ParamByName("PUBLIC_WORK")->AsString=Edit1->Text;->ParamByName("ID")->AsInteger=Edit2->Text.ToInt();->ExecSQL();->Active=false;->Active=true;->Enabled=false;->Enabled=false;->Enabled=true;->Enabled=true;->Enabled=true;->Enabled=false;->Enabled=false;=0;

}

}

//---------------------------------------------------------------------------__fastcallTKind_Work_Public::Button9Click(TObject *Sender)

{->Text="";->Text="";->Enabled=false;->Enabled=false;->Enabled=true;->Enabled=true;->Enabled=true;->Enabled=false;->Enabled=false;->Caption="Подтвердить";=0;

}

//---------------------------------------------------------------------------__fastcallTKind_Work_Public::DataSource1DataChange(TObject *Sender,*Field)

{->Text=IBQuery1->FieldByName("PUBLIC_WORK")->Value;->Text=IBQuery1->FieldByName("ID")->Value;->Enabled=true;->Enabled=true;->Enabled=true;->Enabled=false;->Enabled=false;->Enabled=false;->Enabled=false;->Caption="Подтвердить";

}

//---------------------------------------------------------------------------__fastcallTKind_Work_Public::FormCreate(TObject *Sender)

{->Active=true;

}

//---------------------------------------------------------------------------__fastcallTKind_Work_Public::Button12Click(TObject *Sender)

{("hh.exe html_help_source.chm::Kind_work_public.html", SW_SHOWNORMAL);

}

//---------------------------------------------------------------------------

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!