Автор работы: Пользователь скрыл имя, 09 Сентября 2012 в 20:56, курсовая работа
Цель работы - сокращение временных и трудозатрат секретаря кафедры по поддержанию актуальной информации, составлению документов и формированию отчетности за счет разработки и внедрения системы.
Для достижения поставленной цели необходимо решить следующие задачи:
изучить предметную область;
спроектировать систему с помощью средств моделирования, таких как DFD, IDEF1X;
разработать базу данных для хранения информации, необходимой для обеспечения деятельности работников кафедры;
разработать приложение с пользовательским интерфейсом.
ВВЕДЕНИЕ 3
1. ПОСТАНОВКА ЗАДАЧИ 4
1.1 Характеристика комплекса задач 4
1.2 Входная информация 7
1.3 Выходная информация 9
1.4 Математическое описание 11
1.5 Диаграммы потоков 12
2. ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННОГО ОБЕСПЕЧЕНИЯ 19
2.1 Информационная модель 19
3. ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 26
3.1 Обоснование проектных решений по программному обеспечению 26
3.2 Руководство пользователя 27
ЗАКЛЮЧЕНИЕ 50
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ 51
Таблица 29- Тип сущности «Расписание» | ||||||
Поля | ||||||
Ключи |
Наименование |
Тип данных |
Значение |
Описание | ||
PК |
Код расписания |
Числовой (10) |
Not null |
Идентификатор | ||
Полугодие |
Числовой (1) |
Not null |
||||
Учебный год |
Числовой (4) |
Not null |
||||
Связи | ||||||
Дочерняя сущность |
Тип |
Мощность | ||||
Расписание преподаватели |
не идентифицирующая |
1 – М |
Приложение 3 Листинг кода
Функция ПолучитьСписокСвободныхПрепода
// определим полугодие
ДатаЗащиты = НачалоДня(Дата);
Месяц = Месяц(Дата);
Год = год(Дата);
Если Месяц >= 1 и Месяц <=6 тогда
Полугодие = 2;
Год = Год - 1;
Иначе
Полугодие = 1;
КонецЕсли;
// определим тип первой недели
запрос = Новый Запрос;
запрос.Текст = "ВЫБРАТЬ
| Расписание.ТипПервойНедели
|ИЗ
| Документ.Расписание КАК Расписание
|ГДЕ
| Расписание.Полугодие = &Полугодие
| И Расписание.УчебныйГод = &УчебныйГод
| И Расписание.ПометкаУдаления = ЛОЖЬ
| И Расписание.Проведен = ИСТИНА";
запрос.УстановитьПараметр("
запрос.УстановитьПараметр("
тз = запрос.Выполнить().Выгрузить()
Если НЕ тз.Количество()=0 тогда
ТипПервойНедели = тз[0];
Иначе
Сообщить("Не найдено расписания для числа защиты.");
отказ = Истина; Возврат отказ;
КонецЕсли;
// составим таблицу соответствий чисел и типа недели
Если Полугодие = 1 тогда
ДатаОтчета = Дата(Год,9,1);
ДатаОкончания = Дата(Год,12,31);
Иначе
ДатаОтчета = Дата(Год,2,1);
ДатаОкончания = Дата(Год,6,30);
КонецЕсли;
ТочкаОтчета = ДеньНедели(ДатаОтчета);
ТочкаОпределения = ДеньНедели(ДатаЗащиты);
д = ДатаОтчета;
ТаблицаСоответствия = новый ТаблицаЗначений;
ТаблицаСоответствия.Колонки.
ТаблицаСоответствия.Колонки.
// определим первое значение
НовСтр = ТаблицаСоответствия.Добавить()
НовСтр.День = д;
НовСтр.ТипНедели = ТипПервойНедели;
П_ТипНедели = Перечисления.ТипНедели;
Если ТипПервойНедели = П_ТипНедели.Четная тогда
ТипНедели = П_ТипНедели.Нечетная;
Иначе
ТипНедели = П_ТипНедели.Четная;
КонецЕсли;
Пока д <ДатаОкончания цикл
д = д + 60*60*24*7; // прибавим 7 суток
Если д >ДатаОкончания тогда Прервать; КонецЕсли;
НовСтр = ТаблицаСоответствия.Добавить()
НовСтр.День = д;
НовСтр.ТипНедели = ТипНедели;
Если ТипНедели = П_ТипНедели.Четная тогда // меняем на противоположную
ТипНедели = П_ТипНедели.Нечетная;
Иначе
ТипНедели = П_ТипНедели.Четная;
КонецЕсли;
КонецЦикла;
Если ТочкаОтчета = ТочкаОпределения тогда
ДатаПоиска = ДатаЗащиты;
ИначеЕслиТочкаОтчета>
ДатаПоиска = ДатаЗащиты + 60*60*24*ТочкаОтчета - 60*60*24*ТочкаОпределения;
ИначеЕслиТочкаОтчета<
ДатаПоиска = ДатаЗащиты - 60*60*24*ТочкаОтчета - 60*60*24*ТочкаОпределения;
Иначе //
КонецЕсли;
// теперь в таблице соответствия найдем дату поиска
НайденнаяДата = ТаблицаСоответствия.Найти(
Если НЕ НайденнаяДата=Неопределено тогда
НайденныйТипНедели = НайденнаяДата.ТипНедели;
Иначе
Сообщить("Произошла ошибка определения типа недели дня защиты.");
отказ = Истина; Возврат отказ;
КонецЕсли;
// определим номер пары в
ВремяЗащиты = Дата;
Час = Час(ВремяЗащиты);
Минута = Минута(ВремяЗащиты);
Если Час>=8 И Час<=9 тогда
НомерПары = 1;
ИначеЕсли Час>=9 И Час<=11 тогда
НомерПары = 2;
ИначеЕсли Час>=11 И Час<=13 тогда
НомерПары = 3;
ИначеЕсли Час>=13 И Час<=15 тогда
НомерПары = 4;
ИначеЕсли Час>=15 И Час<=16 тогда
НомерПары = 5;
ИначеЕсли Час>=16 И Час<=18 тогда
НомерПары = 6;
ИначеЕсли Час>=18 И Час<=20 тогда
НомерПары = 7;
Иначе
Сообщить("Время защиты пары не соответствует рабочему времени");
отказ = Истина; Возврат отказ;
КонецЕсли;
// определим преподавателей, которые не работают в эту пару
запрос_новый = Новый Запрос;
запрос_новый.Текст = "ВЫБРАТЬ
| РасписаниеПреподаватели.
|ИЗ
| Документ.Расписание.
|ГДЕ
| РасписаниеПреподаватели.
| И РасписаниеПреподаватели.
| И РасписаниеПреподаватели.
|
|СГРУППИРОВАТЬ ПО
| РасписаниеПреподаватели.
запрос_новый.
запрос_новый.
запрос_новый.
СписокПреподаватель = запрос_новый.Выполнить().
Возврат СписокПреподаватель;
КонецФункции