Реферат

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

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

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

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

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

от 25%

Подписываем

договор

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

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





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

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

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

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

студент 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. Реферат на тему What Dreams May Come Is There A
2. Реферат на тему Jimmy Page Essay Research Paper Jimmy Page
3. Реферат Кашгарка
4. Реферат на тему Квантовая теория атома
5. Реферат на тему Mice Of Men Essay Research Paper Justin
6. Лекция на тему Решение задач с помощью ЭВМ
7. Реферат на тему Lord Of The Flies The Effects Of
8. Биография Теория общественного благосостояния 2
9. Реферат Экономика недвижимости 11
10. Реферат на тему Romeo And Juliet Deaths Essay Research Paper