Информационная система колледжа. Расписание

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

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

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

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

Флаг_ошибка=1;

КонецЕсли;

Возврат Результ;

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

Функция СписокПредметовВыдаваемыхОСтаб (Дата_нач, Дата_кон). Функция получает количество оставшихся часов для групп и преподавателей.

Функция СписокПредметовВыдаваемыхОСтаб(Дата_нач, Дата_кон) Экспорт

Длина=ТаблицаИтог.Количество();

Для а=0 по Длина-1 цикл

ГруппаЗ=ТаблицаИтог[а][0];

Предметы_=ТаблицаИтог[а][1];

Предметы_.Сортировать("Часы Убыв");

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

НоваяСтрока=ТаблицаИтогВозврат.Добавить();

НоваяСтрока.Группа=ГруппаЗ;

НоваяСтрока.Предметы=СписокПр;

КонецЦикла;

Длина=ПредметыПреподавателей2.Количество();

Для а=0 по Длина-1 цикл

Преподаватель=ПредметыПреподавателей2[а][0];

Предметы_=ПредметыПреподавателей2[а][1];

Предметы_.Сортировать("Часы Убыв");

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

НоваяСтрока=ПредметыПреподавателей.Добавить();

НоваяСтрока.Преподаватель=Преподаватель;

НоваяСтрока.Предметы=СписокПр;

КонецЦикла;

Возврат ТаблицаИтогВозврат;

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

Процедура КолвоДнейОтсутствиеПреподавателей. Данная процедура возвращает количество дней в течении которых отсутствует преподаватель, при этом задается диапазон во времени.

Процедура КолвоДнейОтсутствиеПреподавателей()

ДниОтсутствияПреподавателей=Новый("ТаблицаЗначений");

ДниОтсутствияПреподавателей.Колонки.Добавить("Преподаватель");

ДниОтсутствияПреподавателей.Колонки.Добавить("Дни");

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

Запрос.УстановитьПараметр("КонДата", МаксДата);

Запрос.УстановитьПараметр("НачДата", ДатаВыдач1);

Результат = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = Результат.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

Преподаватель=ВыборкаДетальныеЗаписи.Преподаватель;

День=ВыборкаДетальныеЗаписи.День_;

РезСтр=ДниОтсутствияПреподавателей.Найти(Преподаватель, "Преподаватель" );

Если РезСтр<>Неопределено тогда

РезСтр.Дни.Добавить(День);

Иначе

НоваяСтрока=ДниОтсутствияПреподавателей.Добавить();

НоваяСтрока.Преподаватель=Преподаватель;

Сп2=Новый("СписокЗначений");

Сп2.Добавить(День);

НоваяСтрока.Дни=Сп2;

КонецЕсли;

Длина=ДниОтсутствияПреподавателей.Количество()-1;

Для а=0 по Длина цикл

ДниОтсутствияПреподавателей[а][1].СортироватьПоЗначению(НаправлениеСортировки.Возр);

КонецЦикла;

КонецЦикла;

КонецПроцедуры

Функция ПроверкаПредмета(Предмет,Дата_). Данная функция проверяет можно ли ставить предмет на указанную дату если можно-1.

Функция ПроверкаПредмета(Предмет,Дата_)

Перем Результат;

Результат=1;

Если (Дата_<Предмет.Дата_нач) ИЛИ (Дата_>Предмет.Дата_кон) тогда

Результат=0;

КонецЕсли;

Возврат Результат;

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

Функция НерабочиеДни2(Дата_Нач, Дата_Кон). Функция ищет нерабочие дни в справочнике и помещает их в список значений Рез.

Функция НерабочиеДни2(Дата_Нач, Дата_Кон) Экспорт

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

Запрос.УстановитьПараметр("ДатаКон", Дата_Кон);

Запрос.УстановитьПараметр("ДатаНач", Дата_Нач);

Результат = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = Результат.Выбрать();

Рез=Новый("СписокЗначений");

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

Рез.Добавить(ВыборкаДетальныеЗаписи.НерабДень);

КонецЦикла;

Возврат Рез;

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

Процедура ОпределитьКолвоНедельОбщ(). Данная процедура получает количество нерабочих дней за выбранный интервал.

Процедура ОпределитьКолвоНедельОбщ()

НерабочиеДниОбщ=НерабочиеДни2(ДатаВыдач1, МаксДата);

КонецПроцедуры

Функция НерабочийДень(День). Данная функция проверяет евляется ли день нерабочим. Если да, то возвращает 1.

Функция НерабочийДень(День)

Результат=0;

Если НерабочиеДниОбщ=Неопределено тогда

ОпределитьКолвоНедельОбщ();

Иначе

Если НерабочиеДниОбщ.НайтиПоЗначению(День)<>Неопределено тогда

Результат=1;

КонецЕсли;

КонецЕсли;

Возврат Результат;

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

Функция НерабочиеДниРасписаниеНеделя(Дата1, Дата2). Функция получает количество нерабочих дней в период между Дата1 и Дата2.

Функция НерабочиеДниРасписаниеНеделя(Дата1, Дата2)

Колво=0;

Если НерабочиеДниОбщ=Неопределено тогда

ОпределитьКолвоНедельОбщ();

Если ((День_>=Дата1)и(День_<=Дата2)) тогда

Колво=Колво+1;

КонецЕсли;

Иначе

День_=НерабочиеДниОбщ[а].Значение;

Если ((День_>=Дата1)и(День_<=Дата2)) тогда

Колво=Колво+1;

КонецЕсли;

КонецЕсли;

Возврат Колво;

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

Функция РасчетЗанятоГруппой(ДатаВыдач1, Дата2, Группа). Данная функция даёт возможность получить группу и день, в который группа занята.

Функция РасчетЗанятоГруппой(ДатаВыдач1, Дата2, Группа)

Результ=0;

//ЗанГруппы (поля - группа, дни)

Рез=ЗанГруппы.Найти(Группа,"Группа");

Если Рез<>Неопределено тогда

Дни=Рез[0][1];

Длина=Дни.Количество()-1;

Для а=0 по Длина цикл

День_=Дни[а];

Если ((День_>=ДатаВыдач1)и(День_<=Дата2)) тогда

Результ=Результ+1;

КонецЕсли;

КонецЦикла;

КонецЕсли;

Возврат Результ;

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

Функция ОпределитьКолвоНедель(Предмет, Группа ). Она определяет за сколько недель начиная с указанного дня необходимо выдать предмет.

Функция ОпределитьКолвоНедель(Предмет, Группа )

КолвоДней=(Предмет.Дата_кон-ДатаВыдач1)/(60*60*24);

Если НерабочиеДниОбщ=Неопределено тогда

ОпределитьКолвоНедельОбщ();

КолвоПраздников=НерабочиеДниРасписаниеНеделя(ДатаВыдач1, Предмет.Дата_кон);

Иначе

КолвоПраздников=НерабочиеДниРасписаниеНеделя(ДатаВыдач1, Предмет.Дата_кон);

КонецЕсли;

//Разница= КолвоДней-КолвоПраздников-КолвоВыход;

Разница= КолвоДней-КолвоПраздников;

Разница= Разница/7;

Возврат Разница;

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

Функция ВсегоОсталось(Преподаватель). Эта функция определяет, сколько часов осталось выдать преподавателю.

Функция ВсегоОсталось(Преподаватель)

ПеремРезульт, стр;

Результ=0;

Рез=ПреподавателиВсе.Найти(Преподаватель, "Преподаватель");

Если Рез<>Неопределено тогда

Результ=Рез.Оставш_Часы;

КонецЕсли;

Возврат Результ;

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

Функция ЧислоПарПреп(Преподаватель). Функция определяет среднее количество пар, которое надо ставить преподавателю для выдачи необходимых часов.

Функция ЧислоПарПреп(Преподаватель) Экспорт

Если ТаблицаПарНадоСт.Количество()>0 тогда

РезСтр=ТаблицаПарНадоСт.Найти(Преподаватель, "Преподаватель");

Если РезСтр<>Неопределено тогда

Результат=РезСтр[1];

Флаг2=1;

КонецЕсли;

КонецЕсли;

Если Флаг2=0 тогда

РезСтр=ПреподавателиВсе.Найти(Преподаватель, "Преподаватель");

Если РезСтр<>Неопределено тогда

MaxДень=РезСтр.Мах_Дата;

Оставш_Часы=РезСтр.Оставш_Часы;

Колво_Нераб=НерабочиеДниРасписаниеНеделя(ДатаВыдач1, MaxДень);

КолОтсутствиеДнейПреподователя=КолвоДнейОтсутствие2(Преподаватель, MaxДень);

Разница=((MaxДень-ДатаВыдач1)/(60*60*24))+1;

Разница2=Разница-Колво_Нераб-КолОтсутствиеДнейПреподователя;

Делитель=ВсегоОсталось(Преподаватель);

Делимое=Разница2*2;

Если Делимое>0 тогда

Частное=Делитель/Делимое;

Иначе

Частное=0;

КонецЕсли;

Результат=Частное;

НовСтр=ТаблицаПарНадоСт.Добавить();

НовСтр.Преподаватель=Преподаватель;

НовСтр.Надо=Результат;

КонецЕсли;

КонецЕсли;

Возврат Результат;

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

Процедура ЗаполнитьДанные(Группы). Данная процедура выполняется «НаСервере», то есть не в самом конфигураторе, когда как все другие «НаКлиенте». Эта процедура перебирает все дни недели и записывает в таблицы значений данные о группах и их парах на определённый день.

Процедура ЗаполнитьДанные(Группы)

ПеремТабГрОбщ;

//ТабГр.Очистить();

ТабПрепод.Очистить();

Знач_=Перечисления.Дни.Понедельник;

Для н=0 по Группы.Количество()-1 цикл

НоваяСтрока=ТабОбщ.Добавить();

НоваяСтрока.День=Знач_;

НоваяСтрока.Группа=Группы[н];

ТабГрОбщ=Новый ТаблицаЗначений;

ТабГрОбщ.Колонки.Добавить("Первая");

ТабГрОбщ.Колонки.Добавить("Вторая");

ТабГрОбщ.Колонки.Добавить("Третья");

ТабГрОбщ.Колонки.Добавить("Четвертая");

ТабГрОбщ.Колонки.Добавить("Пятая");

ТабГрОбщ.Колонки.Добавить("Шестая");

НоваяСтрока.ИнфоГрупп=ТабГрОбщ;

КонецЦикла;

Знач_=Перечисления.Дни.Вторник;

Знач_=Перечисления.Дни.Среда;

Знач_=Перечисления.Дни.Четверг;

Знач_=Перечисления.Дни.Пятница;

Знач_=Перечисления.Дни.Суббота

КонецПроцедуры;

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

с тем чтобы уложиться с выдачей своих часов

Процедура Подготовка()

ГруппыВсе=СписокПредметовВыдаваемыхОСтаб(ДатаВыдач1, ДатаВ2);

ГруппыВРегистре=ГруппыВсе.ВыгрузитьКолонку("Группа");

Список=ГруппыВсе[п][1];

КолПарНедель=Оставш_Часы/(КолНедель*2);

Результат= ОКР(КолПарНедель);

Длина=ПреподавателиВсе.Количество()-1;

Для н=0 поДлина цикл

НомСтр=0;

Преподаватель=ПреподавателиВсе[н][0];

РезСтр=ПреподН.Найти(Преподаватель, "Препод");

Если РезСтр<>Неопределено тогда

КолП=РезСтр.КоличествоПар;

Надо=Окр(ЧислоПарПреп(Преподаватель)*6);

Если (Надо-КолП)>0 тогда

Спис=РезСтр.Предметы;

Спис.Сортировать("Кол Убыв");

Длина2=Спис.Количество()-1;

Разн=Надо-КолП;

Для в=0 по Длина2 цикл

Предм_=Спис[в][0];

Если Предм_.Тип=Перечисления.Тип_Предмета.Предмет тогда

РезТабГр=ТабГр.Найти(Предм_, "Предмет");

Если РезТабГр<>Неопределено тогда

НовоеКолПар=РезТабГр.КолвоПар+1;

РезТабГр.КолвоПар=НовоеКолПар;

Разн=Разн-1;

Если Разн<=0 тогда

Прервать;

КонецЕсли;

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецПродедуры

Функция Перевод(Дата_). Данная функция переводит день недели в числовое значение.

Функция Перевод(Дата_)

Перем Результат;

Если Дата_=Перечисления.Дни.Понедельник тогда

Результат=ДатаВыдач1;

КонецЕсли;

Если Дата_=Перечисления.Дни.Вторник тогда

Результат=ДатаВыдач1+60*60*24;

КонецЕсли;

Если Дата_=Перечисления.Дни.Среда тогда

Результат=ДатаВыдач1+2*60*60*24;

КонецЕсли;

Если Дата_=Перечисления.Дни.Четверг тогда

Результат=ДатаВыдач1+3*60*60*24;

КонецЕсли;

Если Дата_=Перечисления.Дни.Пятница тогда

Результат=ДатаВыдач1+4*60*60*24;

КонецЕсли;

Если Дата_=Перечисления.Дни.Суббота тогда

Результат=ДатаВыдач1+5*60*60*24;

КонецЕсли;

Возврат Результат;

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

Функция ПроверкаПрепДень2(Преподаватель2, Дата_). Функция проверяет в справочнике ОтсутствияПреподавателяДни не указано ли что преподаватель выходной.

Функция ПроверкаПрепДень2(Преподаватель2, Дата_)

Перемстр, стр2;

Результат=1;

Если ДниОтсутствияПреподавателей=Неопределено тогда

КолвоДнейОтсутствиеПреподавателей();

КонецЕсли;

РезСтр=ДниОтсутствияПреподавателей.Найти(Преподаватель2);

Если РезСтр<>Неопределено тогда

Дни=РезСтр[1];

Длина=Дни.Количество()-1;

Для а=0 по Длина цикл

День=Дни[а].Значение;

Если День=Дата_ тогда

Результат=0;

КонецЕсли;

Если День>Дата_ тогда

Прервать;

КонецЕсли;

КонецЦикла;

КонецЕсли;

Возврат Результат;

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

Процедура ПроверкаЗанГруппы2_1. Процедура проверяет занятость групп на каждый день из выбранного интервала.

Процедура ПроверкаЗанГруппы2_1()

Если Пара1=1 тогда

НовСтр.Пары.Добавить(1);

КонецЕсли;

Если Пара2=1 тогда

НовСтр.Пары.Добавить(2);

КонецЕсли;

Если Пара3=1 тогда

НовСтр.Пары.Добавить(3);

КонецЕсли;

Если Пара4=1 тогда

НовСтр.Пары.Добавить(4);

КонецЕсли;

Если Пара5=1 тогда

НовСтр.Пары.Добавить(5);

КонецЕсли;

Если Пара6=1 тогда

НовСтр.Пары.Добавить(6);

КонецЕсли;

НовСтр=ПарыОтсутствияГрупп.Добавить();

НовСтр.Группа=Группа;

НовСтр.Дни=Пары;

КонецПроцедуры

Функция ПроверкаГруппаПара2(Группа, Дата_, Пара). Данная функция проверяет можно ли указанной группе, в указанный день и указанную пару ставить занятия возвращает 1-если можно (в справвочникеЗанГруппа такой информации нет), 0 - если нельзя ставить.

Функция ПроверкаГруппаПара2(Группа, Дата_, Пара)

Если ПарыОтсутствияГрупп=Неопределено тогда

ПроверкаЗанГруппы2_1();

КонецЕсли;

РезСтр=ПарыОтсутствияГрупп.Найти(Группа, "Группа");

Если РезСтр<>Неопределено тогда

ТаблицаЗн=РезСтр[1];

Длина=ТаблицаЗн.Количество()-1;

Для н=0 поДлина цикл

День_=ТаблицаЗн[н].День;

Пары=ТаблицаЗн[н].Пары;

Если День_=Дата_ тогда

Длина2=Пары.Количество()-1;

Для п=0 по Длина2 цикл

Ном=Пары[п];

Если Ном=Пара тогда

Результат=0;

КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецЦикла;

КонецЕсли;

Возврат Результат;

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

Процедура ПроверкаПрепПара2_1. Данная процедура проверяет, на какой паре преподаватель занят, при помощи справочника «ОтсутствиеПреподавателяПары».

Процедура ПроверкаПрепПара2_1

Если Пара1=1 тогда

Сп2_1.Добавить(1);

КонецЕсли;

Если Пара2=1 тогда

Сп2_1.Добавить(2);

КонецЕсли;

Если Пара3=1 тогда

Сп2_1.Добавить(3);

КонецЕсли;

Если Пара4=1 тогда

Сп2_1.Добавить(4);

КонецЕсли;

Если Пара5=1 тогда

Сп2_1.Добавить(5);

КонецЕсли;

Если Пара6=1 тогда

Сп2_1.Добавить(6);

КонецЕсли;

НовСтр.Пары=Сп2_1;

КонецПроцедуры

Функция ПроверкаПрепПара2(Преподаватель, Дата_, Пара). Функция проверяет в справочнике нет ли отстутствия преподавателя в справочнике ОтсутствиеПреподавателяПары.

Функция ПроверкаПрепПара2(Преподаватель, Дата_, Пара)

Если ПарыОтсутствияПреподавателей=Неопределено тогда

ПроверкаПрепПара2_1();

КонецЕсли;

Отбор = Новый Структура();

Отбор.Вставить("Преподаватель",Преподаватель);

Отбор.Вставить("День",Дата_);

Строки = ПарыОтсутствияПреподавателей.НайтиСтроки(Отбор);

Если Строки.Количество()>0 тогда

Пары=Строки[0].Пары;

Длина=Пары.Количество();

Для н=0 по Длина-1 цикл

Ст=Пары[н];

Если Ст=Пара тогда

Результат=0;

КонецЕсли;

КонецЦикла;

КонецЕсли;

Возврат Результат;

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

Функция ПроверкаВозможностиЗанятьПреподавателей2(Предмет, Смещение). Данная функция возвращает информацию какие преподаватели должны быть задействованы для выдачи дисциплины на расчетный номер пары (основание таблицы - ПредметВсе (поле номерпары) и ПредметыПоставленные).

Функция ПроверкаВозможностиЗанятьПреподавателей2(Предмет, Смещение)

Результ=Новый("Массив");

РезСтр=ПредметыВсе.Найти(Предмет,"Предмет");

Если РезСтр<>Неопределено тогда

НомерПарыНаНачало=РезСтр.НомерПары;

НомерПарыВДокументе=0;

РезСтр=ПредметыПоставленные.Найти(Предмет,"Предмет");

Если РезСтр<>Неопределено тогда

НомерПарыВДокументе=РезСтр.КолвоПар;

КонецЕсли;

ОбщКолвоПар=НомерПарыНаНачало+НомерПарыВДокументе+Смещение;

Препод1=Предмет.КТП[ОбщКолвоПар].Преподаватель1;

Препод2=Предмет.КТП[ОбщКолвоПар].Преподаватель2;

Иначе

Сообщить ("Ошибка - Функция ПроверкаВозможностиЗанятьПреподавателей");

Отказ=Истина;

Возврат 0;

КонецЕсли;

Результ.Добавить(Препод1);

Результ.Добавить(Препод2);

Возврат Результ;

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

Функция ПроверкаВозможностиЗанятьПреподавателей (День, Пара, Предмет, Смещение). Данная функция проверяет занятость преподавателя на определённый день. Параметр смещение - если предполагается запись предмета сразу несколько раз возвращает 1 если преподаватели не заняты.

Функция ПроверкаВозможностиЗанятьПреподавателей (День, Пара, Предмет, Смещение)

Отбор = Новый Структура();

Отбор.Вставить("День",День);

Строки = ТабПрепод.НайтиСтроки(Отбор);

Если Строки.Количество() > 0 Тогда

Длина=Строки.Количество()-1;

Для н=0 поДлина цикл

ПреподИск=Строки[н].Преподав;

ПараИск=Строки[н].Пара;

Если ((ПреподИск=Препод)И(ПараИск=Пара)) тогда

Рез=0;

Прервать;

КонецЕсли;

Если Препод2<>Неопределено тогда

Если ((ПреподИск=Препод2)И(ПараИск=Пара)) тогда

Рез=0;

Прервать;

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецЕсли;

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

Функция ПроверитьВозможностьЗаписиПредмета(Группа, День, Предмет, Смещение). Данная функция имеет параметр Смещение, который проверяет возможность установки занятий в пределах 4-ёх пар.

Функция ПроверитьВозможностьЗаписиПредмета(Группа, День, Предмет, Смещение)

Если (День=Перечисления.Дни.Понедельник)тогда

ЧислоПар=Константы.КолвоПарПонедельник.Получить();

КонецЕсли;

Если (День=Перечисления.Дни.Вторник)тогда

ЧислоПар=Константы.КолвоПарВторник.Получить();

КонецЕсли;

Если (День=Перечисления.Дни.Вторник)тогда

ЧислоПар=Константы.КолвоПарВторник.Получить();

КонецЕсли;

Если (День=Перечисления.Дни.Среда)тогда

ЧислоПар=Константы.КолвоПарСреда.Получить();

КонецЕсли;

Если (День=Перечисления.Дни.Четверг)тогда

ЧислоПар=Константы.КолвоПарЧетверг.Получить();

КонецЕсли;

Если (День=Перечисления.Дни.Пятница)тогда

ЧислоПар=Константы.КолвоПарПятница.Получить();

КонецЕсли;

Если (День=Перечисления.Дни.Суббота)тогда

ЧислоПар=Константы.КолвоПарСуббота.Получить();

КонецЕсли;

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

Функция ЗанятьПреподавателя (День, Пара, Предмет, Препод, Препод2). Функция выполняет занятость преподавателя на дату, проводя установленный предмет.

Функция ЗанятьПреподавателя (День, Пара, Предмет, Препод, Препод2)

Если Препод2=Неопределено тогда

НовСтр=ТабПрепод.Добавить();

НовСтр.День=День;

НовСтр.Преподав=Препод;

НовСтр.Пара=Пара;

НовСтр.Предмет=Предмет;

Иначе

НовСтр=ТабПрепод.Добавить();

НовСтр.День=День;

НовСтр.Преподав=Препод;

НовСтр.Пара=Пара;

НовСтр.Предмет=Предмет;

КонецЕсли;

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

Функция ЗаписатьПредмет(Группа, День, Предмет, Пара, Преп, Преп2). Данная функция записывает предметы для преподавателей и групп на выбранную дату.

Функция ЗаписатьПредмет(Группа, День, Предмет, Пара, Преп, Преп2)

Если Пара=1 тогда

Если ИнфоГрупп1[0][0]<>Неопределено тогда

Сообщить("Ошибка, ЗаписатьПредмет(Группа, День, Предмет, Пара - ошибка1");

Иначе

НовСтр=Новый("ТаблицаЗначений");

НовСтр.Колонки.Добавить("Пара");

НовСтр.Колонки.Добавить("Препод1");

НовСтр.Колонки.Добавить("Препод2");

НовСтр2=НовСтр.Добавить();

НовСтр2.Пара=Предмет;

НовСтр2.Препод1=Преп;

НовСтр2.Препод2=Преп2;

ИнфоГрупп1[0][0]=НовСтр;

КонецЕсли;

КонецЕсли;

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

Процедура СформироватьСтаб. Процедура просматривает все варианты расписаний для удобного построения. Если 4 пары, то пытается поставить их во вторник или четверг.

Процедура СформироватьСтаб()

Если КолПар=4 тогда

Для б=0 по 5 цикл

День=СписокДней[б].Значение;

Рез=ПроверитьВозможностьЗаписиПредмета(Группа, День, Предмет, Счетчик);

НомерПары=Рез[0];

Преп=Рез[1];

Преп2=Рез[2];

Если НомерПары<>0 тогда

Счетчик= Счетчик+1;

НовСтрока=Буфер.Добавить();

НовСтрока.День=День;

НовСтрока.Пара=НомерПары;

НовСтрока.Препод=Преп;

НовСтрока.Препод2=Преп2;

КонецЕсли;

Если Счетчик=4 тогда

Прервать;

КонецЕсли;

КонецЦикла;

Если Счетчик<4 тогда

Сообщить("- не смог поставить 4 пар группа-"+Группа+" предмет-"+Предмет+" смог поставить-"+Счетчик);

КонецЕсли;

Если Счетчик<=4 тогда

Для б=0 по Счетчик-1 Цикл

День=Буфер[б][0];

НомерПары=Буфер[б][1];

Препод1=Буфер[б][2];

Препод2=Буфер[б][3];

Если Препод1<>Неопределено тогда

ЗанятьПреподавателя(День, НомерПары,Предмет, Препод1, Препод2);

ЗаписатьПредмет(Группа, День, Предмет, НомерПары, Препод1, Препод2);

КонецЕсли

КонецЦикла;

КонецЕсли;

КонецЕсли;

КонецПроцедуры

Процедура ПровестиДокументы. Процедура создаёт новый документ «РасписаниеГруппа», в который помещаются все необходимые для расписания данные.

Процедура ПровестиДокументы()

День1=ТабОбщ.ПолучитьЗначение(1,1);

День1_1=ДатаВыдач1;

ДокРасп=Новый("Документ.РасписаниеГруппы");

ДокРасп.Новый();

ДокРасп.ДатаДок=День1_1;

ДокРасп.День=День1;

ДокРасп.НоваяСтрока();

ДокРасп.Группа=Группа;

Таб.ВывестиСекцию("Группа");

Таб.ВывестиСекцию("Пары");

Если Предмет1<>Неопределено тогда

ДокРасп.Предмет1=Предмет1;

КонецЕсли;

Если Предмет2<>Неопределено тогда

ДокРасп.Предмет2=Предмет2;

КонецЕсли;

Если Предмет3<>Неопределено тогда

ДокРасп.Предмет3=Предмет3;

КонецЕсли

Если Предмет4<>Неопределено тогда

ДокРасп.Предмет4=Предмет4;

КонецЕсли;

ДокРасп.Записать();

ДокРасп.Провести();

КонецПроцедуры

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

Процедура ПриОткрытии()

ПредметыВсе=Новый ТаблицаЗначений;

ПреподавателиВсе=Новый ТаблицаЗначений;

ПреподавателиВсе2=Новый ТаблицаЗначений;

ТабГр=Новый ТаблицаЗначений;

ТабНов11=Новый ТаблицаЗначений;

ТабНов=Новый ТаблицаЗначений;

ТабПрепод=Новый ТаблицаЗначений;

ТабОбщ=Новый ТаблицаЗначений;

Буфер=Новый ТаблицаЗначений;

ПреподН=Новый ТаблицаЗначений;

Буфер2=Новый ТаблицаЗначений;

ЗанГруппы=Новый ТаблицаЗначений;

ВыданныеЧасыПредметы=Новый ТаблицаЗначений;

ТаблицаПарНадоСт=Новый ТаблицаЗначений;

ПредметыСдвумяПреподами=Новый ТаблицаЗначений;

СписокДней = Новый("СписокЗначений");

ПредметыПоставленные=Новый ТаблицаЗначений;

КонецПроцедуры

Функция ПодготовитьТаблицыДляЗаписи. Функция формирует 12 таблиц - шесть таблиц по 1 на каждый день для групп (понедельник, вторник, и т.д.). 6 таблиц для преподавателей (эти таблицы будут использованы в документе СозданиеРасписанияНаДень).

Функция ПодготовитьТаблицыДляЗаписи()

Отбор = Новый Структура();

Отбор.Вставить("День",Перечисления.Дни.Понедельник);

Строки = ТабОбщ.НайтиСтроки(Отбор);

Если Строки.Количество()>0 тогда

Длина=Строки.Количество()-1;

Для н=0 поДлина Цикл

Группа=Строки[н].Группа;

ИнфоГрупп=Строки[н].ИнфоГрупп;

НовСтр=МассивГр1.Добавить();

НовСтр.Группа=Группа;

НовСтр.ИнфоГрупп=ИнфоГрупп;

КонецЦикла;

КонецЕсли;

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

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

Процедура ОтменаПроведения()

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

Результат = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = Результат.Выбрать();

Если ВыборкаДетальныеЗаписи.Количество()>0 тогда

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

Если ВыборкаДетальныеЗаписи.Ссылка.Проведен=Истина тогда

Сообщить("На эту дату уже был документ. Произведена отмена проведения документа-"+ВыборкаДетальныеЗаписи.Ссылка);

Док=ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();

Док.Записать(РежимЗаписиДокумента.ОтменаПроведения);

КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецПроцедуры

Процедура ОсновныеДействияФормыОсновныеДействияФормыОК (Кнопка). Данная процедура является заключительной в данном документе, если ранее были проведены документы «СозданиеРасписанияНаДень» (на эти дни), то она отменяет их проведение. После этого формирует 12 таблиц - шесть таблиц по 1 на каждый день для групп (понедельник, вторник, и т.д.). 6 таблиц для преподавателей (эти таблицы будут использованы в документе «СозданиеРасписанияНаДень»). После всего этого, процедура создаёт окончательный результат в виде Документов «СозданиеРасписанияНаДень».

Процедура ОсновныеДействияФормыОсновныеДействияФормыОК(Кнопка)

ОтменаПроведения();

Подготовка();

СформироватьСтаб();

Если Флаг_ошибка=0 тогда

Табл=ПодготовитьТаблицыДляЗаписи();

Для н=0 по 5 цикл

Если Табл[0][н]<>Неопределено и Табл[0][н+6]<>Неопределено тогда

ТабОбщЭксп=Новый ("ТаблицаЗначений");

ТабОбщЭксп.Колонки.Добавить("Группы_Расписание");

ТабОбщЭксп.Колонки.Добавить("Преподаватели_Расписание");

СтрНов=ТабОбщЭксп.Добавить();

СтрНов.Группы_Расписание=Табл[0][н];

СтрНов.Преподаватели_Расписание=Табл[0][н+6];

НовДок=Документы.СозданиеРасписанияНаДень.СоздатьДокумент();

НовДок.Дата=ДатаВыдач1+24*60*60*н+1;

СтрокаВнутр1 = ЗначениеВСтрокуВнутр(ТабОбщЭксп);

НовДок.Инфо=Новый ХранилищеЗначения(СтрокаВнутр1);

НовДок.Записать(РежимЗаписиДокумента.Проведение);

КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецПроцедуры

Во время проведения документов «СозданиеРасписанияНаДень» у нас происходят движения по регистрам накопления.

Регистры накопления - прикладные объекты конфигурации в системе 1С:Предприятие, которые используются для накопления информации о наличии и движении средств - товарных, денежных и других. Информация о хозяйственных операциях в регистры накопления вводится с использованием документов (регистраторов) и используется, например, для получения отчетных форм.

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

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

В системе 1С:Предприятие возможно использование регистров накопления двух типов: регистры остатков и регистры оборотов. Для регистра остатков методы встроенного языка позволяют получить остатки регистра накопления на заданный момент времени. Есть возможность фильтрации по значениям измерений, а также получения остатков в разрезе других измерений. Регистры оборотов предназначены для хранения информации, для которой понятие остатка лишено смысла, например, сумм продаж в разрезе покупателей.

Документ «СозданиеРасписанияНаДень» использует следующие регистры накопления:

Регистр накопления Остатки_Часов_Группы, имеющего тип регистры остатков. Данный регистр хранит в себе информацию о группах и о количестве часов по дисциплинам, которые необходимо выдать группе за определённый период. Так же на форме элементов присутствует регистратор, который показывает, через какой именно документ происходит изменение в данном регистре (Рисунок 3.10).

Рисунок 3.10 - Форма регистра накопления «Остатки_Часов_Группы»

Регистр накопления Остатки_Часов_Преподавателя, имеющего тип регистры остатков. Данный регистр подобен предыдущему, т.к. он тоже хранит в себе информацию о преподавателях и о количестве часов по дисциплинам, которые им необходимо выдать за определённый период (Рисунок 3.11).

Рисунок 3.11 - Форма регистра накопления «Остатки_Часов_Преподавателя»

Регистр накопления Оборот_Часов_Группы, имеющего тип регистры оборотов. Данный регистр хранит в себе оборот всей информации о группах и о количестве часов по их дисциплинам. Так же на форме элементов присутствует регистратор, который показывает, через какой именно документ происходит изменение в данном регистре (Рисунок 3.12).

Рисунок 3.12 - Форма регистра накопления «Остатки_Часов_Преподавателя»

Регистр накопления Оборот_Часов_Группы, имеющего тип регистры оборотов. Данный регистр так же подобен предыдущему, потому что он хранит в себе оборот всей информации о преподавателях и о количестве часов по дисциплинам (Рисунок 3.13).

Рисунок 3.13 - Форма регистра накопления «Остатки_Часов_Преподавателя»

Помимо всего перечисленного, конфигурация включает в себя множество других документов, обработок, регистров сведений и отчётов:

Документ «Изменить вручную» позволяет вносить изменения в расписание группы, предлагая выбрать в качестве замены одну из дисциплин, у которой часы еще не выданы и преподаватель, преподающий данную дисциплину свободен в этот день на указанную пару. Причем пользователю предоставляется возможность выбирать для замены, или для добавления дополнительных занятий (например, в расписании для группы стоит 3 пары, пользователь может поставить четвертой парой) не только предметы, но и консультации, практики, экзамены (Рисунок 3.14).

Рисунок 3.14 - Форма элементов документа «ИзменитьВручную»

Документ «ЗаменаАвтоматическая» отличается от предыдущего прежде всего тем, что в случае если свободных преподавателей нет, то документ должен провести анализ цепочки изменений для того, чтобы освободить кого либо из преподавателей ведущих занятие в этой группе (Рисунок 3.15).

Рисунок 3.15 - Форма элементов документа «ЗаменаАвтоматическая»

Обработки «РасстановкаКабинетов» и «РасстановкаКабинетовВИзмененномРасписании» используют для того, чтобы вручную доставить кабинеты преподавателям, если программа не смогла сделать это автоматически. Обычно это происходит с теми преподавателями, которые не имеют за собой закреплённых кабинетов (Рисунок 3.16).

Рисунок 3.16 - Рабочая форма обработок «РасстановкаКабинетов» и «РасстановкаКабинетовВИзмененномРасписании»

Данные обработки так же заполняют данные двух регистров сведений: «РасписаниеОсновное» (Рисунок 3.17) и «РасписаниеНовое» (Рисунок 3.18). На данных регистрах сведения строятся практически все отчёты конфигурации.

Регистр сведений - объект конфигурации 1С:Предприятие 8 предназначенный для описания структуры хранения данных в разрезе нескольких измерений. На основе объекта конфигурации Регистр сведений платформа создает в базе данных таблицу, в которой может храниться произвольная информация, «привязанная» к набору измерений. Информация в регистре сведений хранится в виде набора строк (записей). Каждая строка содержит набор измерений и соответствующие им значения ресурсов. Комбинация измерений однозначно идентифицирует запись. Регистры сведений информация в которых развернута во времени, называются периодическими. При проектировании регистра сведений можно указать минимальную периодичность, с которой записи будут заноситься в регистр. Допустимые значения периодичности:

Непериодический

По позиции регистратора

В пределах секунды

В пределах дня

В пределах месяца

В пределах квартала

В пределах года

Если регистр не периодический, то поле "Период" для него не создается.

Рисунок 3.17 - Форма регистра сведений «РасписаниеОсновное»

Рисунок 3.18 - Форма регистра сведений «РасписаниеНовое»

Обработка «НомерГруппы» отвечает за нумерацию групп по старшинству и в алфавитном порядке, сначала идут группы очного отделения, потом заочного (Рисунок 3.19).

Рисунок 3.19 - Форма элементов обработки «НомерГруппы»

Обработка «КоличествоПарВДень». При помощи этой обработки мы устанавливаем максимальное количество пар, которые можно ставить для групп (Рисунок 3.20).

Рисунок 3.20 - Форма элементов обработки «КоличествоПарВДень»

Обработка «КорректировкаПоследовательности» отвечает за то, чтобы корректировать очерёдность пар (Рисунок 3.21).

Рисунок 3.21 - Форма обработки «КорректировкаПоследовательности»

Обработки «УстановитьВыходныеДни», «УстановитьВыходныеПары», «УдалитьВыходныеДни», «УдалитьВыходныеПары». Эти обработки создают и удаляют определённое количество справочников «ОтсутствиеПреподавателяДни» и «ОтсутствиеПреподавателяПары». Количество создаваемых справочников зависит от значения интервала, указанного при проведении обработки (Рисунок 3.22).

Рисунок 3.22 - Формы обработок «УстановитьВыходныеДни», «УстановитьВыходныеПары», «УдалитьВыходныеДни» и «УдалитьВыходныеПары».

Организация выходной информации.

В автоматизированной системе предприятия выходная информация представлена отчетами. Отчеты предназначены для вывода информации из базы данных.

В конфигурации используются следующие отчёты:

Отчёт «РасписаниеПервоначальноеСКабинетами», который выводит первоначальное расписание, без внесения изменений. Форма отчёта «РасписаниеПервоначальноеСКабинетами» представлена на рисунке 3.23, а сформированный отчёт представлен на рисунке 3.24.

Рисунок 3.23 - Форма отчёта «РасписаниеПервоначальноеСКабинетами»

Рисунок 3.24 - Сформированный отчёт «РасписаниеПервоначальноеСКабинетами»

Отчёт «РасписаниеИзмененноеСКабинетами», который выводит заключительно расписание, со всеми внесёнными изменениями. Форма отчёта «РасписаниеИзмененноеСКабинетами» представлена на рисунке 3.25, а сформированный отчёт представлен на рисунке 3.26.

Рисунок 3.25 - Форма отчёта «РасписаниеИзмененноеСКабинетами»

Рисунок 3.26 - Сформированный отчёт «РасписаниеИзмененноеСКабинетами»

Отчёт «Консультации», который выводит дисциплины с типом консультация, а так же преподавателя, группу и дату проведения пары. Форма отчёта «Консультации» представлена на рисунке 3.27, а сформированный отчёт представлен на рисунке 3.28.

Рисунок 3.27 - Форма отчёта «Консультации»

Рисунок 3.28 - Сформированный отчёт «Консультации»

Отчёт «Замены», который выводит замены в расписание за выбранный период времени. Форма отчёта «Замены» представлена на рисунке 3.29, а сформированный отчёт представлен на рисунке 3.30.

Рисунок 3.29 - Форма отчёта «Замены»

Рисунок 3.30 - Сформированный отчёт «Замены»

Отчёт «РасписаниеПреподавателей», который выводит расписание для преподавателей, с учётом всех изменений. Форма отчёта «РасписаниеПреподавателей» представлена на рисунке 3.31, а сформированный отчёт представлен на рисунке 3.32.

Рисунок 3.31 - Форма отчёта «РасписаниеПреподавателей»

Рисунок 3.32 - Сформированный отчёт «РасписаниеПреподавателей»

Отчёт «РасписаниеПреподавателя», который выводит расписание для конкретного преподавателя, с учётом всех изменений. Форма отчёта «РасписаниеПреподавателя» представлена на рисунке 3.33, а сформированный отчёт представлен на рисунке 3.34.

Рисунок 3.33 - Форма отчёта «РасписаниеПреподавателя»

Рисунок 3.34 - Сформированный отчёт «РасписаниеПреподавателя»

4. Обоснование экономической эффективности

4.1 Расчет стоимости часа работы ПК

Экономическая часть дипломного проекта предполагает экономическое обоснование разрабатываемого программного продукта и включает в себя следующие разделы:

1) Расчет стоимости часа работы ПК.

2) Расчет затрат на составление и отладку программы.

3) Расчет показателей эффективности.

4) Расчет себестоимости программного продукта.

Для расчета затрат разработки программы необходимо составить технологический процесс ее разработки. Данные представлены в таблице 4.1.

Таблица 4.1 - Этапы разработки программы

Этапы разработки программы

Количество дней

1.Подготовительный этап

10

2.Разработка программы

20

3.Отладка программы

5

4.Эксплуатация и сопровождение

1

Итого

36

Из данной таблицы видно, что подготовительный этап занял 10 дней из разработки проекта. Разработка программы заняла 20 дней, в которые были разработаны основные функции, составлена логическая модель, разработана логика программы. Отладка программы заняла 5 дней. Эксплуатация и сопровождения заняли 1 день.

Стоимость часа работы ПК рассчитывается по формуле (1):

Sпк=Зэк\(Т*n) (1)

где Зэк - затраты на содержание и обслуживание ПК (за месяц);

Т- полезный фонд времени работы ПК (за месяц);

n-количество машин (в данном случае 3: программисту, руководителю, дополнительному персоналу).

Sпк = 20882,21 \ (151,2*3)= 46,04 руб

Затраты на содержание и обслуживание ПК рассчитываются по формуле:

Зэк=Зп+Соцотч+(Нрас+Ам+Зэл+Змат+Зрем)*n (2)

где Зп - зарплата обслуживающего персонала;

Соцотч - отчисления в фонды социального страхования и обеспечения;

Нрас-накладные расходы;

Ам - амортизационные отчисления;

Зрем- затраты на ремонт оборудования;

Зэл - затраты на электроэнергию;

Змат - затраты на материалы.

Зэк = 12000+3000+(2702,7+625+229,82+450+200)*3 = 27622,56руб

Заработная плата программиста за период написания программы определяется на основе следующих данных, которые отражаются в таблице «Затраты на заработную плату»

Таблица 4.2 - Затраты на заработную плату

Показатели

Программист

Итог затрат (руб.)

Количество часов работы

126

-

Оплата

За 1 час

150

-

Всего

18900,00 р

18900,00 р

Дополнительная заработная плата

1890,00 р

1890,00 р

Страховые взносы во внебюджетные фонды

6237,00 р

6237,00 р

Итого

27027,00 р

27027,00 р

Дополнительная заработная плата составляет 10% от основной. Страховые взносы во внебюджетные фонды составляет 30% от общей заработной платы. Таким образом в результате определим общие затраты на заработную плату которую рассчитаем по формуле (3):

Зп=Зп+Здоп+Отчстр (3)

Зп= 18900+1890+6237=27027 руб.

Накладные расходы составляют 10% от основной заработной платы. Они тратятся на организацию производства, управление и так далее. Накладные расходы определяются по формуле (4):

Нрас=(Зп*Н)/100 (4)

где Н - процент накладных расходов (10%)

Нрас= (27027*10)/100 = 2702,7руб.

Расчет амортизационных отчислений ведется по формуле (5)

Ам=(Sпер/(Тэкс*12)) (5)

где Sпер - первоначальная стоимость оборудования;

Тэкс*12 - срок эксплуатации на 12 месяцев.

Ам= 15000/(2*12)=625

Затраты на электроэнергию рассчитываются по формуле (6)

Зэл=Р*Т*Z (6)

где Р - мощность оборудования;

Т- общее время работы оборудования;

Z- цена одного киловата/час (3,8 руб.)

Зэл= 0.48*126*3,8=229,82руб.

Месячный полезный фонд работы ПК (на определенный период) рассчитывается по формуле (7):

ПФТ=Треж-(Ттеж*Рем)/100 (7)

где Треж - режимный фонд времени;

Рем - процент плановых потерь на профилактику и ремонт (10%)

ПФТ= 176 - (176*10)/100 = 158

Треж= Nраб*tраб(8)

где Nраб - количество рабочих дней в месяце;

tраб- продолжительность рабочего дня (в часах).

Треж= 22*8 = 176

4.2 Расчет затрат на составление и отладку программы

Стоимость решения задачи на ПК рассчитывается по формуле(9):

Sреш=Зп.кон+Зна отладку*Sпк+Sмат+Hрас (9)

где Зп.кон- заработная плата консультанта;

Зна отладку - затраты времени на отладку программы и решения задачи на ПК;

Sэвм-- стоимость часа работы ПК, которая рассчитывается по формуле(1);

Sмат- стоимость материалов, используемых при составлении и отладке программы на ПК;

Hрас- накладные расходы рассчитываются по формуле (4).

Sреш= 0+30*46,04+450+2702,7 = 4533,9 руб

Расчет затрат времени на отладку программы и решения задачи на ПК рассчитывается по формуле (10):

Зна отладку = S*d (10)

где S- средняя занятость в течении дня;

d-количество дней для отладки программы на ПК.

Зна отладку = 6*5=30 часов

4.3 Расчет себестоимости программного продукта

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

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

Наиболее важным моментом для разработчика, с экономической точки зрения, является процесс формирования цены. Очевидно, что программные продукты представляют собой весьма специфичный товар со множеством присущих им особенностей. Многие их особенности проявляются и в методах расчетов цены на них. На разработку программного продукта средней сложности обычно требуются весьма незначительные средства. Однако, при этом он может дать экономический эффект, значительно превышающий эффект от использования достаточно дорогостоящих систем.

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

Цена на программные продукты устанавливается на единицу программной продукции с учетом комплексности ее поставки.

Её цена, обычно формируется на базе нормативной себестоимости производства и прибыли по формуле(11);

Цп=С+Нэ(11)

где С - себестоимость единицы продукции, руб.;

Нэ- добавка к цене (10-15% от себестоимости).

Рассчитаем себестоимость программы путем суммирования всех затрат, данные представляем в виде таблицы «Сводная таблица затрат».

Таблица 4.3 - Сводная таблица затрат

Стоимость решения задачи на ПК:

29433,90р.

Зп.конс -- заработная плата консультанта

0

Sпк -- стоимость часа работы ПК

46,04р.

Sмат -- стоимость материалов

450р.

Нрас -- накладные расходы

2702,7р.

Зна отладку - затраты времени на решения задачи на ПК

30

S -- средняя занятость в течение дня

8

d -- количество дней на разработку программы на ПК

20

Зплата - зарплата программиста

27 027,00р.

Основная заработная плата

18 900,00р.

Дополнительная заработная плата (10%)

1 890,00р.

Отчисление в страховые фонды (30%)

6 237,00р.

Здиз - затраты на руководителя

6 000,00р.

В итоге для создания программы потребовалось затратить 29 433,90р. на разработку.

4.1 Расчет затрат на разработку программного обеспечения

Затраты на разработку программного обеспечения СРП складываются из затрат на его проектирование СПК и затрат на программирование СПР:

,(1)

Расчет затрат на проектирование программного обеспечения. Затраты на разработку алгоритмического и информационного обеспечения определяются по формуле (2):

,(2)

гдеЗПР - затраты на оплату труда проектировщика, руб.;

МЭ - затраты на эксплуатационные нужды (носители информации, бумага, заправка картриджа принтера, работа в сети Интернет по поиску литературы и другие), руб.;

ПНР - процент накладных расходов, %.

Затраты на эксплуатационные нужды определяется по формуле (3)

,(3)

где СД - стоимость одного диска CD-ROM, руб.;

NД - количество использованных дисков, шт.;

СБ - стоимость 1 пачки бумаги, руб.;

NБ - количество использованной бумаги, пачка;

СК - стоимость заправки картриджа принтера, руб.;

СИН - стоимость работы одного часа в сети Интренет, руб.;

NЧ.ИН - количество часов работы в сети Интернет по поиску литературы, руб.

Количество часов, затраченное на работу в сети Интернет по поиску литературы, вычисляется по формуле (4):

,(4)

где NЧ - количество часов работы в сети Интернет в день, час.;

NД - количество рабочих дней в неделе, дни;

NН - количество недель, недели.

При разработке программного обеспечения поиск литературы в сети Интернет проводился ежедневно по 2 часа во время прохождения преддипломной практике, при количестве дней в рабочей неделе - 5, количестве недель необходимых для поиска литературы - 1. Тогда, количество часов работы в Интернете, согласно (4), составляет:

часов

Затраты на эксплуатационные нужды, при количестве используемых дисков - 1 по цене - 15 руб/шт, количестве используемых пачек бумаги - 2 по цене - 150 руб/пачка, стоимости заправки картриджа принтера - 200 руб, стоимость работы одного часа в сети Интернет - 15 руб, составят, согласно (3),

рублей

Затраты на разработку алгоритмического и информационного обеспечения, интерфейса пользователя, при оплате труда проектировщика - 1500 руб./неделя, количестве рабочих недель - 6, проценте накладных расходов - 10%, составят (по формуле (2)):

= 10640 рублей

Расчет затрат на программирование программного обеспечения. Затраты на программирование определяются по формуле (5):

,(5)

где ЗПР - затраты на оплату труда программиста, руб.;

МЭ - затраты на эксплуатационные нужды (носители информации), руб.;

ЗОТЛ - затраты на отладку программы, руб.;

ПНР - процент накладных расходов, %.

Затраты на эксплуатационные нужды складываются из покупки 1 диска по цене 10 руб./шт.

Затраты на отладку определяются по формуле (6):

,(6)

где tОТЛ - время, требуемое для отладки программы, час;

СМН - стоимость работ по отладке, руб./день.

Стоимость работ по отладке рассчитывается согласно (7):

,(7)

где ЗОСН - основная заработная плата разработчика, руб/день;

N- число разработчиков программного продукта, чел.;

QОСН - коэффициент, учитывающий отчисления на социальные нужды по действующему законодательству (0.26);

r - среднее число рабочих дней потраченных на отладку модуля, день.

Время, требуемое для отладки, может быть рассчитано по формуле (8):

,(8)

где q - предполагаемое время отладки, день;

e - коэффициент сложности программы;

p - коэффициент коррекции программы;

k - коэффициент квалификации разработчика.

Используя (6), (7) и (8), затраты на отладку программы, при предполагаемом времени отладки - 10 дней, коэффициенте сложности программы - 1.5, коэффициенте коррекции программы - 0.2, коэффициенте квалификации разработчика - 0.8, стоимости 1 рабочего дня разработчика - 250 руб., числе разработчиков - 1 составит:

1772 рубля

Затраты на программирование программного обеспечения, при оплате труда программиста - 1500 руб/неделя, длительности построения - 6 недели и проценте накладных расходов - 10 %, составят согласно (6):

11682 рубля

Из (8) следует, что затраты на разработку программы составят:

10640+11682= 22322 рубля

4.2 Расчет затрат на внедрение программного обеспечения

Внедрение программного обеспечения не предполагает дополнительного приобретения компьютеров или другого оборудования.

Для функционирования программного обеспечения не требуется специального программного обеспечения.

Вследствие этого затраты на внедрение программного обеспечения равны нулю.

Заключение

В целом, создание и внедрение автоматизированной информационной системы "Расписание" в учебный отдел СУЗа обеспечит эффективное решение следующих управленческих задач:

применив современные высокоэффективные технологии хранения, обработки информации, перевести учет данных об учебных процессах в электронную форму;

поможет обеспечить повышение оперативности, точности, надежности и полноценное снабжение информацией для категорий заинтересованных потребителей (преподавателей и студентов);

достигнуть повышения уровня удовлетворенности персонала колледжа, занятого в учебном процессе;

обеспечить удобными и надежными инструментами планирования, контроля и анализа результатов;

за счет автоматизации процесса ведения учета снизить трудоемкость, повысить точность и надежность, а также оперативность учета;

автоматизировать процесс формирования отчетности и формировать оперативные отчеты.

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


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

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

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

  • Автоматизированные информационные системы: виды, этапы проектирования, средства создания. Анализ предметной области "Библиотека" на примере Центральной районной библиотеки Муниципального бюджетного Учреждения Городищенского района Пензенской области.

    курсовая работа [60,7 K], добавлен 07.08.2013

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

    контрольная работа [2,5 M], добавлен 25.12.2013

  • Описание входной и выходной информации. Программно-технические средства, необходимые для разработки программы "Автоматизированная информационная справочная система аптеки". Возможность формирования и корректировки файлов, тестирование программы.

    курсовая работа [761,7 K], добавлен 18.12.2013

  • Анализ предметной области и разработка структуры информационой системы (ИС) "Кадры". Описание информационных процессов. Разработка структуры БД и структуры ИС. Разработка структуры базы данных и интерфейсов. Реализация и тестирование ИС "Кадры".

    курсовая работа [1,2 M], добавлен 06.01.2008

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

    курсовая работа [632,0 K], добавлен 23.02.2023

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

    контрольная работа [15,1 K], добавлен 21.10.2010

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

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

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

    реферат [513,1 K], добавлен 22.10.2012

  • Классификация информационных систем. Использование баз данных в информационных системах. Проектирование и реализация информационной системы средствами MS Access. Анализ входной информации предметной области и выделение основных информационных объектов.

    курсовая работа [2,5 M], добавлен 09.08.2012

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