Информационная система ведения расписания занятий в вузе (расписание занятий)
Функциональная модель существующей технологии обработки данных и управления. Разработка требований к функциям проектируемой системы. Базовые функции для работы с каталогами. Создание, редактирование и удаление элемента. Порядок разработки 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