Проектирование программного обеспечения

Автор работы: Пользователь скрыл имя, 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

Вложенные файлы: 1 файл

Курсовая по специальности.docx

— 1.47 Мб (Скачать файл)

 

Таблица 29- Тип сущности «Расписание»

Поля

Ключи

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

Тип данных

Значение

Описание

Код расписания

Числовой (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;

Иначе

Сообщить("Время защиты пары не соответствует рабочему времени");

отказ = Истина; Возврат отказ;

КонецЕсли;

 

// определим преподавателей, которые  не работают в эту пару

запрос_новый = Новый Запрос;

запрос_новый.Текст = "ВЫБРАТЬ

                     | РасписаниеПреподаватели.Преподаватель

                     |ИЗ

                     | Документ.Расписание.Преподаватели КАК РасписаниеПреподаватели

                     |ГДЕ

                     | РасписаниеПреподаватели.ТипНедели = &ТипНедели

                     | И РасписаниеПреподаватели.ДеньНедели.Порядок + 1 = &НомерДняНедели

                     | И РасписаниеПреподаватели.НомерПары<>&НомерПары

                     |

                     |СГРУППИРОВАТЬ ПО

                     | РасписаниеПреподаватели.Преподаватель";

запрос_новый.УстановитьПараметр("ТипНедели",НайденныйТипНедели);

запрос_новый.УстановитьПараметр("НомерДняНедели",ТочкаОпределения);

запрос_новый.УстановитьПараметр("НомерПары",НомерПары);

СписокПреподаватель = запрос_новый.Выполнить().Выгрузить().ВыгрузитьКолонку("Преподаватель");

Возврат СписокПреподаватель;

КонецФункции

 

 

 


Информация о работе Проектирование программного обеспечения