МИРЭА

НИИ АА

Факультет КИБЕРНЕТИКИ

УНЦ АС

Кафедра Автоматизированных Систем Управления

СКБ 2

Направление 1

КОМПЛЕКСНЫЙ ДИПЛОМНЫЙ ПРОЕКТ

КНИГА I

РИСК II. Математическое обеспечение комплекса задач «Оценка эффективности работы военно-медицинского учреждения»

Модуль 233


Исполнитель

___________ Р.Б. Чихирев

Руководитель дипломного проекта, к.т.н., доцент


___________ В.В. Радионов

Консультант по спецчасти

___________Ф.А. Дикушин

Консультант по организационно-экономической части к.т.н., доцент


___________ Н.Д. Николаева

Консультант по охране труда к.т.н., доцент


___________ С.М. Кучерук

Консультант по гражданской обороне к.т.н., доцент


___________ В.И. Острейко

Резензент

___________  

«Допущен к защите»

Зав. каф. СА и ПО АСУ, профессор


___________Б.Д. Залещанский

1998

РЕФЕРАТ

Комплексный дипломный проект на тему "РИСК-II. Математическое обеспечение комплекса задач “Оценка эффективности функционирования военно-медицинского учреждения” содержит следующие разделы:

В первой  главе проведен системный анализ и синтез РИСК II и разработана его архитектура и программное обеспечение.

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

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

Четвертая глава содержит оценку  экономической  эффективности  разработки дипломного проекта и технические предложения по дальнейшему развитию и совершенствованию РИСК II.

Комплексный дипломный проект содержит  NUMPAGES  \* MERGEFORMAT 154 страниц, 8 рисунков и 7 таблиц. Список литературы содержит 16 наименований.


СПИСОК СОКРАЩЕНИЙ

АКД

- аппаратура канала доступа

АКК

- адаптер канал-канал

АО

- акционерное общество

АПД

- аппаратура передачи данных

АРМ

- автоматизированное рабочее место

АС

- автоматизированная система

АСУ

- автоматизированная система управления

АУК

- автоматизированный управляющий комплекс

АФЦП

- Аппаратная формирования цифровых потоков

АЦПУ

- алфавитно-цифровое печатающее устройство

БД

- база данных

БЗ

- база знаний

БИС

- большая интегральная схема

ВЗУ

- внешнее запоминающее устройство

ВОС

- взаимодействие открытых систем

ВП

- внешняя память

ВТ

- вычислительная техника

ВУ

- внешнее устройство

ГВКГ

- Главный военно-клинический госпиталь

ГВС

- глобальная вычислительная сеть

ГВЦ

- главный вычислительный центр

ГИС

- графическая информационная система

ГК

- главный конструктор

ГО

- гражданская оборона

ГОСТ

- государственный стандарт

ГС

- графическая система

ГЦУМС

- Главный центр управления международными связями

ДП

- дипломный проект

ЕС ЭВМ

- ЭВМ единой серии

ИМС

- интегральная микросхема

ИО

- информационное обеспечение

ИСС

- информационно-справочная система

КВВ

- канал ввода-вывода

КДП

- комплексный дипломный проект

ККП

- комплексный курсовой проект

КОМС

- коммутационная станция

КСА

- комплекс средств автоматизации

ЛВС

- локальная вычислительная сеть

ЛО

- лингвистическое обеспечение

М

- модем

МГ

- машинная графика

МИРЭА

-Московский институт радиотехники, электроники и автоматики

МККТТ

-Международный Консультативный Комитет по Телеграфии и Телефонии

МО

- математическое обеспечение

МОС

- Международная организация по стандартизации

МТО

- материально-техническое обеспечение

НК

- нормированные координаты

НМД

- накопитель на магнитном диске

ОА

- операционный автомат

ООД

- оборудование обработки данных

ОП

- оперативная память

ОС

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

ОГЛАВЛЕНИЕ

 TOC \o "1-4" РЕФЕРАТ....................................................................................................................................... PAGEREF _Toc442019018 \h 3 #

СПИСОК СОКРАЩЕНИЙ.......................................................................................................... PAGEREF _Toc442019019 \h 4 #

ОГЛАВЛЕНИЕ.............................................................................................................................. PAGEREF _Toc442019020 \h 6 #

ВВЕДЕНИЕ................................................................................................................................... PAGEREF _Toc442019021 \h 8 #

ГЛАВА 1. СИСТЕМНЫЙ АНАЛИЗ И СИНТЕЗ РИСК II...................................................... PAGEREF _Toc442019022 \h 9 #

1.1. Анализ замысла, целей, направлений и этапов разработки РИСК II.......................... PAGEREF _Toc442019023 \h 9 #

1.1.1. Замысел и цели разработки РИСК II........................................................................ PAGEREF _Toc442019024 \h 9 #

1.1.2. Направления и этапы разработки РИСК II............................................................. PAGEREF _Toc442019025 \h 9 #

1.1.3. Исследование требований заказчика........................................................................ PAGEREF _Toc442019026 \h 9 #

1.1.4. Анализ возможностей разработчика...................................................................... PAGEREF _Toc442019027 \h 10 #

1.2. Синтез и обоснование проектных решений................................................................. PAGEREF _Toc442019028 \h 10 #

1.2.1. Архитектура РИСК II.............................................................................................. PAGEREF _Toc442019029 \h 10 #

1.2.2. Организация взаимодействия исполнителей........................................................ PAGEREF _Toc442019030 \h 12 #

1.2.3. Обоснование выбора программных средств......................................................... PAGEREF _Toc442019031 \h 13 #

1.2.3.1. Операционная среда.......................................................................................... PAGEREF _Toc442019032 \h 13 #

1.2.3.2. Инструментальные средства разработки........................................................ PAGEREF _Toc442019033 \h 13 #

Выводы по главе 1.................................................................................................................. PAGEREF _Toc442019034 \h 18 #

ГЛАВА 2. МАТЕМАТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ КОМПЛЕКСА ЗАДАЧ "ОЦЕНКА ЭФФЕКТИВНОСТИ ФУНКЦИОНИРОВАНИЯ ВОЕННО-МЕДИЦИНСКОГО УЧРЕЖДЕНИЯ”....................................................................................................................................................... PAGEREF _Toc442019035 \h 19 #

2.1 Постановка задачи и её спецификация.......................................................................... PAGEREF _Toc442019036 \h 19 #

2.1.1 Метод главных компонент....................................................................................... PAGEREF _Toc442019037 \h 19 #

2.1.2 Задачи решаемые методом главных компонент..................................................... PAGEREF _Toc442019038 \h 20 #

2.1.3 Анализ условий допущений и ограничений задачи.............................................. PAGEREF _Toc442019039 \h 20 #

2.2. Обоснование проектных решений................................................................................ PAGEREF _Toc442019040 \h 20 #

2.2.1. Математическая модель метода главных компонент........................................... PAGEREF _Toc442019041 \h 20 #

2.2.2. Геометрическая интерпретация метода главных компонент.............................. PAGEREF _Toc442019042 \h 23 #

2.2.3 Блок схема алгоритма................................................................................................ PAGEREF _Toc442019043 \h 23 #

2.2.4 Обратная факторная задача....................................................................................... PAGEREF _Toc442019044 \h 24 #

2.2.5 Проблема собственных чисел и собственных значений....................................... PAGEREF _Toc442019045 \h 25 #

2.2.6 Методы нахождения собственных чисел и собственных векторов..................... PAGEREF _Toc442019046 \h 25 #

2.2.6.1 Постановка задачи.............................................................................................. PAGEREF _Toc442019047 \h 25 #

2.2.6.2 QR разложение матрицы................................................................................... PAGEREF _Toc442019048 \h 26 #

2.2.6.3 Метод вращений ( метод Гивенса).................................................................... PAGEREF _Toc442019049 \h 26 #

2.2.6.4 Метод Якоби....................................................................................................... PAGEREF _Toc442019050 \h 27 #

2.2.6.5 Приведение матрицы собственных чисел к виду необходимому для метода главных компонент............................................................................................................................ PAGEREF _Toc442019051 \h 29 #

2.2.6.6. Алгоритм метода Якоби................................................................................... PAGEREF _Toc442019052 \h 29 #

2.2.7. Применение метода главных компонент в задаче оценки эффективности функционирования военно-медицинского учреждения....................................................................................... PAGEREF _Toc442019053 \h 30 #

2.3 Программная реализация................................................................................................. PAGEREF _Toc442019054 \h 33 #

2.3.1 Выбор средств программирования.......................................................................... PAGEREF _Toc442019055 \h 33 #

2.3.2 Описание программного продукта.......................................................................... PAGEREF _Toc442019056 \h 34 #

2.3.3 Разработка программной документации................................................................. PAGEREF _Toc442019057 \h 34 #

2.3.4 Результаты опытной эксплуатации КЗ “Оценка эффективности функционирования военно-медицинского учреждения” и технические предложения по его развитию.................... PAGEREF _Toc442019058 \h 34 #

Выводы по главе 2.................................................................................................................. PAGEREF _Toc442019059 \h 40 #

ГЛАВА 3. МАТЕМАТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ПРИКЛАДНЫХ ЗАДАЧ................... PAGEREF _Toc442019060 \h 41 #

3.1. Деловая игра по курсу "Гражданская оборона"............................................................ PAGEREF _Toc442019061 \h 41 #

3.1.1. Постановка задачи и ее спецификация.................................................................. PAGEREF _Toc442019062 \h 41 #

3.1.2. Характеристика землетрясений.......................................................................... PAGEREF _Toc442019063 \h 42 #

3.1.2.1. Механизм землетрясения.................................................................................. PAGEREF _Toc442019064 \h 43 #

3.1.2.2. Сейсмические волны......................................................................................... PAGEREF _Toc442019065 \h 43 #

3.1.2.3. Интенсивность и магнитуда землетрясения................................................... PAGEREF _Toc442019066 \h 44 #

3.1.3. Вторичные поражающие факторы землетрясений............................................... PAGEREF _Toc442019067 \h 46 #

3.1.3.1. Распространение и характеристика СДЯВ..................................................... PAGEREF _Toc442019068 \h 47 #

3.1.3.2. Химическая обстановка на местности в случае разрушения емкостей со СДЯВ       PAGEREF _Toc442019069 \h 47 #

3.1.3.3. Глубина, ширина и площадь заражения СДЯВ.............................................. PAGEREF _Toc442019070 \h 47 #

3.1.4.1. Оценка возникновения и развития  пожаров................................................. PAGEREF _Toc442019071 \h 49 #

3.1.5. Оценка воздействия взрыва ГВС на элементы объекта....................................... PAGEREF _Toc442019072 \h 50 #

3.1.6. Рекомендации........................................................................................................... PAGEREF _Toc442019073 \h 50 #

3.2. Автоматизированная система по курсу «Экология и охрана труда»........................ PAGEREF _Toc442019074 \h 52 #

3.2.1. Постановка задачи и ее спецификации.................................................................. PAGEREF _Toc442019075 \h 52 #

3.2.1.1. Постановка задачи оценки степени загрязнения атмосферы выбросами из низких источников........................................................................................................................... PAGEREF _Toc442019076 \h 53 #

3.2.1.2. Постановка задачи оценки безопасности в электроустановках................... PAGEREF _Toc442019077 \h 54 #

3.2.2. Обоснование проектных решений......................................................................... PAGEREF _Toc442019078 \h 55 #

3.2.2.1. Математическая модель определения степени загрязнения атмосферы...... PAGEREF _Toc442019079 \h 55 #

3.2.2.2. Математическая модель расчета  безопасности электроустановок.............. PAGEREF _Toc442019080 \h 65 #

3.2.3. Разработка программной документации................................................................ PAGEREF _Toc442019081 \h 67 #

3.2.4. Результаты опытной эксплуатации системы и технические предложения по её развитию................................................................................................................................................... PAGEREF _Toc442019082 \h 68 #

3.3.2. Обоснование проектных решений......................................................................... PAGEREF _Toc442019083 \h 71 #

3.3.4. Результаты опытной эксплуатации игры и технические предложения по ее развитию   PAGEREF _Toc442019084 \h 72 #

ГЛАВА 4. ОЦЕНКА ЭКОНОМИЧЕСКОЙ ЭФФЕКТИВНОСТИ И ПЕРСПЕКТИВЫ РАЗВИТИЯ ПРОЕКТА.................................................................................................................................... PAGEREF _Toc442019085 \h 75 #

4.1. Оценка экономической эффективности проекта......................................................... PAGEREF _Toc442019086 \h 75 #

4.1.1. Затраты (калькуляция темы).................................................................................... PAGEREF _Toc442019087 \h 75 #

4.1.2. Цена программного продукта................................................................................. PAGEREF _Toc442019088 \h 77 #

4.1.3. Экономическая эффективность программного продукта.................................... PAGEREF _Toc442019089 \h 77 #

4.2. Перспективы развития РИСК II и технические предложения по его развитию..... PAGEREF _Toc442019090 \h 78 #

4.2.1. Перспективы развития............................................................................................. PAGEREF _Toc442019091 \h 78 #

4.2.2. Технические предложения....................................................................................... PAGEREF _Toc442019092 \h 78 #

4.2.3. Проект технического задания на следующий этап разработки........................... PAGEREF _Toc442019093 \h 78 #

ПРИЛОЖЕНИЕ 1. Техническое задание на ДП...................................................................... PAGEREF _Toc442019094 \h 83 #

ПРИЛОЖЕНИЕ 2. Программная документация профессиональной задачи....................... PAGEREF _Toc442019095 \h 90 #

ПРИЛОЖЕНИЕ 3. Программная документация по гражданской обороне........................ PAGEREF _Toc442019096 \h 116 #

ПРИЛОЖЕНИЕ 4. Программная документация по охране труда....................................... PAGEREF _Toc442019097 \h 142 #

ПРИЛОЖЕНИЕ 5. Программная документация по экономике.......................................... PAGEREF _Toc442019098 \h 198 #

ПРИЛОЖЕНИЕ 6. Акт внедрения.......................................................................................... PAGEREF _Toc442019099 \h 220 #

ПРИЛОЖЕНИЕ 7. Доклад....................................................................................................... PAGEREF _Toc442019100 \h 222 #

ПРИЛОЖЕНИЕ 8. Отзыв руководителя................................................................................ PAGEREF _Toc442019101 \h 227 #

ПРИЛОЖЕНИЕ 9. Рецензия.................................................................................................... PAGEREF _Toc442019102 \h 231 #

ПРИЛОЖЕНИЕ 10. Акт экспертизы...................................................................................... PAGEREF _Toc442019103 \h 235 #

ВВЕДЕНИЕ

Данный дипломный проект (ДП) выполнен в соответствии с заданием и приказом на дипломное проектирование и является частью комплексного проекта распределенного интеллектуального синергетического комплекса (РИСК-2).

Целью настоящего дипломного проекта является анализ и обоснование выбора архитектуры распределенного информационно-справочного комплекса для медицинских учреждений и разработка математического и программного обеспечения для его подсистем. Проектирование РИСК производится силами СКБ-2 кафедры СА и ПО АСУ МИРЭА последовательно в течение нескольких лет. В качестве медицинского учреждения выступает Главный Военный Клинический Госпиталь им. Бурденко (ГВКГ).

В 1998-1999 учебном году студентами 6-го курса разработаны комплексы задач (КЗ) по платным медицинским услугам, электронного документооборота, распознаванию болезней  печени, оценки эффективности функционирования медицинского учреждения и др. прикладные системы. Эти разработки представляют комплексный дипломный проект (КДП) СКБ-2.

В процессе выполнения данного КДП решены несколько текущих задач по развитию РИСК-2:

·         системный анализ РИСК, рассмотрение направлений и этапов его создания; организация взаимодействия исполнителей на текущем этапе и анализ места частной задачи проекта в общей работе;

·         разработка МО и ПО по основной теме ДП;

·         создание (во взаимодействии с другими членами СКБ) прикладных программных систем по курсам «Гражданская оборона», «Экология и охрана труда» и «Экономика» по заданиям, выданным соответствующими кафедрами МИРЭА;

·         оценка экономической эффективности проекта и исследование перспектив развития РИСК 2.

ГЛАВА 1. СИСТЕМНЫЙ АНАЛИЗ И СИНТЕЗ РИСК II

1.1. Анализ замысла, целей, направлений и этапов разработки РИСК II

1.1.1. Замысел и цели разработки РИСК II

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

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

Замысел разработки РИСК II заключается в автоматизации деятельности медицинского персонала военно-медицинских учреждений МО РФ.

Целью разработки РИСК II является создание распределенных информационно-справочных комплексов, входящих в состав АСУ Главного Военного Клинического Госпиталя (ГВКГ) им. акад. Н.Н. Бурденко, проектируемой рамках ОКР "Тонус".

1.1.2. Направления и этапы разработки РИСК II

Основными направлениями разработки являются:

1. Разработка архитектуры РИСК II

2. Разработка математического обеспечения (МО) и специального программного обеспечения (СПО) прикладных задач.

Учитывая, что автоматизации подлежит большое количество задач, разработка РИСК II ведется поэтапно, в соответствии с этапами разработки АСУ ГВКГ в ОКР "Тонус". Разработка данного КДП совпадает с II этапом создания АСУ ГВКГ.

1.1.3. Исследование требований заказчика

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

На данном этапе в КДП требовалось разработать следующие комплексные задачи:

1. Комплекс задач (КЗ) “Математическое обеспечение оценки эффективности работы госпиталя”.

2. КЗ "Математическое обеспечение информационного обеспечения автоматизированного рабочего места специалиста медицинской части".

3. КЗ " Математическое обеспечение идентификации медицинских объектов методом главных компонент".

4. КЗ "Математическое обеспечение автоматизации бухгалтерского учета торговых предприятий".

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

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

1.1.4. Анализ возможностей разработчика

На основе анализа всех предъявленных требований выделим основные технические и программные возможности разработчика:

1). Программное обеспечение для ГВКГ по требованию заказчика, должно быть реализовано на ПЭВМ IBM PC с операционной системой Windows 95 (или Windows NT 4.0 Workstation), обладающей возможностью подключения в локальную сеть.

2). Программное обеспечение обучающей системы по курсу "Экология и охрана труда" реализовано на ПЭВМ IBM PC с операционной системой MS DOS 6.0 для автономного режима функционирования.

3). Программное обеспечение системы по курсу "Экономика" должно быть реализовано на ПЭВМ IBM PC с операционной системой Windows 95 или Windows NT.

1.2. Синтез и обоснование проектных решений

1.2.1. Архитектура РИСК II

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

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

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

1) основные лечебные отделения: операционное, переливания крови, терапевтическое, интенсивной терапии, кардиологии, гастроэнтерологии и др.;

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

3) лаборатории: диагностики, биологическая, клиническая и другие;

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

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

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

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

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

- автоматизированное формирование и выдача отчетных и справочных документов;

- планирование проведения консультаций и исследований, контроль их исполнения;

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

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

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

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

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

На основе такой структуры ГВКГ, была разработана архитектура РИСК II, приведенная на рис.1.1.

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

В настоящем КДП этой проблеме посвящена глава 2, в которой проводится разработка математического обеспечения комплекса задач "Оценка эффективности функционирования военно-медицинского учреждения" для медицинской части.

1.2.2. Организация взаимодействия исполнителей

На основе разработанной архитектуры РИСК II и требованиями Заказчика на текущем этапе общий объем работ был распределен между исполнителями в соответствии с делением на  классы задач, стоявших перед разработчиками. Работа над проектом проводилась разработчиками СКБ 2 в составе:

Чихирев Р.Б. - разработка модуля статистической обработки и анализа данных КЗ "Оценка эффективности работы военного госпиталя" - главный конструктор, ответственный за комплексную задачу по курсу “Экология и охрана труда”;

Базин В.В.. - разработка КЗ "Болезни печени" - первый заместитель главного конструктора, ответственный за комплексную задачу по курсу "Гражданская оборона";

Баймеев Р.Х. - заместитель главного консруктора по  задаче по курсу  “Экономика”;

Сачков А.В. - помошник главного конструктора.

Взаимодействие между исполнителями по решаемым задачам осуществлялась в соответствии с приведенной на рис. 1.2 матрицей взаимодействия.

На разработку комплексного дипломного проекта было выдано техническое задание (ТЗ) (Приложение 1), в котором автору предлагалось решить следующие комплексные задачи:

1. Провести системный анализ и синтез РИСК II.

2. Разработать математическое и программное обеспечение статистической обработки и анализа данных для комплекса задач "Оценка эффективности работы военного госпиталя".

3. Разработать автоматизированную обучающую систему по курсу "Гражданская оборона".

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

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

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

1) Провести обследование ГКВГ им. Бурденко и выявить ряд первоочередных задач, требующих автоматизации решения.

2) Для ПЭВМ IBM PC AT в среде Windows 95 или Windows NT Workstation 4.0 разработать математическое и программное обеспечение статистической обработки и анализа данных для комплекса задач "Оценка эффективности работы военного госпиталя".

3) Разработать рекомендации по защите оператора и ПЭВМ от поражающих факторов ядерного взрыва и землетрясения по курсу "Гражданская оборона".

4) Для ПЭВМ IBM PC AT в среде MS DOS разработать обучающую систему по курсу "Экология и охрана труда", представляющую собой компьютерный лабораторный практикум по требуемым разделам предмета и состоит из информационной и контролирующей части, которые управляются сценарием обучения.

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

6) В дипломном проекте необходимо провести технико-экономическую оценку разработки и определить перспективы развития РИСК II.

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

8) На программные продукты должна быть разработана пользовательская документация в составе:

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

- руководство программиста;

- руководство оператора..

1.2.3. Обоснование выбора программных средств

1.2.3.1. Операционная среда

Операционные среды: MS DOS 5.0., Windows 3.1 (или Windows for Workgroups 3.11), Windows 95 (или Windows NT Workstation 4.0) определена требованиями Заказчика, вытекающими из проектных работ, реализуемых в рамках выполнения ОКР “Тонус”.


1.2.3.2. Инструментальные средства разработки

В качестве средств разработки специального программного обеспечения была выбрана система Borland C++ Builder 1.0 Client/Server. Выбор обуславливается тем, что с его помощью можно в кратчайшие сроки разработать быстрое, компактное и полноценное Windows-приложение, работающее с базами данных.

Для разработки программного обеспечения по курсу "Экономика" был выбран MSM 4.3, так как программа должна будет работать под операционными системами Windows 95.

Для разработки программного обеспечения по курсу "Экология и охрана труда" был выбран Borland C++ 5.0., так как программа должна будет работать под операционной системой MS DOS 5.0 по требованию кафедры.

Для разработки программного обеспечения по курсу "Гражданская оборона" был выбран Visual Basic 4.0., так как программа должна будет работать под операционной системой Windows 95 по требованию кафедры.

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

Полностью структура программного обеспечения используемого при выполнении КДП РИСК II представлена на рис.1.3.

Рисунок. 1.1. Архитектура РИСК II.

Рисунок 1.2. Матрица взаимодействия исполнителей

Рисунок 1.3. Структура программного обеспечения РИСК II.

Выводы по главе 1

В данной главе содержатся результаты системного анализа и синтеза РИСК II, а именно:

·         Проведен анализ замысла, целей, направлений и этапов разработки РИСК II;

·         Проведен анализ требований заказчика и возможностей разработчика. результаты обследования объектов заказчика:

·         Разработана архитектура РИСК II, представляющая собой совокупность территориально удаленных объектов (медицинских учреждений), взаимодействующих между собой через систему обмена данными. Внутри объектов взаимодействие осуществляется посредством локальных вычислительных сетей. Для разработки комплекса средств автоматизации интерес представляет ЛВС госпиталя.

·         На основе разработанной архитектуры РИСК II и требований Заказчика на данном этапе было организовано взаимодействие исполнителей для решения поставленных задач.

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

ГЛАВА 2. МАТЕМАТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ КОМПЛЕКСА ЗАДАЧ "ОЦЕНКА ЭФФЕКТИВНОСТИ ФУНКЦИОНИРОВАНИЯ ВОЕННО-МЕДИЦИНСКОГО УЧРЕЖДЕНИЯ”

2.1 Постановка задачи и её спецификация

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

Для повышения эффективности использования коечного фонда требуется объективная оценка показателей работы отделений и центров госпиталя. В этой связи комплекс задач “Оценка эффективности функционирования военно-медицинского учреждения”, должен позволять по совокупности показателей, характеризующих различные аспекты функционирования отделений медицинского учреждения, определить сравнительную эффективность их работы. Одним из приемлемых и достаточно простых в реализации математических методов решения поставленной задачи является метод главных компонент (МГК).

Метод главных компонент, сущность которого состоит в сведении множества показателей к нескольким суммарным интегральным оценкам, в данном случае обладает существенными преимуществами [3] по сравнению с другими статистическими методами, такими как дисперсионный, регрессионный и факторный анализы [7,9].

Однако, недостаток метода главных компонент состоит в сложности нахождения собственных чисел и собственных векторов матриц большой размерности [3,6] при ручной обработке которых, невозможно получить достаточно точные результаты за приемлемое время, поэтому необходима ее автоматизация с применением ЭВМ.

Для достижения цели проекта требуется решить следующие задачи:

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

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

- выбрать метод решения задачи;

- разработать алгоритм и программу, реализующей этот метод.

2.1.1 Метод главных компонент

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

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

2.1.2 Задачи решаемые методом главных компонент

С помощью метода главных компонент можно решить четыре основных типа задач.

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

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

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

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

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

2.1.3 Анализ условий допущений и ограничений задачи

В ходе алгоритма нахождения главных компонент требуется найти собственные векторы и собственные значения матрицы парных корреляций. На настоящий момент наиболее быстрыми являются алгоритмы QR разложения [2,5] и их частные случаи. В частности, в связи с тем, что получающиеся в ходе исследования матрицы являются симметричными (симметрическими), то для нахождения собственных чисел и собственных векторов удобен относительно простой метод Якоби [6].

2.2. Обоснование проектных решений

2.2.1. Математическая модель метода главных компонент

Известно, что истинная величина изучаемого объекта содержит по крайней мере два компонента: истинную характеристику оцениваемого явления и ошибку измерения, которая зависит от большого числа причин. Если измерения проводятся в таких областях, как экономика, биология, медицина, психология, то добавляется третья составляющая, зависящая от вариабельности изучаемого признака, индивида или объекта. Таким образом, зарегистрированное значение может быть представлено в виде суммы #, где # - зарегистрированное значение изменяемого признака н i-ого объекта исследования, # - истинное значение (математическое ожидание) измеряемого признака у i - ого индивида, # - вариативное значение изменяемого признака i - ого индивида, # - ошибка измерения при определении j - ого признака у i - ого объекта исследования.

В основу метода главных компонент положена линейная модель. Если N - число исследуемых объектов, n - число признаков, то математическая модель принимает вид:

#,                                                                                     (2.1)

где r,j =1,2,...n; f - r-я главная компонента; # - вес r-ой компоненты в j-ой переменной; #-нормированное значение j-ого признака, полученное из эксперимента, на основе наблюдения. В матричной форме y=Af.

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

Для установления связи между главными компонентами и коэффициентами корреляции перепишем формулу для любого  i в виде:

#                                       (2.2)

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

#.(2.3)

Поскольку главные компоненты ортогональны, то выражение упрощается #. Слева записана дисперсия, а справа доли полной дисперсии, относящиеся к соответствующим главным компонентам. Дисперсия является характеристикой изменчивости случайной величины, её отклонений от среднего значения. Полный вклад r-ого факторов дисперсию всех n признаков определяет ту долю общей дисперсии, которую данная главная компонента объясняет.

Этот вклад вычисляется по формуле:

#                                                                                          (2.4)

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

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

Итак, при проведении эксперимента мы получаем результаты в виде матрицы наблюдаемых величин ХN,n где N - число наблюдаемых объектов, n - число измеряемых признаков.

Элементы данной матрицы центрируются и нормируются, и мы получаем матрицу Y.

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

#.                  (2.5)

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

#. (2.6)

Учитывая, что #, перепишем выражение:

#,                 (2.7)

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

Матрица наблюденных коэффициентов корреляции может быть представлена так:

R=YY¢ #,                                                                                         (2.8)

где Y - матрица нормированных значений признаков, Y¢ - транспонированная матрица.

Коэффициент корреляции # характеризует связь между двумя случайными величинами Хj и Хr в случае линейной корреляции между ними. Коэффициент корреляции представляет эмпирический первый основной смешанный момент. Для любых признаков и случайных величин #, #                                                           (2.9)

Среднее значение случайной величины Хj определяется по формуле

#,                                                                                    (2.10)

 а среднеквадратическое отклонение

#.                                                                         (2.11)


В результате преобразований корреляционной матрицы можно получить y=UL1/2f, где L-матрица собственных значений матрицы R, U - матрица из собственных векторов R. Отсюда можно заключить, что искомая матрица А может быть определена как А=UL1/2, или, соответственно для столбцов #.

Вклад данного вектора аr в общую дисперсию определится по формуле

#.                                                                      (2.12)

2.2.2. Геометрическая интерпретация метода главных компонент

Геометрической интерпретацией метода главных компонент служит переход к новой системе координат, где осями служат главные компоненты распределения.  [3,11].

Рассмотрим простейший двумерный случай. Она представлена на Рис 2.1.

#

Рис. 2.1. Геометрическая интерпретация метода главных компоент для двумерного случая


2.2.3 Блок схема алгоритма

Блок схема алгоритма метода главных компонент приведена на рисунке 2.2.

#


Рис 2.2. Блок схема алгоритма метода главных компонент

2.2.4 Обратная факторная задача

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

Обратимся к модели метода главных компонент. Развернём равенство #, для j-ого признака:

#                                                               (2.13)

Выразим теперь значения главных компонент через значения признаков. Для r-ой компоненты:

#.                                                      (2.14)

Предложенный метод не является единственным, зато он легко программируется на ЭВМ.

2.2.5 Проблема собственных чисел и собственных значений

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

2.2.6 Методы нахождения собственных чисел и собственных векторов

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

Собственным значением квадратной матрицы А называется такое число l, что для некоторого ненулевого вектора х имеет место равенство Ах=lх. Любой ненулевой вектор х, удовлетворяющий этому равенству, называется собственным вектором матрицы А, соответствующим собственному значению l. Все собственные векторы матрицы определены с точностью до числового множителя. Множество всех собственных значений матрицы А называется спектром матрицы А.

Собственные значения l матрицы А являются корнями алгебраического уравнения:

#                             (2.16)

которое называется характеристическим уравнением матрицы А.

Известно, что характеристическое уравнение имеет в области комплексных чисел ровно m корней l1, l2, ..., lm (с учетом их кратности). Таким образом каждая квадратная матрица А порядка m обладает набором из m собственных значений l1, l2, ..., lm.

Если матрица А симметричная, то все её собственные значения являются вещественными числами. В противном случае, для несимметричных матриц возможно наличие комплексных собственных значений вида l=a+ib с ненулевой мнимой  частью. В этом случае собственным значением матрицы будет и комплексно-сопряженное число.

Численные методы решения проблемы собственных значений до конца 40-х годов, сводились, в основном, к решению характеристического уравнения. При реализации такого подхода, основные усилия были направлены на разработку эффективных методов быстрого вычисления коэффициентов характеристического уравнения. Такие методы имеют названия прямых. Популярным методом этого типа является метод Данилевского [10].

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

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

2.2.6.2 QR разложение матрицы

В настоящее время лучшими методами вычисления всех собственных значений квадратных заполненных матриц общего вида являются алгоритмы, основанные на QR разложении, которое позволяет получить представление исходной матрицы А в виде произведения ортогональной матрицы Q на верхнюю треугольную матрицу R. Планарные (плоские) вращения (они же вращения Якоби или Гивенса) представляют собой наиболее простое средство получения искомого ортогонального разложения. Метод планарных вращений может быть естественным образом обобщен для получения более удобных форм ортогональных вращений, осуществляемых в пространстве с произвольным числом измерений. Такими обобщениями является алгоритм Хаусхольдера (метод отражений) и модифицированный алгоритм Грама - Шмидта [1,8].

Очевидно, что для полного разложения, независимо от применяемого алгоритма, требуется некая последовательность ортогональных преобразований, которые могут быть представлены матрицами Q0,Q1,...,Qm. Таким образом, полученная в результате матрица примет вид Q= Q0,Q1,...,Qm.

2.2.6.3 Метод вращений ( метод Гивенса)

Отдельное планарное вращение, применяемое к матрице А, эквивалентно умножению её на матрицу вида:

#                                                          (2.15)

где с=cosq, s=sinq, q - угол вращения. Таким образом, в процессе преобразования матрицы изменяются только её элементы строк i и l. #

Предположим, что в результате проведенных преобразований расположенные ниже главной диагонали элементы строк с 1 по l матрицы А стали равными нулю. Тогда для обращения в нуль расположенных ниже главной диагонали элементов (l+1) -й строки матрицы А осуществляется её вращение последовательно с первой, второй и последующими строками. Этот процесс продолжается до тех пор, пока все расположенные ниже главной диагонали элементы (l+1) -й строки не станут равными нулю. То есть, пока не получим треугольную матрицу вида:

#(2.16)

 

Назовём полученную матрицу матрицей R, она связана с исходной матрицей равенством R=ТА, где Т=Тm-1,m...T

 

2.2.6.4 Метод Якоби

Метод Якоби является частным случаем метода Гивенса, для симметрической матрицы А, следовательно вычисление всех собственных значений и собственных векторов вещественной симметрической матрицы можно свести к отысканию такой ортогональной матрицы Т, для которой произведение D = ТTАT представляет диагональную матрицу, причем столбцы матрицы Т будут являться соответствующими собственными векторами матрицы А. Матрица Т находится как предел бесконечного произведения элементарных матриц вращений, каждая из которых имеет вид

#                                                          (2.17)

где с=cosj, s=sinj, j - угол вращения.

Если необходимо обратить в нуль аik матрицы А, то соsj и sinj  нужно выбрать по формулам

#,    #

#,                                                                      (2.18)                                                              

#

Тогда получим матрицу D = ТTmATm с измененными i-м и k-м столбцами и строками:

bii=cos2jaii+sin2jakk+2cosjsinjaik,

bkk=sin2jaii+cos2jakk-2cosjsinjaik,

bik=bki=0,                                                                                           (2.19)

bij=bji=cosjaji+sinjajk

bkj=bjk=sinjaji-sinjajk

j=1,...n, j¹i, j¹k,

bji=aji,

в остальных случаях.

Отметим, что выполняется соотношение b2ii+b2kk=a2ii+a2kk+2a2ik, т.е. сумма квадратов диагональных элементов увеличивается.

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


2.2.6.5 Приведение матрицы собственных чисел к виду необходимому для метода главных компонент

Для метода главных компонент необходимо, чтобы собственные число были расположены в порядке убывания. Матрица собственных чисел, получающаяся в методе Якоби, не выполняет данное требование. Для получения искомой матрицы переставим строки в матрицах L и А (помним что L=ТА) так чтобы max{l} было в первом столбце, получив соответственно матрицы L* и А*. Теперь для того чтобы матрица L* опять стала диагональной требуется применить планарное вращение Тij (где i,j переставленные строки). Получаем L*= ТijТА*.

Применяя подобные перестановки и планарные вращения далее, легко получить требуемую матрицу, у которой |l1|>|l2|>...|lm|.


2.2.6.6. Алгоритм метода Якоби

Блок схема алгоритма метода Якоби приведена на Рис. 2.3.

 

#

Рис. 2.3. Блок схема алгоритма метода Якоби

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

Исходные данные для анализа представляют собой таблицу собранных статистических данных, объектами в которой являются отделения ГВКГ, а параметрами  -  установленные ГВМУ показатели для оценки эффективности использования коечного фонда (Таблица 2.1).

В  методических  рекомендациях Министерства здравоохранения РФ даются следующие статистические  показатели использования коечного фонда госпиталя (лечебного отделения):


1. Среднее число развернутых коек:

#.

2. Среднее число занятых коек:

#.

3. Показатель использования плановой коечной мощности отделения (%):

#


4. Показатель использования фактической коечной мощности отделения (%):

#

5. Среднее число дней занятости койки:

#

6. Оборот койки:

#

7. Средняя длительность пребывания больного на койке:

#.

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

Используя  вышеописанный массив показателей, мы рассчитываем матрицу парных корреляций (в таблице 2.2), которая показывает тесноту линейной стохастической  связи между признаками исследуемых объектов. На ее основе, используя изложенный выше алгоритм, получаем вклады главных компонент в общую дисперсию процесса (таблица 2.3).

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

Характер вклада главных компонент в общую дисперсию процесса представлен в таблице 2.4.

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

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

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

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

Данную главную компоненту было решено интерпретировать как «реализованная мощность» отделения.

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

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

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

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

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

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

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

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

2.3 Программная реализация

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

2.3.1 Выбор средств программирования

Для написания программы была выбрана интегрированная система программирования Borland C++ Builder [2.4] и объектно‑ориентированный язык C++, так же использовался компилятор С++ 5.02 фирмы Borland и язык программирования С++ [5]. Эти средства позволяют создавать прикладные программы, предназначенные для работы на ПЭВМ IBM PC AT под управлением оболочки Windows 95 и более поздних версий, а так же операционной системы Windows NT и использующие общепринятые для Windows элементы пользовательского интерфейса. Программы такого типа в настоящее время признаны в качестве стандарта ПП, поскольку наиболее широко распространены, удобны для пользователей и не требуют долгого их обучения.

Предпочтение было отдано системе Borland C++ Builder благодаря тому, что она позволяет программисту очень быстро и удобно разрабатывать пользовательский интерфейс. Это свойство особенно ценно из-за того, что, как показывает практика, работа над интерфейсом занимает бóльшую часть (до 80%) времени создания ПП. Еще одним преимуществом выбранной системы является высокая (по сравнению со многими другими средствами программирования) эффективность генерируемого  компилятором кода, что весьма существенно для данного ДП, т.к. в нем применяется метод, требующий большого количества вычислений.

2.3.2 Описание программного продукта

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

·         ввод входного массива статистических данных из файла в формате Excel 5.0;

·         редактирование данных в таблице;

·         работа с буфером обмена операционной системы;

·         сохранение данных в файле формата MS Excel 5.0 ;

·         нормирование данных;

·         расчет корреляционной матрицы признаков объектов;

·         расчет матрицы связей параметров объектов с главными компонентами;

·         расчет вклада главных компонент в общую дисперсию;

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

·         формирование отчета о результатах расчетов в формате листа MS Excel 5.0;

·         настройка параметров выводимого отчета.


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

В документацию к ПП на КЗ “Оценка эффективности функционирования военно-медицинского учреждения” входят Программа и методика испытаний, Руководство системного программиста, Руководство программиста, Руководство оператора и тексты исходных модулей программы. Программная документация на КЗ “Оценка эффективности функционирования военно-медицинского учреждения” разработана в соответствии с требованиями ГОСТ 19.301-76, ГОСТ 19.503-79 и ГОСТ 19.504-79.

Эти документы приведены в приложении 2 к настоящему дипломному проекту.

2.3.4 Результаты опытной эксплуатации КЗ “Оценка эффективности функционирования военно-медицинского учреждения” и технические предложения по его развитию

Опытная эксплуатация разработанного МО КЗ и ПП показала, что он соответствует требованиям ТЗ на данный комплекс и решает поставленную перед ним задачу.

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

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

Выявлены следующие недостатки КЗ (большинство из которых предполагалось заранее):

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


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

Таблица 2.1. Исходные данные. Показатели функционирования отделений госпиталя

Таблица 2.2. Матрица парных корреляций показателей

Таблица 2.3. Вклад главных компонент в общую дисперсию процесса

Таблица 2.4. Характер связи главных компонент с показателями работы отделений

Таблица 2.5.  Главные компоненты отделений, ранжированных по первой главной компоненте

Таблица 2.6. Главные компоненты отделений, ранжированных по второй главной компоненте

Таблица 2.7.  Главные компоненты отделений, ранжированных по третьей главной компоненте

Таблица 2.8.  Главные компоненты отделений, ранжированных по  главной компоненте

Выводы по главе 2

В данной главе решены следующие задачи:

1. Выполнена постановка задачи на разработку КЗ “Оценка эффективности функционирования военно-медицинского учреждения”

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

3. Разработано МО и ПО КЗ “Оценка эффективности функционирования военно-медицинского учреждения”.

4. Разработанный математический аппарат признан пригодным для автоматизации проводимых в медицинской части ГВКГ им. академика Бурденко работ по повышению эффективности функционирования госпиталя.

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

ГЛАВА 3. МАТЕМАТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ПРИКЛАДНЫХ ЗАДАЧ

3.1. Деловая игра по курсу "Гражданская оборона"

3.1.1. Постановка задачи и ее спецификация

Гражданская оборона (ГО) Российской Федерации (РФ) - это составная часть системы общегосударственных мероприятий,  проводимых в целях защиты населения и обеспечения устойчивой работы отраслей и хозяйственных объектов государства в условиях применения противником в военное время оружия массового поражения, а так же для спасательных и неотложно-восстановительных  работ в очагах поражения и зонах катастрофических разрушений в результате стихийных бедствий.

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

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

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

Основная задача обучения в  высших  учебных  заведениях  по курсу ГО  - дать студентам теоретическую основу для осуществления мероприятий ГО на объектах народного хозяйства. Компьютеризация всех  сфер народного хозяйства предоставляет широкие возможности по использованию средств вычислительной техники в сфере обучения . Возникает потребность в разработке АРС (Автоматизированной расчетной системы),  одним из возможных применений которой является использование ее студентами при выполнении лабораторных работ по курсу "Гражданская оборона".  Предполагается, что студент предварительно знакомится со справочной информацией по работе, получая необходимые сведения  о  цели  работы,  составе входных и выходных параметров, а также о методике расчета. После этого студент производит необходимые измерения и вводит данные в систему, которая выдает рассчитанные значения параметров.

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

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

Тему "Землетрясения.Общая характеристика"  разрабатывает Р. Чихирев.

Тему "Землетрясения.Распространение СДЯВ" разрабатывает В. Базин.

Тему "Землетрясения.Распространение пожаров"  разрабатывает Р. Баймеев.                 

Тему "Землетрясения.Взрывы ГВС"   разрабатывает  А.Сачков.

Таким образом, в соответствии с заданием кафедры охраны труда в КДП СКБ‑2 разработана АРС по моделированию и исследованию вышеописанных процессов.

 АРС представляет собой комплекс однотипных программ для ЭВМ IBM PC   486 (структура системы изображена на рис.3.1 на стр. __):

Каждая программа обеспечивает расчет и моделирование зависимостей выходных параметров  от входных.

Работа с системой предполагает выполнение студентами ряда лабораторных работ с использованием этих программ (темы работ соответствуют названиям программ). Для каждой лабораторной работы членами СКБ‑2 написаны методические указания.

Проектирование АРС проводилось под автором (ответственным по Гражданской обороне).

3.1.2. Характеристика землетрясений

Землетрясение - это колебание земной поверхности при прохождении волн от подземного источника энергии. Землетрясения наиболее опасные и разрушительные стихийные бедствия. По самым скромным подсчетам все происшедшие только в нашем столетии землетрясения унесли около одного миллиона жизней [14, 16].

3.1.2.1. Механизм землетрясения

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

Землетрясение начинается в некоторой точке и затем распространяется в стороны от нее. Место, в котором начинается вспарывание, называется фокусом землетрясения или гипоцентром, а точка на поверхности Земли точно над гипоцентром - эпицентром . Расстояние от поверхности Земли до гипоцентра, называемое глубиной очага, может быть от нескольких километров до нескольких сотен километров. Самый глубокий из известных толчков произошел на глубине около 720 км под морем Флорес. Наибольшие разрушения приносят мелкофокусные землетрясения, очаги которых расположены непосредственно под земной поверхностью. Часто сильные мелкофокусные землетрясения сопровождаются многочисленными землетрясениями меньшей силы в течение нескольких часов и даже нескольких месяцев. Так, в 1965 году после сильного землетрясения, происшедшего 4 февраля на Крысьих островах (в архипелаге Алеутских островов), в течение 24 дней произошло 750 мелких землетрясений (афтершоков). Некоторым землетрясениям предшествуют предварительные толчки из очаговой области - их называют форшоками [16].

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

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

3.1.2.2. Сейсмические волны

Cуществует два основных типа сейсмических волн - объемные волны, распространяющиеся в объеме Земли и подобные звуковым волнам, и поверхностные волны, идущие вдоль земной поверхности, подобно морским волнам [15].

Объемные волны образуются непосредственно при вспарывании пород. Они излучаются в окружающую среду во всех направлениях, ослабевая по мере удаления от источника. Существует два типа объемных - это первичные (primary), или продольные (Р-волны), и вторичные (secondary), или поперечные (S-волны). Продольные при своем распространении попеременно давят на горные породы (сжимают их) или создают в них разряжение, растягивают их. Поперечные волны при распространении сдвигают частицы вещества в стороны, под прямым углом к направлению своего пути. Скорость распространения этих двух типов волн неодинакова. Продольные волны проходят около 8 км/с, а поперечные волны - лишь    4,5 км/с. В большинстве случаев при землетрясениях продольные волны ощущаются первыми. Их действие похоже на удар воздушной волны, которая создает грохот и треск дребезжащих стекол в окнах. Спустя несколько секунд приходят поперечные волны, которые раскачивают все на своем пути вверх-вниз и из стороны в сторону, смещая поверхность грунта как по вертикали, так и по горизонтали. Именно эти колебания и приводят к наибольшему повреждению построек.

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

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

3.1.2.3. Интенсивность и магнитуда землетрясения

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

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

Условно землетрясения подразделяются на слабые (1-4 балла), сильные (5-7 баллов) и сильнейшие (разрушительные - восемь баллов и более).

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

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

Три балла. Землетрясение слабое. Колебания заметно ощущаются в помещениях: раскачиваются подвешенные предметы, открытые двери. Чувствуется вибрация, как от прошедшей поблизости грузовой автомашины. Можно оценить длительность сотрясения.

Четыре балла. Умеренное землетрясение. Оно ощущается многими, кто находится в помещении, и лишь немногими - на открытом воздухе. В ночное время некоторые спящие просыпаются. Раскачиваются подвешенные предметы, дребезжат окна, хлопают двери, звенит посуда, трещат деревянные стены и каркасы.

Пять баллов. Довольно сильное землетрясение. Ощущается почти всеми, просыпаются спящие. Двери раскачиваются на петлях, закрываются, открываются, стучат ставни. Жидкость в сосудах колеблется, иногда расплескивается. Бьется часть посуды, трескаются стекла в окнах, местами появляются трещины в штукатурке, опрокидывается неустойчивая мебель. Маятниковые часы останавливаются, начинают идти, изменяют ход. Иногда качаются деревья и столбы.

Шесть баллов. Сильное землетрясение. Ощущается всеми. Многие в испуге выбегают из домов. Походка становится неустойчивой. Бьются окна, тарелки, стеклянная посуда. Книги, отдельные предметы падают с полок. Падают картины. Приходит в движение и опрокидывается мебель. Появляются трещины в штукатурке и кладке. Заметно сотрясаются деревья и кусты, слышен шелест листьев.

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

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

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

Десять баллов. Уничтожающее землетрясение. Большая часть построек разрушается до основания. Обрушиваются некоторые хорошо построенные деревянные здания и мосты. Серьезно повреждаются плотины, дамбы и насыпи. На земной поверхности появляются многочисленные трещины. Возникают большие оползни, вода выплескивается из каналов, рек, озер и т. д. Приходит в движение песчаный и глинистый грунт на пляжах и низменных участках. Слегка изгибаются рельсы на железных дорогах. Ломаются ветки и стволы деревьев. Животные мечутся и кричат.

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

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

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

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

Способ определения такой меры был найден профессором Калифорнийского технического университета Ч. Рихтером, который изобрел в 1935 году шкалу магнитуд землетрясений.

Магнитуда - это мера полной энергии сейсмических волн. Разработанная Рихтером количественная шкала для оценки энергии очага (или интенсивности в очаге) землетрясения по своей идее сродни той, которая используется астрономами для градуировки звезд по шкале звездных величин. Рихтер определил магнитуду как число, пропорциональное десятичному логарифму амплитуды (выраженной в микрометрах) наиболее сильной волны, записанной стандартным сейсмографом на расстоянии 100 км от эпицентра землетрясения. Магнитуда может изменяться от 0 до 8,8. Если магнитуда оказывается больше на единицу, это означает, что амплитуда волн данного землетрясения возросла в 10 раз.

Магнитуда Рихтера тесно связана с энергией, высвобождающейся при землетрясении, но связь эта не вполне прямая, так как используется «логарифмическая» шкала. Ее равновеликим делениям соответствуют постоянно возрастающие количества энергии: повышение магнитуды (М) на единицу соответствует увеличению количества выделенной энергии примерно в 30 раз. Следовательно, при толчке с  М = 5 высвобождается в 30 раз больше энергии, чем при М = 4, и в 900 раз больше, чем при М = 3.

Сильными считаются землетрясения, магнитуды которых равны 5-6 единицам (6-8 баллов). В нашем столетии всего несколько землетрясений, записанных сейсмографами, имели магнитуду 8,3-8,8 (11-12 баллов) [15].

В среднем во всем мире ежегодно происходит одно землетрясение с магнитудой 8 и выше.

3.1.3. Вторичные поражающие факторы землетрясений

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

- распространение СДЯВ и воздействия их на окружающую среду и людей;

- оценка распространения пожаров;

- взрывы газовоздушной смеси.

3.1.3.1. Распространение и характеристика СДЯВ                

Хлор ­­ ¾   зеленовато-желтый газ  с резким запахом. Порог  восприятия  ¾  0,003  мг/л. ПДК в рабочей  зоне  ¾  0,001 мг/л. Следовательно , если чувствуется резкий запах , то работать без средств защиты уже опасно. Хлор в 2,5 раза тяжелее воздуха, поэтому облако хлора перемещается по направлению ветра близко к земле. Температура кипения  - 34,6°  С, следовательно даже зимой хлор находится в газообразном состоянии. Хранится в жидком состоянии под давлением. При испарении  на воздухе, хлор образует с водяными парами белый туман.

Поражающая    концентрация при экспозиции 1 ч. ¾ 0,01 мг/л,  поражающая токсидоза ¾ 0,6 мг*мин/л.

Защита: промышленные противогазы марки «В»  и  «М», гражданские  ГП-5, при  концентрациях  свыше 8,6 мг/л  ¾ изолирующие противогазы.

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

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

Аммиак  — бесцветный газ с запахом нашатыря. Порог восприятия — 0,037 мг/л. ПДК в рабочей зоне — 0,02 мг/л. Температура кипения — 33.3° C. Хранится в жидком состоянии под давлением. Поражающая токсидоза — 15 мг/л. Хорошо растворяется в воде.

Защита:  промышленные противогазы марки «К» и «М»;  ГП-5, при высоких концентрациях — изолирующие противогазы и защитная одежда.

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

Дегазацию производят кислотными растворами, нейтрализацию водой.

Подробная характеристика СДЯВ и меры защиты изложены в аварийных карточках.

3.1.3.2. Химическая обстановка на местности в случае разрушения емкостей со СДЯВ

При заблаговременном прогнозировании для сейсмических районов за величину выброса  принимают общий запас СДЯВ; метеорологические условия: вертикальная устойчивость атмосферы — инверсия, скорость ветра уземли м/c, направление ветра.

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

Исходные данные: тип и количество СДЯВ на объектах, физико-химические свойства, токсичность, условия хранения, метеоусловия, топографические условия местности.

3.1.3.3. Глубина, ширина и площадь заражения СДЯВ

Глубина

#

где  G — суммарнаая доза СДЯВ на ХОО, кг; D=C*T — токсодоза , мг*мин/л,  С — поражающая концентрация, мг/л, Т — время экспозиции, мин.            Dхлор=0,6 мг*мин/л; Dаммиак=15 мг*мин/л; V — скорость ветра в приземном слое, м/с.

Ширина:  Ш=К1*Г, м.

Площадь: S=0,5*Г*Ш, кв.м,

где  К1, К2, К6 — коэффициенты, учитывающие состояние атмосферы;             К3, К4 — учитывают условия хранения и топографические условия местности;              К5 — учитывает влияние скорости ветра на продолжительность поражающего действия СДЯВ.




Таблица 3.1.1.  Значения коэффициентов

Вертикальная устойчивость атмосферы


Инверсия

Изотермия

Конвекция

К1

0,03

0,15

0,8

К2

1

1/3

1/9

К6

2

1,5

1,5

Хранилище СДЯВ



Открыто

Обваловано

К3

1

2/3

                tT

Хлор

1,3 ч.

22 ч.


Аммиак

1,24 ч.

20 ч.

Местность


Открытая

Закрытая

                                       К4

1

1/3

V, м/с

1

2

3

4

5

6

К5

1

0,7

0,55

0,43

0,37

0,32

3.1.3.4 Время подхода зараженного воздуха к объекту

#,

где L — расстояние от места аварии до объекта

#—   скорость переноса облака СДЯВ, м/с.            

Продолжительность поражающего действия СДЯВ:

#ч, где tт —  время испарения СДЯВ при V=1м/с.

Граница возможных ОХП


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


Возможные потери людей в ОХП


              Потери рабочих и служащих, населения и личного состава формирований зависят от численности людей, своевременного их оповещения, степени защищенности и умения использовать СИЗ.

Таблица 3.1.2. Возможные потери рабочих, служащих и населения от СДЯВ в очаге поражения, %

Условия нахождения

без противогазов

людей, обеспеченных противогазами %

людей


20

30

50

60

70

90

100

На открытой местности

90-100

75

65

50

40

35

18

10

В простейших укрытиях, зданиях

50

40

35

27

22

18

9

4

3.1.4.1. Оценка возникновения и развития  пожаров

Вероятность возникновения и распространения пожаров


               Вероятность возникновения и развития пожаров зависит от:

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

               -  категории пожароопасности на предприятиях;

               -  плотности застройки;

               -  расстояния между зданиями и сооружениями;

               -  погодных условий.

                Под плотностью застройки П понимают отношение суммарной площади Sп,занимаемой всеми зданиями, к площади территории объекта Sт:

#

                 При плотности застройки до 7% пожары не распространяются, при плотности застройки от 7% до 20% — возможны отдельные пожары , свыше  20% — возможны сплошные пожары.

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


Таблица 3.1.3.   Зависимость вероятности распространения пожара (В) от плотности застройки (П)

В,%

12

45

63

75

88

100

П,%

10

20

30

40

50

60

Таблица 3.1.4.  Зависимость вероятности распространения пожара (В) от расстояния (L) между зданиями

В,%

100

87

66

47

27

23

9

3

2

L,%

0

5

10

15

20

30

40

50

70

Оценка пожарной обстановки при разрушении емкостей с пропаном

При разрушении емкостей со сжиженными углеводородами (пропан, бутан, нефтяной газ и др.), которые хранятся под высоким давлением, происходит их выброс в атмосферу, вскипание с быстрым испарением и образованием облака газовоздушной смеси (ГВС).

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

Интенсивное (дефлаграционное) горение с образованием огненного шара возникает, если облако ГВС переобогащено топливом (более 9,5% для пропана). При этом тепловой импульс от огненного шара может вызвать загорание элементов объекта.

3.1.5. Оценка воздействия взрыва ГВС на элементы объекта

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

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

#,

где Q —  масса сжиженного газа, т.

Избыточное давление в зоне детонации принимается постоянным и равным  DP=1700 кПа.

Радиус зоны поражения продуктами взрыва: R2=1,7*R1.

Избыточное давлление в зоне действия продуктов взрыва изменяется от 1350 до 300 кПа и определяетсчя по формуле:

# кПа,

где R —  расстояние от центра взрыва до рассматриваемой точки  (элемента объекта) , м.

Для расчета избыточного давления в зоне действия воздушной ударной волны  предварительно определяется относительная величина

#,

при  #

#

при  #

#

3.1.6. Рекомендации

До землетрясения применяют следующие способы уменьшения потерь:

- сейсмостойкое проектирование сооружений;

- укрепление существующих построек и оборудования;

- планирование землепользования и районирование территории;

- готовность к стихийным бедствиям;

- обучение и тренировка населения;

- предсказания и предупреждения землетрясений.

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


3.2. Автоматизированная система по курсу «Экология и охрана труда»

3.2.1. Постановка задачи и ее спецификации

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

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

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

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

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


Тему "Постановка лабораторных работ исследования загрязнения выбросами из узкого отдельно стоящего здания"  разрабатывает Р. Чихирев.

Тему "Постановка лабораторных работ исследования загрязнения выбросами из широкого отдельно стоящего здания" разрабатывает В. Базин.

Тему "Постановка лабораторных работ исследования загрязнения выбросами из группы зданий"  разрабатывает Р. Баймеев.                 

Тему "Постановка лабораторных работ исследования безопасности электрических установок с изолированной нейтралью с компенсацией емкостных токов"   разрабатывает  А.Сачков.

Таким образом, в соответствии с заданием кафедры охраны труда в КДП СКБ‑2 разработана АОС по моделированию и исследованию вышеописанных процессов.

 АОС представляет собой комплекс однотипных программ для ЭВМ IBM PC AT  286 (структура системы изображена на рис.3.2.1 на стр. __):

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

Работа с системой предполагает выполнение студентами ряда лабораторных работ с использованием этих программ (темы работ соответствуют названиям программ). Для каждой лабораторной работы членами СКБ‑2 написаны методические указания.



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

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

3.2.1.2. Постановка задачи оценки безопасности в электроустановках

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

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

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

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


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

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

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

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

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

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

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

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

3.2.2. Обоснование проектных решений

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

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

получить меню для выбора одной из работ для выполнения;

закончить работу в АРС.

ввести исходные данные

провести расчет

посмотреть сгенерированный расчет

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

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

- IBM PC AT 286 или совместимая ПЭВМ;

- объем оперативной памяти не менее 640 К;

- требуется  наличие  свободного  места на жестком диске не менее 3Мб;

- операционная среда MS-DOS 5.0 и выше.

Тексты программы приведены в Приложении  5.


3.2.2.1. Математическая модель определения степени загрязнения атмосферы

3.2.2.1.1. Обозначения используемые при построении математической модели

С, Сх, Су SYMBOL 150 \f "Times New Roman" \s 12– концентрация вредных веществ в наружном воздухе, мг/м3;

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

k - безразмерный коэффициент, учитывающий влияние возвышения устья источника на уровень загрязнения ;

v - расчетная скорость ветра, принимаемая по рекомендации Главного санитарно-эпидемиологического управления равной 1м/с;

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

1 - длина здания (размер, перпендикулярный направлению ветра), м;

b - ширина здания (размер вдоль направления ветра), м;

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

S, S1, S2, S3, S4 - вспомогательная безразмерная величина, позволяющая определять концентрации вредных веществ на расстоянии у, м, по перпендикуляру от оси факела выброса из точечных источников;

b1 - расстояние в пределах крыши широкого здания от его наветренной стороны до точки, в которой определяется концентрация, м;

b2 - расстояние в пределах крыши широкого здания от источника до точки, в которой определяется концентрация, м;

L - количество газовоздушной смеси, выбрасываемой из источника м3/с;

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

b3 - расстояние в пределах крыши широкого здания от источника до заветренной стены здания, м; # - относительная высота здания, равная

(Н-1,8Нзд)/(Нгр-1,8Нзд)

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

(Н-Нзд)/(Нгрзд)

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

Нгр - предельная высота низких источников, м;

X1 - расстояние между зданиями.


3.2.2.1.2 Область применения расчетных формул

При расчете степени загрязнения, решении различных вопросов по сокращению выбросов и выборе мест расположения приемных отверстий систем вентиляции и кондиционирования воздуха необходимо учитывать возникновение вблизи зданий при обтекании их воздушным потоком циркуляционных (замкнутых плохо проветриваемых) зон. При обтекании воздушным потоком узкого здания над и за ним возникает единая циркуляционная зона, распространяющаяся от заветренной стены здания на расстояние шесть его высот (6 Нзд). Высота этой зоны в среднем составляет 1,8 Нзд. При обтекании воздушным потоком широкого здания над ним возникает наветренная циркуляционная зона длиной 2,5 Нзд и высотой 0,8 Нзд, а за ним - заветренная циркуляционная зона длиной 4 Нзд и высотой около Нзд. При обтекании воздушным потоком группы зданий между двумя смежными зданиями возникает межкорпусная циркуляционная зона длиной до 10 Нзд, если первое по потоку здание узкое и до 8 Нзд, если первое по потоку здание широкое. При больших межкорпусных расстояниях здания можно рассматривать как отдельно стоящие.

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

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

для узкого отдельно стоящего здания

Нгр = 0.36b3+2.5Нзд ,                                                              (3.2.2.1)

для широкого отдельно стоящего здания

Нгр = 0.36b3+1.7Нзд  ,                                                             (3.2.2.2)

для группы зданий

Нгр = 0.36(bз+x1)+Нзд  ,                                              (3.2.2.3)

где bз - расстояние от источника, расположенного в пределах крыши, до заветренной стены здания.

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

Загрязнение, создаваемое низкими источниками, рассчитывают в соответствии с "Руководством по расчету загрязнения воздуха на промышленных площадках", разработанным ЦНИИПромзданий и ВЦНИИОТ в 1975 г.

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

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

Узкое отдельно стоящее.

В единой циркуляционной зоне или над ней.

В единой циркуляционной зоне при 0<х<6Нэд


#;

#;                                  (3.2.2.4 a)

#;


Вне циркуляционной зоны за зданием при х>6Нзд


#;

#;                                                                                         (3.2.2.4 б)

#.


Широкое отдельно стоящее


 На крыше в наветренной циркуляционной зоне при b1SYMBOL 163 \f "Symbol" \s 12Ј2,5Hзд


#

#;                                                              (3.2.2.5 a)

#;


 На крыше вне наветренной циркуляционной зоны при b1SYMBOL 179 \f "Symbol" \s 12і2,5Hзд


#;

#;                                                                                        (3.2.2.5 б)

#.


 В заветренной циркуляционной зоне при 0<хSYMBOL 163 \f "Symbol" \s 12Ј4Нзд


#;

#;                                                                                         (3.2.2.5 в)

#;


Вне заветренной циркуляционной зоны за зданием при x>4Нзд


#;

#;                                                                                         (3.2.2.5 г)

#

Вне наваренной циркуляционной зоны над крышей при # <0,3.

На крыше вне наветренной циркуляционной зоны при b1>2,5H~


#;

#;                                                                                         (3.2.2.6 а)

#;

В заветренной циркуляционной зоне при 0<х<4Нзд


#;

#;                                             (3.2.2.6 б)

#;

Вне заветренной циркуляционной зоны за зданием при х>4Нзд


#;

#;                                                                                         (3.2.2.6 в)

#;

Вне наветренной циркуляционной зоны над крышей при #>0,3

На крыше вне наветренной циркуляционной зоны при b1SYMBOL 179 \f "Symbol" \s 12і2,8(Н-Нзд)

и у<(Н-Hзд)

#;

#;                                                                                 (3.2.2.7 а)


В заветренной циркуляционной зоне при 0<х<4Нэд


#;

#;                                                                                         (3.2.2.7 б)

#;


Вне заветренной циркуляционной зоны за зданием при х>4Нзд


#;

#;                                                                                          (3.2.2.7 в)

#;


В заветренной циркуляционной зоне или над ней.


В заветренной циркуляционной зоне при 0<хSYMBOL 163 \f "Symbol" \s 12Ј4Нзд

 

#;

#;                                               (3.2.2.8 а)

#;


Вне заверенной циркуляционной зоны за зданием при х>4Нзд


#;

#;                                                                                          (3.2.2.8 б)

#;

Группа зданий


В наветренной циркуляционной зоне первого по потоку широкого здания

В межкорпусной циркуляционной зоне при Нзд<x1SYMBOL 163 \f "Symbol" \s 12Ј4Нзд

#;

#;                                                                                          (3.2.2.9 а)

#;

В межкорпусной циркуляционной зоне при 4Нзд<x1SYMBOL 163 \f "Symbol" \s 12Ј8Нзд

#;

#;                                                                                          (3.2.2.9 б)

#;

Вне наветренной циркуляционной зоны первого по потоку широкого здания на крыше при #<0,3

В межкорпусной циркуляционной зоне при Нзд<x1SYMBOL 163 \f "Symbol" \s 12Ј4Нзд

#;


#;                                            (3.2.2.10 а)

#

В межкорпусной циркуляционной зоне при 4Нзд<x1SYMBOL 163 \f "Symbol" \s 12Ј8Нзд

#;

#;                                          (3.2.2.10 б)

#;


Вне наветренной циркуляционной зоны первого по потоку широкого здания на крыше при #>0,3

В межкорпусной циркуляционной зоне при Нзд<x1SYMBOL 163 \f "Symbol" \s 12Ј4Нзд

 

#;                                            (3.2.2.11 а)

#;


В межкорпусной циркуляционной зоне при 4Нзд<x1SYMBOL 163 \f "Symbol" \s 12Ј8Нзд

 

#;                                            (3.2.2.11 б)

#;


В межкорпусной циркуляционной зоне при первом по потоку широком здании и #<0,3

В межкорпусной циркуляционной зоне при Нзд<x1SYMBOL 163 \f "Symbol" \s 12Ј4Нзд

#;

#;                                              (3.2.2.12 а)

#;

В межкорпусной циркуляционной зоне при 4Нзд<x1SYMBOL 163 \f "Symbol" \s 12Ј8Нзд

 

#;

#;                                            (3.2.2.12 б)

#;

Над межкорпусной циркуляционной зоной при первом по потоку широком здании и #>0,3

В межкорпусной циркуляционной зоне при Нзд<x1SYMBOL 163 \f "Symbol" \s 12Ј4Нзд

 

#;                                            (3.2.2.13 а)

#;

В межкорпусной циркуляционной зоне при 4Нзд<x1SYMBOL 163 \f "Symbol" \s 12Ј8Нзд


#;                                            (3.2.2.13 б)

#;

В межкорпусной циркуляционной зоне или над ней при первом по потоку узком здании

В межкорпусной циркуляционной зоне при Нзд<x1SYMBOL 163 \f "Symbol" \s 12Ј6Нзд

 

#;

#;                                        (3.2.2.14 а)

#;

В межкорпусной циркуляционной зоне при 6Нэд<Х1<10Нзд

#;

#;                                       (3.2.2.14 б)

#;

За расчетное принимают направление ветра, перпендикулярное продольной стороне здания.

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

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

Понижающие коэффициенты S, S1, S2, S3 и S4, вводимые при выборе мест воздухозаборов и решении других задач, связанных с определением концентраций, подсчитывают по формулам:


#;

#;

#;                                                                              (3.2.2.15)

#;

#;

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


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

3.2.2.2.1. Обозначения используемые при построении математической модели

Rh – сопротивление тела человека, Ом;

Uф – фазное напряжение, В;

Uл – линейное напряжение сети, В;

С1, C2, C3, СН– емкость проводников относительно земли, Ф;

r1, r2, r3 – активные составляющие сопротивлений фаз относительно земли, Ом;

xL =  wL - индуктивное сопротивление заземления нейтрали, Ом;

xC C – емкостное сопротивление провода относительно земли, Ом;

f – угловая частота тока, с-1;

f  - частота тока, Гц;

L – индуктивность компенсирующего устройства.

3.2.2.2.2. Расчетные формулы для оценки электробезопасности

Воспользуемся для расчетов символическим методом. Вначале рассмотрим прикосновение человека к фазному проводу трехфазной четырех проводной сети, у которой нейтраль заземлена через активное и индуктивное сопротивления r0 и xL(Рис. 3.2), а сопротивления изоляции проводов r, Ом, относительно земли, так же как и емкости проводов С, Ф, относительно земли не равны между собой.

Полные проводимости, См, изоляции фазных и нулевого проводов относительно земли Y1,Y2,Y3,YН  и заземления нейтрали Y0 в комплексной форме равны

#

 

а полная проводимость тела человека

#

При прикосновении человека к одной из фаз, например к фазе 1 (Рис. 3.1), напряжение прикосновения, В, определится выражением

#

а ток, проходящий через тело человека, А, будет равен

#

где U1- комплексное напряжение фазы 1 (фазное напряжение), В; U0 – комплексное напряжение между нейтралью источника тока и землей, В.

#

С учетом того, что для симметричной трехфазной системы

#

где a – фазный оператор трехфазной системы, учитывающий сдвиг фаз:

#

будем иметь

#

Подставив это значение в формулу (3.  ) , получим уравнение напряжения в комплексной форме, В, приложенного к телу человека, прикоснувшегося к фазе 1 трехфазной четырехпроводной сети с нейтралью, заземленной через активное и индуктивное сопротивления:


#

Ток, проходящий через человека, получим, если умножим это выражение на Yh:

#


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

#

где Rк- активное сопротивление компенсирующего устройства;

Lк – индуктивность компенсирующего устройства.

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


На АРС "Охрана труда" разработан документ "Руководства оператора" (Р. МИРЭА.00003-01 34 01).

Документ оформлен  в соответствии с ГОСТ 19.505-79 и содержит следующие разделы:

·         назначение программы;

·         условия выполнения программы;

·         выполнение программы;

·         сообщения оператору.

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

Руководство оператора приведено в Приложении 5.


3.2.4. Результаты опытной эксплуатации системы и технические предложения по её развитию

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

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

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

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


3.3  Автоматизированная обучающая система по курсу экономики

3.3.1 Постановка задачи и ее спецификация

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

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

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

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

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

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

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

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

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

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

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

Далее, поскольку анализ  «Издержки-Объем-Прибыль» требует разделения издержек на переменные и постоянные, при аналитических расчетах  необходимо отделять одни издержки от других с помощью промежуточного финансового результата деятельности предприятия. Эту величину принято называть валовой маржей, результатом от реализации после возмещения переменных затрат суммой покрытия. Одной из главной целей менеджмента является максимизация валовой маржи, поскольку именно она является источником покрытия постоянных издержек и формирования прибыли.

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

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

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

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

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

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


Алгоритм расчета порога рентабельности, запаса финансовой прочности и силы воздействия  операционного рычага

1.   Валовая маржа:

            (Выручка от реализации) - (Переменные издержки)

2.   Коэффициент валовой маржи

            (Валовая маржа) / (Выручка о реализации)

3.   Точка безубыточности:

            (Постоянные издержки) / (Коэффициент валовой маржи)

4.   Запас финансовой прочности:

            (Выручка от реализации) - (Точка безубыточности)

5. Прибыль:

            (Запас финансовой прочности) * (Коэффициент валовой маржи)

6. Сила воздействия операционного рычага:

            (Валовая маржа) / (Прибыль)

3.3.2. Обоснование проектных решений

Разрабатываемый модуль должен обеспечивать:

1) Расчет точки безубыточности;

2) Расчет эффекта экономического рычага;

3) Расчет запаса финансовой прочности;

4) Факторный анализ точки безубыточности.

5) Интерактивный, полноэкранный режим работы;

6) Протоколирование сеанса.


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

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

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

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

Также в соответствии с требованиями к системе,  изложенными выше, были  выбраны и программные средства для разработки системы. Было решено проводить разработку в системе MSM Workstation 2.0 Пользовательский диалог в стиле Windows знаком многим пользователям  ПЭВМ,  удобен  в работе , требует распространенной среды MS Windows, не требует для своей работы мощных аппаратных средств.

Более подробно  требования к аппаратным средствам сформулированы ниже:

- персональная ЭВМ,  совместимая с IBM PC AT с  тактовой частотой процессора не ниже 40 МГц;

- наличие цветного графического адаптера VGA;

- оперативная память не менее 8 МБайт;

- наличие операционной системы MS Windows.

- наличие жесткого диска и дисководов для флоппи-дисков.



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

Анализ точки безубыточности включает следующие блоки:

*         Расчет точки безубыточности;

*         Расчет эффекта экономического рычага;

*         Расчет запаса финансовой прочности;

*         Факторный анализ точки безубыточности.

Перед СКБ была поставлена задача анализа точки безубыточности. Поставленная задача была разбита на модули в соответствии со структурной схемой. Модули были распределены между членами СКБ следующим образом:


ИСПОЛНИТЕЛЬ

ТЕМА

Чихирев Р.Б.

Главный конструктор

Расчет точки безубыточности.

Баймеев Р.Х.

Заместитель главного конструктора по экономической части

Расчет эффекта экономического рычага.

Разработка интерфейсной части.

Базин В.В.

Расчет запаса финансовой прочности.

Сачков А.В.

Факторный анализ точки безубыточности.


Общая структура задачи приведена на рис. 3.3.1.

Автором настоящего ДП было произведено программирование задачи.

3.3.4. Результаты опытной эксплуатации игры и технические предложения по ее развитию

Модуль анализа точки безубыточности был разработан в полном объеме и  отлажен  по  тестовым примерам расчетов. 

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

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

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

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

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

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

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

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

- модуль главного меню;

- модуль ввода параметров системы;

- модуль ввода параметров системы;

- модуль расчета точки безубыточности;

- модуль расчета эффекта экономического рычага;

- модуль расчета запаса финансовой прочности;

- модуль факторного анализа точки безубыточности;

- модуль вывода расчетных значений;

- модуль работы с выходными данными в виде графика;

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


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


Тестовые примеры работы с системой

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


Тестовый пример 1:

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


Тестовый пример 2:

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


Тестовый пример 3:

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


Тестовый пример 4:

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

Факторный анализ точки безубыточности

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


Точка безубыточности:

*         Уменьшается при увеличении розничной цены (12500руб.-11111руб.);

*         Увеличивается при увеличении переменных издержек (12500руб.-14286руб.);

*         Уменьшается при уменьшении постоянных издержек (12500руб.-6250руб.).


Запас финансовой прочности:

*         Увеличивается при увеличении розничной цены (37500руб.-88889руб.);

*         Уменьшается при увеличении переменных издержек (37500руб.-35714руб.);

*         Увеличивается при уменьшении постоянных издержек (37500руб.-43750руб.).


Сила воздействия операционного рычага:

*         Уменьшается при увеличении розничной цены (1.33-1.13);

*         Увеличивается при увеличении переменных издержек (1.33-1.40);

*         Уменьшается при уменьшении постоянных издержек (1.33-1.14).


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


Выводы  по  главе 3

         В данной главе проекта содержатся описания разработок  прикладных программных систем по курсам  Гражданская оборона, экология  и  охрана труда  и  экономика,  выполненных по заданиям соответствующих кафедр МИРЭА. Эти задания выполнены коллективом СКБ-2 дополнительно к основной работе - проектированию МО и СПО РИСК-2.

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



ГЛАВА 4. ОЦЕНКА ЭКОНОМИЧЕСКОЙ ЭФФЕКТИВНОСТИ И ПЕРСПЕКТИВЫ РАЗВИТИЯ ПРОЕКТА

4.1. Оценка экономической эффективности проекта

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

4.1.1. Затраты (калькуляция темы)

При расчете затрат на разработку ПП учитываются следующие статьи калькуляции:

- затраты на материалы, покупные изделия, полуфабрикаты;

- основная заработная плата работающих;

- дополнительная заработная плата работающих;

- отчисления на социальное страхование;

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

- прочие расходы.

Затраты по первой статье калькуляции приведены в таблице 4.1.

Затраты на покупные материалы, изделия и полуфабрикаты        Таблица 4. SEQ таблицы_гл_4 \* MERGEFORMAT 1

Транспортные расходы составляют 5% от общей суммы, что равняется 500· 0,05 = 25 руб. Полные затраты на покупные материалы, изделия и полуфабрикаты — 500 + 25 =  525 руб.

Над созданием ПП работала группа из трёх человек:

- руководитель (оклад 800 руб., стоимость рабочего дня 880 / 22 = 40 )

- главный конструктор (студент, стипендия 350 руб., стоимость рабочего дня 352 / 22 = 16),

- консультант (оклад 2200 руб., стоимость рабочего дня 2200 / 22 = 100 ). Расчет основной заработной платы исполнителей по этапам работы содержится в таблице 4.2.

Дополнительная заработная плата составляет 10% от основной: 3801 · 0,1 = 380,1 руб.

Отчисления на социальное страхование составляют 40,5% от суммы основной и дополнительной заработных плат: (3801 + 380,1) · 0,405 = 1693,34 руб.

К накладным расходам относятся затраты на управление организацией, на содержание и ремонт зданий, сооружений, инвентаря и др. Их сумму принимают равной 120% от основной заработной платы: 3801 · 1,2 = 4561,2 руб.

Прочие расходы в данном случае представляют собой стоимость аренды машинного времени. Один час машинного времени стоит в среднем 1 руб. На разработку понадобилось  1200 часов, следовательно, прочие расходы составляют 1*1200 = 1200 рублей.

Основная заработная плата. Таблица 4.2.

#


Затраты на разработку по всем перечисленным статьям приведены в таблице 4.3.

Итоги по смете затрат. Таблица 4.3.

#

4.1.2. Цена программного продукта

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

Рассчитать цену ПП можно по формуле:

#

где СПП – себестоимость ПП (равная сумме затрат), Пн-нормативная прибыль(20% от себестоимости).

Цена с учетом НДС, составляющего 20% от расчетной цены, получается равной

14678.09 1.2 =17531.43

С учетом тиража в K=20 копий – ЦТПП  = K ЦПП = 14678.09 20 =  293561.8

4.1.3. Экономическая эффективность программного продукта

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

Этг = Зс – За

где Зс — годовые затраты до внедрения ПП,

             За — годовые затраты после внедрения ПП.

До разработки ПП учет данных производился в ручную. На  анализ состояния одного больного тратится в среднем по 30 минут в день. В среднем в день необходимо обрабатывать Nг = 50 историй болезни; стоимость обработки одной истории болезни равна стоимости рабочего времени персонала. Средний оклад персонала - 500. Один час рабочего времени стоит  500/176 = 2,84 руб. Следовательно, для K рабочих мест:

Зс = (0.5 · 200 · 2,84) · 260 · 5 = 369200 руб.

Затраты на автоматизированную обработку данных в год вычисляются как

За = Nг · T1 · (Ца + Зоп)  · W · K,

где Т1 — время обработки одной истории болезни (в среднем 1ч),

 Ца — цена машинного времени (1 руб./ч),

 Зоп — заработная плата оператора за один час работы (700 / 176 = 3,98 руб./ч),

 W — количество рабочих дней в году (260),

 К — количество копий ПП.

Таким образом,  За = (50 · 1 · (1 + 3,98)) · 260 · 5 = 323700 руб.;

Этг = 369200 – 86405.1 = 292794.9 руб.

Ожидаемый годовой эффект вычисляется по формуле:

            Эг = Этг – Ен · КНИР · К,

где Ен — нормативный коэффициент эффективности капитальных вложений,

равный 0,2,

КНИР — себестоимость разработки ПП, К — количество копий ПП.

Эг = 292794.9 – 0,2 ·14179,61 · 5  = 278615,29 руб.

Наконец, эффективность разработки определяется по формуле:

Поскольку Эр >> Ен, ПП можно считать экономически эффективным, а его разработку - оправданной.

4.2. Перспективы развития РИСК II и технические предложения по его развитию

4.2.1. Перспективы развития

Направлениями дальнейшего развития и совершенствования РИСК II. является создание автоматизированной системы управления всеми медицинскими учреждениями военного ведомства.

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

4.2.2. Технические предложения

Основные направления развития и совершенствования КЗ «Оценка эффективности функционирования военно-медицинского учреждения» могут включать в себя следующие:

·         усовершенствование интерфейса пользователя;

·         интеграция с АСУ «Тонус»;

·         усовершенствование алгоритмов и оптимизация программ в целях ускорения вычислений и минимизации используемых вычислительных ресурсов ЭВМ;

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

4.2.3. Проект технического задания на следующий этап разработки

 

"СОГЛАСОВАНО"                                                  "УТВЕРЖДАЮ"

Руководитель СКБ II,                                                          Зав. кафедрой СА и ПО АСУ

к.т.н., доцент                                                             профессор

___________ В.В. Радионов                                                ________  Б.Д. Залещанский

"___"_____________ 1999 г                                     "___"____________ 1999 г



ТЕХНИЧЕСКОЕ ЗАДАНИЕ

на дипломный проект

РИСК II.  Математическое обеспечение оценки эффективности работы военного госпиталя

"СОГЛАСОВАНО"                                                  "СОГЛАСОВАНО"

Консультант по спецчасти                                      Консультант по гражданской

к. м. н.                                                                        обороне, к. т. н., доцент

___________                                                              _________  В.И. Острейко

"___"_____________ 1999 г                                     "___"_____________ 1999 г


"СОГЛАСОВАНО"                                                  "СОГЛАСОВАНО"

Консультант по охране труда,                                 Консультант по организационно-

к.т.н., доцент                                                             экономической части, к. э. н., доцент

___________  С.М. Кучерук                                    ________        Н.Д. Николаева

"___"_____________ 1999 г                                     "___"_____________ 1999 г


"СОГЛАСОВАНО"

Главный конструктор СКБ II,                                             Исполнитель, ИП-1-93

___________                                                                          ___________ 

"___"_____________ 1999 г                                     "___"_____________ 1999 г



1999



1. ВВЕДЕНИЕ

Наименование дипломного проекта —

Дипломный проект выполняется в соответствии с исходными данными, выданными руководителем и консультантами проекта.

2. ОСНОВАНИЯ ДЛЯ РАЗРАБОТКИ

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

3. НАЗНАЧЕНИЕ РАЗРАБОТКИ

3.1. Цель дипломного проекта

3.1.1.Целью дипломного проекта является разработка распределенного интеллектуального синергетического комплекса (РИСК) II.

3.2. Задачи, решаемые в дипломном проекте

3.2.1. Разработка замысла, целей, направлений и этапов разработки РИСК II, организация взаимодействия исполнителей.

3.2.2. Системный анализ и синтез РИСК II.

3.2.3. Математическое и программное обеспечение  комплекса задач “Оценка тяжести ранений”.

3.2.4. Математическое обеспечение автоматизированной обучающей системы по курсу “Гражданская оборона”.

3.2.5. Математическое обеспечение автоматизированной обучающей системы по курсу “Экология и охрана труда”.

3.2.6. Математическое обеспечение автоматизированной системы оценки финансового состояния предприятия по курсу “Экономика”.

3.2.7. Технико-экономические оценки и перспективы развития РИСК II.

ТРЕБОВАНИЯ К ПРОГРАММНОМУ ОБЕСПЕЧЕНИЮ

Требования к надежности

4.2.1. Образец программного продукта должен удовлетворять поставленным исходным данным.

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

4.2.3. Образец программного продукта должен иметь защиту от ошибок оператора в интерактивном режиме работы.

4.3. Условия эксплуатации

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


4.4. Требования к составу и параметрам технических средств

РИСК II должен строиться на базе неоднородной ЛВС с выходом в глобальные сети. Архитектура РИСК должна включать сетевые технические средства - ТСЛС, ПЭВМ семейства IBM-совместимых. В составе архитектуры должен быть предусмотрен стенд Главного конструктора.

4.5. Требования к информационной и программной совместимости

Программное обеспечение должно работать под управлением операционной системы MS Windows 95 версии 4.095 и более старших для персональных ЭВМ.

4.6. Требования к маркировке и упаковке

Требования к маркировке и упаковке определяются по ГОСТ 19.105-78.

5. ТРЕБОВАНИЯ К ПРОГРАММНОЙ ДОКУМЕНТАЦИИ

5.1. Дипломный проект должен состоять из расчетно-пояснительной записки объемом 100 страниц и графических материалов объемом 8 листов.

5.2. Расчетно-пояснительная записка должна иметь следующие составные части:

- системный анализ и синтез РИСК II;

- математическое обеспечение комплекса задач “Оценка тяжести ранений”

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

- технико-экономические оценки и перспективы развития РИСК II;

- список литературы;

- приложения.

5.3. Титульный лист, техническое задание, исходные данные и акт экспертизы оформляются в соответствии с ЕСКД, ЕСПД и требованиями кафедры в печатном виде.

5.4. Расчетно-пояснительная записка и приложения должны быть оформлены в соответствии с общими требованиями к текстовым документам по ГОСТ 2.105-79 на листах формата А4. Графические материалы должны быть выполнены на листах формата А1.

5.5. Программная документация на разрабатываемое программное обеспечение оформляется по ГОСТ 19.105-78.

6. ТЕХНИКО-ЭКОНОМИЧЕСКИЕ ПОКАЗАТЕЛИ

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

7. СТАДИИ И ЭТАПЫ РАЗРАБОТКИ

7.1. Сроки выполнения дипломного проекта: сентябрь-январь 1998/99 учебного года.

7.2. Выполнение дипломного проекта должно проводиться в одну стадию, состоящую из 22 этапов:

1 этап

03.09.98

подготовка к Государственному экзамену по специальности;

2 этап

10.09.98

подготовка к Государственному экзамену по специальности;

3 этап

17.09.98

Государственный экзамен по специальности;

4 этап

24.09.98

20%;

5 этап

01.10.98

30%;

6 этап

10.10.98

40%;

7 этап

15.10.98

50%;

8 этап

22.10.98

60%;

9 этап

29.10.98

70%;

10 этап

05.11.98

80%;

11 этап

12.11.98

90%;

12 этап

19.11.98

100%;

13 этап

26.11.98

сдача методических пособий на кафедру, доклад

14 этап

03.12.98

допуск к предварительным испытаниям;

15 этап

10.12.98

предварительные испытания;

16 этап

17.12.98

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

17 этап

24.12.98

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

18 этап

06.01.99

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

19 этап

14.01.99

сдача комплексного дипломного проекта в переплет;

20 этап

21.01.99

предзащита;

21 этап

28.01.99

допуск к защите;

22 этап

04.02.99

защита дипломного проекта.


8. ПОРЯДОК КОНТРОЛЯ И ПРИЕМКИ

Контроль осуществляется на каждом этапе в соответствии со сроками, указанными в пункте 7.

Защита дипломного проекта проводится в составе СКБ 04.02.99г.

Исполнитель ______________


ПРИЛОЖЕНИЕ 1. Техническое задание на дипломный проект


"СОГЛАСОВАНО"

"УТВЕРЖДАЮ"

Руководитель СКБ-2, к. т. н., доцент

Зав. кафедрой АСУ, профессор

___________ В.В. Радионов

___________ Б.Д. Залещанский

"___"__________ 1999 г.

"___"___________ 1999 г.





ТЕХНИЧЕСКОЕ ЗАДАНИЕ

на дипломный проект

 

 

РИСК II.    Математическое обеспечение комплекса задач «Оценка эффективности функционирования военно-медицинского учреждения»

PRIVATE"СОГЛАСОВАНО"

 

"СОГЛАСОВАНО"

Консультант по спецчасти

 

Консультант по гражданской

обороне, к.т.н., доцент

______________ Ф.А. Дикушин

 

____________ В.И. Острейко

"___"_____________ 1998 г

 

"___"_____________ 1998 г.

 

 

 

"СОГЛАСОВАНО"

 

"СОГЛАСОВАНО"

Консультант по охране труда, к.т.н., доцент

 

Консультант по организационно- экономической части, к.э.н., доцент

___________ С.М. Кучерук

 

____________ Н.Д. Николаева

"___"_____________ 1998 г

 

"___"_____________ 1998 г

 

 

 

"СОГЛАСОВАНО"

 

 

Главный конструктор СКБ III,

 

Исполнитель, АП-1-93

___________ Р.Б. Чихирев

 

___________ Р.Б. Чихирев

"___"_____________ 1998 г

 

"___"_____________1998 г

             

                                                           



1998



1. ВВЕДЕНИЕ

 

Наименование дипломного проекта – Математическое обеспечение КЗ «Оценка эффективности работы военно-медицинского учреждения».

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

 

 

2. ОСНОВАНИЯ ДЛЯ РАЗРАБОТКИ

 

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

 

 

3. НАЗНАЧЕНИЕ РАЗРАБОТКИ

3.1. Цель дипломного проекта

 

3.1.1.Целью дипломного проекта является разработка распределенного интеллектуального синергетического комплекса (РИСК) II.

 

3.2. Задачи, решаемые в дипломном проекте

 

3.2.1. Разработка замысла, целей, направлений и этапов разработки РИСК II, организация взаимодействия исполнителей.

3.2.2. Системный анализ и синтез РИСК II.

3.2.3. Математическое и программное обеспечение комплекса задач  

3.2.4. Математическое обеспечение автоматизированной обучающей системы (АОС) по курсу «Гражданская оборона».

3.2.5. Математическое обеспечение автоматизированной обучающей системы (АОС) по курсу «Экология и охрана труда».

3.2.6. Математическое обеспечение автоматизированной системы по курсу «Экономика».

3.2.7. Технико-экономические оценки и перспективы развития РИСК II.

 

 

4. ТРЕБОВАНИЯ К ПРОГРАММНОМУ ОБЕСПЕЧЕНИЮ

 

4.1.Требования к функциональным характеристикам

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

- модуль по спецчасти;

- модуль по курсу «Гражданская оборона»;

- модуль АОС по курсу экология и «Охрана труда»;

- модуль системы по курсу «Экономика».

 

4.2. Требования к надежности

 

4.2.1. Образец программного продукта должен удовлетворять поставленным исходным данным.

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

4.2.3. Образец программного продукта должен иметь защиту от ошибок оператора в интерактивном режиме работы.

4.3. Условия эксплуатации

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

 

4.4. Требования к составу и параметрам технических средств

РИСК III должен строиться на базе неоднородной ЛВС с выходом в глобальные сети. Архитектура РИСК должна включать сетевые технические средства - ТСЛС, ПЭВМ семейства IBM-совместимых. В составе архитектуры должен быть предусмотрен стенд Главного конструктора.

 

4.5. Требования к информационной и программной совместимости

Программное обеспечение должно работать под управлением операционной системы MS DOS версии 3.30 и более старших для персональных ЭВМ.

 

4.6. Требования к маркировке и упаковке

Требования к маркировке и упаковке определяются по ГОСТ 19.105-78.

  

ТРЕБОВАНИЯ К ПРОГРАММНОЙ ДОКУМЕНТАЦИИ

 5.1. Дипломный проект должен состоять из расчетно-пояснительной записки объемом 100 страниц и графических материалов объемом 8 листов.

 

5.2. Расчетно-пояснительная записка должна иметь следующие составные части:

- системный анализ и синтез РИСК II;

- математическое обеспечение автоматизированной системы управления (АСУ) для расчетов с населением за коммунальные услуги.

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

- технико-экономические оценки и перспективы развития РИСК II;

- список литературы;

- приложения.

 

5.3. Титульный лист, техническое задание, исходные данные и акт экспертизы оформляются в соответствии с ЕСКД, ЕСПД и требованиями кафедры в печатном виде.

 

5.4. Расчетно-пояснительная записка и приложения должны быть оформлены в соответствии с общими требованиями к текстовым документам по ГОСТ 2.105-79 на листах формата А4. Графические материалы должны быть выполнены на листах формата А1.

 

5.5. Программная документация на разрабатываемое программное обеспечение оформляется по ГОСТ 19.105-78.

 

 

6. ТЕХНИКО-ЭКОНОМИЧЕСКИЕ ПОКАЗАТЕЛИ

 

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

 

 

7. СТАДИИ И ЭТАПЫ РАЗРАБОТКИ

 

7.1. Сроки выполнения дипломного проекта: сентябрь-январь 1998/99 учебного года.

 

7.2. Выполнение дипломного проекта должно проводиться в одну стадию, состоящую из 22 этапов:

 

PRIVATE1 этап

1.09.98

подготовка к Государственному экзамену по специальности;

2 этап

8.09.98

подготовка к Государственному экзамену по специальности;

3 этап

15.09.98

Государственный экзамен по специальности;

4 этап

22.09.98

20%;

5 этап

29.09.98

30%;

6 этап

6.10.98

40%;

7 этап

13.10.98

50%;

8 этап

20.10.98

60%;

9 этап

27.10.98

70%;

10 этап

3.11.98

80%;

11 этап

10.11.98

90%;

12 этап

17.11.98

100%;

13 этап

24.11.98

сдача методических пособий на кафедру, доклад

14 этап

1.12.98

допуск к предварительным испытаниям;

15 этап

8.12.98

предварительные испытания;

16 этап

15.12.98

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

17 этап

22.12.98

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

18 этап

5.01.99

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

19 этап

12.01.99

сдача комплексного дипломного проекта в переплет;

20 этап

19.01.99

предзащита;

21 этап

26.01.99

допуск к защите;

22 этап

2.02.99

защита дипломного проекта.

 

8. ПОРЯДОК КОНТРОЛЯ И ПРИЕМКИ

 

Контроль осуществляется на каждом этапе в соответствии со сроками, указанными в пункте 7.

Защита дипломного проекта проводится в составе СКБ 2.02.99г.

ПРИЛОЖЕНИЕ 2. Программная документация профессиональной задачи ПРИЛОЖЕНИЕ 2. Программная документация к профессиональной задаче


УТВЕРЖДАЮ


Зав. кафедрой СА и ПО АСУ

д. т. н., проф.,


______________Б.Д. Залещанский


"___"________________ 1998 г.

           














                                   

КОМПЛЕКС ЗАДАЧ

“Оценка эффективности функционирования военно-медицинского учреждения”

Программа и методика испытаний

ЛИСТ УТВЕРЖДЕНИЯ


( дискета 3 дюйма 1440Кб )


Листов ______



                                                           


Исполнитель


___________ Р.Б. Чихирев


"____" _______________ 1998 г.




Нормоконтролер




"____" _______________ 1998 г.



1998

Литера


           

 УТВЕРЖДЕН

















КОМПЛЕКС ЗАДАЧ

“Оценка эффективности функционирования военно-медицинского учреждения”

Программа и методика испытаний




 дискета 3 дюйма 1440Кб )











Листов ______













1998

Литера



СОДЕРЖАНИЕ

1. Объект испытаний. . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . .

2. Цель испытаний. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3. Состав предъявляемой документации. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4. Технические требования. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5. Методы испытаний. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


1. ОБЪЕКТ ИСПЫТАНИЙ

Объектом испытаний является комплекс задач “Оценка эффективности функционирования военно-медицинского учреждения”

2. ЦЕЛЬ ИСПЫТАНИЙ

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

3. СОСТАВ ПРЕДЪЯВЛЯЕМОЙ ДОКУМЕНТАЦИИ

В состав документации, предъявляемой при проведении испытаний входят:

·         руководство системного программиста;

·         руководство программиста;

·         руководство оператора.

4. ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ

4.1. Требования к программной документации

Документация на программу должна быть разработана в соответствии с требованиями ЕСПД.

4.2. Требования к техническим характеристикам

Требования к совместимости:

система должна функционировать на любой ПЭВМ с архитектурой микропроцессора 80486, на которой функционирует операционная система MS Windows 95 или NT 4.0 и выше.

Программа должна предоставлять пользователю следующие услуги:

ввод входного массива статистических данных из файла в формате Excel 5.0;

редактирование данных в таблице;

работу с буфером обмена операционной системы;

сохранение данных в файле формата MS Excel 5.0 ;

нормирование данных;

расчет корреляционной матрицы признаков объектов;

расчет матрицы связей параметров объектов с главными компонентами;

расчет вклада главных компонент в общую дисперсию;

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

формирование отчета о результатах расчетов;

настройка параметров выводимого отчета.


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

ПЭВМ Intel 80486

ОС MS Windows 95

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

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

Система считается выдержавшей испытания, если содержание результатов испытаний совпадают с эталонными результатами.

5. МЕТОДЫ ИСПЫТАНИЙ

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

Содержание

проверки

Выполняемые действия

Эталонный результат

ввод входного массива статистических данных из файла в формате Excel 5.0;


при помощи команды меню «Файл»\«Открыть…» выбрать в стандартном диалоговом окне Windows нужный файл в формата Excel 5.0 \95 с расширением и нажать кнопку ОК.

Содержимое рабочей книги Excel появится в главном окне программы в виде рабочей книги с листами

редактирование данных в ячейке

подвести курсор к нужной ячейке таблицы

нажав клавишу Backspace удалить данные

ввести новое содержимое ячейки с клавиатуры

В ячейке таблицы новое содержимое

работу с буфером обмена операционной системы;

при помощи мыши выделить диапазон ячеек в таблице;

используя команды меню «Правка» вырезать или скопировать данные в буфер обмена;

используя команду меню «Правка»\«Вставить»  вставить данные в предварительно указанную мышью область рабочего листа

В месте указанном курсором появится содержимое буфера обмена

сохранение данных в файле формата MS Excel 5.0 ;


использовать команду меню «Файл»\«Сохранить»

Данные из текущей рабочей книги сохранятся в файле с указанным именем. Это можно проверить используя программу MS Excel

настройка компонент отчета

используя команду меню «Настройки»\ «Отчет…» отметить в появившемся диалоговом окне галочками те компоненты, которые Вы желаете в нем видеть в отчете

появление диалогового окна со списком компонент отчета

выполнение расчета

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


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



УТВЕРЖДАЮ


Зав. кафедрой СА и ПО АСУ

д. т. н., проф.,


______________Б.Д. Залещанский


"___"________________ 1998 г.

                                                                              









КОМПЛЕКС ЗАДАЧ

“Оценка эффективности функционирования военно-медицинского учреждения

Руководство системного программиста




ЛИСТ УТВЕРЖДЕНИЯ





( дискета 3 дюйма 1440Кб)



Листов ______




Исполнитель


___________ Р.Б. Чихирев


"____" _______________ 1998 г.




Нормоконтролер




"____" _______________ 1998 г.



1998

Литера



   УТВЕРЖДЕН

   ПС 50337-01 32


















КОМПЛЕКС ЗАДАЧ

“Оценка эффективности функционирования военно-медицинского учреждения”


Руководство системного программиста










Листов ______














1998

Литера

АННОТАЦИЯ

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

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

СОДЕРЖАНИЕ

1. Общие сведения о системе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2. Настройка системы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3. Проверка работоспособности системы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4. Поддержка целостности. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1. ОБЩИЕ СВЕДЕНИЯ О СИСТЕМЕ

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

2. НАСТРОЙКА  СИСТЕМЫ

Комплекс задач “Оценка эффективности функционирования военно-медицинского учреждения” является автономной системой. Она разработана с использованием средств Borland C++ Builder, поставляется в виде дистрибутива  способна функционировать самостоятельно без необходимости установки самой Borland C++ Builder.

Для запуска системы:

вставьте дистрибутивную дискету в дисковод 3.5”;

нажмите кнопку «Пуск» на панели задач;

выберете команду «Выполнить…»;

в строке «Открыть:» напечатайте «A:\setup», где A – буква вашего дисковода;

нажмите ОК.

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

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

программную группу;

имя пользователя.

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

3. ПРОВЕРКА РАБОТОСПОСОБНОСТИ СИСТЕМЫ

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

4. ПОДДЕРЖКА ЦЕЛОСТНОСТИ

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

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




УТВЕРЖДАЮ


Зав. кафедрой СА и ПО АСУ

д. т. н., проф.,


______________Б.Д. Залещанский


"___"________________ 1998 г.







КОМПЛЕКС ЗАДАЧ

“Оценка эффективности функционирования военно-медицинского учреждения”

Руководство программиста






ЛИСТ УТВЕРЖДЕНИЯ




( дискета 3 дюйма 1440Кб )




Листов ______








Исполнитель


___________ Р.Б. Чихирев


"____" _______________ 1998 г.




Нормоконтролер




"____" _______________ 1998 г.



1998

Литера


                                                                                   


       УТВЕРЖДЕН

       ПС.50337-01 3











КОМПЛЕКС ЗАДАЧ

“Оценка эффективности функционирования военно-медицинского учреждения”

Руководство программиста





Листов ______











1998

Литера




АННОТАЦИЯ

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


СОДЕРЖАНИЕ

1. Назначение и условия применения системы . . . . . . . . . . . . . . . . . . . . . . . . . . .

2. Характеристики системы . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . .

3. Обращение к системе . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . .

4. Входные и выходные данные. . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . .



1. НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ СИСТЕМЫ

Комплекс задач “Оценка эффективности функционирования военно-медицинского учреждения” состоит из нескольких частей:

2. ХАРАКТЕРИСТИКИ ПРОГРАММЫ

Комплекс задач разработан в системе Borland C++ Builder. Аппаратная платформа, на которой разрабатывалась система - Intel x86. Операционная среда - MS-Widows 95 / NT 4.0  или выше.

3. ОБРАЩЕНИЕ К ПРОГРАММЕ

Для запуска программы необходимо в через кнопку «Пуск» на панели задач выбрать в системном меню Программы\PCM.

4. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ

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

                       



«УТВЕРЖДАЮ»


Зав. кафедрой СА и ПО АСУ

д. т. н., проф.,


______________Б.Д. Залещанский


"___"________________ 1998 г.











КОМПЛЕКС ЗАДАЧ

“Оценка эффективности функционирования военно-медицинского учреждения”




Руководство оператора




ЛИСТ УТВЕРЖДЕНИЯ





Листов ______



                                                                       


Исполнитель


___________ Р.Б. Чихирев


"____" _______________ 1998 г.




Нормоконтролер




"____" _______________ 1998 г.




1998

Литера




 

УТВЕРЖДЕН

ПС. 50337-01 34 ЛУ













КОМПЛЕКС ЗАДАЧ

“Оценка эффективности функционирования военно-медицинского учреждения”

Руководство оператора







Листов ______






ПС. 50337-01 34













1998

Литера

СОДЕРЖАНИЕ

1. Назначение системы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2. Условия выполнения системы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3. Функционирование системы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4. Перечень системных сообщений. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


АННОТАЦИЯ

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

НАЗНАЧЕНИЕ СИСТЕМЫ

Комплекс задач “Оценка эффективности функционирования военно-медицинского учреждения” предназначен для автоматизации обработки статистического материала о

Программа должна предоставляет пользователю следующие возможности:

·         ввод входного массива статистических данных из файла в формате Excel 5.0;

·         редактирование данных в таблице;

·         работу с буфером обмена операционной системы;

·         сохранение данных в файле формата MS Excel 5.0 ;

·         нормирование данных;

·         расчет корреляционной матрицы признаков объектов;

·         расчет матрицы связей параметров объектов с главными компонентами;

·         расчет вклада главных компонент в общую дисперсию;

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

·         формирование отчета о результатах расчетов;

·         настройка параметров выводимого отчета.

 


УСЛОВИЯ ВЫПОЛНЕНИЯ СИСТЕМЫ

КЗ “Оценка эффективности функционирования военно-медицинского учреждения” предназначена для функционирования  ПЭВМ типа IBM PC с операционной системой MS-Windows 95 / NT 4.0 или выше. 

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

Разработка и тестирование системы “Оценка эффективности функционирования военно-медицинского учреждения” велась на ПЭВМ на базе процессора AMD К5-PR133 с объемом оперативной памяти 64MB, объемом жесткого диска 1300MB под операционной системой Windows-95.

ФУНКЦИОНИРОВАНИЕ СИСТЕМЫ

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

-запуск системы;

-открытие файла с данными или создание новой таблицы;

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

-настройка параметров отчета;

-выбор таблицы для расчета;

-вычисления;

-просмотр и возможное сохранение результатов в файле.

-печать отчета.


Запуск системы осуществляется через меню Пуск\Программы\PCM панели задач.

Выполнение указанной последовательности действий приводит к возникновению на экране ПЭВМ главного окна программы, внешний вид которого изображен на рис 1.


Для открытия файла с данными можно воспользоваться командой

основного меню Файл\Открыть или соответствующей кнопкой  на панели инструментов.


Редактирование данных возможно при помощи команд меню группы Правка Вырезать, Вставить, Удалить,  Копировать или кнопок панели инструментов .

Для настройки параметров сформированного  после вычислений отчета необходимо воспользоваться командой «Настройки\Отчет…» Перед Вами появится диалоговое окно см. Рис. 2. В данном диалоговом окне требуется отметить те компоненты, которые вы желаете видеть в отчете.


Рис. 2. Диалоговое настройки параметров отчета

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

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

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

Рис.3. Диалоговое окно хода выполнения процесса

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


 ПЕРЕЧЕНЬ СИСТЕМНЫХ СООБЩЕНИЙ

Сообщение

Возможная причина

Методы устранения

1. Не могу открыть файл.

Неверный формат или версия выбранного файла. Данный программный продукт в данной его версии не поддерживает форматы файлов MS Excel версий после 5.0.

Попробуйте, используя Excel сохранить файл в более раннем формате, а потом попробуйте снова.

Еще один выход – это получить данные, используя буфер обмена.

2.Неверный формат ячейки

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

Привести данные в ячейке к требуемому виду

3. Деление на ноль

В указанных данных присутствуют показатели с нулевой дисперсией.

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



«УТВЕРЖДАЮ»


Зав. кафедрой СА и ПО АСУ

д. т. н., проф.,


______________Б.Д. Залещанский


"___"________________ 1998 г.










КОМПЛЕКС ЗАДАЧ


“Оценка эффективности функционирования военно-медицинского учреждения”



Тексты программ



ЛИСТ УТВЕРЖДЕНИЯ




( дискета 3 дюйма 1440Кб )




Листов ______






Исполнитель


___________ Р.Б. Чихирев


"____" _______________ 1998 г.




Нормоконтролер




"____" _______________ 1998 г.





                                                                       


1998

Литера

                  

                                                 

 УТВЕРЖДЕН


















КОМПЛЕКС ЗАДАЧ

“Оценка эффективности функционирования военно-медицинского учреждения”

Тексты программы



( дискета 3 дюйма 1440Кб )






Листов ______




















1998

Литера

//------------------------------------------------------------------------

// Файл Vector.h

//------------------------------------------------------------------------

// Объект вещественный вектор произвольного размера

#ifndef VectorH

#define VectorH

#include "Matrix.h"

#include <fstream.h>

class TVector{

public:

    friend class TMatrix;

    friend class TSquareMatrix;

    friend class ifstream;

    friend class ofstream;

TVector(int size);

    TVector(const TVector& v);

    void SetAll(double value);

    ~TVector();

    int GetSize()const {return n;}

    double& operator[](int i);

    friend TVector operator * ( const TVector&, const TMatrix&);

    // Поэлементное произведение

    friend TVector operator & ( const TVector&, const TVector&);

    // Скалярное произведение

    friend double operator * ( const TVector&, const TVector&);

    // Векторное произведение

    //friend TVector operator ^ ( const TVector&, const TVector&);

    friend ostream& operator << ( ostream&,const TVector&);

    friend istream& operator >> ( istream&,TVector&);

protected:

double *x;

    int n;

};

//-------------------------------------------------------------------------

#endif

//-------------------------------------------------------------------------

// Файл Vector.cpp

//-------------------------------------------------------------------------

#include <vcl\vcl.h>

#pragma hdrstop

#include "Vector.h"

#include <mem.h>

//

// Конструкторы класса

//

TVector::TVector(int size)

{

      x = new double [size];

    n = size;

}

//

// Конструктор копии

//

TVector::TVector(const TVector& v)

{

x = new double [v.n];

    n = v.n;

for(int i=0;i<n;i++)

       x[i]=v.x[i];

}

//

// Деструктор класса

//

TVector::~TVector()

{

delete []x;

}

//

// Оператор доступа по индексу

//

double& TVector::operator [] (int i)

{

if(i<0||i>=n)

       throw Exception("TVector::operator[]: illegal index");

return x[i];

}

//

// Друзья

//

//

// Поэлементное произведение

//

TVector operator & (const TVector &v,const TVector &u)

{

if(v.n!=u.n)

       throw Exception("TVector operator &: illegal sizes");

TVector res(v.n);

for(int i=0;i<v.n;i++)

       res.x[i]=v.x[i]*u.x[i];

    return res;

}

//

//Скалярное произведение векторов

//

double operator * (const TVector &v, const TVector &u)

{

if(v.n!=u.n)

       throw Exception("TVector operator &: illegal sizes");

    double res=0;

    for(int i=0;i<v.n;i++)

       res+=v.x[i]*u.x[i];

    return res;

}

//

// Потоковый ввод

//

ostream& operator << (ostream& out,const TVector& v)

{

for(int i=0;i<v.n;i++)

       out << v.x[i]<< (i!=v.n?'\t':'\n');

    return out;

}

//

// Потоковый вывод

//

istream& operator >> (istream& in, TVector& v)

{

for(int i=0;i<v.n;i++)

       in >> v.x[i];

    return in;

}

//-------------------------------------------------------------------------

//---------------------------------------------------------------------------

// Файл Matrix.h Объект Матрица c вещественными элементами

//---------------------------------------------------------------------------

#ifndef MatrixH

#define MatrixH

#include <iostream.h>

//#include <except.h>

#include <math.h>

#include "Vector.h"

class TMatrix {

public:

friend class ostream;

    friend class istream;

    friend class TVector;

TMatrix(int r,int c);

    TMatrix(TMatrix& m);

    TMatrix(int size, double value);

    ~TMatrix();

    int GetNumRows()const {return r;}

    int GetNumCols()const {return c;}

    double& operator ()(int i,int j);

    TMatrix& operator = (const TMatrix &m);

    void SetAll(double value);

    double RowElemsSum (int r);

    double ColElemsSum (int c);

    TMatrix& Transpose();

    //***********************************

    // Арифметические операции

    //

    TMatrix& operator += (const TMatrix&);

TMatrix& operator -= (const TMatrix&);

TMatrix& operator *= (double);

TMatrix& operator /= (double);

    TMatrix& operator += (double);

    TMatrix& operator -= (double);

friend TMatrix operator + ( const TMatrix&, const TMatrix&);

friend TMatrix operator - ( const TMatrix&, const TMatrix&);

friend TMatrix operator * ( const TMatrix&, double);

friend TMatrix operator * ( const TMatrix&, const TMatrix&);

friend TVector operator * ( const TVector&, const TMatrix&);

    //******************

    // Ввод/вывод

    //

    friend ostream& operator << (ostream& out, const TMatrix& m);

    friend istream& operator >> (istream& in,  TMatrix& m);

    //

    // Статистические функции.

    // Подразумевается, что первая координата в матрице -

    // это номер измерения, а вторая - номер  параметра.

    //

    void Average(TVector& vA); // Оценка среднего

    void Dispersion(TVector& vD, TVector& vA); // Несмещенная оценка дисперсии

    void Normalize(TMatrix& mN, TVector& vD, TVector& vA); // Нормализация данных

    double Norm();

protected:

    double ** x;// указатель на данные

    int r;// количество рядов

    int c; // количество столбцов

};

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#include <vcl\vcl.h>

#pragma hdrstop

//#define DEBUG

#include "Matrix.h"


// Конструктор

TMatrix::TMatrix(int rnum,int cnum)

{

if(rnum<2||cnum<2||rnum > 32000||cnum>32000)

       throw Exception("Matrix: illegal matrix ranges");

x = new double*[rnum];

    for(int i=0;i<rnum;i++)

       x[i]=new double[cnum];

    c = cnum;

    r = rnum;

}

//

// Конструктор копии

//

TMatrix::TMatrix(TMatrix &m)

{

x = new double*[m.r];

    for(int i=0;i<m.r;i++){

       x[i]=new double[m.c];

        for(int j = 0;j<m.c;j++)

             x[i][j] = m.x[i][j];

    }

    c = m.c;

    r = m.r;

}

//

// Оператор присваивания

//

TMatrix& TMatrix::operator = (const TMatrix& m)

{

for( int i = 0; i<m.r; i++)

       for(int j=0; j<m.c; j++)

             x[i][j] = m.x[i][j];

    return *this;


}

//

// Деструктор

//

TMatrix::~TMatrix()

{

for(int i=0;i<r;i++)

       delete []x[i];

    delete []x;

    r = 0;

    c = 0;

}

//

// Оператор доступа по индексу

//

double& TMatrix::operator ()(int i,int j)

{

  if(i<0 || i>=r || j<0 || j>=c)

       throw Exception("TMatrix operator(): illegal index");

return x[i][j];

}

//

// Присваивает всем элементам массива одно и то же значение

//

void TMatrix::SetAll(double value)

{

for(int i=0;i<r;i++)

       for(int j=0;j<c;j++)

             x[i][j]=value;

}

//

// Сумма элементов строки

//

double TMatrix::RowElemsSum (int rn)

{

double pos=0;

    double neg=0;

for(int i=0;i<c;i++)

       if(x[rn][i]>0)

             pos+=x[rn][i];

        else

             neg+=x[rn][i];

    return pos+neg;


}

//

// Сумма элементов столбца

//

double TMatrix::ColElemsSum (int cn)

{

double pos=0;

    double neg=0;

for(int i=0;i<r;i++)

       if(x[i][cn]>0)

             pos+=x[i][cn];

        else

             neg+=x[i][cn];

    return pos+neg;

}

//

// Транспонирование матрицы

//

TMatrix& TMatrix::Transpose()

{

int t;

    double **nx = new double*[c];

for(int i=0;i<c;i++){

       nx[i] = new double[r];

       for(int j=0;j<r;j++){

            nx[i][j]=x[j][i];

        }

    }

    for(int i=0;i<r;i++)

       delete []x[i];

    delete[]x;

    x = nx;

    t=r;r=c;c=t;

    return *this;

}

//

//

//


TMatrix& TMatrix :: operator += ( double d)

{

for( int i =0;i<r;i++)

       for( int j =0; j<c;j++)

             x[i][j] +=d;

return *this;

}

TMatrix& TMatrix :: operator -= ( double d)

{

for( int i =0;i<r;i++)

       for( int j =0; j<c;j++)

             x[i][j] -=d;

return *this;

}

TMatrix& TMatrix :: operator += ( const TMatrix& A)

{

if(r!=A.r||c!=A.c)

       throw Exception("TMatrix::operator +=: Illegal TMatrix size");

for( int i =0;i<r;i++)

       for( int j =0; j<c;j++)

             x[i][j] +=A.x[i][j];

return *this;

}


TMatrix& TMatrix::operator -= ( const TMatrix& A)

{

    if(r!=A.r||c!=A.c)

       throw Exception("TMatrix::operator -=: Illegal TMatrix size");

for( int i =0;i<r;i++)

       for( int j =0; j<c;j++)

             x[i][j] -=A.x[i][j];

return *this;

}


TMatrix& TMatrix::operator *= ( double v)

{

for( int i =0;i<r;i++)

       for( int j =0; j<c;j++)

             x[i][j] *=v;

return *this;

}

TMatrix& TMatrix::operator /= ( double v)

{

if( v == 0 )

       throw Exception("TMatrix operator /=: devision by zero");

for( int i =0;i<r;i++)

       for( int j =0; j<c;j++)

             x[i][j] /=v;

return *this;

}

// Найти вектор вредних

void TMatrix:: Average(TVector& vA)

{

for(int i=0; i< c;i++){

       vA[i] = ColElemsSum(i)/r;

    }


}

// Найти вектор несмещенной оченки дисперсии

void TMatrix:: Dispersion(TVector& vD, TVector& vA)

{

double d;

for(int i=0; i< c;i++){

        vA[i] = ColElemsSum(i)/r;

        vD[i] = 0;

        for(int j=0; j< r; j++){

             d = (x[j][i]-vA[i]);

            vD[i] += d*d;

        }

        vD[i]/=r; // Смещенное среднее


}

}

// Вычисляет нормализованные случайные величины,

// вектор средних и дисперсию

void

TMatrix::Normalize(TMatrix& mNormalData,TVector& vDispersion,TVector& vAverage)

{

if(mNormalData.GetNumRows()!=r || mNormalData.GetNumCols()!=c)

       throw Exception("Illegal matrix size in TMatrix::Normalize()");

if(vDispersion.GetSize()!= c || vAverage.GetSize()!= c)

       throw Exception ("Illegal vector size in TMatrix::Normalize()");

int i,j;

#ifdef DEBUG

ofstream fout("Matrix.txt");

    fout << "\tTMatrix::Normalize:" << endl;

#endif

    double ss; // Среднеквадратическое отклонение

    for(i=0; i<c; i++){ // Для каждого параметра

       vAverage[i]=ColElemsSum(i)/r;

       vDispersion[i] = 0;

       for( j = 0; j < r; j ++ ){

            (mNormalData)(j,i) = x[j][i]-(vAverage)[i]; // Центрировать СВ

            (vDispersion)[i]+=(mNormalData)(j,i)*(mNormalData)(j,i);    // Возвести в квадрат

        }

        (vDispersion)[i] /= r; // Посчитать дисперсию

        ss = sqrt((vDispersion)[i]); // Ср.-квадратичное отклонение

       for(j=0; j<r ;j++){ //

             (mNormalData)(j,i) /= ss; //

        }

    }


}

//

//  Норма Фробениуса ( сумма квадратов элементов)

//

double TMatrix::Norm()

{

double result=0;

for(int i=0; i < r; i++ )

       for(int j=0; j < c; j++ )

             result+= x[i][j]*x[i][j];

    return result;

}

//

// Перегрузка арифметических операторов

//

TMatrix  operator + ( const TMatrix& A, const TMatrix& B)

{

TMatrix res(A.r, A.c );

    if(B.r!=A.r||B.c!=A.c)

       throw Exception("TMatrix::operator +: Illegal TMatrix size");


for( int i =0;i<A.r;i++)

       for( int j =0; j<A.c;j++)

             res.x[i][j] = A.x[i][j]+B.x[i][j];

return res;

}

//

//

//

TMatrix  operator - ( const TMatrix& A, const TMatrix& B)

{

if(B.r!=A.r||B.c!=A.c)

       throw Exception("TMatrix::operator -: Illegal TMatrix size");

TMatrix res(A.r,A.c);

for( int i =0; i < A.r; i++)

       for( int j =0; j < A.c; j++)

             res.x[i][j] = A.x[i][j] - B.x[i][j];

return res;

}

//

// Оператор умножения матриц

//

TMatrix operator * ( const TMatrix& A,const TMatrix& B)

{


    if(A.c!=B.r)

       throw Exception(

             "TMatrix::operator *: Illegal TMatrix size");

TMatrix res(A.r,B.c);

    for( int i =0;i<res.r;i++)

       for(int j=0;j<res.c;j++)

       {

        res.x[i][j] = 0;

             for( int k =0; k < A.c; k++)

                   res.x[i][j] +=A.x[i][k]*B.x[k][j];

       }

return res;

}

//

// Умножение матрицы на число

//

TMatrix operator  * (const  TMatrix& A, double v)

{

TMatrix res(A.r,A.c);

for(int i=0;i<A.r;i++)

       for(int j=0;j<A.c;j++)

             res.x[i][j] = A.x[i][j]*v;

return res;

}

//

// Умножение вектора на матрицу

//

TVector operator * (const TVector& v, const TMatrix& M)

{

TVector res(M.c);

    for(int i = 0;i<M.c;i++){

       res[i] = 0;

       for(int k=0;k<M.r;k++)

             res[i]+=v.x[k]*M.x[k][i];

    }


return res;

}

//********************** Воод/вывод**********************

ostream& operator << (ostream& out, const TMatrix& m)

{

for( int i = 0; i<m.r; i++){

       for(int j =0; j<m.c;j++)

             out << m.x[i][j] << (j==m.c?"":"\t");

       out << endl;

}

return out;

}

istream& operator >> (istream& in, TMatrix& m)

{

for( int i = 0; i<m.r; i++)

       for( int j = 0; j<m.c; j++)

             in >> m.x[i][j];

return in;

}

//---------------------------------------------------------------------------


//

// Квадратная матрица

//

//---------------------------------------------------------------------------

#ifndef SquMatrH

#define SquMatrH

#include <math.h>

//#include <except.h>

#include "Matrix.h"

class TSquareMatrix : public TMatrix

{

public:

friend TMatrix;

// Конструкторы

    TSquareMatrix(int size):TMatrix(size,size){}

    // Создает диагональную матрицу размера (size X size)

TSquareMatrix(int size,double value);

    // Произведение векторов

    TSquareMatrix(const TVector& v, const TVector& u);

    // Произведение матриц

    TSquareMatrix(const TMatrix& v,const TMatrix& u);

    // QR-разложение матрицы

void QRExpansion(TSquareMatrix &q, TSquareMatrix &r);

    // Сумма диагональных элементов

    double UnderDiagonalSquareSum();

    TSquareMatrix& Rotate(int i,int j,double cos,double sin);

    // создает матрицу поворота вокруг оси XkOXl

    TSquareMatrix& MakeRotate(int k,int l,double cos,double sin);

    // Оператор умножения матрицы на матрицу той же размерности

    TSquareMatrix& operator *= (TSquareMatrix &m);

    TSquareMatrix& Transpose();

    TSquareMatrix& SetDiagonal(double );

    TSquareMatrix& Multiple(const TMatrix& m, const TMatrix& n);

    double Trace();

};

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#include <vcl\vcl.h>

#pragma hdrstop

#include "SquMatr.h"

//#define DEBUG

#ifdef DEBUG

 ofstream fout("SquMatr.txt");

#endif

//

// Конструктор

//

TSquareMatrix::TSquareMatrix(int size, double v):

TMatrix(size,size)

{

for(int i=0;i<r;i++)

       for(int j=0;j<c;j++)

             x[i][j] = (i==j ? v : 0);

}

TSquareMatrix& TSquareMatrix:: SetDiagonal(double value)

{

for(int i=0; i<r; i++)

       x[i][i] = value;

    return *this;

}

//

//

//

TSquareMatrix::TSquareMatrix(const TVector& v,const TVector& u):TMatrix(v.n,v.n)

{

if(v.n!=u.n)

       throw Exception("TSquareMatrix constructor:illegal sizes of vectors");

for(int i=0;i<r;i++)

       for(int j=0;j<c;j++)

    {

       x[i][j]=v.x[i]*v.x[j];

    }

}

//

// Создает матрицу как произведение заданных матриц

//

TSquareMatrix::TSquareMatrix(const TMatrix& u, const TMatrix& v)

:TMatrix(u.GetNumRows(),v.GetNumCols())

{

Multiple(u,v);

}

TSquareMatrix& TSquareMatrix::operator *= (TSquareMatrix &m)

{

if(m.r!=r)

       throw Exception("TSquareMatrix::operator : Illegal matrix size");


    return *this = TSquareMatrix(*this, m);

}

//

//

//

TSquareMatrix& TSquareMatrix::MakeRotate(int k,int l,double cos,double sin)

{

    //double s = cos*cos + sin*sin;

    //if(s!=1)

    // throw Exception("Illegal argument");

SetAll(0);

    for(int i=0;i<r;i++)

       x[i][i]=1;

    x[k][k] = x[l][l]=cos;

    x[k][l] =-(x[l][k]=sin);

    return *this;

}

//

// По идее, должна создать QR-разложение

//

void TSquareMatrix::QRExpansion(TSquareMatrix &Q, TSquareMatrix &R)

{

if(Q.r != r || R.r != r)

       throw Exception("TSquareMatrix::QRExpansion: illegal matrix size");


double cos,sin; //

    double t;

    Q.SetAll(0);

    Q.SetDiagonal(1);

    TSquareMatrix Tij(r);

    R = *this;


//ofstream fout("out1.txt");

    //fout << "Матрица A:" <<endl;

    //fout << R << endl;


    for(int j=0;j<c-1;j++){// для каждого ряда (кроме последнего)

       for(int i=j+1;i<r;i++){ //

             t = sqrt(R.x[j][j]*R.x[j][j]+R.x[i][j]*R.x[i][j]);

            if(t != 0){

                   cos = R.x[j][j]/t;

            sin = R.x[i][j]/t;

                Tij.MakeRotate(i,j,cos,sin);// создать матрицу поворота

                //fout << "Tij" << endl;

                //fout << Tij << endl;

                Q = TSquareMatrix(Tij,Q);

                R = TSquareMatrix(Tij,R);

                //fout << "A:" << endl;

                //fout << R << endl;

            }

        }

    }

    Q.Transpose(); // Q = [T]^t

    //fout << "Q*R"<< endl;

    //fout << TSquareMatrix(Q,R)<< endl;

}

//

// Операция транспонирования квадратной матрицы

//

TSquareMatrix& TSquareMatrix::Transpose()

{

double t;

for(int i=0;i<r;i++)

       for(int j=i;j<c;j++){

             t = x[i][j];

            x[i][j]=x[j][i];

            x[j][i]=t;

        }

    return *this;

}

//

// Вохвращает сумму внедиагональных элементов

//

double TSquareMatrix::UnderDiagonalSquareSum()

{

double pos=0;

    double neg=0;

    double xx;

for(int i=0;i<r;i++)

       for(int j=0;j<c;j++)

             if(i>j)

            if((xx = x[i][j]*x[i][j]) > 0)

                         pos+=xx;

                else

                         neg+=xx;

    return (pos+neg);

}

//

// Перемножает заданные матрицы

//

TSquareMatrix& TSquareMatrix::Multiple(const TMatrix& u, const TMatrix& v)

{

if((u.GetNumCols()!=v.GetNumRows()) || (u.GetNumRows()!= v.GetNumCols()) || u.GetNumRows()!=r)

       throw Exception("illegal arguments");

    double negative;

    double uv;

    for(int i=0; i<r;i++)

       for(int j=0;j<c;j++){

             x[i][j] = negative = 0;

            for(int k=0;k<u.GetNumCols();k++){

            if((uv = u(i,k)*v(k,j))>0)

                   x[i][j] += uv;

                else

                   negative += uv;

            }

            x[i][j] += negative;

        }

    return *this;

}

// Вычисление следа матрицы

double TSquareMatrix::Trace()

{

double pos=0,neg=0;

for(int i=0; i< r; i++)

       if(   x[i][i] > 0)

             pos+=x[i][i];

        else

             neg+=x[i][i];

    return pos+neg;

}

//

//  T*RT, T-матрица поворота (вращает матрицу в плоскости (i,j)

//

TSquareMatrix&

TSquareMatrix::Rotate(int i,int j, double c,double s)

{


double xjk, xik, xkj, xki; // Временные переменные

    double xij, xii, xji, xjj;

    //double fxij, fxii, fxji, fxjj;

if(i==j || i<0 || j<0 || i>=r || j>=r )

       throw Exception("Illegal arguments in TSquareMatrix::Rotate");

//double y;

    int k;

    // Умножить справа


for(k=0; k<r;k++){

       if(k!=i && k!=j){

             // Слева

             xjk = x[j][k]*c - x[i][k]*s;//

             xik = x[j][k]*s + x[i][k]*c;

            // Справа

             xkj = x[k][j]*c - x[k][i]*s;

            xki = x[k][j]*s + x[k][i]*c;

            // Запись

            x[j][k] = xjk;

             x[i][k] = xik;

             x[k][j] = xkj;

            x[k][i] = xki;

        }

    }

    xjj = c*x[j][j] - s*x[i][j];

    xji = c*x[j][i] - s*x[i][i];

    xij = s*x[j][j] + c*x[i][j];

    xii = s*x[j][i] + c*x[i][i];


x[j][j] = xjj*c - xji*s;

    x[j][i] = xjj*s + xji*c;


    x[i][j] = xij*c - xii*s;

    x[i][i] = xij*s + xii*c;


#ifdef DEBUG

    fout << "RT" << endl << *this << endl;

#endif

/*

    // Умножить слева

    for( k=0; k< r; k++){

       y = x[j][k]*c + x[i][k]*s;

        x[i][k] = -x[j][k]*s + x[i][k]*c;

        x[j][k] = y;

    }

*/

#ifdef DEBUG

    fout << "T*R" << endl << *this << endl;

#endif

    return *this;

}


//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

// Симметрическая матрица

//---------------------------------------------------------------------------

#ifndef SymMatrH

#define SymMatrH

#include "SquMatr.h"

//#include <except.h>

//#define DEBUG

 #ifdef DEBUG

  #include <fstream.h>

 #endif

// Симметрическая матрица

class TSymMatrix : public TSquareMatrix

{

public:

// Создает симметрическую матрицу как квадрат данной матрицы

TSymMatrix(TMatrix& m);

    // Создает симметрическую матрицу как квадрат вектора

    TSymMatrix(TVector& v): TSquareMatrix(v,v){};

    TSymMatrix(int size) : TSquareMatrix(size){};

    // Расчет собственых значений и собственных векторов методом Якоби

    void  Eigenvalues(TVector& vEigenvalues, TSquareMatrix& smEigenvectors);

};

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#include <vcl\vcl.h>

#pragma hdrstop

#include "SymMatr.h"

//#define DEBUG

//

// Переписать

// проверку на симметричность при изменении элементов,

//

// Makes matrice as multiplication of two equal matrices

TSymMatrix::TSymMatrix(TMatrix& m):

TSquareMatrix(m.GetNumCols())


{

  TMatrix mT(m);

    mT.Transpose();

    Multiple(mT,m);

}

//

// Нахождение собственных значений и матрицы с собственными векторами

//

void TSymMatrix::Eigenvalues(TVector& v,TSquareMatrix& T)

{

#ifdef DEBUG

ofstream fout("SymMatr.txt");

  int inum = 0;

#endif

T.SetAll(0);

    T.SetDiagonal(1);

if(v.GetSize()!=r)

       throw Exception("Illegal vector size in TSymMatix::Eigenvalues");

if(T.GetNumRows()!=r)

       throw Exception("Illegal matrix size in TSymMatrix::Eigenvalue");

TSquareMatrix R(*this);

    TSquareMatrix Tij(r);// Матрица поворота


int i,j,k; // Индексы для прохода по элементам матрицы

    static const double single_error = 1E-10;

    long rotate_counter;

    double c,s;     // Синус и косинус поворота в методе Якоби

    double cotan2a;  // Тангенс удвоенного угла поворота

    double t;       // Тангенс угла поворота

    double rr;

    int udenum = (r-1)*r/2; // количество поддиагональных элементов

    double udesum = R.UnderDiagonalSquareSum(); // Сумма наддиагональных элементов

    const COUNT = 100*udenum;// Максимальное количество проходов по поддиагональным элементам

#ifdef DEBUG

fout << "R:" << endl << R << endl;// Исходная симметричная матрица

 //   fout << "R-R*" << endl << R - TSquareMatrix(R).Transpose() << endl;

    fout << "udesum = " << udesum << endl;

    fout << "udenum = " << udenum << endl;

#endif

    for(k=0,rotate_counter=0;k<COUNT;k++){

    for( j=0; j < r; j++){// для каждого ряда (кроме последнего)

             for( i = j+1; i<r; i++ ){


             if( fabs(R(i,j)) >= sqrt(udesum/udenum)/*/2*/){// Проверить, достаточно ли большой данный элемент

#ifdef DEBUG

                         fout << endl << "********** Поворот №" << (inum +1 )<< "*********" << endl;

                         fout << "level = " << sqrt(udesum/udenum) << endl;

                    fout << "udesum = " << udesum << endl;

//                    fout << "Tr(R) = " << R.Trace() << endl;

                    //fout << "R(" << i << "," << i << ")-R(" << j << ',' << j << ") = " << (R(i,i)-R(j,j)) << endl;

#endif

                         rr = R(i,j)*R(i,j); // Store

                  cotan2a = (R(i,i) - R(j,j))/ (2*R(i,j));

                   t = ( cotan2a<0 ? -1 : 1)/

                         (fabs(cotan2a) + sqrt(1 + cotan2a*cotan2a));

#ifdef DEBUG

                         fout << "cotan(a) = " << t << endl;

#endif

                         c = 1/sqrt(1+t*t);

                   s = c*t;

                     Tij.MakeRotate(i,j,c,s);// Создать матрицу поворота

#ifdef DEBUG

                    //fout << "Tij:" << endl << Tij << endl;

#endif

                         T*=Tij;

 //                   R = TSquareMatrix(R,Tij); // Глючит???

//                             Tij.Transpose();

 //                   R = TSquareMatrix(Tij,R);

                         R.Rotate(i,j,c,s);//Ортогональное преобразование корреляционной матрицы

#ifdef DEBUG

                    inum++;

                    fout << "Обнуляемый элемент:"

                         <<"("<< i <<","<< j << ")"<<endl;

                         fout << "cotan(2a) = " << cotan2a << endl;

                    fout << "cos(a) = " << c << endl;

                    fout << "sin(a) = " << s << endl;

                    fout << "Матрица R после поворота:" << endl << R << endl;

                    fout << "R(i,j)*R(i,j) = " <<  rr << endl;

                    fout << "Сумма внедиагональных элементов: "

                         << R.UnderDiagonalSquareSum() << endl;

                    //fout << "Матрица T:" << endl << T << endl;

#endif

                         udesum -= rr; //subtackt out-of-diagonal elements summa

                    rotate_counter++;

                    if(udesum <= 0)

                         goto ok;

            }

             }

       }

    }

#ifdef DEBUG

fout << "Матрица R после серии поворотов: " << endl << R << endl;

#endif

ok:

// Sort the eigenvalues

for(i=0;i<r;i++){

       for(j=i+1;j<r;j++){

             if(R(j,j)>R(i,i)){

            // swap two eigenvalues

                Tij.MakeRotate(i,j,0,1);

//                R = TSquareMatrix(R,Tij);

                T = TSquareMatrix(T,Tij);

                R.Rotate(i,j,0,1);

//                Tij.Transpose();

//                R = TSquareMatrix(Tij,R);

            }

        }

        v[i]=R(i,i); // Вклад i-ой главной компоненты

    }


#ifdef DEBUG

fout << "Число поворотов k = " << rotate_counter << endl;

    fout << "Норма матрицы R0 = " << Norm() << endl;

    fout << "Норма матрицы эквивалентного возмущения ||M|| <= " << (rotate_counter+1)*r*Norm() *single_error;

#endif

}

//---------------------------------------------------------------------------7

//---------------------------------------------------------------------------

// Главные компоненты

//

#ifndef MainCompH

//#include "Matrix.h"

#include "SymMatr.h"

#include "CalcDlg.h"

//#define DEBUG

class TMainComp

{

protected:

       unsigned StatusBits; // Биты состояния после вычисления

        enum {

             OKBit       = 0,

             NegEvalBit  = 1,

            ZeroEvalBit = 2

        };

       TMatrix mNormalData; // Центрированные данные,нормированные

       TSymMatrix *smCorrelation; // Корреляционная матрица

       TVector vAverage; // Оценка средних

        TVector vDispersion; // Оценка дисперсии

        TVector vEigenvalues; // Вектор собственных чисел

        TVector vDeviation;

        TVector vV;

        TMatrix mPC;

        void MakeMainComponents();

        int N; // Размер выборки

        int n; // Количество параметров

        TSquareMatrix smEigenvectors;

        TSquareMatrix *smResult;

    #ifdef DEBUG

       ofstream fout;

    #endif

public:

       TMainComp(TMatrix& mData); // Матрица с исходными данными

        ~TMainComp(); // Деструктор класса

        TSquareMatrix& GetResult()const {return *smResult;}

        TVector& GetEigenvalues(){return vEigenvalues;}

        TMatrix& GetEigenvectors(){return smEigenvectors;}

        TVector& GetV (){return vV;};

        TMatrix& GetPC(){return mPC;}

        TMatrix& GetY(){return mNormalData;}

        TSymMatrix& GetR(){return *smCorrelation;}

        TVector& GetDispersion(void ){return vDispersion;}

        TVector& GetAverage(void){return vAverage;}

        unsigned Status()const{return StatusBits;}

        bool ZeroEval()const{return ZeroEvalBit & StatusBits;}

        bool NegEval ()const{return NegEvalBit  & StatusBits;}

        bool OK()const{return OKBit & StatusBits;};

};

#define MainCompH

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#include <vcl\vcl.h>

#pragma hdrstop

#include "MainComp.h"

TMainComp::TMainComp(TMatrix& mData):

      StatusBits(0),

      N(mData.GetNumRows()),

    n(mData.GetNumCols()),

mNormalData( mData.GetNumRows(), mData.GetNumCols() ),

    vEigenvalues(mData.GetNumCols()),

    smEigenvectors(mData.GetNumCols()),

    vAverage( mData.GetNumCols()),

    vDispersion( mData.GetNumCols() ),

    vDeviation( mData.GetNumCols()),

    vV(mData.GetNumCols()),

    mPC(mData.GetNumRows(),mData.GetNumCols())

{

ProgressDlg->ProgressLabel->Caption = "Нормализация данных...";

    ProgressDlg->ProgressBar->Position = 0;

    ProgressDlg->ProgressBar->Max = 100;

#ifdef DEBUG

  ofstream fout("MainComp.txt");

#endif

    mData.Normalize(mNormalData,vDispersion,vAverage); // Нормализовать данные

    ProgressDlg->ProgressBar->StepBy(10);

    ProgressDlg->ProgressLabel->Caption = "Вычисление матрицы парных корреляций...";

       smCorrelation =  new TSymMatrix(mNormalData); // Создать матрицу размером (n x n) коварриационых моментов

    *smCorrelation /=(double)N;

    ProgressDlg->ProgressBar->StepBy(10);

    ProgressDlg->ProgressLabel->Caption = "Вычисление собственных чисел...";

smCorrelation->Eigenvalues(vEigenvalues, smEigenvectors); // Вычислить собственные числа матрицы

ProgressDlg->ProgressBar->StepBy(50);

#ifdef DEBUG

fout << "Исходная метрица данных:" << endl << mData << endl;

    fout << "Среднее:" << endl;

    fout << vAverage << endl;

    fout << "Дисперсия:" << endl;

    fout << vDispersion << endl;

    fout << "Нормализованные данные" << endl;

    fout << mNormalData << endl;

    fout << "Корреляционная матрица:" << endl;

    fout << *smCorrelation << endl;

    fout << "Вектор собственных чисел:" << endl;

    fout << vEigenvalues << endl;

    fout << "Матрица собственных векторов:" << endl;

    fout << smEigenvectors << endl;

#endif

ProgressDlg->ProgressLabel->Caption = "Вычисление матрицы весовых коэффициентов...";

    MakeMainComponents(); // Получить матрицу связи главных компонент с признаков

    ProgressDlg->ProgressBar->StepBy(30);

#ifdef DEBUG

    fout << "Результат:" << endl;

    fout << *smResult << endl;

#endif

}

// Деструктор класса

TMainComp::~TMainComp()

{

delete smCorrelation;

    delete smResult;

}

//

// Создать матрицу А весовых коэффициентов при главных компонентах,

// а также матрицу занчений главных компонент для каждого объекта

//

void TMainComp::MakeMainComponents()

{

TSquareMatrix Sqrt(n);

    int i;

    //double temp;

    // Make matrix with the eigenvalues on diagonal

    for(i=0;i<n;i++)

       for(int j=0;j<n;j++){

             if(vEigenvalues[i]<0){

                   StatusBits |= NegEvalBit;

                vEigenvalues[i] = 0;

            }else

            if(vEigenvalues[i]==0){

            StatusBits |= ZeroEvalBit;

             }

            Sqrt(i,j) = (i==j ? sqrt(vEigenvalues[i]) : 0);

       }

    // Make Principal Components Matrix

    smResult = new TSquareMatrix(smEigenvectors,Sqrt);

    for(i=0; i< n;i++){

       vV[i]=0;

        for(int j=0;j<n;j++)

             vV[i]+= (*smResult)(j,i)*(*smResult)(j,i);

    }

    if(!NegEval() && !ZeroEval()){

       for(i=0; i<n;i++)

             Sqrt(i,i) = 1 / sqrt(vEigenvalues[i]);

       mPC = (mNormalData* (*smResult))*Sqrt;

    }else{

       mPC.SetAll(0);

    }

}


//---------------------------------------------------------------------------

// Главная форма приложения

//

#ifndef MainFormH

#define MainFormH

//---------------------------------------------------------------------------

#include <vcl\Classes.hpp>

#include <vcl\Controls.hpp>

#include <vcl\StdCtrls.hpp>

#include <vcl\Forms.hpp>

#include <vcl\Menus.hpp>

//#include "Matrix.h"

//#include "SMatrix.h"

#include "MainComp.h"

#include <vcl\VCFrmla1.hpp>

#include <vcl\OleCtrls.hpp>

#include <vcl\Dialogs.hpp>

#include <vcl\QuickRep.hpp>

#include <vcl\ExtCtrls.hpp>

#include <vcl\Buttons.hpp>

#include <vcl\ComCtrls.hpp>

#include <vcl\Registry.hpp>

//---------------------------------------------------------------------------

class TForm1 : public TForm

{

__published: // IDE-managed Components

TMainMenu *MainMenu;

TMenuItem *FileItem;

TMenuItem *FileExitItem;

TVCFormulaOne *F1Book;

TMenuItem *N1;

TMenuItem *FileOpenItem;

TOpenDialog *OpenDialog;

TSaveDialog *SaveDialog;

TMenuItem *FileSaveAsItem;

TMenuItem *FileSaveItem;

TMenuItem *DataItem;

TMenuItem *DataCalculateItem;

TMenuItem *HelpItem;

TMenuItem *AboutItem;

TMenuItem *ContentsHelpItem;

TMenuItem *FileNewItem;

TMenuItem *N2;

TMenuItem *FilePrintItem;

TMenuItem *FilePageSetupItem;

TMenuItem *N3;

TMenuItem *EditItem;

TMenuItem *EditCopyItem;

TMenuItem *EditCutItem;

TMenuItem *EditPasteItem;

TMenuItem *FormatItem;

TMenuItem *FormatFontItem;

TFontDialog *FontDialog;

TPrintDialog *PrintDialog;

TPrinterSetupDialog *PrinterSetupDialog;

TMenuItem *N4;

TMenuItem *EditDeleteItem;

TMenuItem *DataSortItem;

TMenuItem *EditDeleteSheetItem;

TMenuItem *InsertItem;

TMenuItem *InsertSheetItem;

TPanel *SpeedPanel;

TSpeedButton *NewSpeedButton;

TSpeedButton *OpenSpeedButton;

TSpeedButton *SaveSpeedButton;

TSpeedButton *SpeedButton1;

TSpeedButton *SpeedButton2;

TSpeedButton *SpeedButton3;

TSpeedButton *CalculateSpeedButton;

TStatusBar *StatusBar;

TMenuItem *OptionsMenu;

TMenuItem *OptionsDirectoriesItem;

TMenuItem *OptionsReport;

TMenuItem *FormatAlignmentItem;

TMenuItem *FormatBorderItem;

TMenuItem *DataTransposeItem;

TMenuItem *DataNormalizeItem;

TMenuItem *N5;

void __fastcall FileExitItemClick(TObject *Sender);

void __fastcall FormResize(TObject *Sender);

void __fastcall FileOpenItemClick(TObject *Sender);

void __fastcall FileSaveAsItemClick(TObject *Sender);

void __fastcall FileSaveItemClick(TObject *Sender);

void __fastcall DataCalculateItemClick(TObject *Sender);

void __fastcall FilePrintItemClick(TObject *Sender);

void __fastcall FilePageSetupItemClick(TObject *Sender);

void __fastcall AboutItemClick(TObject *Sender);

void __fastcall EditCutItemClick(TObject *Sender);

void __fastcall EditCopyItemClick(TObject *Sender);

void __fastcall EditPasteItemClick(TObject *Sender);

void __fastcall FormatFontItemClick(TObject *Sender);

void __fastcall EditDeleteItemClick(TObject *Sender);

void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose);

void __fastcall ContentsHelpItemClick(TObject *Sender);

void __fastcall DataSortItemClick(TObject *Sender);

void __fastcall EditDeleteSheetItemClick(TObject *Sender);

void __fastcall InsertSheetItemClick(TObject *Sender);

void __fastcall FormCreate(TObject *Sender);

void __fastcall FormDestroy(TObject *Sender);

void __fastcall F1BookModified(TObject *Sender);

void __fastcall F1BookSelChange(TObject *Sender);

void __fastcall FormClose(TObject *Sender, TCloseAction &Action);


void __fastcall OptionsDirectoriesItemClick(TObject *Sender);

void __fastcall OptionsReportClick(TObject *Sender);

void __fastcall FormatAlignmentItemClick(TObject *Sender);

void __fastcall FormatBorderItemClick(TObject *Sender);

void __fastcall DataNormalizeItemClick(TObject *Sender);

void __fastcall DataTransposeItemClick(TObject *Sender);

private:     // User declarations

TRegistry * Registry;

void __fastcall AdjustSizes(); // Updates the sizes of the controls

    void __fastcall UpdateMenuItems(TObject * Sender); // Updates items status

    void __fastcall ShowHint(TObject * Sender); // Shows hints in the statusbar

    AnsiString DefaultFontName;

short DefaultFontSize;

public:      // User declarations

__fastcall TForm1(TComponent* Owner);

    int  FileType;

    void __fastcall MakeSheetFromMatrix (TMatrix& mData, String& strSheetName,

       int row_position, AnsiString * RowNames, AnsiString * ColNames);

    void __fastcall Calculate();

};

//---------------------------------------------------------------------------

extern TForm1 *Form1;

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#include <vcl\vcl.h>

#pragma hdrstop

#include <fstream.h>

#include "MainForm.h"

#include "AboutDlg.h"

#include "CalcDlg.h"

#include "Calculat.h"

#include "OptionsDlg.h"

#include "SymMatr.h"

#include "ReportDlg.h"

#include "EdDelDlg.h"

//TRegistry

//---------------------------------------------------------------------------

#pragma resource "*.dfm"

#ifndef DEBUG

 //#define DEBUG   // turns on/off debugging

#endif


// Шрифт по умолчанию


//extern TCalculationsForm *CalculationsForm;

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{


Registry = new TRegistry;

    Registry->OpenKey("SOFTWARE\\Chikhirev\\PCM\\1.0",true);

    OpenDialog->InitialDir = Registry->ReadString("OpenDlgInitialDir");

    SaveDialog->InitialDir = Registry->ReadString("SaveDlgInitialDir");

    DefaultFontName = Registry->ReadString("DefaultFontName");

DefaultFontSize = Registry->ReadInteger("DefaultFontSize");

F1Book->SetDefaultFont(DefaultFontName,DefaultFontSize);

    F1Book->Modified = false;

    //F1Book->FileName = "Таблица.xls";

    //Form1->Caption = Application->Title + " - " + FileName->FileName;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FileExitItemClick(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormResize(TObject *Sender)

{

AdjustSizes();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FileOpenItemClick(TObject *Sender)

{

OpenDialog->FileName = "";

if(OpenDialog->Execute())

    {

       F1Book->Read (OpenDialog->FileName, F1FileExcel5);

       F1Book->TableName=OpenDialog->FileName;

       F1Book->FileName = OpenDialog->FileName;

       F1Book->Modified = false;

       Form1->Caption = Application->Title + " - " + OpenDialog->FileName;

        UpdateMenuItems(Sender);

    }

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FileSaveAsItemClick(TObject *Sender)

{

//SaveDialog->FileName = F1Book->FileName;

if(SaveDialog->Execute())

    {

       F1Book->Write(SaveDialog->FileName, F1FileExcel5);

       F1Book->TableName=SaveDialog->FileName;

       F1Book->FileName = SaveDialog->FileName;

        Form1->Caption = Application->Title + " - " + SaveDialog->FileName;

        F1Book->Modified = false;

    }

    UpdateMenuItems(Sender);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FileSaveItemClick(TObject *Sender)

{

if(F1Book->FileName.IsEmpty()){ // AnsiString

       SaveDialog->FileName = "Таблица.xls";

       FileSaveAsItemClick(Sender);

    }else{

       F1Book->Write(F1Book->FileName, F1FileExcel5);

       F1Book->Modified = false;

    }

    UpdateMenuItems(Sender);


}

//---------------------------------------------------------------------------

// Makes a new named worksheet and fill in it with data from matrix

//

void __fastcall TForm1::MakeSheetFromMatrix(TMatrix& m,String& Name,int row_pos,

AnsiString * RowNames, AnsiString * ColNames)

{

    F1Book->TextRC[row_pos][1]=Name;

    F1Book->SetSelection(row_pos+1,1,row_pos+1,F1Book->MaxCol);

    F1Book->SetFont(DefaultFontName,DefaultFontSize,true,false,false,false,TColor(0,0,0),

       NULL, NULL);

    F1Book->SetActiveCell(row_pos,1);

    F1Book->SetFont(DefaultFontName,DefaultFontSize,true,false,false,false,TColor(0,0,0),

       NULL, NULL);

    row_pos+=1;

for(int i=0;i<m.GetNumRows();i++){

       F1Book->TextRC[row_pos+i+1][1] = RowNames[i];

       for(int j=0;j<m.GetNumCols();j++){

             F1Book->NumberRC[i+row_pos+1][j+2]= m(i,j);

            F1Book->TextRC[row_pos][j+2] = ColNames[j];// FormatRC

        }

    }

    F1Book->SetSelection(row_pos+1,2,row_pos+m.GetNumRows()+1,m.GetNumCols()+2);

F1Book->NumberFormat = "0.000";

F1Book->SetActiveCell(1,1);


}

//

// Основные вычисления выполняе данная функция

//

void __fastcall TForm1::Calculate()

{

ProgressDlg->ProgressLabel->Caption = "Формирование исходных данных...";

ProgressDlg->ProgressBar->Position = 0;

//Application->MessageBox("Form1->Calculate","Calculations",0);

// Getting selected area coordinates

int sc,ec,sr,er;

F1Book->GetSelection(0,sr,sc,er,ec);

int row = 1;

    int iParams = ec - sc; // Number of objects

    int iObjects  = er - sr;  // Number of paremeters

    AnsiString * ColNames = new(AnsiString[iParams]); // Наименования параметров

    AnsiString * RowNames = new(AnsiString[iObjects]); // Наименования объектов

    AnsiString * V = new(AnsiString[iParams]);

    if(iObjects < 2 || iParams < 2) //

       return ;

#ifdef DEBUG

    ofstream fout("MainForm.txt");// Файл для отладки

    fout << '(' << sr << ',' << sc << ")-(" << er << ',' << ec << ')' << endl;

#endif

TMatrix mX(iObjects,iParams);  // Создать матрицу нужной размерности

    // Read selected data from worksheet to the work matrix

    long number = iObjects*iParams;

    ProgressDlg->ProgressBar->Max  = 65535;

    ProgressDlg->ProgressBar->Step = (TProgressRange)(number > 65535 ? 1 : 65535/number);

    for(int i=0; i<iObjects; i++){

       RowNames[i] = F1Book->TextRC[sr+i+1][sc];

        for(int j=0; j<iParams; j++){

             ColNames[j] = F1Book->TextRC[sr][sc+j+1];

            V[j] = AnsiString("V") + AnsiString(j+1);

             // Test for validation of data in cell

             if(F1Book->TypeRC[sr+i+1][sc+j+1]!=1){// Check data type

             AnsiString s("Неверный формат ячейки (");

//                s+=F1Book->RowText[sr+1+i];

                   s+=AnsiString(sr+1+i);

                s+=AnsiString(',');

//                s+=F1Book->ColText[sc+j+1];

                   s+=AnsiString(sc+j+1);

                s+=AnsiString(')');

            Application->MessageBox(s.c_str(),NULL,NULL);

            return;

            }

            // Read data from current cell

             mX(i,j)= F1Book->NumberRC[sr+i+1][sc+j+1];

            ProgressDlg->ProgressBar->StepIt();

       }

    }

#ifdef DEBUG

    fout << "Исходные данные:" << endl;

    fout << mX << endl;

#endif

    TMainComp mcTest(mX);

    ProgressDlg->ProgressLabel->Caption = "Формирование листа отчета..." ;

    ProgressDlg->ProgressBar->Position = 0;

    ProgressDlg->ProgressBar->Max = 100;


    AnsiString ShNm = F1Book->SheetName[F1Book->Sheet];

ProgressDlg->ProgressBar->StepBy(10);

    // Make a new named worksheet

    F1Book->InsertSheets(1,1);

    F1Book->SheetName[1] = AnsiString("Отчет_")+ShNm;

    F1Book->Sheet=1;

    F1Book->SetDefaultFont(DefaultFontName,DefaultFontSize);

    F1Book->SetSelection(1,1,F1Book->MaxRow,1);

    F1Book->SetFont(DefaultFontName,DefaultFontSize,true,false,false,false,

             TColor(0,0,0),NULL, NULL);

    F1Book->SetFont(DefaultFontName,DefaultFontSize,true,false,false,false,

             TColor(0,0,0),NULL, NULL);

    TDateTime now;

F1Book->TextRC[row][1] = AnsiString("Отчет №____ от ") + now.CurrentDate().DateString();

    row++;

    if(Registry->ReadBool("RptData")){

       MakeSheetFromMatrix(mX,"Исходные данные:",row,RowNames,ColNames);

       row+=iObjects+3;

}

    if(Registry->ReadBool("RptNormalData")){

       MakeSheetFromMatrix(mcTest.GetY(),"Нормированные данные",row,RowNames,ColNames);

       row+=iObjects+3;

    }

ProgressDlg->ProgressBar->StepBy(10);

    // Вывести матрицу парных корреляций признаков

    if(Registry->ReadBool("RptCorrMatrix")){

       MakeSheetFromMatrix(mcTest.GetR(),"Матрица парных корреляций признаков:",

       row,ColNames,ColNames);

       row += mcTest.GetR().GetNumRows()+3;

    }

    ProgressDlg->ProgressBar->StepBy(10);

    /*

     if(mcTest.NegEval()){

        ProgressDlg->Close();

       return;

    }

    */

#ifdef DEBUG

    fout << "A:" << endl << mcTest.GetResult() <<  endl;

#endif

if(Registry->ReadBool("RptPCDeal")){

    F1Book->TextRC[row++][1] = "Вклад главных компонент в общую дисперсию:";

       for(int i=0; i<iParams; i++){

             F1Book->TextRC[row][i+2] = AnsiString("V") + AnsiString(i+1);

             F1Book->SetActiveCell(row,i+2);

             F1Book->SetFont(DefaultFontName,DefaultFontSize,true,false,false,false,

                   TColor(0,0,0),NULL, NULL);

             F1Book->NumberRC[row+1][i+2]

                   = (mcTest.GetV())[i];

             F1Book->NumberRC[row+2][i+2]

                   = (mcTest.GetV())[i]*100/mcTest.GetResult().GetNumCols();

       }

    F1Book->SetSelection(row+1,2,row+2,2+iParams);

       F1Book->NumberFormat = "0.000";

       F1Book->TextRC[row+1][1] = "Vr(абс)";// Selection

       F1Book->TextRC[row+2][1] = "Vr(%)";

        row+=4;

    }

ProgressDlg->ProgressBar->StepBy(10);

    //MakeSheetFromMatrix(mcTest.GetPC(),"Principal Components");

    if(Registry->ReadBool("RptPC2ParamsMatrix")){

       MakeSheetFromMatrix( mcTest.GetResult(),

             "Матрица связи главных компонент с параметрами объектов:",row,ColNames,V);


       row+=mcTest.GetResult().GetNumRows()+3;

    }

    ProgressDlg->ProgressBar->StepBy(10);

/*     if(mcTest.ZeroEval()){

        ProgressDlg->Close();

       return;

    }

*/

if(Registry->ReadBool("RptObjectsPC")){

       MakeSheetFromMatrix( mcTest.GetPC(),

             "Главные компоненты объектов, ранжированные по первой ГК:",row,RowNames,V);

    //row+=mcTest.GetPC().GetNumRows()+2;

       F1Book->Sort3(row+2,1,row+iObjects+1,iParams+1,true,-2,0,0);

    }

    ProgressDlg->ProgressBar->StepBy(20);

    ProgressDlg->ProgressLabel->Caption += AnsiString("Готово");

    ProgressDlg->ProgressBar->StepBy(20);

    ProgressDlg->Close();

}

void __fastcall TForm1::DataCalculateItemClick(TObject *Sender)

{

Application->CreateForm(__classid(TProgressDlg), &ProgressDlg);

    ProgressDlg->ShowModal();

    ProgressDlg->Free();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FilePrintItemClick(TObject *Sender)

{

try{

       F1Book->FilePrint(true);

    }catch(EOleException& ){

       return;

    }


}

//---------------------------------------------------------------------------

void __fastcall TForm1::FilePageSetupItemClick(TObject *Sender)

{

F1Book->FilePageSetupDlg();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::AboutItemClick(TObject *Sender)

{

Application->CreateForm(__classid(TAboutBox), &AboutBox);

    AboutBox->ShowModal();

    AboutBox->Free();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::EditCutItemClick(TObject *Sender)

{

F1Book->EditCut();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::EditCopyItemClick(TObject *Sender)

{

F1Book->EditCopy();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::EditPasteItemClick(TObject *Sender)

{

F1Book->EditPaste();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormatFontItemClick(TObject *Sender)

{

TFont* f;

if(!FontDialog->Execute())

       return;

    f = FontDialog->Font;

    //

    F1Book->SetFont(

       f->Name,

        (short)f->Size,

       f->Style.Contains(fsBold),  // Set font properties

        f->Style.Contains(fsItalic),

        f->Style.Contains(fsUnderline),

        f->Style.Contains(fsStrikeOut),

        TColor(f->Color),

        true,

        NULL

        );

}

//---------------------------------------------------------------------------

void __fastcall TForm1::EditDeleteItemClick(TObject *Sender)

{

    Application->CreateForm(__classid(TEditDeleteDlg), &EditDeleteDlg);

    EditDeleteDlg->ShowModal();

    if(EditDeleteDlg->ModalResult==IDOK){

       switch(EditDeleteDlg->RadioGroup->ItemIndex)

       {

        case 0:

             F1Book->EditDelete(F1ShiftHorizontal);

            break;

        case 1:

             F1Book->EditDelete(F1ShiftVertical);

            break;

        case 2:

             F1Book->EditDelete(F1ShiftRows);

            break;

        case 3:

             F1Book->EditDelete(F1ShiftCols);

            break;

        }

    }

    EditDeleteDlg->Free();

//F1Book->EditDelete();

    //F1ShiftHorizontal

    //F1ShiftVertical

    //F1ShiftRows

//F1ShiftCols

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)

{

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

//


if(F1Book->Modified){

       int res = Application->MessageBox(

             "Данные изменены. Сохранить, прежде чем выйти?","Сохранение изменений",MB_YESNOCANCEL);

       switch(res)

    {

       case IDYES:

             FileSaveItemClick(Sender);

            CanClose = !F1Book->FileName.IsEmpty();

             return;

       case IDNO:

             CanClose = true;

             return;

       case IDCANCEL:

             CanClose = false;

             return;

       }

    }else

       CanClose = true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::ContentsHelpItemClick(TObject *Sender)

{

Application->HelpCommand(HELP_CONTENTS,NULL);   // Application

}

//---------------------------------------------------------------------------

void __fastcall TForm1::DataSortItemClick(TObject *Sender)

{

F1Book->SortDlg();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::EditDeleteSheetItemClick(TObject *Sender)

{

F1Book->EditDeleteSheets();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::InsertSheetItemClick(TObject *Sender)

{

F1Book->EditInsertSheets();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::AdjustSizes()

{

    F1Book->Top = SpeedPanel->Height;

F1Book->Height = ClientHeight - SpeedPanel->Height-StatusBar->Height;

    SpeedPanel->Width = F1Book->Width  = ClientWidth;

}

void __fastcall TForm1::FormCreate(TObject *Sender)

{

Application->OnHint = ShowHint;

Screen->OnActiveFormChange = UpdateMenuItems;

    UpdateMenuItems(Sender);

AdjustSizes();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormDestroy(TObject *Sender)

{

Screen->OnActiveFormChange = NULL;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::UpdateMenuItems(TObject *Sender)

{

int scol,srow,ecol,erow;

    F1Book->GetSelection(0,srow,scol,erow,ecol);

CalculateSpeedButton->Enabled = ( ecol-scol>1 && erow-srow>1 ? true:false );

    DataCalculateItem->Enabled = ( ecol-scol>1 && erow-srow>1 ? true:false );

    FileSaveItem->Enabled = F1Book->Modified;

    SaveSpeedButton->Enabled = F1Book->Modified;

}

void __fastcall TForm1::ShowHint(TObject * Sender)

{

StatusBar->SimpleText = Application->Hint;

}

void __fastcall TForm1::F1BookModified(TObject *Sender)

{

UpdateMenuItems(Sender);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::F1BookSelChange(TObject *Sender)

{

UpdateMenuItems(Sender);     

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)

{

    Registry->CloseKey();

    Registry->Free();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::OptionsDirectoriesItemClick(TObject *Sender)

{

Application->CreateForm(__classid(TOKBottomDlg), &OKBottomDlg);

    OKBottomDlg->OpenDlgInitialDirEdit->Text = Registry->ReadString("OpenDlgInitialDir");

OKBottomDlg->SaveDlgInitialDirEdit->Text = Registry->ReadString("SaveDlgInitialDir");

    OKBottomDlg->ShowModal();

    if(OKBottomDlg->ModalResult == IDOK){

       Registry->WriteString("OpenDlgInitialDir", OKBottomDlg->OpenDlgInitialDirEdit->Text);

        Registry->WriteString("SaveDlgInitialDir", OKBottomDlg->SaveDlgInitialDirEdit->Text);

    }

    OKBottomDlg->Free();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::OptionsReportClick(TObject *Sender)

{

Application->CreateForm(__classid(TReportOptionsDlg),&ReportOptionsDlg);

    ReportOptionsDlg->CheckBox1->Checked = Registry->ReadBool("RptData");

ReportOptionsDlg->CheckBox2->Checked = Registry->ReadBool("RptNormalData");

    ReportOptionsDlg->CheckBox3->Checked = Registry->ReadBool("RptCorrMatrix");

ReportOptionsDlg->CheckBox4->Checked = Registry->ReadBool("RptPCDeal");

    ReportOptionsDlg->CheckBox5->Checked = Registry->ReadBool("RptPC2ParamsMatrix");

    ReportOptionsDlg->CheckBox6->Checked = Registry->ReadBool("RptObjectsPC");

    ReportOptionsDlg->ShowModal();

    if(ReportOptionsDlg->ModalResult == IDOK){

       Registry->WriteBool("RptData",ReportOptionsDlg->CheckBox1->Checked);

       Registry->WriteBool("RptNormalData", ReportOptionsDlg->CheckBox2->Checked);

       Registry->WriteBool("RptCorrMatrix",ReportOptionsDlg->CheckBox3->Checked);

    Registry->WriteBool("RptPCDeal",ReportOptionsDlg->CheckBox4->Checked);

       Registry->WriteBool("RptPC2ParamsMatrix",ReportOptionsDlg->CheckBox5->Checked);

       Registry->WriteBool("RptObjectsPC",ReportOptionsDlg->CheckBox6->Checked);

    }

    ReportOptionsDlg->Free();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormatAlignmentItemClick(TObject *Sender)

{

F1Book->FormatAlignmentDlg();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormatBorderItemClick(TObject *Sender)

{

F1Book->FormatBorderDlg();   

}

//---------------------------------------------------------------------------

void __fastcall TForm1::DataNormalizeItemClick(TObject *Sender)

{

int  r1,c1,r2,c2;

F1Book->GetSelection(0,r1,c1,r2,c2);

int rows = r2-r1+1;

int cols = c2-c1+1;

TMatrix buffer(rows,cols);

TMatrix result(rows,cols);

TVector aver(cols);

TVector disp(cols);

for(int i=0; i<rows; i++)

       for(int j=0; j<cols; j++)

             buffer(i,j) = F1Book->NumberRC[r1+i][c1+j];

buffer.Normalize(result,disp,aver);

for(int i=0; i<rows; i++)

       for(int j=0; j<cols; j++)

             F1Book->NumberRC[r1+i][c1+j] = result(i,j);


}

//---------------------------------------------------------------------------

void __fastcall TForm1::DataTransposeItemClick(TObject *Sender)

{

/*

int  r1,c1,r2,c2;

F1Book->GetSelection(0,r1,c1,r2,c2);

int rows = r2-r1+1;

int cols = c2-c1+1;

TMatrix buffer(rows,cols);

for(int i=0; i<rows; i++)

       for(int j=0; j<cols; j++)

             buffer(i,j) = F1Book->NumberRC[r1+i][c1+j];

F1Book->EditInsertSheets();

for(int i=0; i<rows; i++)

       for(int j=0; j<cols; j++)

             F1Book->NumberRC[j+1][i+1] = buffer(i,j);

*/

}

//---------------------------------------------------------------------------

//----------------------------------------------------------------------------

// Модуль диалогового окна с настройками рабочих каталогов

//

#ifndef OptionsDlgH

#define OptionsDlgH

//----------------------------------------------------------------------------

#include <vcl\System.hpp>

#include <vcl\Windows.hpp>

#include <vcl\SysUtils.hpp>

#include <vcl\Classes.hpp>

#include <vcl\Graphics.hpp>

#include <vcl\StdCtrls.hpp>

#include <vcl\Forms.hpp>

#include <vcl\Controls.hpp>

#include <vcl\Buttons.hpp>

#include <vcl\ExtCtrls.hpp>

//----------------------------------------------------------------------------

class TOKBottomDlg : public TForm

{

__published:       

TButton *OKBtn;

TButton *CancelBtn;

TBevel *Bevel;

TEdit *OpenDlgInitialDirEdit;

TLabel *Label1;

TEdit *SaveDlgInitialDirEdit;

TLabel *Label2;

void __fastcall OKBtnClick(TObject *Sender);

void __fastcall CancelBtnClick(TObject *Sender);

private:

public:

virtual __fastcall TOKBottomDlg(TComponent* AOwner);

};

//----------------------------------------------------------------------------

extern TOKBottomDlg *OKBottomDlg;

//----------------------------------------------------------------------------

#endif   


//---------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "OptionsDlg.h"

//---------------------------------------------------------------------

#pragma resource "*.dfm"

TOKBottomDlg *OKBottomDlg;

//---------------------------------------------------------------------

__fastcall TOKBottomDlg::TOKBottomDlg(TComponent* AOwner)

: TForm(AOwner)

{

}

//---------------------------------------------------------------------

void __fastcall TOKBottomDlg::OKBtnClick(TObject *Sender)

{

ModalResult = IDOK;    

}

//---------------------------------------------------------------------------

void __fastcall TOKBottomDlg::CancelBtnClick(TObject *Sender)

{

ModalResult = IDCANCEL;

}

//---------------------------------------------------------------------------

//----------------------------------------------------------------------------

// Диалоговое окно с параметрами отчета

//

#ifndef ReportDlgH

#define ReportDlgH

//----------------------------------------------------------------------------

#include <vcl\System.hpp>

#include <vcl\Windows.hpp>

#include <vcl\SysUtils.hpp>

#include <vcl\Classes.hpp>

#include <vcl\Graphics.hpp>

#include <vcl\StdCtrls.hpp>

#include <vcl\Forms.hpp>

#include <vcl\Controls.hpp>

#include <vcl\Buttons.hpp>

#include <vcl\ExtCtrls.hpp>

//----------------------------------------------------------------------------

class TReportOptionsDlg : public TForm

{

__published:       

TButton *OKBtn;

TButton *CancelBtn;

TGroupBox *GroupBox1;

TCheckBox *CheckBox1;

TCheckBox *CheckBox2;

TCheckBox *CheckBox3;

TCheckBox *CheckBox4;

TCheckBox *CheckBox5;

TCheckBox *CheckBox6;

private:

public:

virtual __fastcall TReportOptionsDlg(TComponent* AOwner);

};

//----------------------------------------------------------------------------

extern TReportOptionsDlg *ReportOptionsDlg;

//----------------------------------------------------------------------------

#endif   

//---------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "ReportDlg.h"

//---------------------------------------------------------------------

#pragma resource "*.dfm"

TReportOptionsDlg *ReportOptionsDlg;

//---------------------------------------------------------------------

__fastcall TReportOptionsDlg::TReportOptionsDlg(TComponent* AOwner)

: TForm(AOwner)

{

}

//---------------------------------------------------------------------

//----------------------------------------------------------------------------

// Диалоговое окно меню "Правка" -> "Удалить…"

//

#ifndef EdDelDlgH

#define EdDelDlgH

//----------------------------------------------------------------------------

#include <vcl\System.hpp>

#include <vcl\Windows.hpp>

#include <vcl\SysUtils.hpp>

#include <vcl\Classes.hpp>

#include <vcl\Graphics.hpp>

#include <vcl\StdCtrls.hpp>

#include <vcl\Forms.hpp>

#include <vcl\Controls.hpp>

#include <vcl\Buttons.hpp>

#include <vcl\ExtCtrls.hpp>

//----------------------------------------------------------------------------

class TEditDeleteDlg : public TForm

{

__published:       

TButton *OKBtn;

TButton *CancelBtn;

TRadioGroup *RadioGroup;

private:

public:

virtual __fastcall TEditDeleteDlg(TComponent* AOwner);

};

//----------------------------------------------------------------------------

extern TEditDeleteDlg *EditDeleteDlg;

//----------------------------------------------------------------------------

#endif   

//---------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop


#include "EdDelDlg.h"

//---------------------------------------------------------------------

#pragma resource "*.dfm"

TEditDeleteDlg *EditDeleteDlg;

//---------------------------------------------------------------------

__fastcall TEditDeleteDlg::TEditDeleteDlg(TComponent* AOwner)

: TForm(AOwner)

{

}

//---------------------------------------------------------------------

//---------------------------------------------------------------------------

// Параллельный процесс для вычисления главных компонент

//

#ifndef CalculatH

#define CalculatH

//---------------------------------------------------------------------------

#include <vcl\Classes.hpp>

#include "Matrix.h"

//---------------------------------------------------------------------------

class TCalculations : public TThread

{

private:

void __fastcall RunPCM ( TMatrix& mData); // Расчет методом главных компонент

__published:

void __fastcall OnTerminate(TObject * Sender);

protected:

void __fastcall Execute();

public:

__fastcall TCalculations(bool CreateSuspended);


};

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#include <vcl\vcl.h>

#pragma hdrstop


#include "Calculat.h"

#include "MainForm.h"

//---------------------------------------------------------------------------

//   Important: Methods and properties of objects in VCL can only be

//   used in a method called using Synchronize, for example:

//

//      Synchronize(UpdateCaption);

//

//   where UpdateCaption could look like:

//

//      void __fastcall TCalculations::UpdateCaption()

//      {

//        Form1->Caption = "Updated in a thread";

//      }

//---------------------------------------------------------------------------

__fastcall TCalculations::TCalculations(bool CreateSuspended)

: TThread(CreateSuspended)

{

FreeOnTerminate = true;

}

//---------------------------------------------------------------------------

void __fastcall TCalculations::Execute()

{

// Synchronize

      Form1->Calculate();

//---- Place thread code here ----

}

//---------------------------------------------------------------------------

void __fastcall TCalculations::OnTerminate(TObject * Sender)

{

//Application->MessageBox("Calculations have been terminated",AnsiString(Sender->ClassName()).c_str(),0);

}

void __fastcall TCalculations::RunPCM(TMatrix &mData)

{

// Расчет методом главных компонент и отображение отчета в рабочей книге

    // Модификация индикатора хода выполнения процесса

}

//---------------------------------------------------------------------------

// Диалоговое окно текущего состояния процесса вычислений

//

#ifndef CalcDlgH

#define CalcDlgH

//---------------------------------------------------------------------------

#include <vcl\Classes.hpp>

#include <vcl\Controls.hpp>

#include <vcl\StdCtrls.hpp>

#include <vcl\Forms.hpp>

#include <vcl\ComCtrls.hpp>

#include "Calculat.h"

//---------------------------------------------------------------------------

class TProgressDlg : public TForm

{

__published: // IDE-managed Components

TLabel *ProgressLabel;

TProgressBar *ProgressBar;

TButton *CancelBtn;

void __fastcall CancelBtnClick(TObject *Sender);

void __fastcall FormClose(TObject *Sender, TCloseAction &Action);

private:     // User declarations

TCalculations * PcmThread;

public:      // User declarations

__fastcall TProgressDlg(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern TProgressDlg *ProgressDlg;

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#include <vcl\vcl.h>

#pragma hdrstop

#include "MainForm.h"

#include "CalcDlg.h"

#include "Calculat.h"

//---------------------------------------------------------------------------

#pragma resource "*.dfm"

TProgressDlg *ProgressDlg;

//---------------------------------------------------------------------------

__fastcall TProgressDlg::TProgressDlg(TComponent* Owner)

: TForm(Owner)

{

PcmThread = new TCalculations(false);

}

//---------------------------------------------------------------------------

void __fastcall TProgressDlg::CancelBtnClick(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

void __fastcall TProgressDlg::FormClose(TObject *Sender, TCloseAction &Action)

{

PcmThread->Terminate();

}

//---------------------------------------------------------------------------

//----------------------------------------------------------------------------

#ifndef AboutDlgH

#define AboutDlgH

//----------------------------------------------------------------------------

#include <vcl\System.hpp>

#include <vcl\Windows.hpp>

#include <vcl\SysUtils.hpp>

#include <vcl\Classes.hpp>

#include <vcl\Graphics.hpp>

#include <vcl\Forms.hpp>

#include <vcl\Controls.hpp>

#include <vcl\StdCtrls.hpp>

#include <vcl\Buttons.hpp>

#include <vcl\ExtCtrls.hpp>

//----------------------------------------------------------------------------

class TAboutBox : public TForm

{

__published:

TPanel *Panel1;

TImage *ProgramIcon;

TLabel *ProductName;

TLabel *Version;

TLabel *Copyright;

TLabel *Comments;

TButton *OKButton;

private:

public:

virtual __fastcall TAboutBox(TComponent* AOwner);

};

//----------------------------------------------------------------------------

extern TAboutBox *AboutBox;

//----------------------------------------------------------------------------

#endif   

//---------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop


#include "AboutDlg.h"

//---------------------------------------------------------------------

#pragma resource "*.dfm"

TAboutBox *AboutBox;

//---------------------------------------------------------------------

__fastcall TAboutBox::TAboutBox(TComponent* AOwner)

: TForm(AOwner)

{

}

//---------------------------------------------------------------------

//---------------------------------------------------------------------------

#ifndef ApplicationH

#define ApplicationH

//---------------------------------------------------------------------------

#include <vcl\Classes.hpp>

#include <vcl\Controls.hpp>

#include <vcl\StdCtrls.hpp>

#include <vcl\Forms.hpp>

//---------------------------------------------------------------------------

class TForm1 : public TForm

{

__published: // IDE-managed Components

private:     // User declarations

public:      // User declarations

__fastcall TForm1(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern TForm1 *Form1;

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#include <vcl\vcl.h>

#pragma hdrstop

//---------------------------------------------------------------------------

USEFORM("MainForm.cpp", Form1);

USERES("Application.res");

USEUNIT("Vector.cpp");

USEUNIT("SquMatr.cpp");

USEUNIT("Matrix.cpp");

USEUNIT("MainComp.cpp");

USEUNIT("SymMatr.cpp");

USEFORM("AboutDlg.cpp", AboutBox);

USEFORM("CalcDlg.cpp", ProgressDlg);

USEUNIT("Calculat.cpp");

USEFORM("OptionsDlg.cpp", OKBottomDlg);

USEFORM("ReportDlg.cpp", ReportOptionsDlg);

USEFORM("EdDelDlg.cpp", EditDeleteDlg);

//---------------------------------------------------------------------------

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

       Application->Initialize();

       Application->Title = "Метод главных компонент";

       Application->HelpFile = "C:\\Program Files\\Borland\\CBuilder\\Projects\\Application\\Pcmhelp.hlp";

       Application->CreateForm(__classid(TForm1), &Form1);

       Application->Run();

}

catch (Exception &exception)

{

       Application->ShowException(&exception);

}

return 0;

}

//---------------------------------------------------------------------------



ПРИЛОЖЕНИЕ 3. Программная документация по гражданской обороне


``СОГЛАСОВАНО``                              

``УТВЕРЖДАЮ``



Консультант по охране труда                    

Зав. кафедрой СА и ПО АСУ

к.т.н., доц.                                                 

д.т.н., проф.

________________ В.И. Острейко                

______________Б.Д. Залещанский

"___"________________ 1999 г.     

"___"________________ 1999 г





АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯ

СИСТЕМА ПО КУРСУ  "ГРАЖДАНСКАЯ ОБОРОНА"


Программа и методика испытаний


ЛИСТ УТВЕРЖДЕНИЯ

Листов





Исполнитель Р.Б. Чихирев


"____" ____________1999 г.


                                                    1999                                               Литера

 УТВЕРЖДЕН









АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯ

СИСТЕМА ПО КУРСУ "ГРАЖДАНСКАЯ ОБОРОНА"

Программа и методика испытаний



Листов


                                     1999                                        Литера

СОДЕРЖАНИЕ



1. Объект испытаний. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


2. Цель испытаний. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


3. Состав предъявляемой документации. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


4. Технические требования. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


5. Методы испытаний. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .



1. ОБЪЕКТ ИСПЫТАНИЙ

Объектом испытаний является автоматизированная расчетная система по курсу ``Гражданская оборона`` .

Система обеспечивает моделирование лабораторных работ на темы :

1.      Землетрясения. Общая характеристика;

2.      Землетрясения. Взрывы газовоздушной смеси;

3.      Землетрясения. Распространение СДЯВ;

4.      Землетрясения. Оценка вероятности возникновения и распространения пожаров.

2. ЦЕЛЬ ИСПЫТАНИЙ

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

3. СОСТАВ ПРЕДЪЯВЛЯЕМОЙ ДОКУМЕНТАЦИИ

В состав документации, предъявляемой при проведении испытаний входят:

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

-     руководство программиста;

-     руководство оператора.

4. ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ

4.1. Требования к программной документации

Документация на программу должна быть разработана в соответствии с требованиями ЕСПД.

4.2. Требования к техническим характеристикам

Требования к совместимости:

-     система должна функционировать на любой ПЭВМ с архитектурой микропроцессора 80486, на которой функционирует операционная система Windows 3.1 или выше.

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

-     ПЭВМ Intel 80486

-     MS DOS 6.22 и Windows 3.1

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

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

Система считается выдержавшей испытания, если содержание результатов испытаний совпадают с эталонными результатами.

5. МЕТОДЫ ИСПЫТАНИЙ

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


Содержание

проверки

 Выполняемые действия

 Эталонный результат

Выбор необходимой лабораторной  работы   

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

На экране -отображение меню выбора опций лабораторной работы

Заполнение таблицы исходных данных

Выбрать пункт меню “Ввод данных” и заполнить таблицу исходных данных

Заполненная таблица

Выполнение расчета

Выбрать пункт меню “Расчет”.

На экране в окне вывода появятся результаты моделирования.


Просмотр отчета

Выбрать пункт меню “Просмотр результата”.

На экране в окне вывода появятся результаты моделирования.


Редактирование отчета и вывод его на печать

Выбрать пункт меню “Просмотр результата”. Откорректировать отчет. Осуществить печать нажав на клавишу.

На принтер выведется откорректированный отчет


Консультант по охране труда                      Зав. кафедрой СА и ПО АСУ

к.т.н., доц.                                                             д.т.н., проф.                                                                                                     

______________ В.И. Острейко              _______________ Б.Д. Залещанский

"___"________________1999г.                    "___"________________ 1999 г.



АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯ

СИСТЕМА ПО КУРСУ  ``ГРАЖДАНСКАЯ ОБОРОНА``


Руководство системного программиста

ЛИСТ УТВЕРЖДЕНИЯ


Листов



                                               

                                                                                    Исполнитель

                                                                                    ___________ Р.Б. Чихирев

                                                                                    "____" ______________ 1999 г.


                                      

                                            1999                                                                    Литера


   УТВЕРЖДЕН

   






АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯ

СИСТЕМА ПО КУРСУ "ГРАЖДАНСКАЯ ОБОРОНА"





Руководство системного программиста


Листов






                                             1999                                                   Литера

АННОТАЦИЯ

Настоящее руководство содержит сведения, необходимые для обеспечения действий системного программиста при настройке и работе с автоматизированной расчетной системой по курсу ``Гражданская оборона``.

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

СОДЕРЖАНИЕ



1.  Общие сведения о системе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2. Настройка системы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3. Проверка работоспособности системы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 

4. Поддержка целостности исходных данных и возможные ошибки . . . . . . . . . . . .

1. ОБЩИЕ СВЕДЕНИЯ О СИСТЕМЕ


АРС по курсу ``Гражданская оборона`` предназначена для проведения следующих расчетов

1.      Землетрясения. Общая характеристика;

2.      Землетрясения. Взрывы газовоздушной смеси;

3.      Землетрясения. Распространение СДЯВ;

4.      Землетрясения. Оценка вероятности возникновения и распространения пожаров.


2. НАСТРОЙКА  СИСТЕМЫ

АРС по курсу "Гражданская оборона" является автономной системой. Она разработана с использованием средств Visual Basic 4.0, поставляется в виде готового исполняемого модуля  и способна функционировать самостоятельно без необходимости установки самой среды программирования.

Для запуска системы  необходимо:

-     скопировать в отдельный каталог оператора все файлы (*.txt - файлы выходных отчетов, ncedit.* - текстовый редактор, MainGo.exe - собственно программа);

-     запустить систему командой MainGo.exe


3. ПРОВЕРКА РАБОТОСПОСОБНОСТИ СИСТЕМЫ

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

4. ПОДДЕРЖКА ЦЕЛОСТНОСТИ ИСХОДНЫХ ДАННЫХ И ВОЗМОЖНЫЕ ОШИБКИ

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

1.   В знаковом представлении чисел с плавающей точкой вместо точки поставлена занятая

2.  Данные введены не в той последовательности как указано

3.  Данные введены не в той системе единиц, как указано

 

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

"СОГЛАСОВАНО"                                      "УТВЕРЖДАЮ"

Консультант по охране труда         Зав. кафедрой СА и ПО АСУ

к.т.н., доц.                                          д.т.н., проф.,

____________ В.И. Острейко          _____________ Б.Д. Залещанский

"____"____________1999 г.             "____"_____________ 1999 г.




АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯ СИСТЕМА

ПО КУРСУ "ГРАЖДАНСКАЯ ОБОРОНА"

Руководство программиста


ЛИСТ УТВЕРЖДЕНИЯ

Р.МИРЭА.00004-01 34 01-ЛУ

Листов


                                                                                                                                               


                                                            Исполнитель

                                                                        ___________ Р.Б. Чихирев

                                                                        "____" ______________ 1999 г.


                                   

                                                                1999

УТВЕРЖДЕН

Р.МИРЭА.00004-01 34 01-ЛУ







АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯ СИСТЕМА

ПО КУРСУ  "ГРАЖДАНСКАЯ ОБОРОНА"

Руководство программиста



Р.МИРЭА.00004-01 34 01-ЛУ

Листов








1999


АННОТАЦИЯ

В настоящем руководстве содержатся общие сведения о структуре системы и данных, необходимые для работы программиста.

СОДЕРЖАНИЕ


1.  Назначение и условия применения програм­мы . . . . . . . . . . . . . . . . . . . . . .


2. Характеристики программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


3. Обращение к программе, входные и выход­ные данные. . . . . . . . . . . . . . . .



1. НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ ПРОГРАММЫ

Автоматизированная расчетная система по курсу ``Гражданская оборона`` предназначена для моделирования лабораторных работ :

          1. Землетрясения. Общая характеристика;

          2. Землетрясения. Взрывы газовоздушной смеси;

3. Землетрясения. Распространение СДЯВ;

4. Землетрясения. Оценка вероятности возникновения и распространения пожаров.


Автоматизированная расчетная система выполнялась в интересах кафедры “Гражданская оборона” МИРЭА .

Автоматизированная расчетная система является автономной системой. Она разработана в среде Visual Basic 4.0. Для ее запуска необходимо запустить файл MainGo.exe.


2. ХАРАКТЕРИСТИКИ ПРОГРАММЫ

Время загрузки программы: максимум 10 секунд (зависит от типа ПЭВМ). Вся информация об ошибках в ходе выполнения выводится на экран дисплея в виде сообщений.

3. ОБРАЩЕНИЕ К ПРОГРАММЕ, ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ

Программа запускается с помощью модуля MainGo.exe.

Входными данными являются значения, вводимые в таблицы исходных данных (Их можно редактировать как в ручную, в любом текстовом редакторе, так и из системы).

Выходными данными являются результаты моделирования, оформленные в виде отчета в формате текстового файла (расширение *.txt).


"СОГЛАСОВАНО"                                                  "УТВЕРЖДАЮ"

Консультант по спецчасти                                      Зав. кафедрой СА и ПО АСУ

к.т.н.                                                                           д.т.н., проф.,

____________В.И. Острейко                            ____________Б.Д.Залещанский "____"______________ 1999 г.                             "____"_______________ 1999 г.



АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯ СИСТЕМА

"ГРАЖДАНСКАЯ ОБОРОНА"

Руководство оператора

ЛИСТ УТВЕРЖДЕНИЯ

Р.МИРЭА.00004-01 34 01-ЛУ

Листов


                                                               

                                                                      Исполнитель

                                                                      ___________ Р.Б. Чихирев

                                                                      "____" _______________ 1999 г.




                                                                      Нормоконтролер

                                                                      "____" _______________ 1999 г.

1999


            УТВЕРЖДЕН

            Р.МИРЭА.00004-01 34 01-ЛУ






АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯ СИСТЕМА

"ГРАЖДАНСКАЯ ОБОРОНА"

Руководство оператора


Р.МИРЭА.00004-01 34 01-ЛУ

Листов







1999


А Н Н О Т А Ц И Я



            АРС  `` Гражданская оборона`` предназначена для проведения следующих расчетов :

определение мощности взрыва ГВС;                    

расчет вероятности возникновения пожара;

оценка распространения СДЯВ;

общая характеристика землетрясений.

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



СОДЕРЖАНИЕ



           Назначение программы ...................................................................................


           Условия выполнения программы......................................................................


           Выполнение программы....................................................................................


1. НАЗНАЧЕНИЕ ПРОГРАММЫ

   АРС  может использоваться  как кафедрой `` Гражданская оборона `` в качестве дополнитель­ного обучающего средства при выполнении лабораторных работ, так и сотрудниками отделов ОТ на предприятиях.


2. УСЛОВИЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ


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

       - IBM PC XT/AT или совместимая ПЭВМ;

       - объем оперативной памяти не менее 1024 Кб;

       - требуется наличие свободного места на жестком диске не менее 100 Мб;

        - операционная среда MSDOS 6.22 и Windows 3.1 и выше (или совместимая).

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

3. ВЫПОЛНЕНИЕ ПРОГРАММЫ

3.1. Для начала работы  с АРС `` Гражданская оборона `` необходимо запустить файл MainGo.exe.


3.2 Сеанс работы с пользователем начинается с вывода на экран главного меню, определяющего основные действия, возможные в системе  (Рис.1):

Ввод данных;       

расчет;

вывод результатов;

выход из системы.


Рис 1. Главное меню


Передвижение  осуществляется  при помощи стрелок, а выбор нужного - нажатием  клавиши  <Enter>.


3.3. Выбор альтернативы приводит оператора в подменю  одной из расчетных работ, представленном на Рис 2.


Характеристика

Распространение СДЯВ

Взрывы ГВС  

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


Рис 2. Подменю расчетной работы

 

Передвижение  осуществляется  при помощи стрелок, а выбор нужного - нажатием  клавиши  <Enter>. По окончании ввода исходных данных для получения результата необходимо выбрать альтернативу ``Расчет`` использованием клавиши <Enter> (Экран задачи после выбора этой альтернативы приведен на Рис 3). Для просмотра коррекции и выводи получившегося результата - выберите альтернативу “Результат”.  


Рис 3. Экран задачи после выбора альтернативы “Расчет”

4. СООБЩЕНИЯ ОПЕРАТОРУ

4.1. При невозможности или отсутствии необходимого для работы файла данных выдается сообщение об ошибке : “Не могу открыть файл <файл. имя>”


         



            "СОГЛАСОВАНО"                                      "УТВЕРЖДАЮ"

            Консультант по спецчасти                          Зав. кафедрой СА и ПО АСУ

            к.т.н.                                                               д.т.н., проф.,

____________ В.И. Острейко                      ___________Б.Д. Залещанский

            "____"______________ 1999 г.                    "____"_______________ 1999 г.





АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯ СИСТЕМА

"ГРАЖДАНСКАЯ ОБОРОНА"

Тексты программ


ЛИСТ УТВЕРЖДЕНИЯ

Р.МИРЭА.00004-01 34 01-ЛУ

Листов

                                                               

                                                                                    Исполнитель

                                                                        ___________ Р.Б. Чихирев

                                                                                    "____" _______________ 1999 г.


                                                                                     Нормоконтролер

                                                                                     "____" _______________ 1999 г.


1999

            УТВЕРЖДЕН

            Р.МИРЭА.00004-01 34 01-ЛУ













АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯ СИСТЕМА

"ГРАЖДАНСКАЯ ОБОРОНА"

Тексты программ




Р.МИРЭА.00004-01 34 01-ЛУ


Листов


1999



ПРИЛОЖЕНИЕ 4. Программная документация по охране труда


``СОГЛАСОВАНО``                              

``УТВЕРЖДАЮ``



Консультант по охране труда                    

Зав. кафедрой СА и ПО АСУ

к.т.н., доц.                                                 

д.т.н., проф.

________________ С.М.Кучерук                

______________Б.Д. Залещанский

"___"________________ 1999 г.     

"___"________________ 1999 г





АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯСИСТЕМА

ПО КУРСУ  "ОХРАНА ТРУДА"

Программа и методика испытаний


ЛИСТ УТВЕРЖДЕНИЯ





Листов____






Исполнитель

______________ Р.Б. Чихирев

"____" ____________1999 г.




1999


УТВЕРЖДЕН












АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯ

СИСТЕМА ПО КУРСУ "ОХРАНА ТРУДА"

Программа и методика испытаний








Листов_____



















                                                            1999                                                    Литера

СОДЕРЖАНИЕ



1. Объект испытаний. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2. Цель испытаний. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3. Состав предъявляемой документации. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4. Технические требования. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5. Методы испытаний. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


1. ОБЪЕКТ ИСПЫТАНИЙ

Объектом испытаний является автоматизированная расчетная система по курсу ``Охрана труда`` .

Система обеспечивает моделирование лабораторных работ на темы :

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

Постановка лабораторных работ исследования загрязнения выбросами из широкого отдельно стоящего здания.

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

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


2. ЦЕЛЬ ИСПЫТАНИЙ

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


3. СОСТАВ ПРЕДЪЯВЛЯЕМОЙ ДОКУМЕНТАЦИИ

В состав документации, предъявляемой при проведении испытаний входят:

руководство системного программиста;

руководство программиста;

руководство оператора.

4. ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ

4.1. Требования к программной документации

Документация на программу должна быть разработана в соответствии с требованиями ЕСПД.

4.2. Требования к техническим характеристикам

Требования к совместимости:

система должна функционировать на любой ПЭВМ с архитектурой микропроцессора 80286, на которой функционирует операционная система DOS 3.30 или выше.

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

ПЭВМ Intel 80286

ОС DOS 3.30

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

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

Система считается выдержавшей испытания, если содержание результатов испытаний совпадают с эталонными результатами.

5. МЕТОДЫ ИСПЫТАНИЙ

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


Содержание

проверки

 Выполняемые действия

 Эталонный результат

Выбор необходимой лабораторной  работы   

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

На экране -отображение меню выбора опций лабораторной работы

Заполнение таблицы исходных данных

Выбрать пункт меню “Ввод данных” и заполнить таблицу исходных данных

Заполненная таблица

Выполнение расчета

Выбрать пункт меню “Расчет”.

На экране в окне вывода появятся результаты моделирования.


Просмотр отчета

Выбрать пункт меню “Просмотр результата”.

На экране в окне вывода появятся результаты моделирования.


Редактирование отчета и вывод его на печать

Выбрать пункт меню “Просмотр результата”. Откорректировать отчет. Осуществить печать нажав на клавишу F8.

На принтер выведется откорректированный отчет




Консультант по охране труда к.т.н., доц

Зав. кафедрой СА и ПО АСУ д.т.н., проф

______________ С.М. Кучерук

_______________ Б.Д. Залещанский

"___"________________1999г

"___"________________ 1999 г.





АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯ

СИСТЕМА ПО КУРСУ `ОХРАНА ТРУДА``

Руководство системного программиста



ЛИСТ УТВЕРЖДЕНИЯ








Листов_____











Исполнитель


___________ Р.Б. Чихирев


"____" _______________ 1999 г.




Нормоконтролер




"____" _______________ 1999 г.



 Литера




1999

УТВЕРЖДЕН













АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯ

СИСТЕМА ПО КУРСУ "ОХРАНА ТРУДА"





Руководство системного программиста


Листов

















1999

Литера

АННОТАЦИЯ


Настоящее руководство содержит сведения, необходимые для обеспечения действий системного программиста при настройке и работе с автоматизированной расчетной системой по курсу ``Охрана труда``.

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

СОДЕРЖАНИЕ



1. Общие сведения о системе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2. Настройка системы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3. Проверка работоспособности системы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 

4.Поддержка целостности исходных данных и возможные ошибки . . . .  . . .

1. ОБЩИЕ СВЕДЕНИЯ О СИСТЕМЕ


АРС по курсу ``Охрана труда`` предназначена для проведения следующих расчетов

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

Постановка лабораторных работ исследования загрязнения выбросами из широкого отдельно стоящего здания.

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

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


2. НАСТРОЙКА  СИСТЕМЫ

АРС по курсу "Охрана труда" является автономной системой. Она разработана с использованием средств Borland C++ 3.1, поставляется в виде готового исполняемого модуля  и способна функционировать самостоятельно без необходимости установки самой среды программирования.

Для запуска системы  необходимо:

скопировать в отдельный каталог оператора все файлы (*.dat - файлы исходных данных, *.txt - файлы выходных отчетов, ncedit.* - текстовый редактор, lab.exe - собственно программа);

запустить систему командой lab.exe


3. ПРОВЕРКА РАБОТОСПОСОБНОСТИ СИСТЕМЫ

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

4. ПОДДЕРЖКА ЦЕЛОСТНОСТИ ИСХОДНЫХ ДАННЫХ И ВОЗМОЖНЫЕ ОШИБКИ

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

В конце файла отсутствует перевод на новую строку

После знака равно отсутствует пробел

В знаковом представлении чисел с плавающей точкой вместо точки поставлена занятая

Данные введены не в той последовательности, как указано

Данные введены не в той системе единиц, как указано

 

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

"СОГЛАСОВАНО"                                      "УТВЕРЖДАЮ"

Консультант по охране труда          Зав. кафедрой СА и ПО АСУ

к.т.н., доц.                                          д.т.н., проф.,

____________ С. М. Кучерук          _____________ Б.Д. Залещанский

"____"____________1999 г.             "____"_____________ 1999 г.






АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯ СИСТЕМА

ПО КУРСУ "ОХРАНА ТРУДА"

Руководство программиста


ЛИСТ УТВЕРЖДЕНИЯ

Р.МИРЭА.00004-01 34 01-ЛУ


Листов______


                                                               

                                                                                   







Исполнитель


___________ Р.Б. Чихирев


"____" ______________ 1999 г.



1999




УТВЕРЖДЕН

Р.МИРЭА.00004-01 34 01-ЛУ













АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯ СИСТЕМА

ПО КУРСУ  "ОХРАНА ТРУДА"

Руководство программиста





Р.МИРЭА.00004-01 34 01-ЛУ






Листов_____













1999



АННОТАЦИЯ

В настоящем руководстве содержатся общие сведения о структуре системы и данных, необходимые для работы программиста.


СОДЕРЖАНИЕ


1.Назначение и условия применения програм­мы . . . . . . . . . . . . . . . . . . . . . .

2. Характеристики программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3. Обращение к программе, входные и выход­ные данные. . . . . . . . . . . . . . . .



1. НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ ПРОГРАММЫ

Автоматизированная расчетная система по курсу ``Охрана труда`` предназначена для моделирования лабораторных работ :

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

Постановка лабораторных работ исследования загрязнения выбросами из широкого отдельно стоящего здания.

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

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


Автоматизированная расчетная система выполнялась в интересах кафедры “Экология и охрана труда” МГИРЭА (ТУ).

Автоматизированная расчетная система является автономной системой. Она разработана в среде Borland C++ 3.1 на языке ANSI C. Для ее запуска необходимо запустить файл lab.exe.


2. ХАРАКТЕРИСТИКИ ПРОГРАММЫ

Время загрузки программы: максимум 10 секунд (зависит от типа ПЭВМ). Вся информация об ошибках в ходе выполнения выводится на экран дисплея в виде сообщений.


3. ОБРАЩЕНИЕ К ПРОГРАММЕ, ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ

Программа запускается с помощью модуля lab.exe.

Входными данными являются значения, вводимые в таблицы исходных данных, которые содержаться в файлах с расширением *.dat. (Их можно редактировать как в ручную, в любом текстовом редакторе, так и из системы).

Выходными данными являются результаты моделирования, оформленные в виде отчета в формате текстового файла (расширение *.txt).


"СОГЛАСОВАНО"

"УТВЕРЖДАЮ"

Консультант по спецчасти к.т.н.

Зав. кафедрой СА и ПО АСУ д.т.н., проф.

____________С.М.Кучерук

___________Б.Д.Залещанский

"____"_____________ 1999 г          

"____"_____________ 1999 г.














АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯ СИСТЕМА

"ОХРАНА ТРУДА"

Руководство оператора






ЛИСТ УТВЕРЖДЕНИЯ

Р.МИРЭА.00004-01 34 01-ЛУ

Листов





Исполнитель


___________ Р.Б. Чихирев


"____" _______________ 1999 г.




Нормоконтролер




"____" _______________ 1999 г.










1999



УТВЕРЖДЕН

Р.МИРЭА.00004-01 34 01-ЛУ











АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯ СИСТЕМА

"ОХРАНА ТРУДА"

Руководство оператора



Р.МИРЭА.00004-01 34 01-ЛУ


Листов______








1999


АННОТАЦИЯ

АРС  `` Охрана труда ``  предназначена для проведения следующих расчетов:

·         определение мощности взрыва паров;              

·         определение количества пара для пожаротушения;

·         определение взрывоопасного состояния;

·         расчет пространственного распределения СВЧ-илучения;

·         расчет флотационной установки;

·         определение категории взрывоопасности;

·         расчет вероятности возникновения пожара;

·         расчет эвакуации при пожаре.

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

СОДЕРЖАНИЕ

Назначение программы ...................................................................................

Условия выполнения программы......................................................................

Выполнение программы....................................................................................

1. НАЗНАЧЕНИЕ ПРОГРАММЫ

   АРС  может использоваться  как кафедрой ``Охрана труда`` в качестве дополнитель­ного обучающего средства при выполнении лабораторных работ.


2. УСЛОВИЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ

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

-IBM PC XT/AT или совместимая ПЭВМ;

- объем оперативной памяти не менее 640 Кб;

 - требуется наличие свободного места на жестком диске не менее 3 Мб;

- операционная среда MSDOS 3.3 и выше (или совместимая).

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

3. ВЫПОЛНЕНИЕ ПРОГРАММЫ

3.1. Для начала работы  с АРС `` Охрана труда `` необходимо запустить файл lab.exe.


3.2 Сеанс работы с пользователем начинается с вывода на экран главного меню, определяющего основные действия, возможные в системе  (Рис.1):

        выбор одной из 8-ми лабораторных работ ;

        выход из системы :


Расчет безопасности элекроустановок в сетях с изолированной нейтралью

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

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

Оценка степени загрязнения выбросами из группы зданий

Выход


Рис 1. Главное меню


Передвижение  осуществляется  при помощи стрелок, а выбор нужного - нажатием  клавиши  <Enter>.


Выбор альтернативы приводит оператора в подменю  одной из лабораторных работ, представленном на Рис 2.


Коррекция данных

Расчет

Просмотр  

Вернуться


Рис 2. Подменю лабораторной работы

 

Передвижение  осуществляется  при помощи стрелок, а выбор нужного - нажатием  клавиши  <Enter>. По окончании ввода исходных данных для получения результата необходимо выбрать альтернативу ``Расчет`` использованием клавиши <Enter> (Экран задачи после выбора этой альтернативы приведен на Рис 3). Для просмотра коррекции и выводи получившегося результата - выберите альтернативу “Просмотр”. Для возвращения в основное меню при помощи стрелок выбрать альтернативу ``Вернуться ``.


Rf = 1000

Uf = 380

f = 50

C = 0.0001

L=10

                       

Ток через человека I = 0.0153 A


Рис 3. Экран задачи после выбора альтернативы “Расчет”



4. СООБЩЕНИЯ ОПЕРАТОРУ

4.1. При невозможности или отсутствии необходимого для работы файла данных выдается сообщение об ошибке : “Не могу открыть файл < имя файла>”


"СОГЛАСОВАНО"

"УТВЕРЖДАЮ"

Консультант по спецчасти к.т.н.

Зав. кафедрой СА и ПО АСУ д.т.н., проф.,

____________ С. М. Кучерук

___________Б.Д. Залещанский

"____"______________ 1999 г.

"____"_______________ 1999 г.

                       


                       

           

 







АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯ СИСТЕМА

"ОХРАНА ТРУДА"

Тексты программ




ЛИСТ УТВЕРЖДЕНИЯ

Р.МИРЭА.00004-01 34 01-ЛУ





Листов____




Исполнитель


___________ Р.Б. Чихирев


"____" _______________ 1999 г.




Нормоконтролер




"____" _______________ 1999 г.



1999



УТВЕРЖДЕН

Р.МИРЭА.00004-01 34 01-ЛУ













АВТОМАТИЗИРОВАННАЯ РАСЧЕТНАЯ СИСТЕМА

"ОХРАНА ТРУДА"

Тексты программ





Р.МИРЭА.00004-01 34 01-ЛУ


Листов





















1999


// г================================================¬

// ¦ File lab.cpp                                   ¦

// ¦ Постановка лабораторных работ по Охране труда  ¦

// ================================================-


#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <stdlib.h>

#include <dos.h>   

#include <math.h>

#include <process.h>



//--------------------------------------------------------------

// Подпрограмма вывода одного символа в видеопамять

// Для адаптеров типа CGA/EGA/VGA


void vovputch(int x,int y,char c,char attr)

{

pokeb(0xB800,(80*y+x)*2,c);

pokeb(0xB800,(80*y+x)*2+1,attr);

}

//---------------------------------------------------------------

// Функция изменяет атрибуты прямоугольника с заданными параметрами

//

void shadow(int startx,int starty,int endx,int endy,char attr)

{

int i,j;

for(i=startx;i<=endx;i++)

        for(j=starty;j<=endy;j++)

               pokeb(0xB800,(j*80+i)*2+1,attr);

}

//----------------------------------------------------------------

//Функция устанавливает положение курсора


void move_cursor(int x, int y)

{

union REGS r;

r.h.ah=2;

r.h.bh=0;

r.h.dh=x;

r.h.dl=y;

int86(0x10,&r,&r);

}


//----------------------------------------------------------------

//Функция рисует рамку с заданными координатами

//

void border(int left,int top,int right,int bottom)

{

int i,j;

for(i=left;i<=right;i++)

{

        vovputch(i-1,top-1,'=',23);

        vovputch(i-1,bottom-1,'=',23);

}

for(j=top;j<=bottom;j++)

{

        vovputch(left-1,j-1,'¦',23);

        vovputch(right-1,j-1,'¦',23);

}

vovputch(left-1,top-1,'г',23);

vovputch(right-1,top-1,'¬',23);

vovputch(left-1,bottom-1,'L',23);

vovputch(right-1,bottom-1,'-',23);

}


//---------------------------------------------------------------

// Вывод строки в заданных координатах экрана

// Понимает \n


void vovputs(int x1,int y1,char *s,int attrib)

{

int a=x1;

int b=y1;

while(*s)

{

        if(*s=='\n'){

               a=x1;

                      b++;

                      s++;

        }

               vovputch(a,b,*s,attrib);

               s++;

               a++;

  }

}


//---------------------------------------------------------------

// Создаёт всплывающее меню и выводит его на экран в требуемом месте

// Выводит в него строки текста

// Возвращает номер выбранной строки

//

int wind(int startx,int starty,char *text[],int maxcount)

{

register int i,j;

void *d;

char choice;

int counter,end,firstx,firsty,out;

int restore;

int left,top,right,bottom,maxlen;


maxlen = strlen(text[0]);// Размер строки текста в окне (!)


// Положение окна

left=startx;

right=left+maxlen+3;

top=starty;

bottom=top+maxcount-1+4;


// Память для хранения строки текста

d = new char[maxlen*2+2];


// Сохранить область окна и тени

gettext(left,top,right+1,bottom+1,d);


// Нарисовать затенение

shadow(left,top,right,bottom,7);


for(i=left;i<=right;i++)

for(j=top;j<=bottom;j++)

        vovputch(i-1,j-1,' ',23);


 // Нарисовать рамку

border(left,top,right,bottom);


textattr(23); // Установить атрибуты текста

window(left,top,right,bottom);// Установить окно для вывода


firstx=3; //

firsty=3; //


for(i=0;i<maxcount;i++){

        gotoxy(firstx,firsty+i);

        cputs(text[i]);

}

textattr(15);

gotoxy(firstx,firsty);

cputs(text[0]);


counter=0;

textattr(23);

end=1;

do{

        choice=getch();

        switch(choice)

        {

        case 0:

               choice=getch();

               switch(choice)

               {

              case 72:

                      counter--;

                      if(counter<0)

                             counter=maxcount-1;

                      restore=counter;

                      restore++;

                      if(restore>maxcount-1)

                             restore=0;

                      textattr(23);

                      gotoxy(firstx,firsty+restore);

                      cputs(text[restore]);

                      textattr(15);

                      gotoxy(firstx,firsty+counter);

                      cputs(text[counter]);

                      break;

               case 80:

                      counter++;

                      if(counter>maxcount-1)

                             counter=0;

                      restore=counter;

                      restore--;

                      if(restore<0)

                             restore=maxcount-1;

                      textattr(23);

                      gotoxy(firstx,firsty+restore);

                      cputs(text[restore]);

                      textattr(15);

                      gotoxy(firstx,firsty+counter);

                      cputs(text[counter]);

                      break;

               }

               break;

        case '\r':

               out=counter+1;

               end=0;

               break;

        default:

        out=choice;

        end=0;

        break;

        }

} while(end!=0);

puttext(left,top,right+1,bottom+1,d);

delete []d;

textattr(23);

return(out);

}

//

// Открывает окно и выводит туда текст

//

void textwindow(int x,int y,char *t)

{

register int i,j;

int hei,left,top,right,bottom,maxlen,l;

int len[24];

char *p;

void *w;

int co;


for(co=0;co<=24;co++) len[co]=0;

maxlen=0;

p=t;

hei=1;

l=0;


while(*p){

        len[l]++;

        if(*p=='\n'){

               hei++;

               l++;

        }

        p++;

}


maxlen=len[0];

for(i=0;i<=l;i++)

if(len[i]>maxlen)

        maxlen=len[i];

left=x;

top=y;

right=x+maxlen+1;

bottom=y+hei+1;

w=new char[maxlen*2+2];

gettext(left,top,right+1,bottom+1,w);

shadow(left,top,right,bottom,7);

for(i=left;i<=right;i++)

        for(j=top;j<=bottom;j++)

               vovputch(i-1,j-1,' ',23);

border(left,top,right,bottom);

textattr(23);

window(left,top,right,bottom);

vovputs(left,top,t,23);

getch();

puttext(left,top,right+1,bottom+1,w); //

delete []w;

}

//

// Расчет безопасности в электроустановках с изолированной нейтралью

// с компенсацией емкостных токов

//

int electric(void)

{

return 0;

}


// --------------------------------------------------------------

// Расчёт выбросов из узкого здания

// Сначала считываем информацию из файла, затем выводим на экран

// и генерируем отчет в файле


int uzkoe(void)

{

FILE *d1, *d2;

int i, len, j, k, m, n;

static char *in_str, *fl_str, out_str[256];

double M, K, V, Hzd, L, B, X, Y /*, B1*/ ;

double C, Cx, Cy, S1;

double C1, Cx1, Cy1;


if ((d1 = fopen("uzkoe.dat", "rt")) == NULL){

        fprintf(stderr, "Не могу открыть файл <uzkoe.dat>.\n");

        return 1;

}


for(m=1;m<=75;m++)

        for(n=1;n<=10;n++)

               vovputch(m,n,' ',23);

border(2,2,76,11);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,2,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

M = atof(fl_str); // кол-во вр-х веществ


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,3,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

K = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,4,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

V = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,5,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

Hzd = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,6,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

L = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,7,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

B = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,8,in_str,23);

for(i=len;i>=0;i--)

if(in_str[i]=='=') break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

X = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,9,in_str,23);

for(i=len;i>=0;i--)

if(in_str[i]=='=')

        break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

Y = atof(fl_str);


fclose(d1);


vovputs(2,22,"Результаты расчетов смотрите в файле <uzkoe.txt>",25);


if ((d2 = fopen("uzkoe.txt", "wt")) == NULL){

        fprintf(stderr, "Не могу открыть файл <uzkoe.txt>.\n");

        return 1;

}


for(m=1;m<=75;m++)

        for(n=13;n<=23;n++)

               vovputch(m,n,' ',25);

border(2,14,76,24);


if( X>=0 && X<=6*Hzd){

        vovputs(2,14,"В единой циркуляционной зоне 0<=х<=6Нзд\n",25);

        Cx = (1.3*M*K)/V;

        Cx *= ( (0.6/(Hzd*L)) + 42/pow((1.4*L+B+X),2) );

        sprintf(out_str,"%.2f",Cx);

        strcat(out_str," - Концентрация вредных веществ Сх\n");

        vovputs(2,15,out_str,25);

        fputs(out_str,d2);


        S1 = exp( -(30*Y*Y) / pow((1.4*L+B+X),2) );

        Cy = (1.3*M*K)/V;

        Cy *= ( (0.6/(Hzd*L)) + (42*S1)/pow((1.4*L+B+X),2) );

        sprintf(out_str,"%.2f",Cy);

        strcat(out_str," - Концентрация вредных веществ Сy\n");

        vovputs(2,16,out_str,25);

        fputs(out_str,d2);


        C = (2*M*K)/(V*L*Hzd);

        sprintf(out_str,"%.2f",C);

        strcat(out_str," - Концентрация вредных веществ С\n");

        vovputs(2,17,out_str,25);

        fputs(out_str,d2);

}else{

        vovputs(2,18,"В циркуляционной зоне за зданием х>6Нзд\n",25);

        Cx1 = (55*M*K)/(V*pow(1.4*L+B+X,2));

        sprintf(out_str,"%.2f",Cx1);

        strcat(out_str," - Концентрация вредных веществ Сх\n");

        vovputs(2,19,out_str,25);

        fputs(out_str,d2);


        S1 = exp( -(30*Y*Y) / pow((1.4*L+B+X),2) );

        Cy1 = Cx1*S1;

        sprintf(out_str,"%.2f",Cy1);

        strcat(out_str," - Концентрация вредных веществ Сy\n");

        vovputs(2,20,out_str,25);

        fputs(out_str,d2);


        C1 = (7.2*M*K)/(V*L*(B+X));

        sprintf(out_str,"%.2f",C1);

        strcat(out_str," - Концентрация вредных веществ С\n");

        vovputs(2,21,out_str,25);

        fputs(out_str,d2);

}


fclose(d2);

getch();

return 0;

}


// Расчёт выбросов из широкого здания

// Сначала считываем информацию из файла, затем генерируем отчет в файле


int shirokoe(void)

{

FILE *d1, *d2;

int i, len, j, k, m, n;

static char *in_str, *fl_str, out_str[256];

double M, K, V, Hzd, L, B, X, Y, B1, B2, LL, mm, B3;

double Htld, Hgr, H;

double C, Cx, Cy,S, S1,S2,S3, S4;

double C1, Cx1, Cy1, C2, Cx2, Cy2;

double C3, Cx3, Cy3, C4, Cx4,Cy4;

double C5, Cx5, Cy5, C6, Cx6, Cy6;

double C7, Cx7, /*Cy7, */ C8, Cx8 , Cy8;

double C9, Cx9,Cy9, C10, Cx10,Cy10;

double C11, Cx11, Cy11;


if ((d1 = fopen("shirokoe.dat", "rt")) == NULL){

        fprintf(stderr, "Не могу открыть файл <shirokoe.dat>.\n");

        return 1;

}


for(m=1;m<=75;m++)

        for(n=1;n<=16;n++)

               vovputch(m,n,' ',23);

border(2,2,76,17);


//

in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,2,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

M = atof(fl_str); // Количество вредных веществ, выбр. источником


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,3,in_str,23);

for(i=len;i>=0;i--)

if(in_str[i]=='=') break;

for(j=i+1,k=0;j<len;j++,k++)

fl_str[k]=in_str[j];

fl_str[k]='\0';

K = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,4,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

V = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,5,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

Hzd = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,6,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

L = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,7,in_str,23);

for(i=len;i>=0;i--)

if(in_str[i]=='=')

        break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

B = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,8,in_str,23);

for(i=len;i>=0;i--)

if(in_str[i]=='=')

        break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

X = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,9,in_str,23);

for(i=len;i>=0;i--)

if(in_str[i]=='=')

        break;

for(j=i+1,k=0;j<len;j++,k++)

  fl_str[k]=in_str[j];

fl_str[k]='\0';

Y = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,10,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

B1 = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,11,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

B2 = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,12,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=') break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

LL = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,13,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

mm = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,14,in_str,23);

for(i=len;i>=0;i--)

if(in_str[i]=='=')

        break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

H = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,15,in_str,23);

for(i=len;i>=0;i--)

if(in_str[i]=='=')

        break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

        B3 = atof(fl_str);


fclose(d1);


for(m=1;m<=75;m++)

        for(n=18;n<=23;n++)

               vovputch(m,n,' ',25);

border(2,19,76,24);


vovputs(2,19,"Результаты расчетов смотрите в файле <shirokoe.txt>",25);


if ((d2 = fopen("shirokoe.txt", "wt")) == NULL){

        fprintf(stderr, "Не могу открыть файл <shirokoe.txt>.\n");

        return 1;

}



fputs("В наветренной циркуляционной зоне\n",d2);

if( B1<=2.5*Hzd){

        fputs("На крыше в наветренной циркуляционной зоне b1<=2.5*Нзд\n",d2);

        Cx = (1.3*M*K)/V;

        Cx *= ( (0.6/(Hzd*L)) + 42/pow((1.4*L+B1),2) );

        sprintf(out_str,"%.2f",Cx);

        strcat(out_str," - Концентрация вредных веществ Сх\n");

        fputs(out_str,d2);

        S = exp( -(30*Y*Y) / pow((1.4*L+B1),2) );

        Cy = (1.3*M*K)/V;

        Cy *= ( (1/(Hzd*L)) + (42*S)/pow((1.4*L+B1),2) );

        sprintf(out_str,"%.2f",Cy);

        strcat(out_str," - Концентрация вредных веществ Сy\n");

        fputs(out_str,d2);


        C = (3.9*M*K)/(V*L*Hzd);

        sprintf(out_str,"%.2f",C);

        strcat(out_str," - Концентрация вредных веществ С\n");

        fputs(out_str,d2);

}else{

        fputs("На крыше вне наветренной циркуляционной зоны b1>2.5*Нзд\n",d2);

        Cx1 = (55*M*K)/(V*pow(1.4*L+B1,2));

        sprintf(out_str,"%.2f",Cx1);

        strcat(out_str," - Концентрация вредных веществ Сх\n");

        fputs(out_str,d2);


        S = exp( -(30*Y*Y) / pow((1.4*L+B1),2) );

        Cy1 = Cx1*S;

        sprintf(out_str,"%.2f",Cy1);

        strcat(out_str," - Концентрация вредных веществ Сy\n");

        fputs(out_str,d2);


        C1 = (6.2*M*K)/(V*L*B1);

        sprintf(out_str,"%.2f",C1);

        strcat(out_str," - Концентрация вредных веществ С\n");

        fputs(out_str,d2);

}

if( X <= 4*Hzd && X >=0 ){

               fputs("В заветренной циркуляционной зоне 0<=х<=4*Нзд\n",d2);

        Cx2 = (5.6*M*mm*K)/(V*L*Hzd);

        sprintf(out_str,"%.2f",Cx2);

        strcat(out_str," - Концентрация вредных веществ Сх\n");

        fputs(out_str,d2);


        S1 = exp( -(30*Y*Y) / pow((1.4*L+B+X),2) );

        Cy2 = Cx2*S1;

        sprintf(out_str,"%.2f",Cy2);

        strcat(out_str," - Концентрация вредных веществ Сy\n");

        fputs(out_str,d2);


        C2 = (2.8*M*mm*K)/(V*L*Hzd);

        sprintf(out_str,"%.2f",C2);

        strcat(out_str," - Концентрация вредных веществ С\n");

        fputs(out_str,d2);

}else{

        fputs("Вне заветренной циркуляционной зоны х>4*Нзд\n",d2);

        Cx3 = (15*M*K)/(V*L*(B+X));

        sprintf(out_str,"%.2f",Cx3);

        strcat(out_str," - Концентрация вредных веществ Сх\n");

        fputs(out_str,d2);


        S1 = exp( -(30*Y*Y) / pow((1.4*L+B+X),2) );

        Cy3 = Cx3*S1;

        sprintf(out_str,"%.2f",Cy3);

        strcat(out_str," - Концентрация вредных веществ Сy\n");

        fputs(out_str,d2);


        C3 = (7.2*M*K)/(V*L*(B+X));

        sprintf(out_str,"%.2f",C3);

        strcat(out_str," - Концентрация вредных веществ С\n");

        fputs(out_str,d2);

}



Hgr = 0.36 * B3 + 2.5 * Hzd;

Htld = (H-1.8*Hzd)/(Hgr-1.8*Hzd);


if(Htld>0.3){

        fputs("Вне наветренной циркуляционной зоны над крышей при Н<0.3\n",d2);

        if(B1>=2.5*Hzd){

               fputs("На крыше вне наветренной циркуляционной зоны b1>=2.5*Нзд\n",d2);

               /*S4 = exp( -(30*(pow(H-Hzd,2)*Y*Y)) / pow(B2),2) );*/

               Cx4 = (55*M*K)/(V*B2*B2+55*LL);

               sprintf(out_str,"%.2f",Cx4);

                      strcat(out_str," - Концентрация вредных веществ Сх\n");

               fputs(out_str,d2);

               S2 = exp( -(30*Y*Y) / pow(B2,2) );

               Cy4 = Cx4*S2;

               sprintf(out_str,"%.2f",Cy4);

               strcat(out_str," - Концентрация вредных веществ Сy\n");

               fputs(out_str,d2);


               C4 = (7.2*M*K)/(V*L*B2+7.2*LL);

               sprintf(out_str,"%.2f",C4);

               strcat(out_str," - Концентрация вредных веществ С\n");

               fputs(out_str,d2);  

        }


               if( X <= 4*Hzd && X >=0 ){

               fputs("В заветренной циркуляционной зоне 0<=х<=4*Нзд\n",d2);

               Cx5 = (1.3*M*mm*K)/V;

               Cx5 *= (0.8/(Hzd*L))+(42/pow(1.4*L+X,2));

               sprintf(out_str,"%.2f",Cx5);

               strcat(out_str," - Концентрация вредных веществ Сх\n");

               fputs(out_str,d2);


               S3 = exp( -(30*Y*Y) / pow((1.4*L+X),2) );

               Cy5 = (1.3*M*mm*K)/V;

               Cy5 *= (0.8/(Hzd*L))+((42*S3)/pow(1.4*L+X,2));

               sprintf(out_str,"%.2f",Cy5);

               strcat(out_str," - Концентрация вредных веществ Сy\n");

               fputs(out_str,d2);


               C5 = (2.8*M*mm*K)/(V*L*Hzd);

               sprintf(out_str,"%.2f",C5);

               strcat(out_str," - Концентрация вредных веществ С\n");

               fputs(out_str,d2);

        }else{

               fputs("Вне заветренной циркуляционной зоны за зданием х>4*Нзд\n",d2);

               Cx6 = (55*M*mm*K)/(V*pow(1.4*L+X,2)+55*LL);

               sprintf(out_str,"%.2f",Cx6);

               strcat(out_str," - Концентрация вредных веществ Сх\n");

               fputs(out_str,d2);

               S3 = exp( -(30*Y*Y) / pow((1.4*L+X),2) );

               Cy6 = Cx6*S3;

               sprintf(out_str,"%.2f",Cy6);

               strcat(out_str," - Концентрация вредных веществ Сy\n");

               fputs(out_str,d2);


               C6 = (7.2*M*mm*K)/(V*L*(B3+X)+7.2*LL);

               sprintf(out_str,"%.2f",C6);

               strcat(out_str," - Концентрация вредных веществ С\n");

               fputs(out_str,d2);

        }

}else{

        fputs("Вне заветренной циркуляционной зоны над крышей при Н>0.3\n",d2);

        if( B1>=2.5*Hzd && Y<(H-Hzd) ){

               fputs("На крыше вне наветренной циркуляционной зоны b1>=2.5*Нзд\n",d2);

               S4 = exp( -(30*(pow(H-Hzd,2)*Y*Y)) / pow(B2,2) );

               Cx7 = (26*M*K)*S4/(V*B2*B2+26*LL);

               sprintf(out_str,"%.2f",Cx7);

               strcat(out_str," - Концентрация вредных веществ Сх\n");

               fputs(out_str,d2);


               sprintf(out_str,"%.2f",Cx7);

               strcat(out_str," - Концентрация вредных веществ Сy\n");

               fputs(out_str,d2);


               C7 = (3.6*M*K)/(V*L*B2+3.6*LL);

               sprintf(out_str,"%.2f",C7);

               strcat(out_str," - Концентрация вредных веществ С\n");

               fputs(out_str,d2);

        }


        if( X <= 4*Hzd && X >=0 ){

               fputs("В заветренной циркуляционной зоне 0<=х<=4*Нзд\n",d2);

               Cx8 = (1.3*M*mm*K)/V;

               Cx8 *= (0.8/(Hzd*L))+(20/pow(1.4*L+X,2));

               sprintf(out_str,"%.2f",Cx8);

               strcat(out_str," - Концентрация вредных веществ Сх\n");

               fputs(out_str,d2);


               S3 = exp( -(30*Y*Y) / pow((1.4*L+X),2) );

               Cy8 = Cx8*S3;

               sprintf(out_str,"%.2f",Cy8);

               strcat(out_str," - Концентрация вредных веществ Сy\n");

               fputs(out_str,d2);


               C8 = (1.4*M*mm*K)/(V*L*Hzd);

               sprintf(out_str,"%.2f",C8);

               strcat(out_str," - Концентрация вредных веществ С\n");

               fputs(out_str,d2);  

        }else{

               fputs("Вне заветренной циркуляционной зоны за зданием х>4*Нзд\n",d2);

               Cx9 = (26*M*mm*K)/(V*pow(1.4*L+X,2)+26*LL);

               sprintf(out_str,"%.2f",Cx9);

               strcat(out_str," - Концентрация вредных веществ Сх\n");

               fputs(out_str,d2);


               S3 = exp( -(30*Y*Y) / pow((1.4*L+X),2) );

               Cy9 = Cx9*S3;

               sprintf(out_str,"%.2f",Cy9);

               strcat(out_str," - Концентрация вредных веществ Сy\n");

               fputs(out_str,d2);

               C9 = (3.6*M*mm*K)/(V*L*(B3+X)+3.6*LL);

               sprintf(out_str,"%.2f",C9);

               strcat(out_str," - Концентрация вредных веществ С\n");

               fputs(out_str,d2);

        }


}


fputs("В заветренной циркуляционной зоне\n",d2);

if( X<=4*Hzd && X>=0){

        fputs("В заветренной циркуляционной зоне 0<=x<=4*Нзд\n",d2);

        Cx10 = (1.3*M*K)/V;

        Cx10 *= ( (0.8/(Hzd*L)) + 42/pow((1.4*L+X),2) );

        sprintf(out_str,"%.2f",Cx10);

        strcat(out_str," - Концентрация вредных веществ Сх\n");

        fputs(out_str,d2);


        S3 = exp( -(30*Y*Y) / pow((1.4*L+X),2) );

        Cy10 = (1.3*M*K)/V;

        Cy10 *= ( (0.8/(Hzd*L)) + (42*S3)/pow((1.4*L+X),2) );

        sprintf(out_str,"%.2f",Cy10);

        strcat(out_str," - Концентрация вредных веществ Сy\n");

        fputs(out_str,d2);

        C10 = (2.8*M*K)/(V*L*Hzd);

        sprintf(out_str,"%.2f",C10);

        strcat(out_str," - Концентрация вредных веществ С\n");

        fputs(out_str,d2);

}else{

        fputs("Вне заветренной циркуляционной зоны за зданием х>4*Нзд\n",d2);

        Cx11 = (55*M*K)/(V*pow(1.4*L+X,2));

        sprintf(out_str,"%.2f",Cx11);

        strcat(out_str," - Концентрация вредных веществ Сх\n");

        fputs(out_str,d2);

        S3 = exp( -(30*Y*Y) / pow((1.4*L+X),2) );

        Cy11 = Cx11*S;

        sprintf(out_str,"%.2f",Cy11);

        strcat(out_str," - Концентрация вредных веществ Сy\n");

        fputs(out_str,d2);

        C11 = (7.2*M*K)/(V*L*X);

        sprintf(out_str,"%.2f",C11);

        strcat(out_str," - Концентрация вредных веществ С\n");

        fputs(out_str,d2);

}

fclose(d2);

getch();     

return 0;

}


//---------------------------------------------------------------

// Расчёт выбросов из группы зданий

// Сначала считываем информацию из файла, затем отчет в файле

// так как все данные не вмещаютя на экране


int gruppa(void)

{

FILE *d1, *d2;

int i, len, j, k, m, n;

static char *in_str, *fl_str, out_str[256];

double M, K, V, Hzd, L, B, X, Y,/*B1, B2,*/ /*LL,*/ mm, B3, X1;

double Htld, Hgr, H;

double C, Cx, Cy,/* S,*/ S1, /*S2, */S3 /*,S4*/ ;

double C1, Cx1, Cy1, C2, Cx2, Cy2;

double C3, Cx3, Cy3, C4, Cx4/*, Cy4*/;

double C5, Cx5, /*Cy5, */ C6, Cx6, Cy6;

double C7, Cx7, Cy7, C8, Cx8 /*,Cy8*/;

double C9, Cx9, /*Cy9,*/ C10, Cx10, Cy10;

double C11, Cx11, Cy11;


// откываем файл для ввода данных

if ((d1 = fopen("gruppa.dat", "rt")) == NULL){

        fprintf(stderr, "Не могу открыть файл <gruppa.dat>.\n");

        return 1;

}

// ??? Проверить

for(m=1;m<=75;m++)

        for(n=1;n<=17;n++) vovputch(m,n,' ',23);

               border(2,2,76,18);

// Ввод значений параметров из файла

in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,2,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

M = atof(fl_str);// Количество вредных веществ, выбрасываемых источником


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,3,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';


// Безразмерный коэффициент, учитывающий возвышение устья источника

K = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,4,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

                           // Расчетная скорость ветра

V = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,5,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

Hzd = atof(fl_str); // Высота здания от поверхности земли


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,6,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

L = atof(fl_str);          // Высота здания


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,7,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

B = atof(fl_str); // Ширина здания ( размер вдоль направления ветра)


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,8,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

X = atof(fl_str); // Расстояние от заветренной стороны стены здания

               // до точки определения концентрации

in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,9,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

Y = atof(fl_str); // Расстояние по оси, перпендикулярному оси факела

/*  2,10

 in_str=fgets(in_str,80,d1);

 len = strlen(in_str)-1;

 in_str[len]='\0';

 vovputs(2,10,in_str,23);

 for(i=len;i>=0;i--)

  if(in_str[i]=='=') break;

 for(j=i+1,k=0;j<len;j++,k++)

  fl_str[k]=in_str[j];

 fl_str[k]='\0';

*/

 //B1 = atof(fl_str);

/* 2,11

 in_str=fgets(in_str,80,d1);

 len = strlen(in_str)-1;

 in_str[len]='\0';

 vovputs(2,11,in_str,23);

 for(i=len;i>=0;i--)

  if(in_str[i]=='=') break;

 for(j=i+1,k=0;j<len;j++,k++)

  fl_str[k]=in_str[j];

 fl_str[k]='\0';

*/

// Зачем нужен?

 //B2 = atof(fl_str); 

/*

 in_str=fgets(in_str,80,d1);

 len = strlen(in_str)-1;

 in_str[len]='\0';

 vovputs(2,12,in_str,23);

 for(i=len;i>=0;i--)

  if(in_str[i]=='=') break;

 for(j=i+1,k=0;j<len;j++,k++)

  fl_str[k]=in_str[j];

 fl_str[k]='\0';

*/

// LL = atof(fl_str);


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,10,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

fl_str[k]=in_str[j];

fl_str[k]='\0';

mm = atof(fl_str); // Безразмерный коэффициент


 in_str=fgets(in_str,80,d1);

 len = strlen(in_str)-1;

 in_str[len]='\0';

 vovputs(2,11,in_str,23);

 for(i=len;i>=0;i--)

  if(in_str[i]=='=') break;

 for(j=i+1,k=0;j<len;j++,k++)

  fl_str[k]=in_str[j];

 fl_str[k]='\0';

 H = atof(fl_str); // Высота в которой определяется концентрация


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,12,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

fl_str[k]='\0';

B3 = atof(fl_str); // Расстояние в пределах крыши широкого здания,

               // от источника до заветренной зоны здания, м


in_str=fgets(in_str,80,d1);

len = strlen(in_str)-1;

in_str[len]='\0';

vovputs(2,13,in_str,23);

for(i=len;i>=0;i--)

        if(in_str[i]=='=')

               break;

for(j=i+1,k=0;j<len;j++,k++)

        fl_str[k]=in_str[j];

  fl_str[k]='\0';

X1 = atof(fl_str); // Расстояние между зданиями


fclose(d1); // Закрыть файл


for(m=1;m<=75;m++)

        for(n=19;n<=23;n++)

               vovputch(m,n,' ',25);

border(2,20,76,24);


vovputs(2,20,"Результаты расчетов смотрите в файле <gruppa.txt>",25);


if ((d2 = fopen("gruppa.txt", "wt")) == NULL){

        fprintf(stderr, "Не могу открыть файл <gruppa.txt>.\n");

        return 1;

}



fputs("В наветренной циркуляционной зоне первого по потоку широкого здания\n",d2);

if( X1<=4*Hzd && X1>Hzd){

        fputs("В межкорпусной циркуляционной зоне при Hзд<=х1<=4*Нзд\n",d2);

        Cx = (14.4*M*mm*K)/(V*L*X1);

        sprintf(out_str,"%.2f",Cx);

        strcat(out_str," - Концентрация вредных веществ Сх\n");

        fputs(out_str,d2);


  /*S = exp( -(30*Y*Y) / pow((1.4*L+B1),2) );*/

        S1 = exp( -(30*Y*Y) / pow((1.4*L+B+X),2) );

        Cy = Cx*S1;

        sprintf(out_str,"%.2f",Cy);

        strcat(out_str," - Концентрация вредных веществ Сy\n");

        fputs(out_str,d2);


        C = (7.2*M*mm*K)/(V*L*X1);

        sprintf(out_str,"%.2f",C);

        strcat(out_str," - Концентрация вредных веществ С\n");

        fputs(out_str,d2);

 }else{

  fputs("В межкорпусной циркуляционной зоне при 4Hзд<=х1<=8*Нзд\n",d2);

  Cx1 = (3.6*M*mm*K)/(V*L*Hzd);

  sprintf(out_str,"%.2f",Cx1);

  strcat(out_str," - Концентрация вредных веществ Сх\n");

  fputs(out_str,d2);


  S1 = exp( -(30*Y*Y) / pow((1.4*L+B+X),2) );

  Cy1 = Cx1*S1;

  sprintf(out_str,"%.2f",Cy1);

  strcat(out_str," - Концентрация вредных веществ Сy\n");

  fputs(out_str,d2);


  C1 = (1.8*M*mm*K)/(V*L*Hzd);

  sprintf(out_str,"%.2f",C1);

  strcat(out_str," - Концентрация вредных веществ С\n");

  fputs(out_str,d2);

 }


 fputs("Вне наветренной циркуляционной зоны первого по потоку широкого здания\n",d2);

 fputs("На крыше при Н~<0.3\n",d2);

 Hgr = 0.36 * (B3+X1) + Hzd;

 Htld = (H-Hzd)/(Hgr-Hzd);


 if(Htld<0.3)

 {

  if( X <= 4*Hzd && X >=0 )

  {

   fputs("В межкорпусной циркуляционной зоне Нзд<=х1<=4*Нзд\n",d2);

   Cx2 = (1.3*M*mm*K)/V;

   Cx2 *= ((2/(X1*L))+(42/pow(1.4*L+X,2)));

   sprintf(out_str,"%.2f",Cx2);

   strcat(out_str," - Концентрация вредных веществ Сх\n");

   fputs(out_str,d2);


   S3 = exp( -(30*Y*Y) / pow((1.4*L+X),2) );

   Cy2 = (1.3*M*mm*K)/V;;

   Cy2 *= (2/(X1*L))+(42*S3/pow(1.4*L+X,2));

   sprintf(out_str,"%.2f",Cy2);

   strcat(out_str," - Концентрация вредных веществ Сy\n");

   fputs(out_str,d2);


   C2 = (7.2*M*mm*K)/(V*L*X1);

   sprintf(out_str,"%.2f",C2);

   strcat(out_str," - Концентрация вредных веществ С\n");

   fputs(out_str,d2);

  }

  else

  {

   fputs("В межкорпусной циркуляционной зоне 4Нзд<=х1<=8Нзд\n",d2);

   Cx3 = (1.3*M*mm*K)/V;

   Cx3 *= ((2/(X1*L))+(42/pow(1.4*L+X,2)));

   sprintf(out_str,"%.2f",Cx3);

   strcat(out_str," - Концентрация вредных веществ Сх\n");

   fputs(out_str,d2);


   S3 = exp( -(30*Y*Y) / pow((1.4*L+X),2) );

   Cy3 = (1.3*M*mm*K)/V;

   Cy3 *= ((2/(X1*L))+(42*S3/pow(1.4*L+X,2)));

   sprintf(out_str,"%.2f",Cy3);

   strcat(out_str," - Концентрация вредных веществ Сy\n");

   fputs(out_str,d2);


   C3 = (1.8*M*mm*K)/(V*L*Hzd);

   sprintf(out_str,"%.2f",C3);

   strcat(out_str," - Концентрация вредных веществ С\n");

   fputs(out_str,d2);

  }

 }

 else

 {

  fputs("Вне наветренной циркуляционной зоны первого по потоку\n",d2);

  fputs("штрокого здания на крыше при Н<0.3\n",d2);


  if( X1<=4*Hzd && X1>=Hzd )

  {

   fputs("В межкорпусной циркуляционной зоне Нзд<=х1<=4Нзд\n",d2);

   S3 = exp( -(30*Y*Y) / pow((1.4*L+X),2) );

   Cx4 = (1.3*M*mm*K)/V;

   Cx4 *= ((2/(X1*L))+(20*S3/pow(1.4*L+X,2)));

   sprintf(out_str,"%.2f",Cx4);

   strcat(out_str," - Концентрация вредных веществ Сх\n");

   fputs(out_str,d2);


   sprintf(out_str,"%.2f",Cx4);

   strcat(out_str," - Концентрация вредных веществ Сy\n");

   fputs(out_str,d2);


   C4 = (3.6*M*mm*K)/(V*L*X1);

   sprintf(out_str,"%.2f",C4);

   strcat(out_str," - Концентрация вредных веществ С\n");

   fputs(out_str,d2);

  }

  else

  {

   fputs("В межкорпусной циркуляционной зоне 4Нзд<=х1<=8Нзд\n",d2);

   Cx5 = (1.3*M*mm*K)/V;

   Cx5 *= (0.5/(Hzd*L))+(20/pow(1.4*L+X,2));

   sprintf(out_str,"%.2f",Cx5);

   strcat(out_str," - Концентрация вредных веществ Сх\n");

   fputs(out_str,d2);


   sprintf(out_str,"%.2f",Cx5);

   strcat(out_str," - Концентрация вредных веществ Сy\n");

   fputs(out_str,d2);


   C5 = (M*mm*K)/(V*L*Hzd);

   sprintf(out_str,"%.2f",C5);

   strcat(out_str," - Концентрация вредных веществ С\n");

   fputs(out_str,d2);

  }

 }


 fputs("В межкорпусной циркуляционной зоне при первом по потоку широком\n",d2);

 fputs("здании и Н~ < 0.3\n",d2);

 if(Htld<0.3)

 {

  if( X1<=4*Hzd && X1>=Hzd )

  {

   fputs("В межкорпусной циркуляционной зоне при Hзд<х<=4Нзд\n",d2);

   Cx6 = (1.3*M*K)/V;

   Cx6 *= (2/(X1*L))+(42/pow(1.4*L+X,2));

   sprintf(out_str,"%.2f",Cx6);

   strcat(out_str," - Концентрация вредных веществ Сх\n");

   fputs(out_str,d2);


   S3 = exp( -(30*Y*Y) / pow((1.4*L+X),2) );

   Cy6 = (1.3*M*K)/V;

   Cy6 *= (2/(X1*L))+(42*S3/pow(1.4*L+X,2));

   sprintf(out_str,"%.2f",Cy6);

   strcat(out_str," - Концентрация вредных веществ Сy\n");

   fputs(out_str,d2);


   C6 = (7.2*M*K)/(V*L*X1);

   sprintf(out_str,"%.2f",C6);

   strcat(out_str," - Концентрация вредных веществ С\n");

   fputs(out_str,d2);

  }

  else

  {

   fputs("В межкорпусной циркуляционной зоне 4Нзд<=х1<=8Нзд\n",d2);

   Cx7 = (1.3*M*K)/V;

   Cx7 *= (0.5/(Hzd*L))+(42/pow(1.4*L+X,2));

   sprintf(out_str,"%.2f",Cx7);

   strcat(out_str," - Концентрация вредных веществ Сх\n");

   fputs(out_str,d2);


   S3 = exp( -(30*Y*Y) / pow((1.4*L+X),2) );

   Cy7 = (1.3*M*K)/V;

   Cy7 *= (0.5/(Hzd*L))+(42*S3/pow(1.4*L+X,2));

   sprintf(out_str,"%.2f",Cy7);

   strcat(out_str," - Концентрация вредных веществ Сy\n");

   fputs(out_str,d2);


   C7 = (1.8*M*K)/(V*L*Hzd);

   sprintf(out_str,"%.2f",C7);

   strcat(out_str," - Концентрация вредных веществ С\n");

   fputs(out_str,d2);

  }

 }

 else

 {

  if( X <= 4*Hzd && X >= Hzd )

  {

   fputs("В межкорпусной циркуляционной зоне Нзд<=х<=4*Нзд\n",d2);

   S3 = exp( -(30*Y*Y) / pow((1.4*L+X),2) );

   Cx8 = (1.3*M*K)/V;

   Cx8 *= (2/(X1*L))+(20*S3/pow(1.4*L+X,2));

   sprintf(out_str,"%.2f",Cx8);

   strcat(out_str," - Концентрация вредных веществ Сх\n");

   fputs(out_str,d2);


   sprintf(out_str,"%.2f",Cx8);

   strcat(out_str," - Концентрация вредных веществ Сy\n");

   fputs(out_str,d2);


   C8 = (3.6*M*K)/(V*L*Hzd);

   sprintf(out_str,"%.2f",C8);

   strcat(out_str," - Концентрация вредных веществ С\n");

   fputs(out_str,d2);

  }

  else

  {

   fputs("В межкорпусной циркуляционной зоне 4Нзд<=х1<=8Нзд\n",d2);

   S3 = exp( -(30*Y*Y) / pow((1.4*L+X),2) );

   Cx9 = (1.3*M*K)/V;

   Cx9 *= (0.5/(Hzd*L))+(20*S3/pow(1.4*L+X,2));

   sprintf(out_str,"%.2f",Cx9);

   strcat(out_str," - Концентрация вредных веществ Сх\n");

   fputs(out_str,d2);


   sprintf(out_str,"%.2f",Cx9);

   strcat(out_str," - Концентрация вредных веществ Сy\n");

   fputs(out_str,d2);


   C9 = (M*K)/(V*L*Hzd);

   sprintf(out_str,"%.2f",C9);

   strcat(out_str," - Концентрация вредных веществ С\n");

   fputs(out_str,d2);

  }

 }


 fputs("В межкорпусной циркуляционной зоне или над ней при первом по потоку\n",d2);

 fputs("узком здании\n",d2);

 if( X<=6*Hzd && X>=Hzd)

 {

  fputs("В межкорпусной циркуляционной зоне Hзд<=x<=6Нзд\n",d2);

  Cx10 = (1.3*M*K)/V;

  Cx10 *= ( (1.5/(X1*L)) + 42/pow((1.4*L+B+X),2) );

  sprintf(out_str,"%.2f",Cx10);

  strcat(out_str," - Концентрация вредных веществ Сх\n");

  fputs(out_str,d2);


  S1 = exp( -(30*Y*Y) / pow((1.4*L+B+X),2) );

  Cy10 = (1.3*M*K)/V;

  Cy10 *= ( (0.8/(X1*L)) + (42*S1)/pow((1.4*L+B+X),2) );

  sprintf(out_str,"%.2f",Cy10);

  strcat(out_str," - Концентрация вредных веществ Сy\n");

  fputs(out_str,d2);


  C10 = (7.2*M*K)/(V*L*(X1+B));

  sprintf(out_str,"%.2f",C10);

  strcat(out_str," - Концентрация вредных веществ С\n");

  fputs(out_str,d2);

 }

 else

 {

  fputs("В межкорпусной циркуляционной зоне 6Hзд<=x<=10Нзд\n",d2);

  Cx11 = (1.3*M*K)/V;

  Cx11 *= ( (0.25/(Hzd*L)) + 42/pow((1.4*L+B+X),2) );

  sprintf(out_str,"%.2f",Cx11);

  strcat(out_str," - Концентрация вредных веществ Сх\n");

  fputs(out_str,d2);


  S1 = exp( -(30*Y*Y) / pow((1.4*L+B+X),2) );

  Cy11 = (1.3*M*K)/V;

  Cy11 *= ( (0.25/(Hzd*L)) + (42*S1)/pow((1.4*L+B+X),2) );

  sprintf(out_str,"%.2f",Cy11);

  strcat(out_str," - Концентрация вредных веществ Сy\n");

  fputs(out_str,d2);


  C11 = (1.3*M*K)/(V*L*Hzd);

  sprintf(out_str,"%.2f",C11);

  strcat(out_str," - Концентрация вредных веществ С\n");

  fputs(out_str,d2);

 }


 fclose(d2);

 getch();

 return 0;

}

//---------------------------------------------------------------

// Функция выбора опции задачи

// Использует внешний вызов ncedit


int gett(int wh)

{

  char *tx1[]={

        "Коррекция данных",

        "Расчет          ",

        "Просмотр        ",

        "Вернуться       "

        };

int choice, prv=1;


while(prv)

{

        // Нарисовать меню, получить выбранный пункт

        choice=wind(10,10,tx1,4);


        switch(choice)

        {

        case 1: // Коррекция

                      switch(wh)

               {

               case 1:

                      if( spawnlp(P_WAIT,"ncedit.exe","ncedit.exe",

                             "electric.dat",NULL) == -1)

                             perror("Ошибка:");

                             break;

               case 2:

                      if( spawnlp(P_WAIT,"ncedit.exe","ncedit.exe",

                             "uzkoe.dat",NULL) == -1)

                             perror("Ошибка");

                             break;

                      case 3:

                     if( spawnlp(P_WAIT,"ncedit.exe","ncedit.exe",

                             "shirokoe.dat",NULL) == -1)

                             perror("Ошибка");

                             break;

               case 4:

                     if( spawnlp(P_WAIT,"ncedit.exe","ncedit.exe",

                             "gruppa.dat",NULL) == -1)

                             perror("Ошибка");

                             break;

               default:

                     return 0;

               }

                      break;

        case 2: // Расчет...

                      switch(wh)

               {

                      case 1:

                     electric();

                      break;

               case 2:

                      uzkoe();

                      break;

               case 3:

                      shirokoe();

                      break;

               case 4:

                      gruppa();

                      break;

               default:

                      return 0;

               }

                      break;

       case 3:// Просмотр...

               switch(wh)

               {

               case 1:

                      if( spawnlp(P_WAIT,"nсview.exe","ncview.exe",

                             "electric.txt",NULL) == -1)

                             perror("Ошибка:");

                             break;

               case 2:

                      if( spawnlp(P_WAIT,"ncview.exe","ncview.exe",

                             "uzkoe.txt",NULL) == -1)

                             perror("Ошибка:");

                             break;

               case 3:

                      if( spawnlp(P_WAIT,"ncview.exe","ncview.exe",

                             "shirokoe.txt",NULL) == -1)

                             perror("Ошибка:");

                             break;

               case 4:

                      if( spawnlp(P_WAIT,"ncview.exe","ncview.exe",

                             "gruppa.txt",NULL) == -1)

                             perror("Ошибка:");

                             break;

               default:

                      return 0;

               }

               break;

        case 4: // Возврат в предыдущее меню

               prv=0; // Установить флаг, чтобы вернуться

               window(1,1,80,25);

               break;

        default:

               return -1;

        }

}

return 1;

}

//

// Перерисовать фон

//

void redraw(void)

{

int i, j;

for(i=0;i<80;i++)

        for(j=0;j<25;j++)

               vovputch(i,j,'-',WHITE+(GREEN<<4));


}

//---------------------------------------------------------------

void clear_screen(void)

{

textattr(LIGHTGRAY);

clrscr();

}

//---------------------------------------------------------------

// Функция выбора одной из работ


void main()

{

 char *menu_text[]={

"Оценка электробезопасности в электроустановках с заземл. н. ",

"Оценка степени загрязнения выбросами из узкого здания       ",

"Оценка степени загрязнения выбросами из широкого здания     ",

"Оценка степени загрязнения выбросами из группы зданий       ",

"Выход                                                       "

};


int ge, prv=1; //

int i,j;

move_cursor(0,81);

        // Очистить экран, установить атрибуты

redraw();

        //

while(prv){

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

        ge=wind(10,5,menu_text,5);

// В зависимости от выбора пользователя произвести расчет     

// соответствующей задачи

        switch(ge)

        {

        case 1:

               gett(1);

               redraw();

               break;

        case 2:

               gett(2);

               redraw();

               break;

        case 3:

               gett(3);

               redraw();

               break;

        case 4:

               gett(4);

               redraw();

               break;

        case 5:

               prv=0;

               window(1,1,80,25);

               break;

        default:

               window(1,1,80,25);

               prv=0;

               break;

        }

}

clear_screen();


}


ПРИЛОЖЕНИЕ 5. Программная документация по экономике


“СОГЛАСОВАНО”


"УТВЕРЖДАЮ"

Заказчик, к.э.н.


Зав. Кафедрой СА и ПО АСУ



профессор

___________Н.Д.Николаева


_________ Б.Д. Залещанский

"___"_____________ 1998 г.


"___"_____________ 1998 г.








СИСТЕМА РАСЧЕТА ТОЧКИ БЕЗУБЫТОЧНОСТИ


Программа и методика испытаний



ЛИСТ УТВЕРЖДЕНИЯ


Р.МГИРЭА.000010-01 51 ОЗ-ЛУ


Листов











                          Исполнитель


____________Р.Х.Баймеев


“    “ _____________ 1998 г.



   

1998

Литера



УТВЕРЖДЕН

Р.МИРЭА.000010-01 51 ОЗ-ЛУ


















СИСТЕМА РАСЧЕТА ТОЧКИ БЕЗУБЫТОЧНОСТИ


Программа и методика испытаний



ЛИСТ УТВЕРЖДЕНИЯ


Р.МГИРЭА.000010-01 51 ОЗ-ЛУ


Листов















   

1998

Литера

СОДЕРЖАНИЕ

1.                  ОБЪЕКТ ИСПЫТАНИЙ

2.                  ЦЕЛЬ ИСПЫТАНИЙ

3.                  СОСТАВ ПРЕДЪЯВЛЯЕМОЙ ДОКУМЕНТАЦИИ

4.                  ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ

4.1.            Требования к программной документации

4.2.            Требования к техническим характеристикам

5.                  МЕТОДЫ ИСПЫТАНИЙ

1.      ОБЪЕКТ ИСПЫТАНИЙ

Объектом испытаний является автоматизированная система (АС) расчета точки безубыточности.

2. ЦЕЛЬ ИСПЫТАНИЙ

Цель испытаний заключается в:

     1) определении соответствия программного продукта требованиям ТЗ;

     2) выявлении недостатков, недочетов, ошибок, недоработок для их последующего устранения.

3. СОСТАВ ПРЕДЪЯВЛЯЕМОЙ ДОКУМЕНТАЦИИ

В состав предъявляемой документации:

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

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

     - руководство программиста;

     - руководство оператора;

     - тексты программных модулей.


4. ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ

4.1. Требования к программной документации


Комплект программной документации должен быть разработан в соответствии с требованиями ЕСПД.


4.2. Требования к техническим характеристикам


Для проведения испытаний необходимы: ПЭВМ класса IBM AT с процессором не хуже i80386, ОС MS-DOS версии не ниже 3.30, ОС Windows версии не ниже 3.1.

5. МЕТОДЫ ИСПЫТАНИЙ

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

Описания проверок при проведении испытаний сведены в таблицу:

Таблица 4.1. Методы испытаний


Пункт испытаний

Выполняемые действия

Результат

Примечания

1. Запуск программы

Двойной щелчок на значке DIPLOM

См. рис. 1.

Если программа не инсталлирована, запустить модуль SETUP.

2. Проверка пункта “Параметры системы”

Шелчок на пункте меню.

См. рис. 2.


3. Проверка пункта “График ”

Шелчок на пункте меню.

См. рис. 3.


4. Проверка пункта “Расчет точки бузубыточности ”

Шелчок на пункте меню.

См. рис. 4.


5. Проверка пункта “Расчет эффекта экономического рычага ”

Шелчок на пункте меню.

См. рис. 5.


6. Проверка пункта “Расчет запаса финансовой прочности ”

Шелчок на пункте меню.

См. рис. 6.


7. Проверка пункта “Факторный анализ точки безубыточности ”

Шелчок на пункте меню.

См. рис. 7.





“СОГЛАСОВАНО”


"УТВЕРЖДАЮ"

Заказчик, к.э.н.


Зав. Кафедрой СА и ПО АСУ



профессор

___________Н.Д.Николаева


_________ Б.Д. Залещанский

"___"_____________ 1998 г.


"___"_____________ 1998 г.








СИСТЕМА РАСЧЕТА ТОЧКИ БЕЗУБЫТОЧНОСТИ


Руководство системного программиста



ЛИСТ УТВЕРЖДЕНИЯ


Р.МГИРЭА.000010-01 51 ОЗ-ЛУ


Листов











                          Исполнитель


____________Р.Х.Баймеев


“    “ _____________ 1998 г.



   

1998

Литера



УТВЕРЖДЕН

Р.МИРЭА.000010-01 51 ОЗ-ЛУ


















СИСТЕМА РАСЧЕТА ТОЧКИ БЕЗУБЫТОЧНОСТИ


Руководство системного программиста



ЛИСТ УТВЕРЖДЕНИЯ


Р.МГИРЭА.000010-01 51 ОЗ-ЛУ


Листов















   

1998

Литера

АННОТАЦИЯ

Настоящее руководство содержит сведения, необходимые для помощи системному программисту при настройке и работе с автоматизированной системой (АС) расчета точки безубыточности. В документе содержатся общие сведения о системе и ее структуре, описан порядок проверки и настройки системы, а также восстановления после возможного аппаратного сбоя.


СОДЕРЖАНИЕ

1. ОБЩИЕ СВЕДЕНИЯ О СИСТЕМЕ

2. НАСТРОЙКА СИСТЕМЫ

3. ПРОВЕРКА РАБОТОСПОСОБНОСТИ СИСТЕМЫ

1. ОБЩИЕ СВЕДЕНИЯ О СИСТЕМЕ

Автоматизированная система (АС) расчета точки безубыточности предназначена для определения точки безубыточности и ее параметров.

Автоматизированная система (АС) расчета точки безубыточности разработана автором по заданию кафедры “Экономика” МГИРЭА (ТУ).

2. НАСТРОЙКА СИСТЕМЫ

Автоматизированная система (АС) расчета точки безубыточности автономной системой. Для ее установки необходимо запустить файл setup.exe.


3. ПРОВЕРКА РАБОТОСПОСОБНОСТИ СИСТЕМЫ

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



“СОГЛАСОВАНО”


"УТВЕРЖДАЮ"

Заказчик, к.э.н.


Зав. Кафедрой СА и ПО АСУ



профессор

___________Н.Д.Николаева


_________ Б.Д. Залещанский

"___"_____________ 1998 г.


"___"_____________ 1998 г.








СИСТЕМА РАСЧЕТА ТОЧКИ БЕЗУБЫТОЧНОСТИ


Руководство программиста



ЛИСТ УТВЕРЖДЕНИЯ


Р.МГИРЭА.000010-01 51 ОЗ-ЛУ


Листов











                          Исполнитель


____________Р.Х.Баймеев


“    “ _____________ 1998 г.



   

1998

Литера



УТВЕРЖДЕН

Р.МИРЭА.000010-01 51 ОЗ-ЛУ


















СИСТЕМА РАСЧЕТА ТОЧКИ БЕЗУБЫТОЧНОСТИ


Руководство программиста



ЛИСТ УТВЕРЖДЕНИЯ


Р.МГИРЭА.000010-01 51 ОЗ-ЛУ


Листов















   

1998

Литера

АННОТАЦИЯ

В настоящем руководстве содержатся общие сведения о структуре системы и данных, необходимые для работы программиста.

СОДЕРЖАНИЕ

1. НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ ПРОГРАММЫ

2. ХАРАКТЕРИСТИКИ ПРОГРАММЫ

3. ОБРАЩЕНИЕ К ПРОГРАММЕ, ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ

1. НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ ПРОГРАММЫ

Автоматизированная система (АС) расчета точки безубыточности предназначена для определения точки безубыточности и ее параметров.

Автоматизированная система (АС) расчета точки безубыточности разработана автором по заданию кафедры “Экономика” МГИРЭА (ТУ).

2. ХАРАКТЕРИСТИКИ ПРОГРАММЫ

Время загрузки программы: максимум 10 секунд (зависит от типа ПЭВМ). Вся информация об ошибках в ходе выполнения выводится на экран дисплея в виде сообщений.

3. ОБРАЩЕНИЕ К ПРОГРАММЕ, ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ

Программа запускается с помощью модуля diplom.exe.

Входные данные  хранятся в БД, могут пополнятьcя и редактироваться.

Выходными данными является точка бузубыточности.



“СОГЛАСОВАНО”


"УТВЕРЖДАЮ"

Заказчик, к.э.н.


Зав. Кафедрой СА и ПО АСУ



профессор

___________Н.Д.Николаева


_________ Б.Д. Залещанский

"___"_____________ 1998 г.


"___"_____________ 1998 г.








СИСТЕМА РАСЧЕТА ТОЧКИ БЕЗУБЫТОЧНОСТИ


Руководство оператора



ЛИСТ УТВЕРЖДЕНИЯ


Р.МГИРЭА.000010-01 51 ОЗ-ЛУ


Листов











                          Исполнитель


____________Р.Х.Баймеев


“    “ _____________ 1998 г.



   

1998

Литера



УТВЕРЖДЕН

Р.МИРЭА.000010-01 51 ОЗ-ЛУ


















СИСТЕМА РАСЧЕТА ТОЧКИ БЕЗУБЫТОЧНОСТИ


Руководство оператора



ЛИСТ УТВЕРЖДЕНИЯ


Р.МГИРЭА.000010-01 51 ОЗ-ЛУ


Листов















   

1998

Литера

АННОТАЦИЯ


Настоящий документ содержит сведения о порядке работы с программой, необходимые для операторов ПЭВМ.



СОДЕРЖАНИЕ


1.   Назначение программы

2.   Условия выполнения программы

3.   Инсталляция программы

4.   Выполнение программы

5.   Функции и меню программы

5.1. Функции программы

5.2. Меню программы



1.   НАЗНАЧЕНИЕ ПРОГРАММЫ


1.1. Программа DIPLOM предназначена для расчета точки безубыточности и ее параметров.

1.2. Программа DIPLOM предназначена для выполнения следующих функций:

·         ввод, хранение, отображение и изменение необходимой исходной информации;

·         расчет и отображение точки безубыточности и ее параметров.



2.   УСЛОВИЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ


2.1. Требования к аппаратным ресурсам:

·         процессор — 386 и выше;

·         объем оперативной памяти — не меньше 4 МВ;

·         емкость жесткого диска — не меньше 5 МВ.

2.2. Требования к программным ресурсам: ОС Windows.




3.   ИНСТАЛЛЯЦИЯ ПРОГРАММЫ


3.1. Для успешной инсталляции программы необходимо выполнить следующие действия:


1)   Запустить дискеты выполняемый файл setup.exe

2)   В зависимости от конфигурации и настроек ОС подтверждать запросы программы-инсталлятора.



4.   ВЫПОЛНЕНИЕ ПРОГРАММЫ


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


4.2. Вызов функций программы DIPLOM осуществляется оператором путем выбора пунктов меню и нажатия “кнопок”.



5.   Функции и меню программы

5.1. Функции программы


Оператор может выполнить следующие функции, предоставляемые ему программой:

·         ввести исходные данные;

·         расчет и отображение точки безубыточности и ее параметров.



5.2. Меню программы


Меню программы изображено на рис. 1.




“СОГЛАСОВАНО”


"УТВЕРЖДАЮ"

Заказчик, к.э.н.


Зав. Кафедрой СА и ПО АСУ



профессор

___________Н.Д.Николаева


_________ Б.Д. Залещанский

"___"_____________ 1998 г.


"___"_____________ 1998 г.








СИСТЕМА РАСЧЕТА ТОЧКИ БЕЗУБЫТОЧНОСТИ


Тексты программ



ЛИСТ УТВЕРЖДЕНИЯ


Р.МГИРЭА.000010-01 51 ОЗ-ЛУ


Листов











                          Исполнитель


____________Р.Х.Баймеев


“    “ _____________ 1998 г.



   

1998

Литера



УТВЕРЖДЕН

Р.МИРЭА.000010-01 51 ОЗ-ЛУ


















СИСТЕМА РАСЧЕТА ТОЧКИ БЕЗУБЫТОЧНОСТИ


Тексты программ



ЛИСТ УТВЕРЖДЕНИЯ


Р.МГИРЭА.000010-01 51 ОЗ-ЛУ


Листов















   

1998

Литера

 

ПРИЛОЖЕНИЕ 6. Акт внедрения

(будет потом)

ПРИЛОЖЕНИЕ 7. Доклад

ДОКЛАД

Уважаемый председатель, уважаемые члены Государственной  комиссии!

Вашему вниманию предлагается комплексный проект на тему “Математическое обеспечение оценки эффективности функционирования военно-медицинского учреждения”, который является составной частью комплексного дипломного проекта СКБ‑2.

Комплексный дипломный проект выполнялся членами СКБ-2 в составе:

Главный конструктор, ответственный за комплексную задачу по курсу "Экология и охрана труда" - Чихирев Р.Б.  Тема ДП - "МО КЗ Оценка эффективности работы военно-медицинского учреждения".

Заместитель главного конструктора , ответственный за комплексную задачу по курсу "Гражданская оборона" - Базин В.В. Тема ДП - "МО КЗ Идентификация медицинских объектов методом главных компонент".

Заместитель главного конструктора, ответственный за комплексную задачу по курсу "Экономика" -  Баймеев Р.Х. Тема ДП - КЗ  "Математическое обеспечение автоматизации бухгалтерского учета торговых предприятий".

Помощник главного конструктора - Сачков А.В. Тема ДП - МО КЗ "Информационного обеспечения автоматизированного рабочего места специалиста медицинской части".

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

1. Провести системный анализ и синтез РИСК II.

2. Разработать математическое и программное обеспечение для КЗ "Оценка эффективности работы военно-медицинского учреждения".

3. Разработать рекомендации по защите населения и персонала для учебного тренажера по курсу "Гражданская оборона".

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

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

6. Провести технико-экономическое обоснование разработки  наметить перспективы развития РИСК III.

Итак, тема предлагаемого вашему вниманию КДП - МО КЗ "Оценка эффективности работы военного госпиталя".

В первой главе проведен системный анализ и синтез РИСК II.

Объектом автоматизации СКБ II является Главный Военно-Клинический Госпиталь имени Н.Н. Бурденко. На данном этапе, по требованию заказчика, автоматизации подлежала  деятельность медицинской части госпиталя, неврологического отделени, бухгалиерии.

В соответствии с требованиями заказчика в рамках КДП была разработана архитектура РИСК II, приведенная на Плакате 1. Место моего ДП выделено на плакате 1 красным цветом.

Параллельно с разработкой архитектуры велась разработка операционной среды РИСК 2. Схема программного обеспечения РИСК II представлена на плакате 2. Место моего ДП выделено на плакате 2 красным цветом.

Мною как главным конструктором было проведено обследование объектов заказчика, разработаны ТЗ и определены задвчи для каждого исполнителя . Затем осуществлялся контроль за ходом работ и координировалось взаимодейст\вие с представителями заказчика. Схема взаимодействия исполниетлей представлена на Плакате3.

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

Разработанный математический аппарат построен на методе главных компонент (алгоритм на плакате). Данный метод основан на переходе в новую систему координат, где в качестве новых осей выбираются главные компоненты распределения, и рассмотрении признаков в этой новой системе координат. Часто такое преобразование даёт возможность сократить размерность рассматриваемых векторов, путём отбрасывания мало значащих компонент. Основная сложность данного метода состоит в нахождении собственных чисел и собственных векторов матриц умеренного порядка. В рассмотренных мною работах посвященных МГК для этого предлагалось использовать некие стандартные библиотеки программ. При этом никак не использовался тот факт, что исходная матрица - симметрическая. Исходя из симметричности матрицы удобно использовать метод Якоби, схема алгоритма которого представлен на плакате__.

На базе разработанного математического аппарата разработана система предназначенная для автоматизации расчетов, анализа и исследования данных о отделениях. Система призвана обеспечить повышение эффективности обработки накопленных данных, которая до недавнего времени проводилась вручную или не проводилась вообще. Разрешите продемонстрировать работу системы. Система разработана с использованием средств Borland C ++ Вuilder 1.0. Она обеспечивает:

·         ввод входного массива статистических данных из файла в формате Excel 5.0;

·         редактирование данных в таблице при помощи привычных пользователю операций по работе с электронными таблицами MS Excel;

·         работу с буфером обмена операционной системы;

·         сохранение данных в файле формата MS Excel 5.0 ;

·         нормирование данных;

·         расчет корреляционной матрицы признаков отделений;

·         расчет матрицы связей параметров объектов с главными компонентами;

·         расчет вклада главных компонент в общую дисперсию;

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

·         ранжирование объектов по разным главным компонентам;

·         формирование отчета о результатах;

·         настройка параметров выводимого отчета.

Основными приемуществами данной системы по сравнению с системой, разработаной моим предшественником по СКБ, дипломником прошлого года, являются следующие:

1.      Увеличена размерность решаемой задачи, т.е. появилась возможность увеличить количество показателей анализируемых объектов. Это достигнуто благодаря иному подходу к формированию программного обеспечения и использованию объектно-ориентированного прораммирования.

2.      Возросла скорость вычислений.

3.      Применены методы расчета уменьшеющие погрешность результата.

4.      Обеспечены прямое взаимодействие с форматом хранения данных электронных таблиц Excel версии 5.0. без предварительного импорта экспорта в текстовый формат. Это облегчает дальнейшую обработку результатов: построение графиков, диаграм и т.д.

Разработанной в рамках данного КДП системой решена задача по оценке эффективности использования коечного фонда различными отделениями госпиталя. Вместо предписанных министерством здравоохранения и ведомственными инструкциями 8 показателей эффективности, возможно использование 2-х  новых показателей, которые описывает явление на 78%. Вкладов главных компонент в общую дисперсию процесса приведен на плакате __.

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

Глава 3 посвещена разработке МО прикладных задач.

1.        По курсу "Гражданская оборона" автором разработан блок по общей характеристике землетрясений. Структура данного МО продставлена на плакате___. Место моей разработки выделено. Более подробно о ней раскажет мой заместитель по данному курсу Базин В.В.

2.        По курсу "Экономика" разработан модуль по точке безубыточности. Общая структура МО представлена на плакате___. Место моей разработки выделено. Работу программы вам продемонстрирует мой заместитель по данной части Баймеев Р.Х.

3.        По курсу  "Экология и охрана труда" перед СКБ была поставлена задача по постановке лабораторных работ на ПЭВМ. Разрешите продемонстрировать вам работу системы.

Глава 4 КДП посвящена оценке экономической эффективности проекта и перспективам РИСК II.

Анализ экономической эффективности показал, что разработка и эксплуатация систем является эффективной.

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

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

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

·         исследование применения  метода главных компонент в клинических исследованиях.

Результаты разработок нашли практическое применение, о чем свидетельствуют полученные акты внедрения.

Доклад закончен. Благодарю за внимание.



__________Р.Б. Чихирев



3 февраля 1999 г.

ПРИЛОЖЕНИЕ 8. Отзыв руководителя

Отзыв рукододителя о дипломном проекте

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

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

КЗ “Оценка эффективности функционирования военно-медицинского учреждения” был разработан для ГВКТ им. академика Н.Н. Бурденко, который является заказчиком по этой работе.

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

Являясь главным конструктором студенческого конструкторского бюро (СКБ-III), Чихирев Р.Б. обеспечил постановку задачи и разработку членами СКБ-III программного обеспечения задачи по курсу “Экология и охрана труда”: “Постановка лабораторных работ исследования”.

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

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

КЗ “Оценка эффективности функционирования военно-медицинского учреждения” принят в эксплуатацию в медицинской части госпиталя им. академика Н.Н. Бурденко о чем свидетельствует акт внедрения, содержащийся в дипломном проекте.

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

Выводы как по отдельным главам, так и по дипломному проекту в целом достаточно обоснованы и аргументированы. Пояснительная записка и графический материал (схема, рисунки, графики и документация выполнены в основном в соответствии с требованиями стандартов (ЕСКД и ГОСТ).

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

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

В целом дипломный проект Чихирева Р.Б. выполнен на достаточно высоком научно-техническом уровне, с использованием современного математического аппарата и эффективных средств разработки прикладных программных систем. Это характеризует автора как сложившегося специалиста в области вычислительных систем и программирования, склонного к научной работе.

Чихирев Р.Б. достоин присвоения ему квалификации “инженер-математик”.





Руководитель дипломного проекта


к.т.н. доцент

В.В. Радионов

Подпись Радионова В.В. заверяю.


к. ф.-м. н.

В.В. Дорошенко


“___” января 1999 г.


 

ПРИЛОЖЕНИЕ 9. Рецензия


РЕЦЕНЗИЯ НА ДИПЛОМНЫЙ ПРОЕКТ

СТУДЕНТА ГРУППЫ АП - 1 - 93 кафедры СА и ПО АСУ МИРЭА Чихирева Руслана Борисовича

на тему: “Математическое обеспечение комплекса задач “Оценка эффективности функционирования военно-медицинского учреждения”

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

Представленный комплексный дипломный проект Чихирева Р.Б. содержит введение, 4 главы, заключение и 11 приложений.

В Главе 1 исследуется структура объекта автоматизации - Главного Военного Клинического Госпиталя имени акад. Н.Н. Бурденко. В ходе исследования выполнены следующие работы:

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

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

·         синтезирована архитектура системы, выбрана, в частности, элементная база, указаны сетевые средства, операционная среда, трансляторы, предложены языки программирования; описаны сетевые протоколы, СУБД и СУБЗ, системы отображения информации.


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

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

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

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

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


Глава 3 посвящена разработке математического обеспечения прикладных задач по курсам “Гражданская оборона”, “Экономика” и “Экология и охрана труда”. В частности, по курсу “Гражданская оборона” разработаны указания по защите оператора ПЭВМ в условиях сейсмической активности. По курсу экономики был разработан модуль системы оценки эффективности работы предприятия. По курсу “Экология и орана труда” проведена постановка задач оценки загрязнения окружающей среды на основе выбросов, постановка задачи очистки воздуха от примесей и постановка задачи обеспечения взрывобезопасности в камере нанесения ЛКМ. Так же проведено обоснование проектных решений и осуществлена программная реализация задач.

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

Также в Главе 4 приведены технические предложения по автоматизации военно-медицинских учреждений.

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


2. Степень самостоятельности студента, умение обобщать данные научной литературы, делать выводы. Грамотность и стиль диплома.

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

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

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

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

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

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

Стиль дипломного проекта в главах 3 и 4 научно-исследовательский. Структура и последовательность подачи материала приближается к уровню, принятому в научно-технических отчетах.

Соответствие требованиям

 стандартов, особо выделенные вопросы, недостатки.

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

Вывод:

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

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


Рецензент дипломного проекта

__________

Подпись к.ф-м.н. Лопушенко В.В. заверяю, начальник отдела кадров


____________

ПРИЛОЖЕНИЕ 10. Акт экспертизы



«УТВЕРЖДАЮ»



Зав. кафедрой СА и ПО АСУ, профессор



__________ Б.Д. Залещанский



«___»_______________ 1999 г.


АКТ ЭКСПЕРТИЗЫ

комплексного дипломного проекта

студента группы АП-1-93 Чихирева Р.Б.



Экспертная комиссия в составе председателя Радионова В.В. и членов комиссии Дикушина Ф.А., Николаевой Н.Д., Кучерука  С.М., Острейко В.И. и Базина В.В. рассмотрев материалы комплексного дипломного проекта на тему «Оценка эффективности работы военно-медицинского учреждения», установила, что комплексный дипломный проект не содержит сведений, запрещенных к опубликованию в открытой печати и может быть допущен к защите в Государственной экзаменационной комиссии.





Председатель комиссии, руководитель дипломного проекта


_________ В.В. Радионов

Члены комиссии


Консультант по спецчасти

_________ Ф.А. Дикушин

Консультант по организационно-экономической части, к.э.н., доцент


_________ Н.Д. Николаева

Консультант по охране труда, к.т.н., доцент

_________ С.М. Кучерук

Консультант по гражданской обороне, к.т.н. доцент

_________  В.И. Острейко


_________ В.В. Базин