Информационная система ведения расписания занятий в вузе (расписание занятий)

Функциональная модель существующей технологии обработки данных и управления. Разработка требований к функциям проектируемой системы. Базовые функции для работы с каталогами. Создание, редактирование и удаление элемента. Порядок разработки SQL-процедур.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 18.12.2013
Размер файла 1,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Санкт-Петербургский Государственный Электротехнический Университет (ЛЭТИ)

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

по дисциплине: Проектирование корпоративных информационно-управляющих систем

Информационная система ведения расписания занятий в вузе (расписание занятий)

2008 год

Cодержание пояснительной записки к курсовому проекту

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

1. Техническое задание на курсовое проектирование

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

2.1 Термины и определения предметной области

2.2 Функциональная модель существующей технологии обработки данных и управления

2.3 Математические модели предметной области

3. Разработка требований к функциям проектируемой системы

3.1 Разработка концептуальной модели данных Расписание. Основные сущности

3.1.1 Группа Расписание Версия 01

3.1.2 Группа Расписание Версия 02

3.1.3 Избыточные связи

3.1.4 Группа Расписание Версия 03

3.1.5 Группа Расписание. ER - логическая модель

3.1.6 Группа Расписание. ER - физическая модель

3.2 Разработка функциональной структуры системы

3.2.1 Процесс Работа с расписанием. Контекстная диаграмма. Версия 02

3.2.2 Процесс Работа с расписанием. Схема потоков данных. Версия 02-01

3.2.3 Процесс Ведение данных по расписанию. Схема потоков данных. Версия 02-01

3.2.4 Процесс Ведение справочников. Схема потоков данных. Версия 02-01

3.2.5 Процесс Ведение каталогов. Схема потоков данных. Версия 02-01

3.2.6 Процесс Ведение распределения дисциплин. Схема потоков данных. Версия 02-01

3.2.7 Процесс Ведение расписания для групп. Схема потоков данных. Версия 02-01

3.2.8 Процесс Работа с Расписанием. Текст спецификации. Версия 02-01

3.3 Разработка проекта приложения

3.3.1 Форма Работа с Расписанием. Текст спецификации

3.3.2 Разработка SQL-процедур

3.4 Базовые функции для работы с каталогами

3.4.1 Создание нового элемента

3.4.2 Редактирование элемента

3.4.3 Удаление элемента

3.4.4Скрипт формирования базы данных по проекту

1. Техническое задание на курсовое проектирование

Информационная система ведения расписания занятий в вузе (Работа с расписанием)

Функциональное назначение системы:

Обеспечение всех участников учебного процесса данными о расписании занятий, занятости преподавателей, учебных помещений, изменениях в расписании

Цели создания системы:

Обеспечить корректность расписания

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

Поддержать перспективные формы индивидуального обучения

Функциональные требования к системе

Система должна обеспечить выполнение следующих функций:

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

Подготовка и коррекция расписания должна проводиться предварительно с указанием сроков начала и окончания действия изменений

Представление данных по расписанию в электронном и документальном виде для различных групп пользователей

Требования к взаимосвязи с окружением

Данные об учебных группах, сотрудниках, студентах, помещениях, учебных планах могут быть получены из других систем.

Требования к техническим и программным средствам реализации:

1. Система должна функционировать под управлением ОС Windows NT

2. СУБД INTERBASE 7.1

Дополнительные требования отсутствуют

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

2.1 Термины и определения предметной области

Расписание занятий - группа документов, содержащих данные для учебных групп и преподавателей

Учебная группа - постоянное или временное объединение обучающихся для совместного обучения

Учебная группа постоянная - административное объединение обучающихся на все время обучения

Учебная группа временная - объединение обучающихся для совместного обучения по одной дисциплине

Обучающийся - персона, зачисленная на обучения и включенная в постоянную учебную группу

Студент - персона, зачисленная в постоянную группу для обучения по основным специальностям

Дисциплина - курс занятий по заданной тематике, объединенной общностью изучаемого материала и включающий в себя учебные занятия различных видов

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

Учебная пара - планируемый интервал занятий по одной дисциплине по одному виду занятий, включающий в себя два последовательных учебных часа

Учебный час - непрерывный интервал проведения занятий

Аудитория - помещение, специально оборудованное для проведения лекций или практических занятий

Лаборатория - помещение, специально оборудованное для проведения специальных лабораторных работ или практических занятий

Форма обучения - вечерняя, дневная, заочная

Вид программы обучения - групповая, индивидуальная

2.2 Функциональная модель существующей технологии обработки данных и управления

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

Ниже представлены результаты спецификации процесса Планирование расписания, выполненное с использованием CASE BPwin 4.0.

Тип документа : IDEF0 диаграмма уровень 0

Элемент: процесс Планирование занятий

Версия 01

Тип документа: IDEF0 диаграмма уровень 1

Элемент: процесс Планирование занятий

Версия 01

Тип документа: IDEF0 диаграмма уровень 2

Элемент: процесс Работа с расписанием

Версия 01

Тип документа : IDEF0 спецификация

Элемент: процесс Планирование занятий

Версия 01

Activity Name: Планирование занятий

Activity Definition: Планирование занятий является частью учебного процесса по формированию расписания в различных формах для различных категорий пользователей

Input Name: Запросы к расписанию

Activity Name: Ведение учебных планов

Activity Definition: Учебный план - состав дисциплин с указанием объемов часов по каждой дисциплине и видам занятий для каждой специальности на каждый семестр обучения с разбивкой часов по учебным неделям

Activity Name: Ведение фонда помещений

Activity Definition: Фонд помещений - состав, характеристики, назначение, состояние помещений, которые допускается использовать для проведения занятий

Activity Name: Распределение преподавателей

Activity Definition: Распределение преподавателей - индивидуальный план преподавателя, содержащий список дисциплин, групп и видов занятий, которые должен проводить конкретный преподаватель в конкретном семестре.

Input Name: Учебные планы

Activity Name: Работа с расписанием

Activity Definition: Работа с расписанием включает в себя формирование расписание, поддержание его в актуальном состоянии и подготовка справок для пользователей

Input Name: Учебные планы

Input Name: Распределение препод

Input Name: Фонд помещений

Input Name: Запросы к расписанию

Activity Name: Формирование нового расписания

Activity Definition: Подготовка расписания на следующие за текущим семестры

Input Name: Учебные планы

Input Name: Распределение препод

Input Name: Фонд помещений

Activity Name: Оперативная коррекция расписания

Input Name: Расписание занятий

Activity Name: Предоставление справок по расписанию

Input Name: Расписание занятий

Input Name: Запросы к расписанию

2.3 Математические модели предметной области

Модели расписания в данной версии не рассматриваются

3. Разработка требований к функциям проектируемой системы

Функциональную спецификацию системы будем разрабатывать в рамках DFD модели. В качестве процесса 0 уровня выбираем процесс Работа с расписанием.

Тип документа : контекстная диаграмма

Элемент: процесс Работа с расписанием

Версия 01

Тип документа: схема потоков данных

Элемент: процесс Работа с расписанием

Версия 01-01

Данные вынесены на уровень прикладных процессов. С целью скрыть доступ к данным расписания от процессов пользовательского уровня. Предлагается ввести самостоятельный процесс, управляющий доступом к данным расписания. Новый Версия представлен как версия 01-02.

Тип документа: схема потоков данных

Элемент: процесс Работа с расписанием

Версия 01-02

Следующая версия (01-03) полностью скрывает данные расписания внутри процесса Ведение данных по расписанию.

Тип документа: схема потоков данных

Элемент: процесс Работа с расписанием

Версия 01-03

Тип документа: диаграмма классов

Элемент: класс-сущность Пользователи Системы

Версия 01

Тип документа: диаграмма классов

Элемент: класс-сущность Помещение

Версия 01

Тип документа: диаграмма вариантов использования

Элемент: система Работа c Расписанием

Версия 01

3.1 Разработка концептуальной модели данных Расписание. Основные сущности

Наименование

Пояснение

Студенты

Группа

Дисциплина

ВидЗанятий

Сотрудник

Семестр

Помещение

Дата

ДеньНедели

ЧетностьНедели

УчебнаяПара

3.1.1 Группа Расписание Версия 01

Модель данных для группы Расписание будем строить с использованием сущности Семестр.

Тип документа: Схема концептуальной модели данных

Элемент: группа Расписание

Версия 01

Спецификация атрибутов

Обозначение

Наименование атрибута

1

Место проведения занятий студента по расписанию

2

Группа студента

3

Студенты группы

4

Место проведения занятий группы по расписанию

5

Дисциплина для группы по расписанию

6

Преподаватель для группы по расписанию

7

Вид занятий для группы по расписанию

8

Место проведения занятий преподавателя по расписанию

9

Дисциплина для преподавателя по расписанию

10

Вид занятий для преподавателя по расписанию

11

Группы для преподавателя по расписанию

12

Преподаватель для группы по видам занятий

Представленная выше модель не позволяет заранее планировать новое расписание и вводить в него изменения, действующие с заданной даты. Кроме того, сложный составной ключ (Семестр, День недели, Четность недели, Учебная пара) усложняет схему.

3.1.2 Группа Расписание Версия 02

Вторую Версию модели данных строим, заменяя объект Семестр на сущность Дата и вводя новую сущность Точка_расписания.

сущность Точка_расписания

состав

key №_точки_расписания;;

atr Четность_недели_ТР;

День_недели_ТР ;

Учебная_пара_ТР

end

Параметр ключа Вводится_с имеет тип Дата и указывает дату, с которой действует строка расписания. Таким образом, в течение семестра допускается планирование изменений расписания и ввод их в действие в соответствие с указанной датой ввода.

Тип документа: Схема концептуальной модели данных

Элемент: группа Расписание

Версия 02

Спецификация атрибутов

Обозначение

Наименование атрибута

1

Место проведения занятий студента по расписанию

2

Группа студента

3

Студенты группы

4

Место проведения занятий группы по расписанию

5

Дисциплина для группы по расписанию

6

Преподаватель для группы по расписанию

7

Вид занятий для группы по расписанию

8

Место проведения занятий преподавателя по расписанию

9

Дисциплина для преподавателя по расписанию

10

Вид занятий для преподавателя по расписанию

11

Группы для преподавателя по расписанию

12

Преподаватель для группы по видам занятий

Тип документа: Схема концептуальной модели данных

Элемент: группа Нормативные_данные

об Точка_расписания об Учебная_пара

Спецификация атрибутов объекта Точка_расписания

Обозначение

Наименование атрибута

13

День_недели_ТР

14

Четность_недели_ТР

15

Учебная_пара_ТР

Спецификация атрибутов объекта Учебная_пара

Обозначение

Наименование атрибута

16

Время_начала_учебной пары

об Студенты об Сотрудники

Спецификация атрибутов объекта Студенты

Обозначение

Наименование атрибута

17

Учебная_группа_студента

18

Фамилия

19

Имя

20

Отчество

Спецификация атрибутов объекта Сотрудники

Обозначение

Наименование атрибута

21

Фамилия

22

Имя

23

Отчество

24

Должность

об Дисциплина об Помещение

Спецификация атрибутов объекта Дисциплина

Обозначение

Наименование атрибута

21

Наименование

Спецификация атрибутов объекта Помещение

Обозначение

Наименование атрибута

26

Назначение_помещения

27

..................................................

3.1.3 Избыточные связи

1. 1 - Место_проведения_занятий_студента_по_расписанию может быть найдено через атрибут

2. 2 - Группа студента

3. 3- Студенты_группы

обратная по отношению 2-Группа студента

4. 6 - Преподаватель_для_группы_по_расписанию

можно найти через атрибут 5 - Дисциплина_для_группы_по_расписанию, указывая в качестве группы список, полученный по атрибуту Преподаватель_для_группы_по_видам_занятий

5. 8 - Место_проведения_занятий_преподавателя_по_расписанию аналогично 4.

6. 9 - Дисциплина_для_преподавателя_по_расписанию аналогично 4.

7. 10-Вид_занятий_для_преподавателя_по_расписанию аналогично 4.

11 - Группы_для_преподавателя_по_расписанию

может быть найдена через 5- Дисциплина_для_группы_по_расписанию

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

3.1.4 Группа Расписание Версия 03

Тип документа: Схема нормализованной модели данных

Элемент: группа Расписание

Версия 03

Спецификация удаляемых атрибутов

Обозначение

Наименование атрибута

1

Место проведения занятий студента по расписанию

3

Студенты группы

6

Преподаватель для группы по расписанию

8

Место проведения занятий преподавателя по расписанию

9

Дисциплина для преподавателя по расписанию

10

Вид занятий для преподавателя по расписанию

11

Группы для преподавателя по расписанию

Спецификация атрибутов объекта Расписание

Обозначение

Наименование атрибута

4

Место проведения занятий группы по расписанию

5

Дисциплина для группы по расписанию

7

Вид занятий для группы по расписанию

Спецификация атрибутов объекта Преподаватели_по_видам_занятий

Обозначение

Наименование атрибута

12

Преподаватель для группы по видам занятий

На основе нормализованной схемы построим ER логическую модель, используя CASE ERwin 4.0/

3.1.5 Группа Расписание. ER - логическая модель

Тип документа: ER- логическая модель

Элемент: группа Расписание

3.1.6 Группа Расписание. ER - физическая модель

Тип документа: ER- физическая модель

Элемент: группа Расписание

3.2 Разработка функциональной структуры системы

3.2.1 Процесс Работа с расписанием. Контекстная диаграмма. Версия 02

Тип документа: контекстная диаграмма

Элемент: процесс Работа с расписанием

Версия 02

3.2.2 Процесс Работа с расписанием. Схема потоков данных. Версия 02-01

Тип документа: схема потоков данных

Элемент: процесс Работа с расписанием

Версия 02-01

3.2.3 Процесс Ведение данных по расписанию. Схема потоков данных. Версия 02-01

Тип документа: схема потоков данных

Элемент: процесс Ведение данных по расписанию

Версия 02-01

3.2.4 Процесс Ведение справочников. Схема потоков данных. Версия 02-01

Тип документа: схема потоков данных

Элемент: процесс Ведение справочников

Версия 02-01

3.2.5 Процесс Ведение каталогов. Схема потоков данных. Версия 02-01

Тип документа: схема потоков данных

Элемент: процесс Ведение каталогов

Версия 02-01

3.2.6 Процесс Ведение распределения дисциплин. Схема потоков данных. Версия 02-01

Тип документа: схема потоков данных

Элемент: процесс Ведение распределения дисциплин

Версия 02-01

3.2.7 Процесс Ведение расписания для групп. Схема потоков данных. Версия 02-01

Тип документа: схема потоков данных

Элемент: процесс Ведение расписания для групп

Версия 02-01

3.2.8 Процесс Работа с Расписанием. Текст спецификации. Версия 02-01

тип документа: текст спецификации

элемент: процесс Работа_с_расписанием

версия 02

процесс Раб_Р-Работа_с_расписанием

требует

процесс

1. ОбрЗапр-Обработка_запросов_к_расписанию;

2. ПТипЗапр-Подготовка_типовых_запросов;

3. ВедРасп-Ведение_расписания;

4. ВедНормД-Ведение_нормативных_данных

end

процесс

ВедНормД-Ведение_нормативных_данных

Требует

процесс

1. ВедСп-Ведение_списков;

2. ВедКатП-Ведение_каталога_помещений;

3. ВедКатС-Ведение_каталога_сотрудников;

4. ВедКатГр-Ведение_каталога_групп;

5. ВедКатДисц-Ведение_каталога_дисциплин

end

процесс

ВедРасп-Ведение_расписания

требует

процесс

1. НовоеРаспр-Формирование_нового_распределения_преподавателей;

2. ИзмРаспр-Планирование_изменений_распределения_дисциплин;

3. НовыйГр-Формирование_нового_графика_занятий;

4. ИзмГр-Планирование_изменений_графика

end

процесс

ОбрЗапр-Обработка_запросов_к_расписанию

Версии

процесс

Обработка_запросов_по_категориям_пользователей;

Обработка_с_формированием_типовых_запросов

end

Процесс

Обработка_запросов_по_категориям_пользователей

требует /*по категориям пользователей*/

процесс

1. Обработка_запросов_студентов;

2. Обработка_запросов_преподавателей;

3.Обработка_запросов_обсл_персонала

end

процесс

Обработка_с_формированием_типовых_запросов

Требует /*по фазам выполнения*/

процесс

1. Подготовка_типовых_запросов;

2. Предоставление_справок

end

процесс

Предоставление_справок

Требует /*по фазам выполнения*/

процесс

1. Выбор_типового_запроса;

2. Задание_фактических_параметров;

3. Исполнение_запроса

end

процесс

Ведение_списков

требует /*по вариантам команд*/

процесс

1. Объявить_список;

2. Удалить_список;

3. Переименовать_список;

4. Редактировать_список;

5. Выбрать_список;

6. Выбрать_элемент_списка;

7. Удалить_элемент_списка;

8. Добавить_элемент_списка

end

Процесс

Предоставление_справок_по_расписанию

Требует /*по фазам выполнения*/

процесс

1. Выбор_типа_справки;

2. Ввод_параметров_запроса;

3. Обрабаотка_запроса

end

3.3 Разработка проекта приложения

3.3.1 Форма Работа с Расписанием. Текст спецификации

тип документа: текст спецификации

элемент: форма Работа_с_расписанием frm FMain

frm FMain- Работа_с_расписанием

состав

menu MainMenu

состав

pos MM01-Нормативные_данные

состав

pos P0101-Списки;

P0102-Помещения;

P0103-Сотрудники;

P0104-Учебные_группы;

P0105-Учебные_дисциплины; ; ; ;

MM02-Ведение_расписания

состав

pos P0201-Новое_распределение_дисциплин;

P0202-Изменения_распределения_дисциплин;

P0203-Новый_график_занятий;

P0204-Изменения_графика ; ; ; ;

MM03-Типовые запросы

переход

форма FTypeQu-Подготовка_типовых_запросов ; ; ; ;

MM04-Справки_по_расписанию

переход

форма FExecQu-Справки_по_расписанию

end

pos P0101-Списки

переход

форма FList-Ведение_списков

выполняет

процесс Ведение_списков; ; ; ; ; ; ;

P0102-Помещения

переход

форма FRoom- Ведение_каталога_помещений

выполняет процесс Ведение_каталога_помещений; ; ; ; ; ; ;

P0103-Сотрудники

переход

форма FEmployee-Ведение_каталога_сотрудников

выполняет процесс Ведение_каталога_сотрудников; ; ; ; ; ; ;

P0104-Учебные_группы

переход

форма FGroup- Ведение_каталога_групп

выполняет процесс Ведение_каталога_групп; ; ; ; ; ; ;

P0105-Учебные_дисциплины

переход

форма FCours- Ведение_каталога_дисциплин

выполняет процесс Ведение_каталога_дисциплин

end

pos P0201-Новое_распределение_дисциплин

переход

форма FNewPlanCours- Новое_распределение_дисциплин

выполняет процесс Формирование_нового_распределения_

дисциплин_по_преподавателям

end

pos P0202-Изменения_распределения_дисциплин

переход

форма FUpDataPlanCours-Изменения_распределения_дисциплин

выполняет

процесс Планирование_изменений_распределения_дисциплин

end

pos P0203-Новый_график_занятий

переход

форма FNewPlanLesson- Новый_график_занятий

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

end

pos P0204-Изменения_графика

переход

форма FUpDataPlanLesson- Изменения_графика

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

end

тип документа: текст спецификации

элемент: форма frm

форма FMain- Работа_с_расписанием;

FTypeQu-Подготовка_типовых_запросов;

FExecQu-Справки_по_расписанию;

FList-Ведение_списков;

FRoom- Ведение_каталога_помещений;

FEmployee-Ведение_каталога_сотрудников;

FGroup- Ведение_каталога_групп;

FCours- Ведение_каталога_дисциплин;

FSelectElList-Выбор_элемента_списка;

FNewPlanCours- Новое_распределение_дисциплин;

FUpDataPlanCours-Изменения_распределения_дисциплин;

FNewPlanLesson- Новый_график_занятий;

FUpDataPlanLesson- Изменения_графика

end

3.3.2 Разработка SQL-процедур

Найти_действующее_расписание

тип документа: SQLтекст

элемент: SQL_pr Найти_действующее_расписание

SQL_pr WORK_TIME_TABLE

SQL_pr 01-Найти_действующее_расписание

вход

параметр: pTDay:DATE; ; ;

выход

параметр

имеет эффекты требования

исходный_текст “

alter procedure WORK_TIME_TABLE ( pTDate DATE)

returns ( oIdPointPlan integer,

oIdGr integer,

oShortNameGr varchar(30),

oIdDW integer,

oShortNameDW varchar(30),

oNameDW varchar(80),

oIdCW integer,

oShortNameCW varchar(10),

oIdLes integer,

oIdDic integer,

oShortNameDic varchar(30),

oNameDic varchar(80),

oIdTypeLes integer,

oShortNameTypeLes varchar(30),

oNameTypeLes varchar(40),

oIdRoom integer,

oShortNameRoom varchar(40),

oIdLesP integer,

oTime1 date,

oTime2 date)

as

DECLARE VARIABLE vMaxDate date;

DECLARE VARIABLE vIdPointPlan integer;

DECLARE VARIABLE vIdPoint integer;

begin

/*Отбираем пары группа- точки расписания */

for select distinct p1.ID_GR, p1.ID_POINT

from PLAN_LES p1

order by p1.ID_GR,p1. ID_POINT

into :oIdGr,:vIdPoint

do

begin

/*Найти последнюю действующую строку на дату поиска расписания*/

select MAX(p2.DATE_INPUT) from PLAN_LES p2

where p2.ID_GR=:oIdGr

and p2.ID_POINT=:vIdPoint

and p2.DATE_INPUT<=:pTDate

and p2.BEG_DATE<=:pTDate

and p2.FIN_DATE>=:pTDate

into :vMaxDate;

for select p3.ID_POINT_PLAN,p3.ID_GR,p3.ID_POINT,p3.ID_DIC,p3.ID_TYPE_LES,

p3.ID_ROOM from PLAN_LES p3

where p3.ID_GR=:oIdGr

and p3.ID_POINT=:vIdPoint

and p3.DATE_INPUT=:vMaxDate

and p3.BEG_DATE<=:pTDate

and p3.FIN_DATE>=:pTDate

into :oIdPointPlan,:oIdGr,:vIdPoint,:oIdDic,:oIdTypeLes,:oIdRoom

do

begin

/*Находим данные расписания по кодам*/

if (:oIdDic is null) then

oIdDic=0;

if (:oIdTypeLes is null) then

oIdTypeLes=0;

if (:oIdRoom is null) then

oIdRoom=0;

select NAME, SHORT_NAME from TYPE_LES

where ID_TYPE_LES=:oIdTypeLes

into :oNameTypeLes,:oShortNameTypeLes;

select NAME, SHORT_NAME from DIC

where ID_DIC = :oIdDic

into :oNameDIC,:oShortNameDIC;

select SHORT_NAME from ROOM

where ID_ROOM = :oIdRoom

into :oShortNameRoom;

select SHORT_NAME from GROUP_LES

where ID_GR = :oIdGr

into :oShortNameGr;

select ID_CH_W, ID_DAY_W, ID_LES_P from POINT_PLAN

where ID_POINT= :vIdPoint

into :oIdCW,:oIdDW,:oIdLesP;

select NAME, SHORT_NAME from DAY_W

where ID_DAY_W = :oIdDW

into :oNameDW,:oShortNameDW;

select SHORT_NAME from CH_W

where ID_CH_W = :oIdCW

into :oShortNameCW;

/*Находим время учебной пары*/

select TIME_BEG, TIME_BEG+DTIME1CL+DTIME1_PAUS+DTIME2CL from LES_POINT

where ID_LES_P=:oIdLesP

into :oTime1,:oTime2;

suspend;

end

end

end

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

Исходное расписание

select * from WORK_TIME_TABLE ( '10.10.06')

select * from WORK_TIME_TABLE ( '20.09.06')

3.4 Базовые функции для работы с каталогами

ГЕНЕРАТОРЫ - специальные функции, обеспечивающие корректное формирование новых уникальных идентификаторов для таблиц с простыми ключами (независимые сущности)

Для каждой таблицы необходимо объявить собственный генератор*/

create generator GEN_DIC;

create generator GEN_TYPE_LEC;

create generator GEN_POINT_LES;

create generator GEN_ROOM;

create generator GEN_CH_WEEK;

create generator GEN_DAY_WEEK;

/* и т.д.*/

3.4.1 Создание нового элемента

Процедуры, обеспечивающие создание новой записи

обычно с проверкой корректности данных*/

create procedure NEW_DIC(pShortName VARCHAR(30),

pName varchar(80))

returns(oNewId integer,

oRes integer)

as

declare variable vYesDic integer;

begin

/* функция: Создание новой записи в таблице DIC при условии указания обозначения и наименования дисциплины

вход: pShortName - уникальное обозначение дисциплины

pName - наименование дисциплины

выход: Res- =0 - запись не создана по условию проверки входных данных

=1 - успешное завершение операции

=2 - запись создана, но имеется повторное обозначение

эффекты:

1. Если pShortName is null

or pShortName=''

or pName is null

or pName='' - запись не создается, генератор не продвигается, oRes=0

требования:

*/

oRes=0;

if((pShortName is null)

or (pShortName='')

or (pName is null)

or (pName='')) then

begin

oNewId=0;

oRes=0;

suspend;

end

else

begin

vYesDic=0;

oRes=1;

/*проверка наличия повторов в обозначениях*/

select count(*) from DIC

where SHORT_NAME=:pShortName

into: vYesDic;

if (:vYesDic>0) then

oRes=2;

oNewId=GEN_ID(GEN_DIC,1);

insert into DIC(ID_DIC,SHORT_NAME,NAME)

values(:oNewId,:pShortName,:pName);

suspend;

end

end

3.4.2 Редактирование элемента

create procedure UPDATE_DIC(pIdDic integer,

pShortName varchar(30),

pName varchar(80))

returns(oRes integer)

as

declare variable vYesDic integer;

begin

/*функции: Записывает новое имя и обозначение дисциплины при условии отсутствия повторений

вход: pIdDic - идентификатор дисциплины

pShortName - обозначение дисциплины

pName - имя дисциплины

выход: oRes - результат выполнения операции

=0 - операция не выполнена

=1 - выполнена успешно

эффекты:

1. Если есть повторение обозначения или имени дисциплины или они не указаны, то операция коррекции не выполняется (oRes=0)*/

oRes=0;

if((pShortName is null)

or (pShortName='')

or (pName is null)

or (pName='')) then

begin

oRes=0;

suspend;

end

else

begin

/*проверка наличия повторов в обозначениях*/

select count(*) from DIC

where ((SHORT_NAME=:pShortName)

or (NAME=:pName))

and (ID_DIC <> :pIdDic)

into :vYesDic;

if (:vYesDic>0) then

begin

oRes=0;

suspend;

end

else

begin

select count(*) from DIC

where ID_DIC=:pIdDic

into :vYesDic;

if(:vYesDic=0) then

begin

oRes=0;

suspend;

end

else

begin

update DIC

set NAME=:pName,

SHORT_NAME=:pShortName

where ID_DIC=:pIdDic;

oRes=1;

suspend;

end

end

end

end

3.4.3 Удаление элемента

/*Удаление элемента с использованием триггера*/

CREATE TRIGGER TR_DEL_DIC FOR DIC BEFORE DELETE

AS

DECLARE VARIABLE numrows INTEGER;

BEGIN

update PLAN_LES

set PLAN_LES.ID_DIC = NULL

where PLAN_LES.ID_DIC = OLD.ID_DIS;

update TCH_TYPE__LES

set TC_LES.ID_DIC = NULL

where TC_LES.ID_DIC = OLD.ID_DIS;

END

delete from DIC

where ID_DIC=pIdDic;

/*Удаление элемента с использованием процедуры*/

create procedure DEL_DIC(pIdDic integer)

returns(oRes integer)

as

declare variable vYesDic integer;

begin

/*функции: Удаляет дисциплину при отсутствии ссылок на нее

вход: pIdDic - идентификатор дисциплины

выход: oRes - результат выполнения операции

=0 - операция не выполнена

=1 - выполнена успешно

эффекты:

1. Если есть ссылки на дисциплину, то удаление не происходит (oRes=0)*/

select count(*) from PLAN_LES

where ID_DIC=:pIdDic

into :vYesDic;

if(:vYesDic=0) then

begin

select count(*) from TCH_TYPE_LES

where ID_DIC=:pIdDic

into :vYesDic;

end

if(:vYesDic>0) then

begin

oRes=0;

suspend;

end

else

begin

delete from DIC

where ID_DIC=:pIdDic;

oRes=1;

suspend;

end

end

/*Поиск дисциплин*/

create procedure FIND_DIC(pShortName varchar(30),pName varchar(80), pIdDic integer)

returns(oShortName varchar(30),

oName varchar(80),

oIdDic integer)

as

declare variable vId integer;

declare variable vShN integer;

declare variable vN integer;

begin

vId=0;

vShN=1;

vN=1;

if(:pIdDic>0) then

vId=1;

if((:pShortName is null)

or (:pShortName='')) then

vShN=0;

if((:pName is null)

or (:pName='')) then

vN=0;

oIdDic=0;

oShortName='';

oName='';

pShortName='%'||pShortName||'%';

pName='%'||pName||'%';

for select ID_DIC,SHORT_NAME,NAME

from DIC

where (:vId=1) and (ID_DIC=:pIdDic)

or (:vShN=1) and (SHORT_NAME like :pShortName)

or (:vN=1) and (NAME like :pName)

into :oIdDic,:oShortName,:oName

do

suspend;

end

3.4.4 Скрипт формирования базы данных по проекту

SET SQL DIALECT 1;

/* CREATE DATABASE 'D:\DUB\лэти\КПр0604\PLES.GDB' PAGE_SIZE 1024

DEFAULT CHARACTER SET */

/* Table: CH_W, Owner: SYSDBA */

CREATE TABLE CH_W

(

SHORT_NAME VARCHAR(30),

ID_CH_W INTEGER NOT NULL,

NAME VARCHAR(400),

PRIMARY KEY (ID_CH_W)

);

/* Table: DAY_W, Owner: SYSDBA */

CREATE TABLE DAY_W

(

NAME VARCHAR(60),

SHORT_NAME VARCHAR(30),

ID_DAY_W INTEGER NOT NULL,

PRIMARY KEY (ID_DAY_W)

);

/* Table: DIC, Owner: SYSDBA */

CREATE TABLE DIC

(

SHORT_NAME VARCHAR(30),

ID_DIC INTEGER NOT NULL,

NAME VARCHAR(80),

PRIMARY KEY (ID_DIC)

);

/* Table: GROUP_LES, Owner: SYSDBA */

CREATE TABLE GROUP_LES

(

SHORT_NAME VARCHAR(30),

ID_GR INTEGER NOT NULL,

PRIMARY KEY (ID_GR)

);

/* Table: LES_POINT, Owner: SYSDBA */

CREATE TABLE LES_POINT

(

NAME VARCHAR(60),

SHORT_NAME VARCHAR(30),

ID_LES_P INTEGER NOT NULL,

DTIME2_PAUS FLOAT,

DTIME2CL FLOAT,

DTIME1_PAUS FLOAT,

DTIME1CL FLOAT,

TIME_BEG TIMESTAMP NOT NULL,

PRIMARY KEY (ID_LES_P)

);

/* Table: PERCON, Owner: SYSDBA */

CREATE TABLE PERCON

(

TABN VARCHAR(20),

ID_PERCON INTEGER NOT NULL,

NNAME VARCHAR(40),

NAME VARCHAR(30),

FAM VARCHAR(50) NOT NULL,

PRIMARY KEY (ID_PERCON)

);

/* Table: PLAN_LES, Owner: SYSDBA */

CREATE TABLE PLAN_LES

(

ID_POINT_PLAN INTEGER NOT NULL,

ID_GR INTEGER,

ID_POINT INTEGER,

ID_DIC INTEGER,

ID_TYPE_LES INTEGER,

ID_ROOM INTEGER,

FIN_DATE TIMESTAMP,

BEG_DATE TIMESTAMP,

DATE_INPUT TIMESTAMP NOT NULL,

PERCON_INPUT INTEGER,

PRIMARY KEY (ID_POINT_PLAN)

);

/* Table: POINT_PLAN, Owner: SYSDBA */

CREATE TABLE POINT_PLAN

(

ID_POINT INTEGER,

ID_CH_W INTEGER,

ID_DAY_W INTEGER,

ID_LES_P INTEGER

);

/* Table: ROOM, Owner: SYSDBA */

CREATE TABLE ROOM

(

NAME VARCHAR(60),

SHORT_NAME VARCHAR(30),

ID_ROOM INTEGER

);

/* Table: TCH_TYPE_LES, Owner: SYSDBA */

CREATE TABLE TCH_TYPE_LES

(

ID_USE_TC INTEGER NOT NULL,

ID_GR INTEGER,

ID_DIC INTEGER,

ID_TYPE_LES INTEGER,

TCH_ID_PERCON INTEGER,

FIN_DATE TIMESTAMP,

BEG_DATE TIMESTAMP,

DATE_INPUT TIMESTAMP NOT NULL,

PERCON_INPUT INTEGER,

PRIMARY KEY (ID_USE_TC)

);

/* Table: TYPE_LES, Owner: SYSDBA */

CREATE TABLE TYPE_LES

(

NAME VARCHAR(80),

SHORT_NAME VARCHAR(30),

ID_TYPE_LES INTEGER NOT NULL,

PRIMARY KEY (ID_TYPE_LES)

);

/* Index definitions for all user tables */

CREATE UNIQUE INDEX XPKCH_W ON CH_W(ID_CH_W);

CREATE UNIQUE INDEX XPKDAY_W ON DAY_W(ID_DAY_W);

CREATE UNIQUE INDEX XPKDIC ON DIC(ID_DIC);

CREATE UNIQUE INDEX XPKGROUP_LES ON GROUP_LES(ID_GR);

CREATE UNIQUE INDEX XPKLES_POINT ON LES_POINT(ID_LES_P);

CREATE UNIQUE INDEX XPKPERCON ON PERCON(ID_PERCON);

CREATE UNIQUE INDEX XPKPLAN_LES ON PLAN_LES(ID_POINT_PLAN);

CREATE UNIQUE INDEX XPKPOINT_PLAN ON POINT_PLAN(ID_POINT);

CREATE UNIQUE INDEX XPKROOM ON ROOM(ID_ROOM);

CREATE UNIQUE INDEX XPKTCH_TYPE_LES ON TCH_TYPE_LES(ID_USE_TC);

CREATE UNIQUE INDEX XPKTYPE_LES ON TYPE_LES(ID_TYPE_LES);

ALTER TABLE PLAN_LES ADD FOREIGN KEY (PERCON_INPUT) REFERENCES PERCON (ID_PERCON);

ALTER TABLE PLAN_LES ADD FOREIGN KEY (ID_TYPE_LES) REFERENCES TYPE_LES (ID_TYPE_LES);

ALTER TABLE PLAN_LES ADD FOREIGN KEY (ID_DIC) REFERENCES DIC (ID_DIC);

ALTER TABLE PLAN_LES ADD FOREIGN KEY (ID_GR) REFERENCES GROUP_LES (ID_GR);

ALTER TABLE POINT_PLAN ADD FOREIGN KEY (ID_LES_P) REFERENCES LES_POINT (ID_LES_P);

ALTER TABLE POINT_PLAN ADD FOREIGN KEY (ID_DAY_W) REFERENCES DAY_W (ID_DAY_W);

ALTER TABLE POINT_PLAN ADD FOREIGN KEY (ID_CH_W) REFERENCES CH_W (ID_CH_W);

ALTER TABLE TCH_TYPE_LES ADD FOREIGN KEY (PERCON_INPUT) REFERENCES PERCON (ID_PERCON);

ALTER TABLE TCH_TYPE_LES ADD FOREIGN KEY (TCH_ID_PERCON) REFERENCES PERCON (ID_PERCON);

ALTER TABLE TCH_TYPE_LES ADD FOREIGN KEY (ID_TYPE_LES) REFERENCES TYPE_LES (ID_TYPE_LES);

ALTER TABLE TCH_TYPE_LES ADD FOREIGN KEY (ID_DIC) REFERENCES DIC (ID_DIC);

ALTER TABLE TCH_TYPE_LES ADD FOREIGN KEY (ID_GR) REFERENCES GROUP_LES (ID_GR);

CREATE GENERATOR CH_W;

CREATE GENERATOR DAY_W;

CREATE GENERATOR DIC;

CREATE GENERATOR GROUP_LES;

CREATE GENERATOR LES_POINT;

CREATE GENERATOR PERCON;

CREATE GENERATOR PLAN_LES;

CREATE GENERATOR POINT_PLAN;

CREATE GENERATOR ROOM;

CREATE GENERATOR TCH_TYPE_LES;

CREATE GENERATOR TYPE_LES;

/* Exceptions */

CREATE EXCEPTION ERWIN_CHILD_DELETE_RESTRICT 'Cannot DELETE Child table because Parent table does not exist.';

CREATE EXCEPTION ERWIN_CHILD_INSERT_RESTRICT 'Cannot INSERT Child table because Parent table does not exist.';

CREATE EXCEPTION ERWIN_CHILD_UPDATE_RESTRICT 'Cannot UPDATE Child table because Parent table does not exist.';

CREATE EXCEPTION ERWIN_PARENT_DELETE_RESTRICT 'Cannot DELETE Parent table because Child table exists.';

CREATE EXCEPTION ERWIN_PARENT_INSERT_RESTRICT 'Cannot INSERT Parent table because Child table exists.';

CREATE EXCEPTION ERWIN_PARENT_UPDATE_RESTRICT 'Cannot UPDATE Parent table because Child table exists.';

/* Triggers only will work for SQL triggers */

CREATE TRIGGER CREATE_CH_W FOR CH_W

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.ID_CH_W = GEN_ID(CH_W, 1);

END

;

CREATE TRIGGER CREATE_DAY_W FOR DAY_W

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.ID_DAY_W = GEN_ID(DAY_W, 1);

END

;

CREATE TRIGGER CREATE_DIC FOR DIC

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.ID_DIC = GEN_ID(DIC, 1);

END

;

CREATE TRIGGER CREATE_GROUP FOR GROUP_LES

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.ID_GR = GEN_ID(GROUP_LES, 1);

END

;

CREATE TRIGGER CREATE_PLAN_LES FOR PLAN_LES

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.ID_POINT_PLAN = GEN_ID(PLAN_LES, 1);

END

;

CREATE TRIGGER CREATE_POINT_PLAN FOR POINT_PLAN

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.ID_POINT = GEN_ID(POINT_PLAN, 1);

END

;

CREATE TRIGGER CREATE_ROOM FOR ROOM

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.ID_ROOM = GEN_ID(ROOM, 1);

END

;

CREATE TRIGGER CREATE_TCH_TYPE_LES FOR TCH_TYPE_LES

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

NEW.ID_USE_TC = GEN_ID(TCH_TYPE_LES, 1);

END

;

COMMIT WORK;

/* Grant Roles for this database */

/* Grant permissions for this database */

Размещено на Allbest.ru


Подобные документы

  • Разработка технического задания и проекта информационной системы "Расписание занятий в вузе". Понятие, определения и сокращения. Характеристика объектов автоматизации. Даталогическая модель базы данных. Создание таблиц и построение схемы данных в БД.

    курсовая работа [888,4 K], добавлен 09.02.2017

  • Особенности написания базы данных на языках программирования C++, применимой для расписания занятий в университете. Этапы работы: ввод новой записи, изменение, просмотр базы данных, поиск данных. Алгоритмы, используемые в процессе выполнения проекта.

    практическая работа [16,6 K], добавлен 12.06.2010

  • Функциональная структура системы. Формирование отчета о расходе продуктов и их стоимости в проектируемой информационной системе. Структура базы данных. Логическая модель базы данных. Триггер на удаление и изменение записи таблицы продукты, рецепты.

    курсовая работа [327,1 K], добавлен 20.06.2010

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

    курсовая работа [3,0 M], добавлен 09.03.2009

  • Проектирование и разработка автоматизированной информационной системы (АИС) публикации и обработки данных для работников детского сада № 176. Недостатки существующей АИС, снижающие эффективность работы организации. Прототип пользовательского интерфейса.

    дипломная работа [7,7 M], добавлен 19.07.2012

  • Организационная структура предприятия, занимающегося подбором персонала. Функциональная модель работы кадрового агентства. Автоматизация деятельности консультанта, обработки данных. Разработка информационной системы ведения деятельности по подбору кадров.

    дипломная работа [4,2 M], добавлен 20.07.2014

  • Разработка интерактивных сервисов доступа к расписанию занятий СевКавГТУ в среде программирования Eclipse и базы данных для них с использованием фреймворк Django. Информационное и программное обеспечение разработки. Расчет цены программного продукта.

    дипломная работа [6,1 M], добавлен 29.06.2011

  • Структурно–функциональная модель системы проведения соревнований школьников. Формирование требований к проектируемой автоматизированной системе обработки информации и управления. Разработка концепции и документации, анализ и выявление ключевых процессов.

    дипломная работа [3,4 M], добавлен 04.03.2014

  • Автоматизированные информационные системы и их структура. Описание предметной области. Программная реализация основных алгоритмов формирования документации. Организация входной информации. Процесс создания расписания. Расчет затрат на отладку программы.

    дипломная работа [2,3 M], добавлен 06.09.2014

  • Основы проектирования информационно-прикладных систем. Подготовка макета приложения, интегрированного с БД. Сбор и загрузка исходных данных. Разработка и реализация математического алгоритма оптимизации составления расписания образовательного учреждения.

    дипломная работа [3,4 M], добавлен 18.02.2017

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.