Реферат

Реферат Информационная система Преподаватели

Работа добавлена на сайт bukvasha.net: 2015-10-28

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 20.2.2025





ПЕРМСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ ИСКУССТВА И КУЛЬТУРЫ

ФАКУЛЬТЕТ ДОКУМЕНТАЛЬНО-ИНФОРМАЦИОННЫХ КОММУНИКАЦИЙ

КАФЕДРА ИНФОРМАТИКИ И ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
Информационная система

«Преподаватели»
Выполнил:

студент 3 курса

группы ИР-33

Карпов К.А.
Руководитель:

преподаватель

Нечаева И.Ю.
Пермь  2009


Оглавление

Введение. 3

1 Анализ предметной области.. 4

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

2.1 Инфологическая модель (Построение модели «сущность – связь») 6

2.2 Логическая модель.. 9

2.3 Нормализация.. 11

2.4 Физическая модель.. 15

3 Создание приложения.. 20

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

Приложение 1 Создание таблиц БД.. 27

Приложение 2 Листинг программы (Главной формы) 30


Введение


Целью курсовой работы ИС «Преподаватели» является разработка реляционной базы данных и приложения для работы с ней.

Для достижения данной цели были поставлены следующие задачи для ИС «Преподаватели»:

·        хранение данных о преподавателях;

·        автоматизация ввода информации;

·        автоматизация получения данных о преподавателе;

Бывают случаи, когда эффективность работы сотрудников отдела кадров зависит от вовремя найденных сведений о конкретном преподавателе. Для обеспечения более оперативного и конкретизированного поиска необходимых сведений о преподавателе и была разработана данная ИС.

ИС «Преподаватели» предоставляет возможность хранения информации о преподавателе в базе данных.

ИС «Преподаватели» разработана специально для сотрудников отдела кадров ВУЗа.

1 Анализ предметной области


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

В процессе исследования предметной области были опрошены сотрудники отдела кадров  ПГИИК. В результате опроса, была выявлена информация, которая должна храниться в информационной системе (далее ИС).

Информационная система должна хранить информацию о следующих объектах:

·        Объект «Преподаватель» - будет содержать данные о преподавателях. Это объект должен иметь следующие характеристики: ФИО, дата рождения, адрес, телефон, паспортные данные, ученое звание, ученую степень, стаж работы, должность преподавателя, год начала работы в ПГИИК.

·        Объект «Предмет» - этот объект будет содержать данные о предметах. Этот объект должен иметь следующие характеристики: название предмета, группа.

·        Объект «Факультет» - будет содержать данные о факультете, на котором работает преподаватель. Это объект должен иметь следующие характеристики: название факультета, название кафедр и названия специальностей.

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

Объект «Преподаватель» связан с объектом «Факультет», т.к. каждый преподаватель закреплен за определенным факультетом (см. Рис.1).


Рис. 1

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




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


2.1 Инфологическая модель (Построение модели «сущность – связь»)




Для построения инфологической модели используется модель «сущность - связь», или
ER-модель
, которая должна определить объекты и взаимосвязи между ними. ER-диаграмма представляется в графическом виде с выделенными сущностями и их характеристиками. Между сущностями устанавливаются связи. Тип связи указывается индексами «1» или «М».

В ходе изучения предметной области были выделены следующие объекты: «Преподаватель», «Предмет», «Факультет» .

В результате изучения объект «Преподаватель» преобразовался в сущность «Преподаватель» (стержневая), которая должна характеризоваться следующими свойствами: ФИО, дата рождения, адрес, телефон, паспортные данные, ученое звание, ученую степень, стаж работы, год начала работы в ПГИИК.

Объект «Предмет» преобразовался в сущность «Предмет» (стержневая). Эта сущность должна характеризоваться следующими свойствами: название предмета, название группы.

Объект «Факультет» преобразовался в сущность «Факультет» (стержневая). Эта сущность должна характеризоваться следующими свойствами: название факультета, название кафедр и названия специальностей (см. Рис. 2).

Связи между сущностями в ER-модели наследуются те же, что и связи между объектами.



М
 


Рис. 2 Модель «Сущность – связь»

2.2 Логическая модель


Следующий этап проектирования – построение логической модели. Задачей этого этапа состоит в преобразование ER-диаграммы в реляционную схему. Реляционный подход, в основе которого лежит принцип разделения данных и связей обеспечивает независимость данных  и более простые способы хранения и обработки данных. Первые шаги преобразования состоят в превращении каждой сущности в отношение (таблицу). Поэтому сущности «Предмет», «Факультет» и «Преподаватель» в логической модели становятся отношениями, а каждое свойство в этих отношениях становятся атрибутом – столбцом соответствующей таблицы.

Для того чтобы реализовать связь М:М, нужно создать отдельные отношения, которые должны содержать уникальные идентификаторы отношений – участников связи.

Таким отношением в данном случае будет следующее дополнительное отношение:

Предмет_Преподаватель – это отношение является ассоциативным для однозначной идентификации двух других отношений: «Преподаватели» и «Предмет»;




Рис. 3 Логическая модель

2.3 Нормализация


Отношение «Предмет» находится в 1 нормальной форме, т.к. нет атомарных значений и повторяющихся атрибутов. Первичный ключ однозначно определяет каждый картеж отношения. Отношение «Предмет» находится во 2 нормальной форме, т.к. его атрибуты находятся в 1 нормальной форме и имеют простой первичный ключ. Отношение «Предмет» не соответствует 3 нормальной форме, т.к. есть функциональная зависимость между не ключевыми атрибутами, поэтому для того чтобы устранить эту функциональную зависимость, нужно атрибут название группы вынести в отдельное характеристическое отношение «Группа» с атрибутом – название группы. Так как отношения «Группа» и «Предмет» реализуются через связь М:М, нужно создать отдельное отношение, которое должно содержать уникальные идентификаторы отношений. Таким образом, мы добавляем составной первичный ключ к уже имеющейся ассоциативной сущности Предметы_Преподаватели. В результате этого появляется отношение Группы_Предметы_Преподаватели, которое является ассоциативным для однозначной идентификации трех других отношений: «Преподаватели», «Группа» и «Предмет». Соответственно в таблице «Предмет» останется следующий атрибут: Название предмета. Также таблица «Предмет» соответствует 3 усиленной нормальной форме (Бойса – Кодда), т.к. функциональная зависимость между его атрибутами сводится к полной функциональной зависимости от потенциального ключа.

Отношение «Преподаватели» находится в 1 нормальной форме, т.к. нет атомарных значений и повторяющихся атрибутов. Первичный ключ однозначно определяет каждый картеж отношения. Отношение «Преподаватели» находится во 2 нормальной форме, т.к. атрибуты этого отношения находятся в 1 нормальной форме и имеют простой первичный ключ. Отношение «Преподаватели» не соответствует 3 нормальной форме, т.к. есть функциональная зависимость между не ключевыми атрибутами, поэтому для того чтобы устранить эту функциональную зависимость, нужно атрибуты: Ученая степень, Ученое звание, Должность и Статус вынести в отдельные характеристические отношения «Статус» с атрибутом – статус, «Ученая степень» с атрибутом – ученая степень, «Должность» с атрибутом – должность и «Ученое звание» с атрибутом – ученое звание. Соответственно в таблице «Преподаватели» останутся следующие атрибуты: Фамилия, Имя, Отчество, Дата рождения, Паспортные данные, Год начала работы и Стаж работы. Таблица «Преподаватели» соответствует 3 усиленной нормальной форме (Бойса – Кодда), т.к. функциональная зависимость между его атрибутами сводится к полной функциональной зависимости от потенциального ключа.

Отношение «Факультет» находится в 1 нормальной форме, т.к. нет атомарных значений и повторяющихся атрибутов. Первичный ключ однозначно определяет каждый картеж отношения. Отношение «Факультет» находится во 2 нормальной форме, т.к. атрибуты этого отношения находятся в 1 нормальной форме и имеют простой первичный ключ. Отношение «Факультет» не соответствует 3 нормальной форме, т.к. есть функциональная зависимость между не ключевыми атрибутами, поэтому для того чтобы устранить эту функциональную зависимость, нужно атрибуты: Название кафедры и Название специальности вынести в отдельные характеристические отношения «Кафедра» с атрибутом – название кафедры и «Специальность» с атрибутом – Название специальности. Соответственно в таблице «Факультет» останется следующий атрибут: Название факультета. Таблица «Факультет» соответствует 3 усиленной нормальной форме (Бойса – Кодда), т.к. функциональная зависимость между его атрибутами сводится к полной функциональной зависимости от потенциального ключа.

Отношение «Группы_Предметы_Преподаватели» находится в 1 нормальной форме, т.к. они атомарные и нет повторяющихся атрибутов. Эти отношения находятся во второй нормальной форме, т.к. их атрибуты зависят от составного ключа, а не от его части. Отношение «Группы_Предметы_Преподаватели» соответствует 3 нормальной форме, т.к. нет функциональной зависимости между не ключевыми атрибутами. Также таблица «Группы_Предметы_Преподаватели» соответствует 3 усиленной нормальной форме (Бойса – Кодда), т.к. функциональная зависимость между его атрибутами сводится к полной функциональной зависимости от потенциального ключа (см. рис. 4).




Рис.4 Нормализованная логическая модель

2.4 Физическая модель


Следующей не маловажной задачей является выбор СУБД. Модель предметной области должна быть представлена в терминах модели данных концептуального уровня выбранной СУБД. Физическая модель будет реализована с помощью СУБД InterBase .

Преимущества СУБД InterBase:

·        Бесплатно распространяемая СУБД;

·        Поддерживает реляционную базу данных;

·        Удовлетворяет требованиям к степени защищенности и безопасности;

·        Обеспечивает быстродействие и ошибкоустойчивость;

·        Использование транзакций для повышения быстродействия;

·        Поддержка всех операторов и конструкций, которые используются в SQL;

·        Поддержка ссылочной целостности БД.

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

В таблице «PREPODAVATELI» содержаться следующие атрибуты и типы данных:

·       Атрибут PREP – является первичным ключом, имеет целочисленный тип данных;

·       Атрибут F, N, O, DATA, PASSPORT_SERIA, PASSPORT_NAMBER, OTDEL, GOD_NACHALA, STAZH, TELEFONE, ADRES – имеют тип varchar с максимальной длинной до 80 символов;

·       Атрибут KAF, STEP, ZV, DOLZHN и STAT имеют целочисленный тип данных и являются внешними ключами к таблицам «KAFEDRY» и «Y_STEPEN», «Y_ZVANIE», «DOLZHNOSTI»  и «STATUSY» соответственно.

В таблице «PREDMETY» содержаться следующие атрибуты и типы данных:

·       Атрибут PR - является первичным ключом, имеет целочисленный тип данных;

·       Атрибут PREDMET – имеет тип varchar с максимальной длинной 50 символов;

В таблице «GRUPPY» содержаться следующие атрибуты и типы данных:

·       GR -первичный ключ, имеет целочисленный тип данных;

·       GRUPPA
строковое поле с максимально возможным количеством символов 10.

·       SP - внешний ключ целочисленного типа, который ссылается на первичный ключ в таблице «SPECIALNOSTI».

В таблице «SPECIALNOSTI» содержаться следующие атрибуты и типы данных:

·       SP - первичный ключ, имеет целочисленный тип данных;

·       SPECIALNOST строковое поле с максимально возможным количеством символов 50.

·       FC - внешний ключ целочисленного типа, который ссылается на первичный ключ в таблице «FACULTETY».

В таблице «FACULTETY» содержаться следующие атрибуты и типы данных:

·       FC - является первичным ключом, имеет целочисленный тип данных;

·       FACULTET – строковое поле. Используется тип данных varchar с максимально возможным количеством символов 30.

В таблице «KAFEDRY» содержаться следующие атрибуты и типы данных:

·       АтрибутыKAF - первичный составной ключ с целочисленным типом данных;

·       Атрибут FC - имеет целочисленный тип данных;

·       Атрибут KAFEDRA имеет тип данных varchar с длиной поля не более 50 символов.

В таблице «Y
_
ZVANIE
» содержаться следующие атрибуты и типы данных:

·        АтрибутZVпервичный ключ, имеет целочисленный тип данных;

·        Атрибут ZVANIE будет иметь тип данных varchar с длинной строки 40 символов;

В таблице «DOLZHNOSTI» содержаться следующие атрибуты и типы данных:

·        АтрибутDOLZHпервичный ключ, имеет целочисленный тип данных;

·        Атрибут DOLZHNOST будет иметь тип данных varchar с длинной строки 20 символов;

В таблице «Y
_
STEPEN
» содержаться следующие атрибуты и типы данных:

·        АтрибутSTEPпервичный ключ, имеет целочисленный тип данных;

·        Атрибут STEPEN будет иметь тип данных varchar с длинной строки 40 символов;

В таблице «STATUSY» содержаться следующие атрибуты и типы данных:

·        АтрибутSTпервичный ключ, имеет целочисленный тип данных;

·        Атрибут STATUS будет иметь тип данных varchar с длинной строки 20 символов;

Ассоциативная таблица «GRUPPY
_
PREDMETY
_
PREPODAVATELI
»
имеет первичный составной ключ GR, PR, PREP для однозначной идентификации картежей в таблицах «GRYPPY»,«PREPODAVATELI» и «PREDMETY
»
.

Для целочисленных данных был использован тип integer. Для строковых атрибутов был использован тип данных varchar с ограничением по количеству символов. Это ограничение вводится для того, чтобы на поле с небольшим количеством знаков не отводилось много памяти, т.е. мы вводим ограничение на максимальное количество символов для одного поля.





Рис. 5 Физическая модель данных

3 Создание приложения


Для создания приложения использовалась интегрированная среда Delphi 6.0.

Приложение включает главную форму, восемь справочников. Справочники содержат информацию о:

·        группах

·        ученой степени;

·        ученом звании;

·        статусе преподавателя;

·        предметах, которые они читают;

·        факультете;

·        специальности;

·        кафедре;

Модальные формы Ученое звание, Ученая степень, Должность, Факультет и Статус сотрудников содержат компонент DBGrid для отображения соответствующих таблиц, навигатор и по одной кнопке на каждой из форм (закрытие модальной формы). Формы Кафедра, Группа и Cпециальность содержат DBGrid (для отображения соответствующей таблицы) и кнопки (добавить, сохранить, изменить и закрыть форму). При нажатии на кнопку добавить на каждой из этих форм, появляется еще одно модальное окно, в котором заполняются пустые поля или выбираются из предложенного списка. Также есть кнопки для очищения полей и кнопки выхода на предыдущее модальное окно.

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

Для хранения не визуальных компонентов используется DataModule (DM), куда были помещены четыре IBTable, которые хранят таблицы: Y_Stepen (T_Stepen: IBTable), Y_Zvanie (T_Zvanie: IBTable), Statusy (T_Status: IBTable), Facultet (T_Facultet: IBTable).

На главной форме содержится два DBGrid для отображения информации о преподавателе, предмете и группы, у которых он преподает:

1)          DBGrid отображает фамилию, имя, отчество, дату рождения, паспортные данные, адрес, телефон, год начала работы в данном учебном заведении, стаж работы, ученую степень, ученое звание и статус преподавателя.

На DataModule положили Qprepod:IBQuery, который связали с DSPrepod:DataSource. В свойстве Qprepod SQL должен формироваться запрос:

select * from PREPODAVATELI pr, Y_STEPEN s, Y_ZVANIE z, STATUSY st

where pr.step=s.step and pr.zv=z.zv and prepodavateli."stat"=st.st;
2)          Второй DBGrid  отображает предметы и группы, у которых этот преподаватель читает курс лекций, практических и семинарских занятий. На DataModule положили QPredmet:IBQuery, который связали с DSQPredmet:DataSource. В свойстве QPredmet SQL должен формироваться запрос:

select distinct * from predmety;


Еще имеется на форме сортировка, которая позволяет отображать преподавателей по кафедрам.

Для этого мы используем компоненты RBall:RadioButton и DBLCB_Kaf_Prepod:DBLookupComboBox:

В отлик на событие OnClick компонента RBall:RadioButton формируется SQL запрос

dm.Qprepod.SQL.Text:='select * from prepodavateli order by f';


Для отображения преподавателей по кафедрам компонент DBLCB_Kaf_Prepod:DBLookupComboBox связываем  через ListSource c соответствующей таблицей, указывая при этом KeyField и ListField. Также в отлик на событие OnClick компонента DBLookupComboBox формируется SQL запрос:

dm.Qprepod.SQL.Text:='select * from prepodavateli, kafedry where prepodavateli.kaf=kafedry.kaf and kaf=:par2 order by f';

 dm.Qprepod.ParamByName('par2').AsInteger:=DBLCB_kaf_prepod.KeyValue;

Также  есть кнопки для манипулирования с данными: добавить, изменить, удалить. Соответственно с их помощью можно добавить преподавателя, изменить его анкетные данные и удалить его из базы данных. При нажатии  на кнопку добавить появляется модальное окно, в котором нужно заполнить пустые поля: ФИО, паспортные данные, адрес, телефон, дату рождения, год начала работы в ВУЗ, стаж, выбрать ученую степень, звание и статус сотрудника.

Для выбора информации о статусе, степени и звании сотрудника использовали компонент DBLookupComboBox:DBlookupComboBox.

Чтобы DBLookupComboBox отображали информацию их надо связать с соответствующими таблицами через свойство ListSource, указав при этом свойства ListField и KeyField.

Для сохранения всех данных нужно нажать на кнопку Сохранить:

procedure TFPrepod.BT_SaveClick(Sender: TObject);

var i : integer;

begin

Происходит проверка на непустые поля

 if (Length(ED_F.Text)>0) and (Length(ED_I.Text)>0) and (Length(ED_O.Text)>0)

                    and (Length(ME_Data.Text)>0) and (Length(ED_Adress.Text)>0) and

                    (Length(ED_Tel.Text)>0) and (Length(ED_Hachala.Text)>0) and

                    (Length(ED_stazh.Text)>0) and (Length(ED_Seria.Text)>0) then

  begin

   if flag=0 then

Далее происходит вставка новой записи в таблицу преподаватели. Для этого формируется SQL запрос:

dm.Qprepod.SQL.Text:='insert into prepodavateli (F, I, O, data, prepodavateli."Passport_Seria", god_nachala, stazh, prepodavateli."Adres", prepodavateli."telephone", step, zv, prepodavateli."stat", prepodavateli."Otdel", prepodavateli."Passport_namber")'+'values (:par1, :par2, :par3, :par4, :par5, :par6, :par7, :par8, :par9, :par10, :par11, :par12, :par13, :par14)'

Определение параметров в запросе

      dm.Qprepod.ParamByName('par1').AsString:=ED_F.Text;

      dm.Qprepod.ParamByName('par2').AsString:=ED_I.Text;

      dm.Qprepod.ParamByName('par3').AsString:=ED_O.Text;

      dm.Qprepod.ParamByName('par4').AsString:=ME_Data.Text;

      dm.Qprepod.ParamByName('par5').AsString:=ED_Seria.Text;

      dm.Qprepod.ParamByName('par6').AsString:=ED_Hachala.Text;

      dm.Qprepod.ParamByName('par7').AsString:=ED_Stazh.Text;

      dm.Qprepod.ParamByName('par8').AsString:=ED_Adress.Text;

      dm.Qprepod.ParamByName('par9').AsString:=ED_Tel.Text;

  dm.Qprepod.ParamByName('par11').AsInteger:=DBLCB_Zvanie.KeyValue;

     dm.Qprepod.ParamByName('par12').AsInteger:=DBLCB_Status.KeyValue;

     dm.Qprepod.ParamByName('par10').AsInteger:=DBLCB_Stepen.KeyValue;

     dm.Qprepod.ParamByName('par13').AsString:=ED_Otdel.Text;

     dm.Qprepod.ParamByName('par14').AsString:=ED_Nomer.Text;
  end;

end;
Для того чтобы очистить все поля, нужно нажать на кнопку Очистить:

Соответственно очищаются выбранные нами поля

FPrepod.ED_f.Clear;

 FPrepod.ED_I.Clear;

 FPrepod.ED_O.Clear;

 FPrepod.ME_Data.Clear;

 FPrepod.ED_Seria.Clear;

 FPrepod.ED_Hachala.Clear;

 FPrepod.ED_Stazh.Clear;

 FPrepod.ED_Adress.Clear;

 FPrepod.ED_Tel.Clear;

 FPrepod.ED_Otdel.Clear;

 FPrepod.ED_Nomer.Clear;

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



Fprepod.close;



Аналогично манипулирование с данными происходит и в других таблицах.



Заключение


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

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



Приложение 1 Создание таблиц БД

CREATE TABLE "Dolzhnosti"

  "dolzh"  INTEGER NOT NULL,

  "dolzhnost"           VARCHAR(20) CHARACTER SET WIN1251,

CONSTRAINT "PK_Dolzhnosti" PRIMARY KEY ("dolzh")

);

CREATE TABLE "FACULTETY"

(

  "FC"      INTEGER NOT NULL,

  "FACULTET"      VARCHAR(30) CHARACTER SET WIN1251,

 PRIMARY KEY ("FC")

);

CREATE TABLE "GRUPPY"

(

  "GR"      INTEGER NOT NULL,

  "GRUPPA"           VARCHAR(10) CHARACTER SET WIN1251,

  "SP"      INTEGER,

 PRIMARY KEY ("GR")

);

CREATE TABLE "GRUPPY_PREDMETY_PREPODAVATELI"

(

  "GR"      INTEGER NOT NULL,

  "PR"      INTEGER NOT NULL,

  "PREP" INTEGER NOT NULL

);

CREATE TABLE "KAFEDRY"

(

  "KAF"   INTEGER NOT NULL,

  "KAFEDRA"         VARCHAR(50) CHARACTER SET WIN1251,

  "FC"      INTEGER,

 PRIMARY KEY ("KAF")

);

CREATE TABLE "PREDMETY"

(

  "PR"      INTEGER NOT NULL,

  "PREDMET"        VARCHAR(50) CHARACTER SET WIN1251,

 PRIMARY KEY ("PR")

);

CREATE TABLE "PREPODAVATELI"

(

  "PREP" INTEGER NOT NULL,

  "F"        VARCHAR(20) CHARACTER SET WIN1251,

  "I"         VARCHAR(20) CHARACTER SET WIN1251,

  "O"        VARCHAR(20) CHARACTER SET WIN1251,

  "DATA"               VARCHAR(20) CHARACTER SET WIN1251,

  "Passport_Seria"   VARCHAR(4) CHARACTER SET WIN1251,

  "GOD_NACHALA"              VARCHAR(10),

  "STAZH"              INTEGER,

  "KAF"   INTEGER,

  "STEP" INTEGER,

  "ZV"      INTEGER,

  "telephone"           VARCHAR(50) CHARACTER SET WIN1251,

  "Adres"  VARCHAR(80) CHARACTER SET WIN1251,

  "stat"     INTEGER,

  "Otdel"  VARCHAR(50) CHARACTER SET WIN1251,

  "Passport_namber"               VARCHAR(10) CHARACTER SET WIN1251,

  "dolzhn"                INTEGER,

 PRIMARY KEY ("PREP")

);

CREATE TABLE "SPECIALNOSTI"

(

  "SP"      INTEGER NOT NULL,

  "SPECIALNOST" VARCHAR(50) CHARACTER SET WIN1251,

  "FC"      INTEGER,

 PRIMARY KEY ("SP")

);

CREATE TABLE "STATUSY"

(

  "ST"      INTEGER NOT NULL,

  "STATUS"            VARCHAR(20) CHARACTER SET WIN1251,

 PRIMARY KEY ("ST")

);

CREATE TABLE "Y_STEPEN"

(

  "STEP" INTEGER NOT NULL,

  "STEPEN"            VARCHAR(40) CHARACTER SET WIN1251,

 PRIMARY KEY ("STEP")

);

CREATE TABLE "Y_ZVANIE"

(

  "ZV"      INTEGER NOT NULL,

  "ZVANIE"            VARCHAR(40) CHARACTER SET WIN1251,

 PRIMARY KEY ("ZV")

);

ALTER TABLE "GRUPPY" ADD FOREIGN KEY ("SP") REFERENCES SPECIALNOSTI ("SP") ON UPDATE CASCADE;

ALTER TABLE "GRUPPY_PREDMETY_PREPODAVATELI" ADD FOREIGN KEY ("GR") REFERENCES GRUPPY ("GR") ON DELETE CASCADE;

ALTER TABLE "GRUPPY_PREDMETY_PREPODAVATELI" ADD FOREIGN KEY ("PR") REFERENCES PREDMETY ("PR") ON DELETE CASCADE;

ALTER TABLE "GRUPPY_PREDMETY_PREPODAVATELI" ADD FOREIGN KEY ("PREP") REFERENCES PREPODAVATELI ("PREP") ON DELETE CASCADE;

ALTER TABLE "KAFEDRY" ADD FOREIGN KEY ("FC") REFERENCES FACULTETY ("FC") ON DELETE CASCADE;

ALTER TABLE "PREPODAVATELI" ADD CONSTRAINT "FK_PREPODAVATELI" FOREIGN KEY ("stat") REFERENCES STATUSY ("ST") ON DELETE CASCADE;

ALTER TABLE "PREPODAVATELI" ADD CONSTRAINT "FK_dolzh" FOREIGN KEY ("dolzhn") REFERENCES Dolzhnosti ("dolzh");

ALTER TABLE "PREPODAVATELI" ADD FOREIGN KEY ("KAF") REFERENCES KAFEDRY ("KAF") ON DELETE CASCADE;

ALTER TABLE "PREPODAVATELI" ADD FOREIGN KEY ("STEP") REFERENCES Y_STEPEN ("STEP") ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE "PREPODAVATELI" ADD FOREIGN KEY ("ZV") REFERENCES Y_ZVANIE ("ZV") ON DELETE CASCADE;

ALTER TABLE "SPECIALNOSTI" ADD FOREIGN KEY ("FC") REFERENCES FACULTETY ("FC") ON UPDATE CASCADE ON DELETE CASCADE;

CREATE GENERATOR "GEN_AD";

CREATE GENERATOR "GEN_FC";

CREATE GENERATOR "GEN_GR";

CREATE GENERATOR "GEN_KAF";

CREATE GENERATOR "GEN_PR";

CREATE GENERATOR "GEN_PREP";

CREATE GENERATOR "GEN_SP";

CREATE GENERATOR "GEN_ST";

CREATE GENERATOR "GEN_STEP";

CREATE GENERATOR "GEN_TEL";

CREATE GENERATOR "GEN_ZV";

SET TERM ^ ;

CREATE TRIGGER "TRIG_FC" FOR "FACULTETY"

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.FC = GEN_ID(GEN_FC, 1);

END

 ^

CREATE TRIGGER "TRIG_GR" FOR "GRUPPY"

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.GR = GEN_ID(GEN_GR, 1);

END

 ^

CREATE TRIGGER "TRIG_KAF" FOR "KAFEDRY"

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.KAF = GEN_ID(GEN_KAF, 1);

END

 ^

CREATE TRIGGER "TRIG_PR" FOR "PREDMETY"

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.PR = GEN_ID(GEN_PR, 1);

END

 ^

CREATE TRIGGER "TRIG_PREP" FOR "PREPODAVATELI"

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.PREP = GEN_ID(GEN_PREP, 1);

END

 ^

CREATE TRIGGER "TRIG_SP" FOR "SPECIALNOSTI"

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.SP = GEN_ID(GEN_SP, 1);

END

 ^

CREATE TRIGGER "TRIG_ST" FOR "STATUSY"

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.ST = GEN_ID(GEN_ST, 1);

END

 ^

CREATE TRIGGER "TRIG_STEP" FOR "Y_STEPEN"

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.STEP = GEN_ID(GEN_STEP, 1);

END

 ^

CREATE TRIGGER "TRIG_ZV" FOR "Y_ZVANIE"

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.ZV = GEN_ID(GEN_ZV, 1);

END

 ^

COMMIT WORK ^

SET TERM ;^


Приложение 2 Листинг программы (Главной формы)


unit Unit1;
interface
uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, Menus, Grids, DBGrids, StdCtrls, ComCtrls, Buttons, DBCtrls;
type

  TMainForm = class(TForm)

    PageControl1: TPageControl;

    TabSheet1: TTabSheet;

    GroupBox1: TGroupBox;

    BT_Add: TButton;

    BT_Edit: TButton;

    BT_Del: TButton;

    GroupBox2: TGroupBox;

    MainMenu1: TMainMenu;

    N1: TMenuItem;

    N2: TMenuItem;

    N3: TMenuItem;

    N4: TMenuItem;

    N5: TMenuItem;

    N6: TMenuItem;

    N7: TMenuItem;

    N11: TMenuItem;

    N8: TMenuItem;

    N9: TMenuItem;

    N10: TMenuItem;

    GroupBox3: TGroupBox;

    DBGrid2: TDBGrid;

    DBGrid1: TDBGrid;

    GroupBox4: TGroupBox;

    DBLCB_kaf_prepod: TDBLookupComboBox;

    Label1: TLabel;

    RBall: TRadioButton;

    procedure N2Click(Sender: TObject);

    procedure BT_AddClick(Sender: TObject);

    procedure N5Click(Sender: TObject);

    procedure N4Click(Sender: TObject);

    procedure N8Click(Sender: TObject);

    procedure N7Click(Sender: TObject);

    procedure N9Click(Sender: TObject);

    procedure N11Click(Sender: TObject);

    procedure BT_EditClick(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

    procedure Button6Click(Sender: TObject);

    procedure Button7Click(Sender: TObject);

    procedure Button9Click(Sender: TObject);

    procedure Button8Click(Sender: TObject);

    procedure Button10Click(Sender: TObject);

    procedure Button11Click(Sender: TObject);

    procedure Button12Click(Sender: TObject);

    procedure N6Click(Sender: TObject);

    procedure BT_DelClick(Sender: TObject);

    procedure DBGrid1CellClick(Column: TColumn);

    procedure N10Click(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure DBLCB_kaf_prepodClick(Sender: TObject);

    procedure RBallClick(Sender: TObject);

  private

    { Private declarations }

  public

  

    { Public declarations }

  end;
var

  MainForm: TMainForm;
implementation
uses Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit9, Unit8, Unit10, Unit12,

  Unit13, Unit14, Unit11, Unit15, Unit16, Unit17, IBQuery, DB,

  IBCustomDataSet, Unit18;
{$R *.dfm}

procedure activ;

begin

 dm.Qprepod.Open;

 dm.Q_specialnost.Open;

 dm.Q_tmp.Open;

 dm.T_stepen.Open;

dm.T_facultet.Open;

 dm.Q_kafedra.Open;

end;
procedure TMainForm.N2Click(Sender: TObject);

begin

 MainForm.Close;

end;
procedure TMainForm.BT_AddClick(Sender: TObject);

begin

 FPrepod.ED_f.Clear;

 FPrepod.ED_I.Clear;

 FPrepod.ED_O.Clear;

 FPrepod.ME_Data.Clear;

 FPrepod.ED_Seria.Clear;

 FPrepod.ED_Hachala.Clear;

 FPrepod.ED_Stazh.Clear;

 FPrepod.ED_Adress.Clear;

 FPrepod.ED_Tel.Clear;

 FPrepod.ED_Otdel.Clear;

 FPrepod.ED_Nomer.Clear;

 

 dm.T_stepen.Open;

 dm.T_zvanie.Open;

 dm.T_facultet.Open;

 dm.t_status.Open;

 dm.T_Dolshnost.Open;

 FPrepod.flag:=0;

 FPrepod.Show;

 FPrepod.ED_f.SetFocus;

 end;
procedure TMainForm.N5Click(Sender: TObject);

begin

 FY_Stepen.showmodal;

end;
procedure TMainForm.N4Click(Sender: TObject);

begin

 FY_Zvanie.showmodal;

end;
procedure TMainForm.N8Click(Sender: TObject);

begin

 FSpecialnost.ShowModal;

end;
procedure TMainForm.N7Click(Sender: TObject);

begin

dm.QPredmet.SQL.Text:='select * from predmety';

 dm.QPredmet.Open;

 FPredmet.Show;

end;
procedure TMainForm.N9Click(Sender: TObject);

begin

 FCafedra_add.ShowModal;

end;
procedure TMainForm.N11Click(Sender: TObject);

begin

 FFacultet.ShowModal;

end;
procedure TMainForm.BT_EditClick(Sender: TObject);

begin

 dm.Qprepod.Open;

 dm.Q_specialnost.Open;

 dm.T_stepen.Open;

 dm.T_facultet.Open;

 dm.Q_kafedra.Open;

 dm.QGruppa.Open;

 dm.Qprepod.Open;

 dm.T_zvanie.Open;

 dm.t_status.Open;

 dm.T_Dolshnost.Open;
 FPrepod.flag:=1;

 FPrepod.Show;

 FPrepod.ED_f.SetFocus;

 FPrepod.ED_f.Text:=dm.Qprepod.FieldByName('f').AsString;

 FPrepod.ED_I.Text:=dm.Qprepod.FieldByName('i').AsString;

 FPrepod.ED_O.Text:=dm.Qprepod.FieldByName('o').AsString;

 FPrepod.ME_Data.Text:=dm.Qprepod.FieldByName('data').AsString;

 FPrepod.ED_Seria.Text:=dm.Qprepod.FieldByName('Passport_Seria').AsString;

 FPrepod.ED_Nomer.Text:=dm.Qprepod.FieldByName('Passport_namber').AsString;

 FPrepod.ED_Otdel.Text:=dm.Qprepod.FieldByName('Otdel').AsString;

 FPrepod.ED_Hachala.Text:=dm.Qprepod.FieldByName('god_nachala').AsString;

 FPrepod.ED_Stazh.Text:=dm.Qprepod.FieldByName('stazh').AsString;

 FPrepod.ED_Adress.Text:=dm.Qprepod.FieldByName('Adres').AsString;

 FPrepod.ED_Tel.Text:=dm.Qprepod.FieldByName('telephone').AsString;
end;
procedure TMainForm.Button4Click(Sender: TObject);

begin

 FSpecialnost_add.flag:=0;

 FSpecialnost_add.Show;

 FSpecialnost_add.Edit1.SetFocus;

end;
procedure TMainForm.Button5Click(Sender: TObject);

begin

 FSpecialnost_add.flag:=1;

 FSpecialnost_add.Edit1.Text:=dm.Q_specialnost.FieldByName('specialnost').AsString;

 FSpecialnost_add.Show;

 FSpecialnost_add.Edit1.SetFocus;

end;
procedure TMainForm.Button6Click(Sender: TObject);

begin

 dm.Q_specialnost.SQL.Text:='delete from specialnosti s where s.sp='+IntToStr(dm.Q_specialnost['sp']);

  try

   dm.Q_specialnost.ExecSQL;

   dm.ibtransaction1.commit;

   except

      showmessage('Ошибка изменений данных в таблице. Возможно нет прав. Обратитесь к администратору');

   end;

 dm.IBTransaction1.Active:=true;

// showmessage(dm.Q_specialnost.SQL.Text);

 dm.Q_specialnost.Open;
 dm.Q_specialnost.SQL.Text:='select sp, SPECIALNOST, FACULTET  from SPECIALNOSTI, FACULTETY where FACULTETY.FC = SPECIALNOSTI.FC';

 dm.Q_specialnost.Open;

 dm.Q_kafedra.Open;

 dm.T_facultet.Open;}

end;
procedure TMainForm.Button7Click(Sender: TObject);

begin

 {dm.QGruppa.Open;

 FGruppa.flag:=0;

 FGruppa.show;

 FGruppa.Edit1.SetFocus;}

end;
procedure TMainForm.Button9Click(Sender: TObject);

begin

 FDel_gruppa.ShowModal;

end;
procedure TMainForm.Button8Click(Sender: TObject);

begin

 {FGruppa.Edit1.Text:=dm.QGruppa.FieldByName('gruppa').AsString;

 FGruppa.flag:=1;

 FGruppa.show;

 FGruppa.Edit1.SetFocus;}

end;
procedure TMainForm.Button10Click(Sender: TObject);

begin

 FKafedra.flag:=0;

 FKafedra.Show;

 FKafedra.Edit1.SetFocus;

end;
procedure TMainForm.Button11Click(Sender: TObject);

begin

FKafedra.Edit1.Text:=dm.Q_kafedra.FieldByName('kafedra').AsString;

 FKafedra.flag:=1;

 FKafedra.Show;

 FKafedra.Edit1.SetFocus;

end;
procedure TMainForm.Button12Click(Sender: TObject);

begin

 dm.Q_kafedra.SQL.Text:='delete from kafedry k where k.kaf='+IntToStr(dm.Q_kafedra['kaf']);

  try

   dm.Q_kafedra.ExecSQL;

   dm.ibtransaction1.commit;

   end;

 dm.IBTransaction1.Active:=true;

dm.Q_kafedra.Open;
 dm.Q_kafedra.SQL.Text:='select * from KAFEDRY k,  FACULTETY f where k.fc=f.fc';

 dm.Q_kafedra.Open;

  dm.QGruppa.Open;

  dm.Q_specialnost.Open;

  dm.T_facultet.Open;

  dm.Qprepod.open;   
end;
procedure TMainForm.N6Click(Sender: TObject);

begin

 FStatus.ShowModal;

end;
procedure TMainForm.BT_DelClick(Sender: TObject);

begin

  dm.Qprepod.SQL.Text:='delete from prepodavateli where prepodavateli.prep='+IntToStr(dm.Qprepod['prep']);

  try

   dm.Qprepod.ExecSQL;

   dm.ibtransaction1.commit;

   end;

 dm.Qprepod.Transaction.Active:=true;

 dm.IBTransaction1.Active:=true;

 dm.Qprepod.sql.Text:='select * from prepodavateli';

 dm.Qprepod.Open;

 dm.Q_specialnost.Open;

dm.T_stepen.Open;

dm.T_facultet.Open;

 dm.Q_kafedra.Open;

 dm.QGruppa.Open;

 dm.Qprepod.Open;

 dm.T_zvanie.Open;

 dm.t_status.Open;

end;
procedure TMainForm.DBGrid1CellClick(Column: TColumn);

begin

  MainForm.GroupBox3.Visible:=true;

  dm.QPredmet.SQL.Text:='select distinct * from predmety p, prepodavateli pr, gruppy_predmety_prepodavateli g, gruppy gr where p.pr=g.pr and g.gr=gr.gr and g.prep=pr.prep and pr.prep='+IntToStr(dm.Qprepod['prep']);

  dm.QPredmet.Open;
end;
procedure TMainForm.N10Click(Sender: TObject);

begin

  Fgruppa_add.ShowModal;

end;
procedure TMainForm.Button1Click(Sender: TObject);

begin

 dm.Qprepod.SQL.Text:='select * from prepodavateli';

 dm.Qprepod.open;

 

end;
procedure TMainForm.DBLCB_kaf_prepodClick(Sender: TObject);

begin

 rball.Checked:=false;

dm.Qprepod.SQL.Text:='select * from prepodavateli, kafedry where prepodavateli.kaf=kafedry.kaf and kaf=:par2 order by f';

 dm.Qprepod.ParamByName('par2').AsInteger:=DBLCB_kaf_prepod.KeyValue;

 dm.Qprepod.Open;

end;
procedure TMainForm.RBallClick(Sender: TObject);

begin

 dm.Qprepod.SQL.Text:='select * from prepodavateli order by f';

 dm.Qprepod.Open;

end;
end.

1. Курсовая Проектирование рецептур буровых растворов по интервалам бурения для Приобского месторождения
2. Реферат на тему Ozone Depletion Essay Research Paper The Ozone
3. Реферат Культура Древней Греции 6
4. Реферат Україна у Світі
5. Реферат Товароведение и экспертиза зерномучных товаров мука пшеничная
6. Курсовая Небанковские кредитно-финансовые институты
7. Реферат на тему Road Rage Essay Research Paper Cook William
8. Реферат Безумие
9. Статья на тему Храмовое убранство внеисторического Рима
10. Реферат История психологии 5