Разработка автоматизированной системы расчета себестоимости и длительности разработки программного обеспечения

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

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

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

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

Сравнение исходного и уточнённого объема строк исходного кода представлено в таблице 5.1.

Таблица 5.1 -- Сравнение исходного и уточнённого объёма строк исходного кода

Код функции

Наименование (содержание) функции

Объем функций

(строк исходного кода)

исходный

уточненный

1

2

3

4

101

Организация ввода информации

130

13

1

2

3

4

107

Организация ввода/вывода информации в интерактивном режиме

280

28

207

Организация поиска и поиск в базе данных

4720

470

403

Формирование служебных таблиц

1140

114

706

Предварительная обработка и печать файла

420

42

707

Графический вывод результатов

420

42

Итого:

7110

711

Согласно формуле (5.1) уточненный объем ПО (Vу) составляет:

строк.

Разработанный в ходе выполнения дипломного проекта программный продукт по своим характеристикам относится к третьей категории сложности [приложение Ж, таблица Ж.2], поскольку не обладает характеристикой переносимости ПО.

Исходя из уточненного объема программы и ее категории сложности нормативная трудоемкость (Тн) выполняемых работ [Приложение Ж, таблица Ж.3] составляет 36 чел.-дн.

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

, (5.2)

где Ki -- коэффициент, соответствующий степени повышения сложности;

n -- количество учитываемых характеристик, шт.

Так как разработанное ПО обеспечивает интерактивный доступ, соответствующий степени повышения сложности (Ki) составляет 0,07. Таким образом, по формуле (5.2) Кс получает значение:

.

Новизна разработанного ПО определяется путем экспертной оценки данных, полученных при сравнении его характеристик с имеющимися аналогами. Согласно результатам экспертной оценки новизна ПО соответствует категории В, а коэффициент (Кн), учитывающий новизну ПО, равен 1,0.

Степень использования в разработанном ПО стандартных модулей определяется их удельным весом в общем объеме программного продукта. В созданной автоматизированной системе расчета себестоимости и длительности ПО используется до 65 % стандартных модулей. Таким образом, коэффициент, учитывающий степень использования стандартных модулей ПО (Кт)составляет 0,55.

Еще одним фактором, влияющим на трудоемкость разработки ПО, является коэффициент, учитывающий средства разработки ПО (Кур). Программа разработана с применением процедурного языка высокого уровня «С#» для работы в ОС «MSWindows», а также для работы не в сетях, что определяет значение коэффициента Кур равное 0,8.

В соответствии с ГОСТ 19.102-77 «ЕСПД. Стадии разработки» выделяют следующие основные стадии разработки ПО: техническое задание (ТЗ), эскизный проект (ЭП), технический проект (ТП), рабочий проект (РП), внедрение (ВН). Значение коэффициентов удельных весов трудоемкости стадий разработки ПО в общей трудоемкости создания программного продукта, определяется с учетом установленной категории новизны ПО. При этом сумма значений коэффициентов удельных весов всех стадий в общей трудоемкости равна единице. При распределении трудоемкости по стадиям учитывается, что программный продукт разрабатывался с применением CASE-технологии. Таким образом, можно представить следующее распределение коэффициентов по стадиям разработки ПО: КТЗ + КЭП + КТП = 0,55, КРП =0,33, КВН = 0,12.

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

Трудоемкость работ на стадиях «Техническое задание», «Эскизный проект» и «Технический проект» определяется по формуле:

, (5.3)

чел.-дн.

Трудоемкость работ на стадии рабочего проекта определяется по формуле:

, (5.4)

чел.-дн.

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

, (5.5)

где Туi -- нормативная (скорректированная) трудоемкость разработки ПО на i-й стадии, чел.-дн.;

n -- количество стадий разработки, шт.

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

Таблица 5.2 -- Результаты расчетов общей трудоемкости ПО

Показатели

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

Итого

ТЗ

ЭП

ТП

РП

ВН

Коэффициенты удельных весов трудоемкости стадий разработки ПО (КТЗ, КЭП, КТП, КРП, КВН)

0,55

0,33

0,12

1

Распределение нормативной уточненной трудоемкости ПО по стадиям, чел.-дн.

20

12

-

32

Коэффициент повышения сложности ПО (Кс)

1,06

1,06

1,06

-

Коэффициент, учитывающий новизну ПО (Кн)

1,0

1,0

1,0

-

Коэффициент, учитывающий степень использования стандартных модулей (Кт)

-

0,55

-

-

Коэффициент, учитывающий средства разработки ПО (Кур)

0,8

0,8

0,8

-

Распределение скорректированной

(с учетом Кс, Кн,Кт, Кур) трудоемкости ПО по стадиям, чел.-дн.

17

6

-

23

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

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

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

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

- затраты труда на создание программного продукта;

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

- затраты на материалы;

- затраты на энергию, на использование каналов связи;

Исходные данные по статьям затрат представлены в таблице 5.3.

Таблица 5.3 -- Исходные данные

Показатель

Условное обозначение

Единицы измерения

Значение

Балансовая стоимость компьютера

БК

рубль

993

Мощность, потребляемая

компьютером

МК

кВт

0,085

Полезный фонд времени работы компьютера за год

FK

дней

304

Стоимость 1кВт/час

С

рубль

0,28844

Площадь на 1 рабочее место

Spv

м2

6,8

Стоимость 1м2 производственной площади

Спл

рубль

633,48

Норма амортизации для оборудования

Нао

процент

20

Норма амортизации для зданий

Напл

процент

1

Отчисления на текущий ремонт оборудования (в % от балансовой стоимости)

PO

процент

3,10

Примечание Ї Источник [приложение З];

Балансовая стоимость стационарного компьютера составляет 993 рублея. Общая мощность, потребляемая компьютером, составляет 0,085 кВт.

Полезный фонд времени работы компьютера за год зависит от полезного фонда рабочего времени предприятия. Количество рабочих дней без учета праздников и выходных при шестидневной рабочей неделе в 2017 году составляет 304.

Стоимость 1 кВт/час для РУП «Белоруснефть» составляет 0,28844 рублей.

Площадь на одно рабочее место зависит от общей рабочей площади предприятия и среднесписочной численности сотрудников, работающих на данной площади. Рабочая площадь административного здания составляет 2238,8 м2, а среднесписочная численность -- 327 человек. Расчет площади на одно рабочее место производится путем деления общей площади на среднесписочную численность сотрудников организации. Таким образом, площадь на одно рабочее место составляет 6,8 м2.

Стоимость 1 м2 производственной площади зависит от стоимости здания предприятия (или стоимости его аренды) и общей площади предприятия. Стоимость здания предприятия составляет 1418245,04 рублей. Расчет стоимости 1 м2 производственной площади производится путем деления стоимости здания предприятия на общую площадь предприятия. Тогда, 1 м2 производственной площади составит 633,48 рублей.

Стоимость потребляемой энергии выражается в рублях. Её можно определить в соответствии с данными из таблицы 5.3 по следующей формуле:

, (5.6)

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

Кс -- коэффициент, учитывающий потери в сети (Кс = 1, 05).

Таким образом, стоимость потребляемой энергии составляет:

СЭЛ= 0,085Ч23Ч7Ч0,28844Ч0,8Ч1,05 = 3,31 руб.

Сумма амортизационных отчислений рассчитывается по формуле (5.7) линейным способом, принятым на предприятии.

САОГ = БКЧНао/100+(SрмЧСплЧНаоп/100). (5.7)

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

САОГ =993Ч20/100+(6,8Ч633,48Ч1/100) = 241,67руб.

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

САО =241,67/ 304 Ч 23 = 18,28 руб.

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

Зрг = БК Ч РО / 100. (5.8)

Зрг = 993 Ч 3,10 / 100 = 30,78 руб.

Тогда отчисления за период разработки составляют:

Зр = 30,78 / 304 Ч 23 = 2,32 руб.

Таким образом, затраты на машинное время при создании программного обеспечения составляют:

ЗМВ =3,31 + 30,78 + 2,32 = 36,41 руб.

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

Исходные данные для определения материальных затрат приведены в таблице 5.4.

Таблица 5.4 -- Исходные данные

Материалы

Единицы измерения

Потребность

Цена без НДС, руб.

Бумага

пачка

1

5,6

Итого:

5,6

Затраты на материалы составляют 5,6 рублей.

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

Расходы на оплату труда разработчиков с отчислениями (ЗТР) определяются по следующей формуле (5.9):

(5.9)

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

ЗПДОП -- дополнительная заработная плата разработчиков, руб.;

ОЗП -- сумма отчислений от заработной платы, предусмотренных законодательством, руб.

Расходы на оплату труда рассчитываются с использованием повременной системы оплаты труда, которая в общем случае предполагает расчет основной заработной платы на основе тарифной ставки по Единой тарифной сетке (ЕТС) согласно тарифному разряду разработчика по формуле (5.10):

(5.10)

где ТС1 -- тарифная ставка работника первого квалификационного разряда, составляющая 111,46 рублей [Приложение З];

Kn -- тарифный коэффициент, соответствующий n-му квалификационному разряду ЕТС.

Величина тарифного коэффициента зависит от квалификационного разряда разработчика, задействованного в создании программного обеспечения. Согласно образовательному стандарту среднего специального образования специальности 2-40 01 01 «Программное обеспечение информационных технологий» обучение по специальности обеспечивает получение квалификации «техник-программист». Так, в качестве разработчика, задействованного в создании программного обеспечения в рамках дипломного проектирования, следует рассматривать техника-программиста без квалификационной категории, поскольку в соответствии с выпуском 1 Единого квалификационного справочника должностей служащих (ЕКСД) «Должности служащих для всех видов деятельности», утвержденным постановлением Министерства труда Республики Беларусь 30.12.1999 г. № 159 , квалификационными требованиями к специалистам в должности техника-программиста первой и второй квалификационных категорий предусматривается обязательное наличие стажа работы в указанной должности не менее 2 лет.

В соответствии с постановлением Министерства труда Республики Беларусь от 21.01.2000 г. №6 «О мерах по совершенствованию условий оплаты труда работников бюджетных организаций и иных организаций, получающих субсидии, работники которых приравнены по оплате труда к работникам бюджетных организаций» во всех бюджетных организациях и иных организациях, получающих субсидии, работники которых приравнены по оплате труда к работникам бюджетных организаций, вне зависимости от основного вида экономической деятельности организации для техника-программиста, не имеющего квалификационной категории, устанавливается VII разряд ЕТС, согласно которого установлен тарифный коэффициент равный 2,03. Исходя из этих данных рассчитывается тарифная ставка VII разряда:

рублей.

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

рублей.

Окладом является фиксированный размер заработной платы за полностью отработанный календарный месяц. Учитывая, что полученная трудоемкость разработки ПО меньше количества рабочих дней месяца, в котором велась разработка (май2017 г.), следует произвести расчет заработной платы исходя из фактически отработанного времени по формуле (5.11):

(5.11)

где Кфод-- количество фактически отработанных дней.

Исходя из общей трудоемкости разработки ПО, равный 23 чел.-дн., основная заработная плата разработчика по формуле (5.12)составит:

рублей.

Дополнительная заработная плата разработчиков (ЗПДОП) включает выплаты, предусмотренные законодательством о труде (оплата отпусков, льготных часов, времени выполнения государственных обязанностей и других выплат, не связанных с основной деятельностью исполнителей), и определяется по нормативу в процентах к основной заработной плате. Для данного расчета дополнительная заработная плата устанавливается в размере 18% от основной:

рублей.

Отчисления от заработной платы, предусмотренные законодательством, включают:

а) обязательные страховые взносы в бюджет государственного внебюджетного фонда социальной защиты населения Республики Беларусь - 34% [10].

б) обязательное страхование от несчастных случаев на производстве и профессиональных заболеваний - 1% [11].

Отчисления от заработной платы рассчитываются по формуле (5.12):

(5.12)

рублей.

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

346,92+62,44+143,27 = 552,63 рублей.

5.3 Обоснование целесообразности разработки

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

Статья затрат «Накладные расходы» для данного расчёта принимается в размере 15% от величины основной заработной платы разработчика.

Расчет себестоимости программного обеспечения по статьям приведен в таблице 5.5.

Таблица 5.5 - Калькуляция себестоимости созданного программного обеспечения

Наименование статей затрат

Сумма, руб.

Стоимость материалов

5,6

Стоимость машинного времени

36,41

Расходы на оплату труда

552,63

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

52,03

Полная себестоимость разработанного ПО

646,67

Таким образом, полная себестоимость разработанного программного продукта по произведенным расчетам составляет 646,67 рублей.

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

6. СВЕДЕНИЯ ПО ОХРАНЕ ТРУДА

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

Концентрация паров бензина в воздухе до 0,3% уже через 10 - 15 мин вызывает головокружение, а концентрация 35 - 40 мг на 1 л воздуха при вдыхании в течение 5 - 10 мин может вызвать смертельное отравление.

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

- ацетон - 0,2;

- бензин, керосин - 0,3;

- бензол - 0,05;

- тетраэтилсвинец - 0,0001.

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

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

При хранении и замерах нефтепродуктов необходимо соблюдать следующие меры предосторожности:

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

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

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

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

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

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

ж) люки и пробки закрывать плотно, но без ударов, применяя при этом специальные ключи [14].

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

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

Время пребывания рабочего внутри резервуара в шланговом противогазе не должно превышать 15 мин с последующим отдыхом на свежем воздухе не менее 15 мин, общее время работы внутри резервуара не должно быть более 2 часов. На рабочего, спускающегося в резервуар, обязательно надевают спасательный пояс, к которому крепят по две спасательные веревки. Запрещается спускаться внутри резервуара, если уровень нефтепродуктов в нем более 5 см и температура воздуха выше 40°С.

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

Виды первичных средств пожаротушения:

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

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

Кошма, металлические мелко ячеечные сетки, асбестовые полотна -- предназначены для того, чтобы оградить очаг возгорания от доступа кислорода. Это достаточно эффективно, если очаг возгорания имеет небольшую площадь;

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

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

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

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

ЗАКЛЮЧЕНИЕ

В процессе выполнения дипломного проекта была разработана «Автоматизированная система расчета себестоимости и длительности разработки ПО РУП «Производственное объединение «Белоруснефть». Данный проект позволил лучше изучить процесс расчета себестоимости программного обеспечения.

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

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

а) постановление Министерства труда и социальной защиты Республики Беларусь от 27.06.2007 N 91 "Об утверждении укрупненных норм затрат труда на разработку программного обеспечения"

б) методика расчета себестоимости программного обеспечения;

в) трудовой кодекс РБ;

г) Постановление Министерства труда и социальной защиты Республики Беларусь от 20.09.2002 №123 "Об утверждении Инструкции о порядке применения Единой тарифной сетки работников Республики Беларусь"

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

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

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

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

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

ПЕРЕЧЕНЬ УСЛОВНЫХ ОБОЗНАЧЕНИЙ И СОКРАЩЕНИЙ

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

РУП -- Республиканское Унитарное Предприятие.

БД -- База Данных.

СУБД -- Система Управления Базами Данных.

ГОСТ -- межГОсударственный СТандарт.

ЕТС -- Единая Тарифная Сетка.

НДС -- Налог на Добавленную Стоимость.

ОС -- Операционная Система.

ПК -- Персональный Компьютер.

ПО -- Программное Обеспечение.

DFD (Data Flow Diagram) -- диаграмма потока данных.

IDEF (Integrated DEFinition) -- методология функционального моделирования.

CASE (англ. computer-aided software engineering) -- набор инструментов и методов программной инженерии для проектирования программного обеспечения,

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Фатрелл, Р.Т. Управление программными проектами / Роберт Т. Фатрелл, Дональд Ф. Шафер, Линда И. Шафер - М. : Вильямс, 2004. - 692 с.

2. Расчет себестоимости [Электронный ресурс] / Планирование затрат на производство работ и услуг, автоматизация калькулирования и финансовых расчетов. Режим доступа: http://usu.kz/raschet_sebestoimosti.php. Дата доступа : 23.05.2017.

3. Уэкенбах, Дж. Подробное руководство по созданию формул в Excel / Дж. Уэкенбах - М. : Вильямс, 2002. - 134 с.

4. Албахари, Д. C# 6.0. Справочник. Полное описание языка / Д. Албахари, Бен Албахари. - М. : Вильямс, 2017. - 39 с.

5. Кошелев, В.Е. Access 2007. Эффективное использование / В.Е. Кошелев - М. : Бином-пресс, 2009. - 364 с.

6. Маклаков, С.В. Моделирование бизнес-процессов с AIIFusion Process Modeler/ С.В. Маклаков. - М. : Диалог-МИФИ, 2008. - 153 с.

7. Об утверждении укрупненных норм затрат труда на разработку программного обеспечения : постановление Министерства труда и социальной защиты Республики Беларусь, 27 июня 2007 г., № 91.

8. Постановление Министерства труда РБ №5 [Электронный ресурс] / О Единой тарифной сетке работников Республики Беларусь и рекомендациях по ее применению Режим доступа : http://pravo.levonevsky.org/bazaby11/ republic62/text601.htm. Дата доступа : 26.05.2017.

9. Купер, А. Алан Купер об интерфейсе. Основы проектирования взаимодействия / А. Купер, Р.М. Рейманн, Д. Кронин. - СПБ. : Символ плюс, 2009. - 289 с.

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

11. Об установлении размеров страховых тарифов,страховых взносов, лимитов ответственности поотдельным видам обязательного страхования, 25 августа 2006 г. № 531.

12. Касьянова, Г.Ю. Себестоимость продукции, работ и услуг: бухгалтерская и налоговая + CD/ Г.Ю. Касьянова - М. : АБАК, 2009. - 196 с.

13. О Пожарной Безопасности 2403-XII, 15.07.1993 г.

14. Требования безопасности при работе с нефтепродуктами [Электронный ресурс] / Министерство труда и социальной защиты

15. Республики Беларусь. - Режим доступа : http://bgdstud.ru/podborka-lekczij-po-bzhd/18-konspekt-lekcij-po-discipline-bezopasnost/892-trebovaniya-bezopasnosti-pri-rabote-s.html. - Дата доступа : 20.04.2017.

16. Первичные средства пожаротушения [Электронный ресурс] / Министерство труда и социальной защиты

17. Республики Беларусь. - Режим доступа : http://mpb01.ru/uslugi/psp.html. - Дата доступа : 20.04.2017

ПРИЛОЖЕНИЕ А

Диаграмма декомпозиции IDEF0

ПРИЛОЖЕНИЕ Б

DFD диаграмма

ПРИЛОЖЕНИЕ В

Функциональная модель программы

ПРИЛОЖЕНИЕ В

Листинг программы

Текст файла Form1.cs:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Data.OleDb;

using System.IO;

using System.Diagnostics;

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

{

public partial class Form1 : Form

{

double obshsum = 0;

double per = 0;

double sebest = 0;

int flag = 0;

public Form1()

{

InitializeComponent();

OleDbConnection cn = new OleDbConnection();

OleDbConnectionStringBuilder cnstr = new OleDbConnectionStringBuilder();

cnstr.Provider = "Microsoft.Jet.OLEDB.4.0";

cnstr.DataSource = @"Dip.mdb";

cn.ConnectionString = cnstr.ToString();

if (cn.State == ConnectionState.Closed)

{

cn.Open();

string commText = "Select Название, Стоимость, Длительность, Руководитель_проекта, Дата_расчета FROM [Расчеты]";

OleDbCommand comm = new OleDbCommand(commText, cn);

DataTable table = new DataTable();

OleDbDataAdapter adapter = new OleDbDataAdapter(comm);

adapter.Fill(table);

dataGridView2.DataSource = table;

}

cn.Close();

OleDbConnection cn1 = new OleDbConnection();

OleDbConnectionStringBuilder cnstr1 = new OleDbConnectionStringBuilder();

cnstr1.Provider = "Microsoft.Jet.OLEDB.4.0";

cnstr1.DataSource = @"Dip.mdb";

cn1.ConnectionString = cnstr1.ToString();

if (cn1.State == ConnectionState.Closed)

{

cn1.Open();

string commText1 = "Select Объем_ПО, Первая, Вторая, Третья FROM [Нормативная_трудоемкость]";

OleDbCommand comm1 = new OleDbCommand(commText1, cn1);

DataTable table1 = new DataTable();

OleDbDataAdapter adapter1 = new OleDbDataAdapter(comm1);

adapter1.Fill(table1);

dataGridView3.DataSource = table1;

}

cn1.Close();

OleDbConnection cn2 = new OleDbConnection();

OleDbConnectionStringBuilder cnstr2 = new OleDbConnectionStringBuilder();

cnstr2.Provider = "Microsoft.Jet.OLEDB.4.0";

cnstr2.DataSource = @"Dip.mdb";

cn2.ConnectionString = cnstr2.ToString();

if (cn2.State == ConnectionState.Closed)

{

cn2.Open();

string commText2 = "Select Ктз, Кэп, Ктп, Крп, Квн FROM [Значение_коэффициэнтов_без_CASE]";

OleDbCommand comm2 = new OleDbCommand(commText2, cn2);

DataTable table2 = new DataTable();

OleDbDataAdapter adapter2 = new OleDbDataAdapter(comm2);

adapter2.Fill(table2);

dataGridView4.DataSource = table2;

}

cn2.Close();

OleDbConnection cn3 = new OleDbConnection();

OleDbConnectionStringBuilder cnstr3 = new OleDbConnectionStringBuilder();

cnstr3.Provider = "Microsoft.Jet.OLEDB.4.0";

cnstr3.DataSource = @"Dip.mdb";

cn3.ConnectionString = cnstr3.ToString();

if (cn3.State == ConnectionState.Closed)

{

cn3.Open();

string commText3 = "Select Ктз_Кэп_Ктп, Крп, Квн FROM [Значение_коэффициентов_с_CASE]";

OleDbCommand comm3 = new OleDbCommand(commText3, cn3);

DataTable table3 = new DataTable();

OleDbDataAdapter adapter3 = new OleDbDataAdapter(comm3);

adapter3.Fill(table3);

dataGridView5.DataSource = table3;

}

cn3.Close();

OleDbConnection cn4 = new OleDbConnection();

OleDbConnectionStringBuilder cnstr4 = new OleDbConnectionStringBuilder();

cnstr4.Provider = "Microsoft.Jet.OLEDB.4.0";

cnstr4.DataSource = @"Dip.mdb";

cn4.ConnectionString = cnstr4.ToString();

if (cn4.State == ConnectionState.Closed)

{

cn4.Open();

string commText4 = "Select Значение FROM [Показатели]";

OleDbCommand comm4 = new OleDbCommand(commText4, cn4);

DataTable table4 = new DataTable();

OleDbDataAdapter adapter4 = new OleDbDataAdapter(comm4);

adapter4.Fill(table4);

dataGridView8.DataSource = table4;

}

cn4.Close();

OleDbConnection cn5 = new OleDbConnection();

OleDbConnectionStringBuilder cnstr5 = new OleDbConnectionStringBuilder();

cnstr5.Provider = "Microsoft.Jet.OLEDB.4.0";

cnstr5.DataSource = @"Dip.mdb";

cn5.ConnectionString = cnstr5.ToString();

if (cn5.State == ConnectionState.Closed)

{

cn5.Open();

string commText5 = "Select Ставка1разряда FROM [Ставка]";

OleDbCommand comm5 = new OleDbCommand(commText5, cn5);

DataTable table5 = new DataTable();

OleDbDataAdapter adapter5 = new OleDbDataAdapter(comm5);

adapter5.Fill(table5);

dataGridView9.DataSource = table5;

}

cn5.Close();

}

private void button4_Click(object sender, EventArgs e)

{

double sum = 0;

double sum1 = 0;

double del = 0;

if (flag == 0)

{

dataGridView1.Visible = true;

if (textBox5.Text == "А" && radioButton2.Checked == true)

{

dataGridView1.Rows[0].Cells[1].Value = dataGridView4.Rows[0].Cells[0].Value;

dataGridView1.Rows[0].Cells[2].Value = dataGridView4.Rows[0].Cells[1].Value;

dataGridView1.Rows[0].Cells[3].Value = dataGridView4.Rows[0].Cells[2].Value;

dataGridView1.Rows[0].Cells[4].Value = dataGridView4.Rows[0].Cells[3].Value;

dataGridView1.Rows[0].Cells[5].Value = dataGridView4.Rows[0].Cells[4].Value;

for (int i = 0; i < dataGridView4.ColumnCount; i++)

{

sum += Convert.ToDouble(dataGridView4.Rows[0].Cells[i].Value);

}

dataGridView1.Rows[0].Cells[6].Value = sum;

}

else

{

if (textBox5.Text == "Б" && radioButton2.Checked == true)

{

dataGridView1.Rows[0].Cells[1].Value = dataGridView4.Rows[1].Cells[0].Value;

dataGridView1.Rows[0].Cells[2].Value = dataGridView4.Rows[1].Cells[1].Value;

dataGridView1.Rows[0].Cells[3].Value = dataGridView4.Rows[1].Cells[2].Value;

dataGridView1.Rows[0].Cells[4].Value = dataGridView4.Rows[1].Cells[3].Value;

dataGridView1.Rows[0].Cells[5].Value = dataGridView4.Rows[1].Cells[4].Value;

for (int i = 0; i < dataGridView4.ColumnCount; i++)

{

sum += Convert.ToDouble(dataGridView4.Rows[1].Cells[i].Value);

}

dataGridView1.Rows[0].Cells[6].Value = sum;

}

else

{

if (textBox5.Text == "В" && radioButton2.Checked == true)

{

dataGridView1.Rows[0].Cells[1].Value = dataGridView4.Rows[2].Cells[0].Value;

dataGridView1.Rows[0].Cells[2].Value = dataGridView4.Rows[2].Cells[1].Value;

dataGridView1.Rows[0].Cells[3].Value = dataGridView4.Rows[2].Cells[2].Value;

dataGridView1.Rows[0].Cells[4].Value = dataGridView4.Rows[2].Cells[3].Value;

dataGridView1.Rows[0].Cells[5].Value = dataGridView4.Rows[2].Cells[4].Value;

for (int i = 0; i < dataGridView4.ColumnCount; i++)

{

sum += Convert.ToDouble(dataGridView4.Rows[2].Cells[i].Value);

}

dataGridView1.Rows[0].Cells[6].Value = sum;

}

else

{

if (textBox5.Text == "А" && radioButton1.Checked == true)

{

del = Convert.ToDouble(dataGridView5.Rows[0].Cells[0].Value) / 3;

dataGridView1.Rows[0].Cells[1].Value = del;

dataGridView1.Rows[0].Cells[2].Value = del;

dataGridView1.Rows[0].Cells[3].Value = del;

dataGridView1.Rows[0].Cells[4].Value = dataGridView5.Rows[0].Cells[1].Value;

dataGridView1.Rows[0].Cells[5].Value = dataGridView5.Rows[0].Cells[2].Value;

for (int i = 1; i < dataGridView5.ColumnCount; i++)

{

sum += Convert.ToDouble(dataGridView5.Rows[0].Cells[i].Value);

}

dataGridView1.Rows[0].Cells[6].Value = sum;

}

else

{

if (textBox5.Text == "Б" && radioButton1.Checked == true)

{

del = Convert.ToDouble(dataGridView5.Rows[1].Cells[0].Value) / 3;

dataGridView1.Rows[0].Cells[1].Value = del;

dataGridView1.Rows[0].Cells[2].Value = del;

dataGridView1.Rows[0].Cells[3].Value = del;

dataGridView1.Rows[0].Cells[4].Value = dataGridView5.Rows[1].Cells[1].Value;

dataGridView1.Rows[0].Cells[5].Value = dataGridView5.Rows[1].Cells[2].Value;

for (int i = 1; i < dataGridView5.ColumnCount; i++)

{

sum += Convert.ToDouble(dataGridView1.Rows[1].Cells[i].Value);

}

dataGridView1.Rows[0].Cells[6].Value = sum;

}

else

{

if (textBox5.Text == "В" && radioButton1.Checked == true)

{

del = Convert.ToDouble(dataGridView5.Rows[2].Cells[0].Value) / 3;

dataGridView1.Rows[0].Cells[1].Value = del;

dataGridView1.Rows[0].Cells[2].Value = del;

dataGridView1.Rows[0].Cells[3].Value = del;

dataGridView1.Rows[0].Cells[4].Value = dataGridView5.Rows[2].Cells[1].Value;

dataGridView1.Rows[0].Cells[5].Value = dataGridView5.Rows[2].Cells[2].Value;

for (int i = 1; i < dataGridView5.ColumnCount; i++)

{

sum += Convert.ToDouble(dataGridView5.Rows[2].Cells[i].Value);

}

dataGridView1.Rows[0].Cells[6].Value = sum;

}

}

}

}

}

}

try

{

dataGridView1.Rows[1].Cells[1].Value = Math.Round((Convert.ToDouble(textBox4.Text) * (Convert.ToDouble(dataGridView1.Rows[0].Cells[1].Value))), 2);

dataGridView1.Rows[1].Cells[2].Value = Math.Round((Convert.ToDouble(textBox4.Text) * (Convert.ToDouble(dataGridView1.Rows[0].Cells[2].Value))), 2);

dataGridView1.Rows[1].Cells[3].Value = Math.Round((Convert.ToDouble(textBox4.Text) * (Convert.ToDouble(dataGridView1.Rows[0].Cells[3].Value))), 2);

dataGridView1.Rows[1].Cells[4].Value = Math.Round((Convert.ToDouble(textBox4.Text) * (Convert.ToDouble(dataGridView1.Rows[0].Cells[4].Value))), 0);

dataGridView1.Rows[1].Cells[5].Value = Math.Round((Convert.ToDouble(textBox4.Text) * (Convert.ToDouble(dataGridView1.Rows[0].Cells[5].Value))), 0);

for (int i = 1; i < dataGridView1.ColumnCount; i++)

{

sum1 += Convert.ToDouble(dataGridView1.Rows[1].Cells[i].Value);

}

dataGridView1.Rows[1].Cells[6].Value = Math.Round(sum1,0);

dataGridView1.Rows[2].Cells[1].Value = textBox6.Text;

dataGridView1.Rows[2].Cells[2].Value = textBox6.Text;

dataGridView1.Rows[2].Cells[3].Value = textBox6.Text;

dataGridView1.Rows[2].Cells[4].Value = textBox6.Text;

dataGridView1.Rows[2].Cells[5].Value = textBox6.Text;

dataGridView1.Rows[2].Cells[6].Value = "-";

dataGridView1.Rows[4].Cells[1].Value = "-";

dataGridView1.Rows[4].Cells[2].Value = "-";

dataGridView1.Rows[4].Cells[3].Value = "-";

dataGridView1.Rows[4].Cells[4].Value = textBox7.Text; ;

dataGridView1.Rows[4].Cells[5].Value = "-";

dataGridView1.Rows[4].Cells[6].Value = "-";

dataGridView1.Rows[5].Cells[1].Value = textBox8.Text;

dataGridView1.Rows[5].Cells[2].Value = textBox8.Text;

dataGridView1.Rows[5].Cells[3].Value = textBox8.Text;

dataGridView1.Rows[5].Cells[4].Value = textBox8.Text;

dataGridView1.Rows[5].Cells[5].Value = textBox8.Text;

dataGridView1.Rows[5].Cells[6].Value = "-";

if (flag == 0)

{

dataGridView1.Rows[6].Cells[1].Value = Math.Round(Convert.ToDouble(dataGridView1.Rows[1].Cells[1].Value) * Convert.ToDouble(dataGridView1.Rows[5].Cells[1].Value) * Convert.ToDouble(dataGridView1.Rows[2].Cells[1].Value) * Convert.ToDouble(dataGridView1.Rows[3].Cells[1].Value), 0);

dataGridView1.Rows[6].Cells[2].Value = Math.Round(Convert.ToDouble(dataGridView1.Rows[1].Cells[2].Value) * Convert.ToDouble(dataGridView1.Rows[2].Cells[2].Value) * Convert.ToDouble(dataGridView1.Rows[3].Cells[2].Value) * Convert.ToDouble(dataGridView1.Rows[5].Cells[2].Value), 0);

dataGridView1.Rows[6].Cells[3].Value = Math.Round(Convert.ToDouble(dataGridView1.Rows[1].Cells[3].Value) * Convert.ToDouble(dataGridView1.Rows[2].Cells[3].Value) * Convert.ToDouble(dataGridView1.Rows[3].Cells[3].Value) * Convert.ToDouble(dataGridView1.Rows[5].Cells[3].Value), 0);

dataGridView1.Rows[6].Cells[4].Value = Math.Round(Convert.ToDouble(dataGridView1.Rows[1].Cells[4].Value) * Convert.ToDouble(dataGridView1.Rows[2].Cells[4].Value) * Convert.ToDouble(dataGridView1.Rows[3].Cells[4].Value) * Convert.ToDouble(dataGridView1.Rows[4].Cells[4].Value) * Convert.ToDouble(dataGridView1.Rows[5].Cells[4].Value), 0);

dataGridView1.Rows[6].Cells[5].Value = Math.Round(Convert.ToDouble(dataGridView1.Rows[1].Cells[5].Value) * Convert.ToDouble(dataGridView1.Rows[2].Cells[5].Value) * Convert.ToDouble(dataGridView1.Rows[3].Cells[5].Value) * Convert.ToDouble(dataGridView1.Rows[5].Cells[5].Value), 0);

for (int i = 1; i < dataGridView1.ColumnCount; i++)

{

obshsum += Convert.ToDouble(dataGridView1.Rows[6].Cells[i].Value);

}

dataGridView1.Rows[6].Cells[6].Value = obshsum;

flag = 1;

}

chart1.Visible = true;

string x = "ТЗ ЭП ТП РП ВН";

double y = Convert.ToDouble(dataGridView1.Rows[6].Cells[1].Value);

chart1.Series[0].Points.AddXY(x, y);

double y1 = Convert.ToDouble(dataGridView1.Rows[6].Cells[2].Value);

chart1.Series[1].Points.AddXY(x, y1);

double y2 = Convert.ToDouble(dataGridView1.Rows[6].Cells[3].Value);

chart1.Series[2].Points.AddXY(x, y2);

double y3 = Convert.ToDouble(dataGridView1.Rows[6].Cells[4].Value);

chart1.Series[3].Points.AddXY(x, y3);

double y4 = Convert.ToDouble(dataGridView1.Rows[6].Cells[5].Value);

chart1.Series[4].Points.AddXY(x, y4);

flag = 1;

this.Size = new Size(1091, 555);

tabControl1.Size = new Size(1055, 500);

dataGridView2.Size = new Size(1050, 495);

label25.Visible = false;

dataGridView10.Visible = true;

dataGridView7.Visible = true;

button1.Visible = true;

button2.Visible = true;

label15.Visible = true;

comboBox1.Visible = true;

label19.Visible = true;

textBox18.Visible = true;

label23.Visible = true;

textBox22.Visible = true;

}

catch

{

MessageBox.Show("Не хватает параметров!", "Ошибка!");

}

}

}

private void textBox1_TextChanged(object sender, EventArgs e)

{

Form2 form2 = new Form2();

form2.ShowDialog();

textBox1.Text = form2.textBox1.Text;

try

{

int yt = Int32.Parse(textBox1.Text);

textBox2.Text = (yt * 0.10).ToString();

}

catch

{

MessageBox.Show("Нужно передать параметр!", "Ошибка!");

}

}

private void textBox3_Click(object sender, EventArgs e)

{

Form4 form4 = new Form4();

form4.ShowDialog();

if (form4.DialogResult == DialogResult.OK)

textBox3.Text = form4.kat();

double temp = 0,

t = double.MaxValue;

double a = 0;

int b = 0;

try

{

for (int i = 0; i < dataGridView3.RowCount; i++)

{

a = Math.Abs(Convert.ToDouble(dataGridView3.Rows[i].Cells[0].Value) - Convert.ToDouble(textBox2.Text));

if (a < t)

{

temp = Convert.ToDouble(dataGridView3.Rows[i].Cells[0].Value);

t = a;

b = i;

}

}

}

catch

{

MessageBox.Show("Нет предыдущего параметра", "Ошибка!");

}

try

{

if (textBox3.Text == "Первая")

{

textBox4.Text = (dataGridView3.Rows[b].Cells[1].Value.ToString());

}

else

{

if (textBox3.Text == "Вторая")

{

textBox4.Text = (dataGridView3.Rows[b].Cells[2].Value.ToString());

}

else

{

if (textBox3.Text == "Третья")

{

textBox4.Text = (dataGridView3.Rows[b].Cells[3].Value.ToString());

}

}

}

}

catch

{

MessageBox.Show("Нет такого параметра!", "Ошибка!");

}

textBox5.Enabled = true;

}

private void textBox5_Click(object sender, EventArgs e)

{

Form5 form5 = new Form5();

form5.ShowDialog();

if (form5.DialogResult == DialogResult.OK)

{

dataGridView1.Rows.Add(7);

dataGridView1.Rows[0].Cells[0].Value = "Коэффициенты удельных весов трудоемкости стадий разработки ПО (Ктз, Кэп, Ктп, Крп, Квн) ";

dataGridView1.Rows[1].Cells[0].Value = "Распределение нормативной уточненной трудоемкости ПО по стадиям, чел.-дн.";

dataGridView1.Rows[2].Cells[0].Value = "Коэффициент повышения сложности ПО (Кс)";

dataGridView1.Rows[3].Cells[0].Value = "Коэффициент, учитывающий новизну ПО (Кн)";

dataGridView1.Rows[4].Cells[0].Value = "Коэффициент, учитывающий степень использования стандартных модулей (Кт)";

dataGridView1.Rows[5].Cells[0].Value = "Коэффициент, учитывающий средства разработки ПО (Кур)";

dataGridView1.Rows[6].Cells[0].Value = "Распределение скорректированной (с учетом Кс,Кн,Кт,Кур) Трудоемкости ПО по стадиям, чел.-дн.";

dataGridView1.Rows[3].Cells[1].Value = form5.zn();

dataGridView1.Rows[3].Cells[2].Value = form5.zn();

dataGridView1.Rows[3].Cells[3].Value = form5.zn();

dataGridView1.Rows[3].Cells[4].Value = form5.zn();

dataGridView1.Rows[3].Cells[5].Value = form5.zn();

dataGridView1.Rows[3].Cells[6].Value = "-";

textBox5.Text = form5.Kateg();

}

if (textBox5.Text == "")

{

radioButton1.Enabled = false;

radioButton2.Enabled = false;

}

else

{

radioButton1.Enabled = true;

radioButton2.Enabled = true;

}

radioButton1.Checked = false;

radioButton2.Checked = false;

}

private void radioButton1_CheckedChanged(object sender, EventArgs e)

{

if (radioButton1.Checked == true || radioButton2.Checked == true)

{

textBox6.Enabled = true;

}

}

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

{

dataGridView1.RowTemplate.DefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True;

}

private void button1_Click_1(object sender, EventArgs e)

{

dataGridView7.Rows.Add(9);

dataGridView7.Rows[0].Cells[0].Value = "Балансовая стоимость компьютера";

dataGridView7.Rows[1].Cells[0].Value = "Мощность потребляемая компьютером";

dataGridView7.Rows[2].Cells[0].Value = "Полезный фонд времени работы компьютера за год";

dataGridView7.Rows[3].Cells[0].Value = "Стоимость 1квт/час";

dataGridView7.Rows[4].Cells[0].Value = "Площадь на 1 рабочее место";

dataGridView7.Rows[5].Cells[0].Value = "Стоимость 1м2 производственной площади";

dataGridView7.Rows[6].Cells[0].Value = "Норма амортизации для оборудования";

dataGridView7.Rows[7].Cells[0].Value = "Норма амортизации для зданий";

dataGridView7.Rows[8].Cells[0].Value = "Отчисления на текущий ремонт оборудования (в % от балансовой стоимости)";

dataGridView7.Rows[0].Cells[1].Value = "БК";

dataGridView7.Rows[1].Cells[1].Value = "МК";

dataGridView7.Rows[2].Cells[1].Value = "FК";

dataGridView7.Rows[3].Cells[1].Value = "C";

dataGridView7.Rows[4].Cells[1].Value = "Sру";

dataGridView7.Rows[5].Cells[1].Value = "Спл";

dataGridView7.Rows[6].Cells[1].Value = "Нао";

dataGridView7.Rows[7].Cells[1].Value = "Напл";

dataGridView7.Rows[8].Cells[1].Value = "РО";

dataGridView7.Rows[0].Cells[2].Value = "Рубль";

dataGridView7.Rows[1].Cells[2].Value = "кВт";

dataGridView7.Rows[2].Cells[2].Value = "Дней";

dataGridView7.Rows[3].Cells[2].Value = "Рубль";

dataGridView7.Rows[4].Cells[2].Value = "М2";

dataGridView7.Rows[5].Cells[2].Value = "Рубль";

dataGridView7.Rows[6].Cells[2].Value = "Процент";

dataGridView7.Rows[7].Cells[2].Value = "Процент";

dataGridView7.Rows[8].Cells[2].Value = "Процент";

dataGridView7.Rows[0].Cells[3].Value = dataGridView8.Rows[1].Cells[0].Value;

dataGridView7.Rows[1].Cells[3].Value = dataGridView8.Rows[2].Cells[0].Value;

dataGridView7.Rows[2].Cells[3].Value = dataGridView8.Rows[3].Cells[0].Value;

dataGridView7.Rows[3].Cells[3].Value = dataGridView8.Rows[4].Cells[0].Value;

dataGridView7.Rows[4].Cells[3].Value = Math.Round(Convert.ToDouble(dataGridView8.Rows[7].Cells[0].Value) / Convert.ToDouble(dataGridView8.Rows[5].Cells[0].Value), 2);

dataGridView7.Rows[5].Cells[3].Value = Math.Round(Convert.ToDouble(dataGridView8.Rows[6].Cells[0].Value) / Convert.ToDouble (dataGridView8.Rows[7].Cells[0].Value), 2);

dataGridView7.Rows[6].Cells[3].Value = dataGridView8.Rows[8].Cells[0].Value;

dataGridView7.Rows[7].Cells[3].Value = dataGridView8.Rows[9].Cells[0].Value;

dataGridView7.Rows[8].Cells[3].Value = dataGridView8.Rows[0].Cells[0].Value;

double el =0;

el = Math.Round(Convert.ToDouble (dataGridView7.Rows[1].Cells[3].Value) * 192 * Convert.ToDouble( dataGridView7.Rows[3].Cells[3].Value) * 0.80 * 1.05, 2 );

textBox9.Text = el.ToString();

double zap = 0;

zap = Math.Round (Convert.ToDouble(dataGridView7.Rows[0].Cells[3].Value) * Convert.ToDouble(dataGridView7.Rows[6].Cells[3].Value) / 100 + (Convert.ToDouble(dataGridView7.Rows[4].Cells[3].Value) * Convert.ToDouble(dataGridView7.Rows[5].Cells[3].Value) * (Convert.ToDouble(dataGridView7.Rows[7].Cells[3].Value) / 100)), 2);

textBox10.Text = zap.ToString();

if (obshsum > 0)

{

per = Math.Round((zap / Convert.ToDouble(dataGridView7.Rows[2].Cells[3].Value)) * obshsum, 2);

textBox11.Text = per.ToString();

}

else

{

MessageBox.Show("Рассчитайте значения на первой вкладке для расчета значений поля 'Аммортизационные отчисления за период разработки!'", "Ошибка!");

}

double fond = 0;

fond = Math.Round((Convert.ToDouble( dataGridView7.Rows[0].Cells[3].Value) * Convert.ToDouble(dataGridView7.Rows[8].Cells[3].Value))/100, 2);

textBox12.Text = fond.ToString();

double fondzap = 0;

if (obshsum > 0)

{

fondzap = Math.Round(fond / Convert.ToDouble(dataGridView7.Rows[2].Cells[3].Value) * obshsum, 2);

textBox13.Text = fondzap.ToString();

}

else

{

MessageBox.Show("Рассчитайте значения на первой вкладке 'Резервный денежный фонд за период разработки!'", "Ошибка!");

}

double mashvr = 0;

mashvr = el + per + fondzap;

textBox14.Text = mashvr.ToString();

}

private void button2_Click(object sender, EventArgs e)

{

double zn = 0;

if (comboBox1.Text == "1")

{

zn = 1.0;

}

else

{

if (comboBox1.Text == "2")

{

zn = 1.16;

}

else

{

if (comboBox1.Text == "3")

{

zn = 1.35;

}

else

{

if (comboBox1.Text == "4")

{

zn = 1.57;

}

else

{

if (comboBox1.Text == "5")

{

zn = 1.73;

}

else

{

if (comboBox1.Text == "6")

{

zn = 1.90;

}

else

{

if (comboBox1.Text == "7")

{

zn = 2.03;

}

else

{

if (comboBox1.Text == "8")

{

zn = 2.17;

}

else

{

if (comboBox1.Text == "9")

{

zn = 2.33;

}

else

{

if (comboBox1.Text == "10")

{

zn = 2.48;

}

else

{

if (comboBox1.Text == "11")

{

zn = 2.65;

}

else

{

if (comboBox1.Text == "12")

{

zn = 2.84;

}

else

{

if (comboBox1.Text == "13")

{

zn = 3.04;

}

else

{

if (comboBox1.Text == "14")

{

zn = 3.25;

}

else

if (comboBox1.Text == "15")

{

zn = 3.48;

}

else

{

if (comboBox1.Text == "16")

{

zn = 3.72;

}

else

{

if (comboBox1.Text == "17")

{

zn = 3.98;

}

else

{

if (comboBox1.Text == "18")

{

zn = 4.26;

}

else

{

if (comboBox1.Text == "19")

{

zn = 4.56;

}

else

{

if (comboBox1.Text == "20")

{

zn = 4.88;

}

else

{

if (comboBox1.Text == "21")

{

zn = 5.22;

}

else

{

if (comboBox1.Text == "22")

{

zn = 5.59;

}

else

{

if (comboBox1.Text == "23")

{

zn = 5.98;

}

else

{

if (comboBox1.Text == "24")

{

zn = 6.40;

}

else

{

if (comboBox1.Text == "25")

{

zn = 6.85;

}

else

{

if (comboBox1.Text == "26")

{

zn = 7.33;

}

else

{

if (comboBox1.Text == "27")

{

zn = 7.84;

}

else

{

if (comboBox1.Text == "28")

{

zn = 8.39;

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}

double tarst = 0;

if (comboBox1.SelectedIndex > 0)

{

tarst = Math.Round(Convert.ToDouble(dataGridView9.Rows[0].Cells[0].Value) * zn, 2);

textBox15.Text = tarst.ToString();

}

else

{

MessageBox.Show("Выберите разряд для расчета тарифной ставки!", "Ошибка!");

}

double oklad = 0;

if (textBox15.Text != "")

{

oklad = tarst * 1.50;

textBox16.Text = oklad.ToString();

}

else

{

MessageBox.Show("Выберите разряд для расчета оклада!", "Ошибка!");

}

double zarpl = 0;

try

{

if (textBox16.Text != "")

{

zarpl = Math.Round(((oklad * 12) / Convert.ToDouble(dataGridView7.Rows[2].Cells[3].Value)) * obshsum,2);

textBox17.Text = zarpl.ToString();

}

else

{

MessageBox.Show("Выберите разряд для расчета заработной платы!", "Ошибка!");


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

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