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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Важно отметить, что как представление, так и контроллер зависят от модели. Однако модель не зависит ни от представления, ни от контроллера. Тем самым достигается назначение такого разделения: оно позволяет строить модель независимо от визуального представления, а также создавать несколько различных представлений для одной модели.

Основная цель применения этой концепции состоит в разделении модели от её визуализации (представления, вида). За счет такого разделения повышается возможность повторного использования. Наиболее полезно применение данной концепции в тех случаях, когда пользователь должен видеть те же самые данные одновременно в различных контекстах и/или с различных точек зрения. В частности, выполняются следующие задачи:

к одной модели можно присоединить несколько представлений (Отображений), при этом, не затрагивая реализацию модели. Например, некоторые данные могут быть одновременно представлены в виде электронной таблицы, гистограммы и круговой диаграммы;

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

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

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

–       клиентское приложение с оконным интерфейсом;

–       шаблон проектирования - MVC;

–       СУБД - Microsoft SQL Server 2008 R2;

–       платформа для разработки -.NET (язык С#).

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


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


Для разработки ПО использовался шаблон проектирования MVC. Данная концепция позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента - Модель - Представление - Контроллер.

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

Таким образом, сформированы компоненты, соответствующие шаблону проектирования MVC, общая схема которых в соответствии с рисунком 4.1 имеет вид:

Рисунок 4.1 - Схема работы системы

4.2 Сохранение рабочей программы в базу данных

Схема алгоритма сохранения рабочей программы в базу данных представлена на рисунке 4.2:

Рисунок 4.2 - Схема алгоритма сохранения рабочей программы в БД.

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

Схема алгоритма загрузки файла в приложение отображена на рисунке 4.3:

Рисунок 4.3 - Схема алгоритма загрузки файла в приложение

4.3 Разработка базы данных программного обеспечения


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

Рисунок 4.4 - Структурная схема БД

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

Рассмотрим более детально структуру каждой таблицы.

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

Таблица 4.1 - Структура таблицы файлов рабочих программ

Название поля

Тип данных

Описание

WorkingProgramFileID

INT

Идентификатор

FileName

nvarchar(50)

Имя файла

Stream

varbinary(MAX)

Файл в виде массивов байтов

SubjectID

int

Идентификатор дисциплины


Таблица дисциплин таблица 4.2 содержит идентификационный номер дисциплины - уникальное значение, первичный ключ данной таблицы, и название дисциплины.

Таблица 4.2 - Структура таблицы дисциплин

Название поля

Тип данных

Описание

SubjectID

INT

Идентификатор дисциплины

Name

nvarchar(50)

Название дисциплины


Таблица считываемого текста таблица 4.3 содержит информацию о тексте, который был считан парсером. Имеет следующие поля: идентификационный номер считанного текста - уникальное значение, первичный ключ данной таблицы, ссылку на дисциплину, название переменной и переменную, которая содержит значение из рабочей программы.

Таблица 4.3 - Структура таблицы считываемого текста

Название поля

Тип данных

Описание

FormatTextID

INT

Идентификатор

SubjectID

INT

Ссылка на дисциплину

Name

nvarchar(50)

Название переменной

Value

nvarchar(MAX)

Значение из РП


Таблица TemplateFiles таблица 4.4 представляет собой базу, содержащую шаблоны, помещенные туда пользователем ПО. Содержит поля: идентификационный номер шаблона - уникальное значение, первичный ключ данной таблицы, имя шаблона, файл в виде массива байт, ссылка на дисциплину.

Таблица 4.4 - Структура таблицы шаблонов

Название поля

Тип данных

Описание

TemplateFileID

INT

Идентификатор

TemplateFileName

nvarchar(50)

Имя шаблона

Stream

varbinary(MAX)

Файл в виде массива байт

SubjectID

INT

Ссылка на дисциплину


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

Таблица 4.5 - Пользователи

Название поля

Тип данных

Описание

UserID

INT

Идентификатор

UserName

nvarchar(MAX)

Имя учетной записи

Password

nvarchar(MAX)

Пароль учетной записи

AdminAcces

bit

Права администратора


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

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

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

разработан алгоритм работы системы;

разработана схема работы системы.

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

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

5.1 Авторизация пользователя

При запуске ПО пользователю будет предложено пройти авторизацию. В соответствии с рисунком 5.1 окно авторизации имеет вид:

Рисунок 5.1 -Окно авторизации пользователей

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

 

Рисунок 5.2 -Окно авторизации пользователей

Для удобства введения пароля предусмотрена флаговая кнопка «Показать пароль», при нажатии на которую можно увидеть вводимый пароль. В соответствии с рисунком 5.3 вышеописанная ситуация имеет вид:

Рисунок 5.3 -Отображение вводимого пароля

Если же пользователь ввел корректный пароль, то откроется главное окно программы.

5.2 Разработка интерфейса и иллюстрация работы системы


Работа приложения начинается с главного окна. В соответствии с рисунком 5.4 главное окно имеет вид:

Рисунок 5.4 -Окно при запуске приложения

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

Во вкладке «Парсинг» пользователь имеет возможность ввести свой текст или указать путь к существующему файлу для дальнейшего считывания. При нажатии на флажок «Парсинг из файла» появляется возможность указать путь к искомому файлу. Для этого необходимо нажать на кнопку «Document».

В соответствии с рисунком 5.5 выбор файла имеет вид:

Рисунок 5.5 - Выбор файла для считывания

Выбрав файл или введя произвольный текст можно производить считывание текста, нажав на кнопку «Read». В соответствии с рисунком 5.6 процесс считывания программой файла имеет вид:

Рисунок 5.6 - Процесс считывания программой файла

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

Добавление шаблона в базу данных проиллюстрировано на рисунке 5.7 и имеет вид:

Рисунок 5.7 - Добавление шаблона в базу данных

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

Рисунок 5.8 - Удаление шаблона из базы данных

Рисунок 5.9 - Сообщение об отсутствии шаблона для данной дисциплины

Существующий шаблон также можно сохранить на ПК в виде текстового документа с расширением DOCX. Для этого необходимо выбрать один из списка шаблонов и нажать на кнопку «Скачать шаблон». Будет предложено выбрать путь и название сохраняемого файла. Выполнив эти действия, будет выдано сообщение об успешном сохранении шаблона.

Сохранение шаблона из базы данных продемонстрировано на рисунке 5.10:

Рисунок 5.10 - Сохранение шаблона из базы данных

Также во вкладке «Администрирование» пользователь с правами администратора может добавлять учетные записи для других пользователей, а также удалять уже существующие. Для добавления администратору нужно ввести имя новой учетной записи в поле «Имя пользователя», затем ввести дважды одинаковый пароль для этой учетной записи. Далее необходимо нажать на кнопку «Добавить пользователя». Если введенные пароли не будут совпадать, то появится соответствующее сообщение (рисунок 5.11):

Рисунок 5.11 - Сообщение о несовпадающих паролях

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

Рисунок 5.12 - Добавление новой учетной записи


Рисунок 5.13 - Удаление учетной записи

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

Рисунок 5.14 - Генерация новой учебной программы

 

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

Таким образом, разработано программное обеспечение для автоматизации формирования учебных программ для кафедры ИВТ факультета ИТиКС ОМГТУ. В процессе разработки поставленные на проектирование задачи решены. Цель дипломного проекта была достигнута - разработанное ПО позволяет автоматизировать процесс создания новой учебной программы и сократить тем самым затраченное на этот процесс время.

6. Организационно-экономическая часть

В данном разделе приводится расчет затрат на разработку автоматизированного места сотрудника ОмГТУ. Калькуляция на разработку программного продукта включает следующие статьи:

- основная заработная плата разработчика;

-       дополнительная заработная плата разработчика;

-       расходы на приобретение дополнительных средств ВТ и ПО;

-       отчисления на социальные нужды;

-       расходы по отладке программы;

-       контрагентские расходы;

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

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

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

Таблица 6.1 - Перечень стадий, этапов и видов работ

Стадии и этапы разработки

Вид работ

Техническое задание

1. Постановка задачи; 2. Сбор материалов и анализ существующих разработок; 3. Определение требований к системе

Эскизный проект

4. Анализ программных средств схожей тематики; 5. Разработка схемы БД; 6. Общее описание алгоритма решения задачи;

Технический проект

7. Разработка пояснительной записки. 8. Выбор инструментальных средств; 9. Определение свойств и требований к аппаратному обеспечению; 10. Составление плана мероприятий по внедрению программного продукта.

Рабочий проект

11. Программирование; 12. Тестирование программы; 13. Разработка программной документации.

Внедрение

14. Подготовка и передача программы и программной документации заказчику; 15. Опытная эксплуатация; 16. Анализ данных, полученных в результате эксплуатации; 17. Корректировка технической документации по результатам испытаний.


6.1 Расчет трудоемкости и продолжительности работ


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

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

, (6.1)

Где Tmin - минимально возможная трудоемкость выполнения отдельного вида работ [6.1];

Tmax - максимально возможная трудоемкость выполнения отдельного вида работ.

Продолжительность каждого вида работ в календарных днях (ti) определяется в днях по формуле:

, (6.2)

где Ti - трудоемкость работ, человек-дней;

Чi - численность исполнителей, человек;

Kвых - коэффициент, учитывающий выходные и праздничные дни:


Где Ккал. - число календарных дней;

Краб. - рабочие дни;

Согласно производственному и налоговому календарю на 2014 год, количество рабочих дней составляет 247 дней, количество предпраздничных дней - 6, таким образом: Kвых=1,5.

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

Таблица 6.2 - Расчет трудоемкости и продолжительности работ по созданию ПО

№ работы

Стадии разработки

Трудоемкость, чел.дни

Количество работников, чел.

Продолжительность работ, календарные дни



Tmin

Tmax

Ti

Чi

ti

Техническое задание

1

Постановка задачи;

1

1

1

1

1,5

2

Сбор материалов и анализ существующих разработок;

1

2

2

1

3

3

Определение требований к системе

2

3

3

1

4,5

Эскизный проект

4

Анализ программных средств схожей тематики;

4

5

5

1

7,5

5

Разработка схемы БД;

10

20

14

1

21

6

Общее описание алгоритма решения задачи;

2

4

3

1

4,5

Технический проект

7

Разработка пояснительной записки.

3

5

4

1

6

8

Выбор инструментальных средств;

1

1

1

1

1,5

9

Определение свойств и требований к аппаратному обеспечению;

1

1

1

1

1,5

10

Составление плана мероприятий по внедрению программного продукта.

1

2

2

1

3

Рабочий проект

11

Программирование;

12

24

17

1

25,5

12

Тестирование программы;

4

5

5

1

7,5

13

Разработка программной документации.

6

12

9

1

13,5

Внедрение

14

Подготовка и передача программы и программной документации заказчику;

2

3

3

1

4,5

15

Опытная эксплуатация;

7

10

9

1

13,5

16

Анализ данных, полученных в результате эксплуатации;

2

4

3

1

4,5

17

Корректировка технической документации по результатам испытаний.

4

6

5

1

7,5


Общая трудоемкость разработки

-

-

87

-

-


Таким образом, общая продолжительность проведения работ составит 87 рабочих дней, при последовательном выполнении всех вышеозначенных в таблице 6.2 этапов работы.

6.2 Построение графика разработки программного продукта


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

Ленточный график разработки программы управления базой данных учебных материалов, построенный по данным таблицы 5.2, приведен на рисунке 6.1, с учетом того факта, что разработку программного продукта ведет 1 человек, график рассчитан на 147 календарных дней.

.3 Основная заработная плата разработчика

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

, (6.3)

где Зi - месячный оклад специалиста i-квалификации;

ti - общая трудоемкость работ, выполняемых специалистом i-квалификации.

Исходя из того, что среднее количество рабочих часов в месяце равно (21(рабочий день) ∙ 8(часов)) =168, получаем:

 = (12000/168)∙ 696= 49700 (руб.).

Заработная плата с учетом районного коэффициента 15 % равна:зп = 49700∙1,15 = 57212 (руб.).

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

Дополнительная заработная плата рассчитывается как процент от основной. Дополнительная заработная плата составляет 14 % от основной. Следовательно:дзп = 49700 ∙0,14 = 8009 (руб.).

Расчет отчислений на социальные нужды.

Базой для отчислений во внебюджетные социальные фонды является согласно федеральному закону, ставка отчислений, которая составляет 30 %. Кроме этого производятся отчисления в фонд социального страхования по обязательному страхованию от несчастных случаев на производстве, которые составляют 0,2 % от фонда оплаты труда.

,

 руб.

Расходы на приобретение дополнительных средств ВТ и ПО.

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

Расчет расходов по отладке программ.

Расходы по отладке определяются по формуле (6.4), исходя из планируемых затрат машинного времени, необходимого для разработки и оформления программного продукта, (, ч) и стоимости одного машино-часа работы вычислительных средств, на которых ведется разработка (, руб./ч):

, (6.4)

где  - затраты машинного времени;

См-ч- стоимость одного машино-часа работы вычислительных средств.

Расчет стоимости одного часа работы вычислительного комплекса производится для каждого предприятия отдельно применительно к конкретному контуру ВТ и режиму использования оборудования. Стоимость одного машино-часа определяется по формуле (6.5):

, (6.5)

где  - годовые расходы, обеспечивающие функционирование вычислительного комплекса, руб./год;

 - годовой плановый фонд времени работы вычислительного комплекса, ч.;

- коэффициент загрузки (не более 0,9 - 0,95).

Годовой плановый фонд времени работы вычислительного комплекса определяется по формуле (6.6):

,, (6.6)

где  - номинальный фонд времени работы вычислительного комплекса, ч.;

 - годовые затраты времени на профилактические работы (принимаются 15% от ).

= 12∙21∙8=2016 (ч.);

 = 2016 ∙ 0,15 = 302,4 (ч.);

= 2016 - 302,4 = 1713,6 (ч.).

Годовые расходы, обеспечивающие функционирование вычислительного комплекса определяются по формуле (6.7):

, (6.7)

где , ,  - основная, дополнительная заработная плата и отчисления на социальные нужды сотрудника, производящего профилактические работы ЭВМ (из расчета, что профилактические работы проводятся 2 раза в месяц), (руб.);

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

 - затраты на текущий и профилактический ремонт технических и программных средств принимаются 2,5 - 5 % от стоимости комплекса, (руб.);

 - затраты на расходные материалы, составляют 1 % от стоимости ЭВМ, (руб.);

 - стоимость силовой электроэнергии, потребляемой комплексом, (руб.);

 - прочие затраты, (руб.). Учитываются в случае аренды машинного времени.

Обслуживающий персонал существует в штатном расписании учреждения.

 = (8000/168)∙302,4∙1,15= 16560 (руб.);

Сдоп.з/п = 16560 · 0,14 = 2318,4 (руб.);

Сотч = (16560 + 2318,4) ∙ 0,302 = 5701,3 (руб.).

Сумма годовых амортизационных отчислений комплекса технических средств и стандартного пакета программного обеспечения по данным бухгалтерии ОмГТУ составляет 25 % от стоимости оборудования, руб. и рассчитывается по формуле (6.8):

CAM = 0,25 · Cоб, (6.8)

где CAM - сумма на амортизационные отчисления комплекса технических средств;

Cоб - стоимость оборудования.

Рассчитаем стоимость компьютера на одно рабочее место программиста:

системный блок - 12590 (руб.);

монитор ЖК 19’’ - 4450 (руб.);

периферийные устройства - 820 (руб.).

Итого стоимость ЭВМ без программного обеспечения составляет 17860 (руб.).

Отсюда величина амортизационных отчислений в год:

Сам = 17860 · 0,25 = 4465 (руб.).

Затраты на текущий и профилактический ремонт технических средств составляют 3 % от стоимости комплекса, (руб.):

Срем = 0,03 · Соб

где Соб - стоимость оборудования.

Затраты на ремонт и содержание оборудования в год:

Срем = 0,03 · 17860 = 535,8 (руб.).

Стоимость силовой электроэнергии, потребляемой комплексом в год, рассчитывается по формуле 6.9:

CЭЛ = W · S · Фном,, (6.9)

где    Фном - номинальный фонд времени работы вычислительного комплекса;

W - мощность, (кВт);- стоимость 1 кВт´ч, (руб.).

Согласно техническому паспорту W равна 0,3 кВт. Стоимость 1 кВт´ч для бюджетных организаций равна 2,65 руб.

CЭЛ = 0,3 · 2,65 · 8 ∙ 12 ∙ 21= 1602 (руб.).

Затраты на расходные материалы, составляют 1 % от стоимости ЭВМ в год:

См = 0,01 · 17860 = 178,6 (руб.).

Итого, все годовые расходы составляют:

 = 16560 + 2318,4 + 4988,6 + 4465 + 535,8 + 1602 + 178,6 = 30648,4 (руб.).

Тогда стоимость одного машино-часа равна:

 = 30648,4 / (1713,6 ∙ 0,8) = 22,4 (руб./ч.).

Исходя из того, что программист 696 часов потратит на работу за компьютером, получим итоговое значение текущей статьи затрат:

 = 22,4 ∙ 696 = 15590,4 (руб.).

6.4 Контрагентные и накладные расходы


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

Накладные расходы Снакл. вычисляются в долях к основной заработной плате разработчиков и составляют 100 % к основной заработной плате.

Снакл. = · 1,00 = 57212 · 1 = 57212 (руб.).

6.5 Общая смета затрат


Результаты расчета затрат на разработку приведены в таблице 6.3.

Таблица 6.3 - Результаты расчета затрат на разработку

Статьи затрат

Величина затрат, (руб.)

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

57212

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

8009

Отчисления во внебюджетные соц. фонды

17087

Расчет расходов по использованию ЭВМ и ПО

30648,4

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

57212

Итого

170168,4

Диаграмма, отображающая вклад каждой статьи затрат в себестоимость разработки программного продукта приведена в соответствии с рисунком 6.1.

Затраты на разработку программного продукта составляют 170168,4 рубль. Диаграмма структуры затрат показана в соответствии с рисунком 6.1 Видно, что основную долю из них составляют основная заработная плата разработчиков и накладные расходы.

Рисунок 6.1 - Диаграмма структуры затрат на разработку программного продукта

В настоящем разделе была рассчитана трудоемкость разработки программного комплекса, определен состав исполнителей и произведен расчет стоимости разработки системы. Затраты на разработку данного проекта составили 170168,4 рублей. В соответствии с рисунком 6.1, на котором представлена диаграмма соотношения затрат на разработку ПО, видно, что основную часть затрат составили заработная плата разработчиков (33%) и накладные расходы предприятия (33%).

7. Безопасность жизнедеятельности


.1 Охрана труда

.1.1 Анализ опасных и вредных производственных факторов на рабочем месте инженера-программиста

Рассмотрим процесс написания приложения для автоматизации учебных программ одним разработчиком в помещении: длиной 7 метра, шириной 4 метра и высотой 3,5 метра.

В последние годы большое внимание уделяется улучшению условий труда пользователей электронно-вычислительных машин (ПЭВМ), несмотря на то, что качество и безопасность самых ПЭВМ и ВДТ постоянно улучшаются. В развитых странах, в том числе в США, Германии, Швеции, вопрос об опасности работы за дисплеями поднялся до уровня национальной проблемы, а в Германии работа за дисплеями входит в список 40 наиболее вредных и опасных профессий.

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

Главным фактором, влияющим на производительность труда людей, работающих с ПЭВМ и ВДТ, являются комфортные и безопасные условия труда.

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

• особенностями организации рабочего места;

• условиями производственной среды (освещением, микроклиматом, шумом, электромагнитными и электростатическими полями, визуальными эргономическими параметрами дисплея и т. д.);

• характеристиками информационного взаимодействия человека и персональных электронно-вычислительных машин.

При выполнении работ на персональном компьютере (ПК) согласно ГОСТу 12.0.003-74 “ССБТ. Опасные и вредные производственные факторы. Классификация” могут иметь место следующие факторы:

• повышенная температура поверхностей ПК;

• повышенная или пониженная температура воздуха рабочей зоны;

• выделение в воздух рабочей зоны ряда химических веществ;

• повышенная или пониженная влажность воздуха;

• повышенный или пониженный уровень отрицательных и положительных аэроионов;

• повышенное значение напряжения в электрической цепи, замыкание;

• повышенный уровень статического электричества;

• повышенный уровень электромагнитных излучений;

• повышенная напряженность электрического поля;

• отсутствие или недостаток естественного света;

• недостаточная искусственная освещенность рабочей зоны;

• повышенная яркость света;

• повышенная контрастность;

• прямая и отраженная блёскость;

• зрительное напряжение;

• монотонность трудового процесса;

• нервно-эмоциональные перегрузки.

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

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

Цель:

Необходимо произвести анализ опасных и вредных производственных факторов при работе с ПК.

Рассмотрим помещение, в котором находится рабочее место пользователя ПК. Оно имеет следующие характеристики:

длина помещения 7 м;

ширина помещения 4 м;

высота 3.5 м;

число окон 2;

окраска интерьера: белый потолок, белые стены, пол бетонный, покрытый линолеумом серого цвета.

7.2 Организация рабочего места

Согласно СанПиН 2.2.2/2.4.1340-03, в таблицах 7.1 и 7.2 представлены нормы, необходимые для пользователей ПК.

Таблица 7.1 - Высота одноместного стола для занятий с ПК[6]

Рост работника в обуви, см

Высота над полом, мм


поверхность стола

пространство для ног, не менее

161 - 175

700

640

выше 175

760

700


Примечание. Ширина и глубина пространства для ног определяются конструкцией стола.

На рабочем месте п ПК параметры рабочего стола соответствуют нормам, стул регулируется по высоте в соответствии ростом работника, согласно СанПиН 2.2.2/2.4.1340-03

Таблица 7.2 - Суммарное время регламентированных перерывов в зависимости от продолжительности работы, вида и категории трудовой деятельности с ПК

Категория работы с ПК

Уровень нагрузки за рабочую смену при видах работ с ПК

Суммарное время регламентированных перерывов, мин.


группа А, количество знаков

группа Б, количество знаков

группа В,ч

при 8-часовой смене

I

до 20 000

до 15 000

до 2

50

80


7.3 Микроклимат

Рабочее место пользователя ПК относится к категории работ 1. Нормы производственного микроклимата, установленные для данной категории работ, ГОСТ 12.1.005-88 приведены в таблице 7.3.

Таблица 7.3 - Параметры микроклимата для помещений, где установлены персональные компьютеры

Значения параметров

Период года

Температура, о С

Относительная влажность, %

Скорость движения воздуха, м/с

Оптимальные

Холодный и переходный

21 - 23

40 - 60

не более 0,1


Теплый

22 - 24

40 - 60

не более 0,2


Нормы подачи свежего воздуха в помещения, где расположены компьютеры, согласно ГОСТ 12.1.005-88 приведены в таблице 7.4.

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

Характеристика помещения

Объемный расход подаваемого в помещение свежего воздуха, м3 /на одного человека в час

Объем до 20 м3 на человека 20…40 м3 на человека Более 40 м3 на человека

Не менее 30  Не менее 20 Естественная вентиляция

На рабочем месте пользователя ПК температура воздуха в течение всего года держится в допустимых пределах. Относительная влажность воздуха в теплый период находится в пределах 45-50%, в холодный - 55-60%. Объем помещения составляет 32 м3/человека. Действует естественная вентиляция, обеспечивающая более 30 м3 воздуха на человека в час.

.4 Производственный шум

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

Допустимые уровни звукового давления в октавных полосах со среднегеометрическими частотами для программистов ЭВМ в соответствии с ГОСТ 12.1.003-83 приведены в таблице 7.5.

Таблица 7.5 - Уровень шума

Рабочие места

Уровни звукового давления, дБ, в октавных полосах со среднегеометрическими частотами, Гц

Уровень звука и эквивалентный уровень звука, дБ


31,5

3

125

50

00

1000

2000

4000

8000


Оператор ЭВМ

86

1

1

4

9

45

42

40

38

50


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

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


где Li - уровень звукового давления i-го источника шума;

n - количество источников шума.

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

Таблица 7.6. Уровни звукового давления различных источников. [5]

Источник шума

Уровень шума, дБ

Жесткий диск

30

Вентиляторы

48

Монитор

14

Клавиатура

10

Маршрутизатор

40

Коммуникатор

36


=10·lg(103+104,8 +101,4+101+104+103,6)=48,9 дБ

Из этого следует, что на рабочем месте пользователя значение не превышает допустимый уровень шума для рабочего места пользователя, который равен 50 дБ (ГОСТ 12.1.003-83).

.5 Освещение

В таблице 7.7 приведены нормы освещенности в соответствии с СНиП 23.05-95.

Таблица 7.7 - Нормы освещенности

Характеристика зрительной работы

Минимальный размер объекта различения, мм

Совмещенное боковое освещение, КЕО, %

Естественное боковое освещение, КЕО, %

Искусственное освещение, лк





Комбин ированное

Общее

Выс. точност

0.3 -0.5

1.2

2

1000

300


Необходимо рассчитать необходимый световой поток, согласно СНиП 23.05-95.

В помещении, где находится рабочее место пользователя, используется смешанное освещение. В качестве естественного - боковое освещение через окна. Нормами для данных работ установлена необходимая освещенность рабочего места Ен=300лк (средняя точность работы по различению деталей размером от 1 до 10 мм).

Общий световой поток определяется по формуле

,

где Ен - нормированная освещенность (Ен = 300лк);n - площадь помещения;

 - коэффициент, учитывающий старение ламп и загрязнение светильников (= 1,5);

Z- коэффициент, учитывающий неравномерность освещения помещения (Z = 1,1);

ƞ- коэффициент использования светового потока; определяется в зависимости от коэффициентов отражения от стен, потолка, рабочих поверхностей, типов светильников и геометрии помещения.(ƞ=0,26)

Площадь помещения

S = А * В = 7 * 4 = 28 м2

Определяем общий световой поток:

Для организации общего искусственного освещения выбраны лампы типа ЛБ65[1].

Световой поток одной лампы ЛБ65 составляет не менее Fл = 4600 лм.

Число N ламп, необходимых для организации общего освещения определяется по формуле:


В качестве светильников выбираем ЛСП 22-2х65-002, габариты которого равны 1625х148х220. Отсюда следует, что для обеспечения светового потока Fобщ=53307 лм надо использовать 6 светильников по 2 лампы ЛБ65 в каждом.

Электрическая мощность одной лампы ЛБ65 Wл=65 Вт.

Мощность всей осветительной системы:общ = Wл * N = 65 * 12 = 780 Вт.

7.6 Электромагнитные излучения

Для определения требований к монитору рассмотрим таблицу 7.8.

Дополнительные требования к монитору (в соответствии с СанПиН 2.2.2/2.4.1340-03): окраска корпуса в спокойном, мягком тоне с диффузным рассеянием света.

На рабочем месте пользователя ПК соблюдаются требования СанПиН 2.2.2/2.4.1340-03

Таблица 7.8 - Требования к монитору [6]

Наименование параметров

СанПиН 2.2.2./2.4.1340-03

Напряженность ЭПМ в 0.5 м вокруг дисплея по электрической составляющей, не более (В/м): в диапазоне частот 5Гц…2кГц в диапазоне частот 2…400кГц

25

Плотность магнитного потока в 0.5 м вокруг дисплея, не более, (нТл): в диапазоне частот 5Гц…2кГц в диапазоне частот 2 …400кГц

250


25

Поверхностный электростатический потенциал, не более, (В):

500


7.7 Безопасность в чрезвычайных ситуациях

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

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

Предел огнестойкости строительных конструкций определяется временем (ч) от начала пожара до возникновения одного из признаков: а) образования в конструкции сквозных трещин; б) повышения температуры на необогреваемой поверхности конструкции в среднем более чем на 140 °С или в какой-либо точке этой поверхности более чем на 180 °С по сравнению с температурой конструкции до испытания, или более 220 °С независимо от температуры конструкции до испытания; г) потери конструкцией несущей способности.

Предел огнестойкости отдельных строительных конструкций зависит от их размеров (толщины или сечения) и физических свойств материалов. Например, каменные стены здания толщиной 120 мм имеют предел огнестойкости 2,5 ч, а при толщине 250 мм предел огнестойкости повышается до 5,5 ч.

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

Таблица 7.9 - Категории помещений СНиП II-А.5-70

Степень огнестойкости

Основные строительные конструкции


несущие стены, стены лестничных клеток, колонны

наружные стены из навесных панелей и наружные фахверковые стены

плиты, настилы и другие несущие конструкции междуэтажных и чердачных перекрытий

плиты, настилы и другие несущие конструкции покрытий

внутренние несущие стены (перегородки)

противопожарные стены

I

Несгораемые (2,5)

Несгораемые (0,5)

Несгораемые (1,0)

Несгораемые (0,5)

Несгораемые (0,5)

Несгораемые (2,5)

II

Несгораемые (2,0)

Несгораемые (0,25); трудносгораемые (0,5)

Несгораемые (0,75)

Несгораемые (0,25)

Трудносгораемые (0,25)

Несгораемые (2,5)

III

Несгораемые (2,0)

Несгораемые (0,25); трудносгораемые (0,15)

Трудносгораемые (0,75)

Сгораемые

Трудносгораемые (0,25)

Несгораемые (2,5)

IV

Трудносгораемые (0,5)

Трудносгораемые (0,25)

Трудносгораемые (0,25)

»

Трудносгораемые (0,25)

Несгораемые (2,5)

V

Сгораемые

Сгораемые

Сгораемые

»

Сгораемые

Несгораемые (2,5)


В соответствии с нормами СНиП II-А.5-70 помещение пользователей ПК относится к категории I. Установлен порошковый огнетушитель, который заряжен специальным порошковым составам и использующийся при возгораниях твердых, жидких и газообразных веществ, а также электроустановок с напряжением не превышающим 1000 В.

В настоящем разделе были рассмотрены состояние и уровень безопасности помещения, где работают три пользователя ПК.

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

общий световой поток Fобщ = 53307 лм. Световой поток находится в пределах нормы;

уровень шума на рабочем месте равен 48,9 дБ. Показатель лежит в допустимых пределах;

уровень электромагнитного излучения в норме;

параметры рабочего стола соответствуют норме;

пожарная безопасность на рабочем месте обеспечена.

Состояние рабочего места пользователя ПК соответствует всем требованиям безопасности жизнедеятельности. Это было достигнуто благодаря вышеописанным мероприятиям.

Заключение


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

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

В рамках проектирования были решены следующие задачи:

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

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

реализован простой удобный интерфейс;

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

Для разработки программного комплекса использовалась платформа.NET (язык C#), поддерживающий шаблон проектирования MVC. В качестве СУБД использовался продукт Microsoft SQL Server 2008 R2. Написание кода велось на программном продукте Microsoft Visual Studio 2013.

Произведен экономический расчет затрат на разработку программного комплекса. Затраты на разработку проекта составили 170168,4 рублей.

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

Разработанный в рамках дипломного проекта программный комплекс представляет практический интерес для кафедры «Информатика и вычислительная техника» факультета информационных технологий и компьютерных систем ОмГТУ. Начало тестовой эксплуатации на предприятии назначено на 1 июля 2014 года.

Библиографический список


1.      Википедия. Model-View-Controller [Электронный ресурс]. - Режим доступа: http://ru.wikipedia.org/wiki/Model-View-Controller. - Загл. с экрана.

.        Википедия. Visual Studio [Электронный ресурс]. - Режим доступа: http://ru.wikipedia.org/wiki/Visual_Studio. - Загл. с экрана.

.        ГОСТ 12.1.038-82 Система стандартов безопасности труда. Электробезопасность. Предельно допустимые значения напряжений прикосновения и токов. Дата введения 1983-07-01 М.: Изд-во стандартов, 1982. - 8 с.

.        ГОСТ 19.701 - 90 ЕСПД. Схемы алгоритмов, программ, данных и систем. - Взамен ГОСТ 19.002.80; введ. 1992.01.01. - М.: Изд-во стандартов, 1990. - 24 с.

.        ГОСТ 7.1 - 2003 Библиографическая запись. Библиографическое описание. Общие требования и правила составления. - Взамен ГОСТ 7.1-84; введ. 2004.07.01. - М.: ИПК Изд-во стандартов, 2004

.        Михайлов, А.А. Расчет затрат на разработку программного продукта: метод. указания по выполнению организационно-экономической части дипломного проекта / А.А. Михайлов, П.В. Рузанов. - Омск: Изд-во ОмГТУ, 2009. - 22 с.

.        Потапов, В.И. Дипломное проектирование: метод. указания для студентов, обучающихся по специальности 230101 и направления подгот. бакалавров 230100 / В.И. Потапов, Б.И. Елькин, О.П. Шафеева. - Омск: Изд-во ОмГТУ, 2007. - 64 с.

.        Программирование. Сравнение MySQL с другими СУБД [Электронный ресурс]. - Режим доступа: http://program.rin.ru/razdel/html/490.html. - Загл. с экрана.

.        СанПиН 2.2.1/2.1.1.1278-03. Гигиенические требования к естественному, искусственному и совмещенному освещению жилых и общественных зданий: Санитарные правила и нормы. М.: Информ.-изд. центр Минздрава России, 2003. - 29 с.

.        СанПиН 2.2.4.1294-03. Гигиенические требования к аэроионному составу воздуха производственных и общественных помещений. Санитарные правила и нормы. М.: Информ.-изд. центр Минздрава России, 2003. - 5 с.

.        СанПиН 2.2.4.548-96. Гигиенические требования к микроклимату производственных помещений: Санитарные правила и нормы. М.: Информ.-изд. центр Минздрава России, 1997. - 11 с.

.        Tadviser. СЭД (Программные технологии) [Электронный ресурс]. - Режим доступа: http://www.tadviser.ru/index.php/Статья:СЭД_(Программные технологии)

 

Приложение А


Листинг парсера по дисциплине физика

using System;System.Collections.Generic;System.Linq;Novacode;WorkingPrograms

{class PhysicParser

{List<string> buffer;PhysicParser(DocX loadedDoc)

{= new List<string>();(var p in loadedDoc.Paragraphs)

{.Add(p.Text);

}

}string GetSubjectName()

{buffer[buffer.IndexOf(buffer.FirstOrDefault(b => b.Contains("по дисциплине"))) + 1].Split(new[] { "»" }, StringSplitOptions.RemoveEmptyEntries)[0].Substring(2);

}string GetSubjectNameCipher()

{buffer[buffer.IndexOf(buffer.FirstOrDefault(b => b.Contains("по дисциплине"))) + 1].Split(new[] { "»" }, StringSplitOptions.RemoveEmptyEntries)[1].Trim();

}string GetDegree()

{buffer[buffer.IndexOf(buffer.FirstOrDefault(b => b.Contains("для направления подготовки")))].Split([] { "для направления подготовки" }, StringSplitOptions.RemoveEmptyEntries)[0].Trim();

}string GetSpecialtyCipher()

{buffer[buffer.IndexOf(buffer.FirstOrDefault(b => b.Contains("для направления подготовки"))) + 1].Split(new[] { "«" }, StringSplitOptions.RemoveEmptyEntries)[0].Trim();

}string GetSpecialityName()

{buffer[buffer.IndexOf(buffer.FirstOrDefault(b => b.Contains("для направления подготовки"))) + 1].Split(new[] { "«", "»" }, StringSplitOptions.RemoveEmptyEntries)[1].Trim();

}string GetTrainingProfile()

{buffer[buffer.IndexOf(buffer.FirstOrDefault(b => b.Contains("профили подготовки")))].Split(new[] { "профили подготовки" }, StringSplitOptions.RemoveEmptyEntries)[0].Trim();

}string GetDegree2(string split)

{string splitter = "Разработана в соответствии с ФГОС ВПО, ООП по направлению подготовки";

return[.IndexOf(.FirstOrDefault(=> b.Contains(splitter)))].Split(new []{splitter, split}, StringSplitOptions.RemoveEmptyEntries)[1];

}

Приложение Б


Листинг главного окна приложения

using System;System.Collections.Generic;System.IO;System.IO.Pipes;System.Linq;System.Windows.Forms;Novacode;WorkingPrograms.Model;WorkingPrograms

{partial class Form1 : Form

{WorkingProgrammsEntities db;int subjectID;string fileName;Form1()

{();= new WorkingProgrammsEntities();.DataSource = db.Subjects.ToList();.DisplayMember = "Name";.Filter = "*.docx|*.docx";.Filter = "*.docx|*.docx";.Filter = "*.docx|*.docx";.FileName = string.Empty;.FileName = string.Empty;.Maximum = 100;.DataSource = db.WorkingProgrammsFiles.ToList();.DataSource = db.Subjects.ToList();.DisplayMember = "FileName";.DisplayMember = "Name";.DataSource = db.Subjects.ToList();.DisplayMember = "Name";.Visible = checkBox1.Checked;.Visible = !checkBox1.Checked;

}void button1_Click(object sender, EventArgs e)

{(openFileDialog1.ShowDialog() == DialogResult.OK)

{= openFileDialog1.FileName;

}void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{= ((Subject)comboBox1.SelectedItem).SubjectID;

}void button2_Click(object sender, EventArgs e)

{textGetter;.FormatTexts.RemoveRange(db.FormatTexts);.SaveChanges();.Clear();.Value = 0;(checkBox1.Checked)

{file = new WorkingProgrammsFile();.Stream = File.ReadAllBytes(fileName);.FileName = "asdf";.SubjectID = subjectID;.WorkingProgrammsFiles.Add(file);.SaveChanges();= new PhysicParser(DocX.Load(fileName));

}

{file = db.WorkingProgrammsFiles.FirstOrDefault(f => f.WorkingProgramFileID == ((WorkingProgrammsFile)comboBox2.SelectedItem).WorkingProgramFileID);stream = new MemoryStream(file.Stream);= new PhysicParser(DocX.Load(stream));

}subjectName = textGetter.GetSubjectName();formatText = new FormatText

{= subjectID,= "SubjectName",= subjectName

};.FormatTexts.Add(formatText);.Text += string.Format("SubjectName = {0}{1}", subjectName, Environment.NewLine);.Value++;subjectNameCipher = textGetter.GetSubjectNameCipher();= new FormatText

{= subjectID,= "SubjectNameCipher",= subjectNameCipher

};.FormatTexts.Add(formatText);.Text += string.Format("SubjectNameCipher = {0}{1}", subjectNameCipher, Environment.NewLine);.Value++;degree = textGetter.GetDegree();= new FormatText { SubjectID = subjectID, Name = "Degree", Value = degree };.FormatTexts.Add(formatText);.Text += string.Format("Degree = {0}{1}", degree, Environment.NewLine);.Value++;specialtyCipher = textGetter.GetSpecialtyCipher();= new FormatText { SubjectID = subjectID, Name = "SpecialtyCipher", Value = specialtyCipher };.FormatTexts.Add(formatText);.Text += string.Format("SpecialtyCipher = {0}{1}", specialtyCipher, Environment.NewLine);.Value++;specialtyName = textGetter.GetSpecialityName();= new FormatText { SubjectID = subjectID, Name = "SpecialtyName", Value = specialtyName };.FormatTexts.Add(formatText);.Text += string.Format("SpecialtyName = {0}{1}", specialtyName, Environment.NewLine);.Value++;trainingProfile = textGetter.GetTrainingProfile();= new FormatText { SubjectID = subjectID, Name = "TrainingProfile", Value = trainingProfile };.FormatTexts.Add(formatText);.Text += string.Format("TrainingProfile = {0}{1}", trainingProfile, Environment.NewLine);.Value++;degree2 = textGetter.GetDegree2(specialtyCipher);= new FormatText { SubjectID = subjectID, Name = "Degree2", Value = degree2 };.FormatTexts.Add(formatText);.Text += string.Format("Degree2 = {0}{1}", degree2, Environment.NewLine);.Value++;.SaveChanges();

}void checkBox1_CheckedChanged(object sender, EventArgs e)

{.Visible = checkBox1.Checked;.Visible = !checkBox1.Checked;

}void generateButton_Click(object sender, EventArgs e)

{selectedSubject = ((Subject)subjectsComboBox.SelectedItem);templateFile = db.TemplateFiles.FirstOrDefault(tf => tf.SubjectID == selectedSubject.SubjectID);

if (templateFile == null)

{.Show("Для данного предмета отсутствует шаблон!");

return;

}.ShowDialog();(!string.IsNullOrEmpty(saveFileDialog1.FileName))

{stream = new MemoryStream(templateFile.Stream);fileToSave = DocX.Load(stream);<FormatText> formatTexts = db.FormatTexts.Where(ft => ft.SubjectID == selectedSubject.SubjectID).ToList();.ReplaceText("SubjectNameCipher", formatTexts.FirstOrDefault(ft => ft.Name == "SubjectNameCipher").Value);.ReplaceText("SubjectName", formatTexts.FirstOrDefault(ft => ft.Name == "SubjectName").Value);.ReplaceText("Degree2", formatTexts.FirstOrDefault(ft => ft.Name == "Degree2").Value);.ReplaceText("Degree", formatTexts.FirstOrDefault(ft => ft.Name == "Degree").Value);.ReplaceText("SpecialtyCipher", formatTexts.FirstOrDefault(ft => ft.Name == "SpecialtyCipher").Value);.ReplaceText("SpecialtyName", formatTexts.FirstOrDefault(ft => ft.Name == "SpecialtyName").Value);.ReplaceText("TrainingProfile", formatTexts.FirstOrDefault(ft => ft.Name == "TrainingProfile").Value);.SaveAs(saveFileDialog1.FileName);

//File.WriteAllBytes(saveFileDialog1.FileName, templateFile.Stream);

MessageBox.Show("Программа успешно сохранена!");

}void uploadTemplateButton_Click(object sender, EventArgs e)

{subjectID = ((Subject)subjectsForAdminComboBox.SelectedItem).SubjectID;templateFile = db.TemplateFiles.FirstOrDefault(tf => tf.SubjectID == subjectID);(templateFile == null)

{(openFileDialog2.ShowDialog() == DialogResult.OK)

{[] fileBytes = File.ReadAllBytes(openFileDialog2.FileName);newTemplateFile = new TemplateFile();.Stream = fileBytes;.TemplateFileName = openFileDialog2.SafeFileName;.SubjectID = subjectID;.TemplateFiles.Add(newTemplateFile);.SaveChanges();.Show("Шаблон загружен!");

}

{

MessageBox.Show("Для данного предмета уже имеется шаблон!");

}void deleteTemplateButton_Click(object sender, EventArgs e)

{subjectID = ((Subject)subjectsForAdminComboBox.SelectedItem).SubjectID;templateFile = db.TemplateFiles.FirstOrDefault(tf => tf.SubjectID == subjectID);(templateFile != null)

{.TemplateFiles.Remove(templateFile);.SaveChanges();.Show("Шаблон удалён!");

}

{.Show("Для данного предмета отсутствует шаблон!");

}void getTemplateButton_Click(object sender, EventArgs e)

{subjectID = ((Subject)subjectsForAdminComboBox.SelectedItem).SubjectID;templateFile = db.TemplateFiles.FirstOrDefault(tf => tf.SubjectID == subjectID);(templateFile != null)

{(saveFileDialog1.ShowDialog() == DialogResult.OK)

{.WriteAllBytes(saveFileDialog1.FileName, templateFile.Stream);.Show("Шаблон сохранён!");

}

{

MessageBox.Show("Для данного предмета отсутствует шаблон!");

}

Приложение В


Листинг классов, являющихся реализацией соответствующих таблиц из БД

FomatText.csWorkingPrograms.Model

{System;System.Collections.Generic;partial class FormatText

{int FormatTextID { get; set; }int SubjectID { get; set; }string Name { get; set; }string Value { get; set; }virtual Subject Subject { get; set; }

}

}.csWorkingPrograms.Model

{System;System.Collections.Generic;partial class Subject

{Subject()

{.FormatTexts = new HashSet<FormatText>();.TemplateFiles = new HashSet<TemplateFile>();.WorkingProgrammsFiles = new HashSet<WorkingProgrammsFile>();

}int SubjectID { get; set; }string Name { get; set; }virtual ICollection<FormatText> FormatTexts { get; set; }virtual ICollection<TemplateFile> TemplateFiles { get; set; }virtual ICollection<WorkingProgrammsFile> WorkingProgrammsFiles { get; set; }

}.csWorkingPrograms.Model

{System;System.Collections.Generic;partial class TemplateFile

{int TemplateFileID { get; set; }string TemplateFileName { get; set; }byte[] Stream { get; set; }int SubjectID { get; set; }virtual Subject Subject { get; set; }

}