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

Разработка информационной системы воинского учета

 

ВВЕДЕНИЕ


Воинский учёт в Республике Казахстан является составной частью воинской обязанности <#"justify">- обеспечивать командиров и начальников всех степеней данными о военнослужащих и служащих, необходимыми для принятия обоснованных решений по их служебному использованию;

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

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

Разработанное программное средство позволит:

сократить время работника отдела МРиК на документальное оформление сведений воинского учета о гражданах, состоящих на воинском учете;

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

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

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


1. АНАЛИЗ СУЩЕСТВУЮЩИХ МЕТОДИК УЧЕТА, ОПИСАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ И ВЫБОР ТЕХНОЛОГИИ ПРОЕКТИРОВАНИЯ


1.1 Существующая методика воинского учета


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

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

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

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

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

Основными задачами воинского учета являются:

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

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

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

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

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

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

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

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

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

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

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

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

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

книга записи больных роты;

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

книга выдачи оружия и боеприпасов роты;

книга осмотра (проверки) вооружения, военной техники и боеприпасов роты;

лист нарядов каждого взвода.

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

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

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

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

Командир отделения и заместитель командира взвода должен постоянно знать, где находится и что делают подчиненные (ст. 151-153).

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

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

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

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

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


1.2 Технико-экономическая характеристика предметной области


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

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


Рисунок 1.1. Структура управления воинской частью


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

боец;

отделение(10 чел. и командир);

взвод(3 отделения);

рота(3 взвода);

батальон (3роты и обслуживание);

полк (3 батальона и обеспечение).

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

  1. документальное отражение прохождения воинской службы личным составом;
  2. обеспечение командиров и начальников всех степеней данными о на военнослужащих и служащих, необходимыми для принятия обоснованных решений по их служебному использованию;
  3. обеспечение командиров и начальников всех степеней данными о штатной и списочной численности личного состава соединений, частей и учреждений, для принятия решений о порядке их укомплектования, материально-технического обеспечения, подготовки резервов и восполнения потерь;
  4. ведение справочной работы по вопросам прохождения службы личным составом;
  5. извещение семей или близких родственников погибших и умерших военнослужащих и служащих о месте, времени и причине (обстоятельствах) их гибели или смерти, выдача документов, необходимых для возбуждения ходатайства о назначении пенсии (пособия) и о предоставлении льгот, установленных законодательством Республики Казахстан.

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

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

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

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

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

Должностные лица, ответственные за учет личного состава:

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

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

исполняют и своевременно представляют отчетные документы;

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

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

Учет личного состава организуется и ведется на основании штатов, приказов по воинской части и органов управления, приказов по личному составу и других документов, предусмотренных Правилами ведения учета.


1.3 Экономическая сущность задачи


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

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

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

- удобное формирование списков по таблицам и запросам;

максимально возможное сокращение оборота бумажных документов;

оперативное получение информации на любой момент времени;

представление удобного интерфейса для работы пользователю.

При внедрении проектируемого автоматизированного рабочего места специалиста МРиК, как результат получим:

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

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

-улучшение организационной культуры;

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

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

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


1.4 Архитектура разрабатываемой информационной системы


Автоматизирование средство имеет свою архитектуру (рисунок 1.2).














Рисунок 1.2. Схема архитектуры разрабатываемого АРМ специалиста отдела МРиК


.4.1 Информационное обеспечение

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

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

Информационное обеспечение образует внутримашинную информационную БД, состоящую из следующих компонентов:

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

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

файл БД, содержащий информацию должностного подчинения воинской части;

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

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

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


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

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

-операционную систему Windows 98 или Windows NT или более поздние версии;

-пакет поддержки баз данных Microsoft Jet Database Engine фирмы Microsoft;

-установленный, профессиональный пакет Microsoft Office, начиная с версии 97, для поддержки провайдера баз данных;

-файл справки в формате HTML Help. Поддержка такого формата справки началась с Windows 98.;

-технологию ADO, а именно драйвер Microsoft Jet 4.0 в операционной системе.

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


.4.3 Техническое обеспечение.

Разработанное АРМ можно использовать на ЭВМ типа IBM PC/AT с процессором Intel Pentium с тактовой частотой не ниже 1.1 ГГц. Объем оперативной памяти компьютера - не менее 256 Мб. Видеокарта должна быть совместима с Windows 98 и выше. Для вывода отчетов на бумагу информации может использоваться любой принтер, поддерживаемый операционной системой Windows 98.


.4.4 Организационное обеспечение

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

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

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

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

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

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


1.5 Информационное обеспечение разрабатываемой информационной системы


1.5.1 Проектирование инфологической информационной модели

В рамках этого раздела лежит ознакомление со всеми входными и выходными документами и определение базы данных (БД).

Для описания процесса документооборота можно использовать математические методы, в том числе метод моделирования. Модель - это упрощенное представление объекта. Использование модели позволяет продемонстрировать в более сжатом виде потоки информации, поступающие в систему и выходящие из нее.

Ниже представлен перечень входящих и исходящих документов (таблицы 1.1 - 1.2).


Таблица 1.1

Перечень входящих документов

Наименование документаИсточник документаФорма представленияПериодичность поступленияУчетная карта призывникаВоенкоматДокумент на бумажном носителеПо мере поступленияАлфавитная карточкаВоенкомат, комиссариатДокумент на бумажном носителеПо мере поступленияКарточки первичного учетаВоенкомат, комиссариатДокумент на бумажном носителеПо мере поступления

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

а) удостоверение гражданина, подлежащего призыву на военную службу, - для призывников;

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

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

а) фамилия, имя и отчество;

б) дата рождения;

в) место жительства;

г) семейное положение;

д) образование;

е) место работы;

ж) годность к военной службе по состоянию здоровья;

з) основные антропометрические данные;

и) наличие военно-учетных и гражданских специальностей.

Таблица 1.2

Перечень исходящих документов

Наименование документаПолучатель документаФорма представленияПериодичность поступленияКнига алфавитного учета личного состава по форме № 2Заинтересованное лицоДокумент на машинном носителеПо мере требованияКнига алфавитного учета офицеров и военнослужащих по контракту по форме № 3Заинтересованное лицоДокумент на машинном носителеПо мере требованияКнига штатно-должностного учета личного состава по форме № 4Заинтересованное лицоДокумент на машинном носителеПо мере требованияКнига учета временно отсутствующего и временно прибывшего в часть личного состава по форме № 5Заинтересованное лицоДокумент на машинном носителеПо мере требованияУчетно-послужные карточки на военнослужащих срочной службы по форме № 6Заинтересованное лицоДокумент на машинном носителеПо мере требованияЛичная карточка по форме № Т-2Заинтересованное лицоДокумент на машинном носителеПо мере требованияСуточная ведомость по форме № 8Заинтересованное лицоДокумент на машинном носителеПо мере требованияЛичные дела офицеров и военнослужащих по контрактуЗаинтересованное лицоДокумент на машинном носителеПо мере требованияЖурнал учета и движения трудовых книжек служащих по форме № 40Заинтересованное лицоДокумент на машинном носителеПо мере требованияЖурнал учета перемещения личного состава воинской части по форме № 33Заинтересованное лицоДокумент на машинном носителеПо мере требованияВедомость укомплектованности воинской части личным составом по должностям, военно-учетным специальностям и срокам призыва по форме № 34Заинтересованное лицоДокумент на машинном носителеПо мере требованияВедомость укомплектованности военнослужащими по контракту в воинской части по форме № 35Заинтересованное лицоДокумент на машинном носителеПо мере требованияВедомость укомплектованности сержантским составом в воинской части по форме № 36Заинтересованное лицоДокумент на машинном носителеПо мере требования

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

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

«ПОДРАЗДЕЛЕНИЯ ВОИНСКОЙ ЧАСТИ»;

«ДОЛЖНОСТИ ВОИНСКОЙ ЧАСТИ»;

«ВОИНСКИЕ ЗВАНИЯ»;

«СЕРЖАНТЫ И ОФИЦЕРЫ ВОИНСКОЙ ЧАСТИ»;

«СОЛДАТСКИЙ СОСТАВ ВОИНСКОЙ ЧАСТИ»;

«ДОЛЖНОСТНЫЕ НАЗНАЧЕНИЯ»;

«ОБЛАСТИ»;

«ГОРОДА»;

«УЛИЦЫ»;

«УДО».

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

ПОДРАЗДЕЛЕНИЯ_ВОИНСКОЙ_ЧАСТИ (Код подразделения, наименование подразделения);

ДОЛЖНОСТИ_ВОИНСКОЙ_ЧАСТИ (Код должности, наименование должности);

ВОИНСКИЕ_ЗВАНИЯ (Код звания, наименование завния);

СЕРЖАНТЫ_ОФИЦЕРЫ_ВОИНСКОЙ_ЧАСТИ (Код офицера, фамилия, имя, отчество, национальность, год рождения, табельный номер, код звания, кем присвоено, номер приказа о присвоении, дата присвоения, номер удостоверения, дата записи в часть, номер приказа и записи, общее образование, воинское образование, номер ВУС, код УДО, семейное положение, родственники, дата выбытия, номер приказа о выбытии, причина выбытия, код подразделения, код должности);

СОЛДАТСКИЙ_СОСТАВ_ВОИНСКОЙ_ЧАСТИ (Код солдата, фамилия, имя, отчество, год рождения, национальность, семейное положение, родственник, фамилия родственника, имя родственника, отчество родственника, адрес родственника, код УДО, дата призыва, номер приказа о зачислении, дата зачисления, код звания, должность, дата выбытия, номер приказа о выбытии, причина выбытия, код подразделения);

ДОЛЖНОСТНЫЕ_НАЗНАЧЕНИЯ (Номер назначения, код должности, код офицера, дата начала, дата окончания);

ОБЛАСТИ (Код области, наименование области);

ГОРОДА (Код города, наименование города, код области);

УЛИЦЫ (Код улицы, наименование улицы, код города);

УДО (Код УДО, наименование УДО, код области).

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

Анализ связей между объектами отражен в таблице 1.3.


Таблица 1.3

Связи информационных объектов

Название сущностейНазвание связейТип связиСЕРЖАНТЫ_ОФИЦЕРЫ_ВОИНСКОЙ_ЧАСТИ, ПОДРАЗДЕЛЕНИЯ_ВОИНСКОЙ_ЧАСТИзачисление в вч1:МСОЛДАТСКИЙ_СОСТАВ_ВОИНСКОЙ_ЧАСТИ, ПОДРАЗДЕЛЕНИЯ_ВОИНСКОЙ_ЧАСТИзачисление в вч1:МДОЛЖНОСТНЫЕ_НАЗНАЧЕНИЯ, СЕРЖАНТЫ_ОФИЦЕРЫ_ВОИНСКОЙ_ЧАСТИназначение1:МДОЛЖНОСТНЫЕ_НАЗНАЧЕНИЯ, ДОЛЖНОСТИ_ВОИНСКОЙ_ЧАСТИзанимаемая должность1:1УДО, СЕРЖАНТЫ_ОФИЦЕРЫ_ВОИНСКОЙ_ЧАСТИпризван удо1:МУДО, СОЛДАТСКИЙ_СОСТАВ_ВОИНСКОЙ_ЧАСТИпризван удо1:МСЕРЖАНТЫ_ОФИЦЕРЫ_ВОИНСКОЙ_ЧАСТИ, ДОЛЖНОСТИ ВОИНСКОЙ ЧАСТИдолжность1:МУДО, ОБЛАСТИнаходится1:МВОИНСКИЕ ЗВАНИЯ, СЕРЖАНТЫ_ОФИЦЕРЫ_ВОИНСКОЙ_ЧАСТИприсвоено1:МВОИНСКИЕ ЗВАНИЯ, СОЛДАТСКИЙ_СОСТАВ_ВОИНСКОЙ_ЧАСТИприсвоено1:М

Рисунок 1.3. Инфологическая модель предметной области

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


.5.2 Логическое проектирование приложения базы данных

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

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

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

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

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

При использовании реляционной СУБД, обрабатываемая информация представляется в виде файлов базы данных, которые хранят информацию в виде записей. Ниже приведены структуры файлов базы данных (таблицы 1.4 - 1.13).

Сущности СЕРЖАНТЫ_ОФИЦЕРЫ_ВОИНСКОЙ_ЧАСТИ соответствует таблица D_Oficer.


Таблица 1.4

Структура таблицы D_Oficer

Наименование поляТип данныхДлинаКлючевое полеKodoficerЧисловое Длинное целое Да (Совпадения не допускаются)FamilТекстовый50ImjaТекстовый20OtchТекстовый20NomerЧисловоеДлинное целоеNacТекстовый20DatrojДата Nom_udЧисловоеДлинное целоеKodzvanЧисловоеДлинное целоеKem_prТекстовый15Dat_prДатаNom_prЧисловоеДлинное целоеDat_zapДатаNom_zapЧисловоеДлинное целоеSempolТекстовый20RodstvТекстовый20Obr1ТекстовыйДлинное целоеObr2Текстовый20nomvusЧисловое Длинное целоеDat_delДатаNom_delЧисловоеДлинное целоеPrich_delТекстовый20KodudoЧисловоеДлинное целоеKoddoljnЧисловоеДлинное целоеKodnodeЧисловоеДлинное целоеisopenЛогическийKodzvanЧисловоеДлинное целоеСущности СОЛДАТСКИЙ_СОСТАВ_ВОИНСКОЙ_ЧАСТИ соответствует таблица D_Soldat.


Таблица 1.5

Структура таблицы D_Soldat

Наименование поляТип данныхДлинаКлючевое полеKodsoldatЧисловое Длинное целое Да (Совпадения не допускаются)FamilТекстовый50ImjaТекстовый20OtchТекстовый20NacТекстовый20DatrojДата SempolТекстовый20Nom_udЧисловоеДлинное целоеKodzvanЧисловоеДлинное целоеDat_prДатаNom_prЧисловоеДлинное целоеDat_zapДатаNom_zapЧисловоеДлинное целоеSempolТекстовый20RodstvТекстовый20Famil_rТекстовый20Imja_rТекстовый20Otch_rТекстовый20Dat_delДатаNom_delЧисловоеДлинное целоеPrich_delТекстовый20KodudoЧисловоеДлинное целоеDoljnТекстовый20KodnodeЧисловоеДлинное целоеisopenЛогическийKodzvanЧисловоеДлинное целое

Сущности ВОИНСКИЕ ЗВАНИЯ соответствует таблица S_Zvan.


Таблица 1.6

Структура таблицы S_Zvan

Наименование поляТип данныхДлинаКлючевое полеKodzvanЧисловое Длинное целое Да (Совпадения не допускаются)NamZvanТекстовый50

Сущности ПОДРАЗДЕЛЕНИЯ_ВОИНСКОЙ_ЧАСТИ соответствует таблица S_Node.


Таблица 1.7

Структура таблицы S_Node

Наименование поляТип данныхДлинаКлючевое полеKodnodeЧисловое Длинное целое Да (Совпадения не допускаются)NamnodeТекстовый50

Сущности ДОЛЖНОСТИ ВОИНСКОЙ ЧАСТИ соответствует таблица S_Doljn.


Таблица 1.8

Структура таблицы S_Doljn

Наименование поляТип данныхДлинаКлючевое полеKoddoljnЧисловое Длинное целое Да (Совпадения не допускаются)NamdoljnТекстовый50

Сущности ДОЛЖНОСТНЫЕ НАЗНАЧЕНИЯ соответствует таблица D_Doljn.

Таблица 1.9

Структура таблицы D_Doljn

Наименование поляТип данныхДлинаКлючевое полеNumЧисловое Длинное целое Да (Совпадения не допускаются)KoddoljnЧисловое Длинное целоеKodoficerЧисловое Длинное целоеDat1ДатаDat2Дата

Сущности ОБЛАСТИ соответствует таблица S_Obl.


Таблица 1.10

Структура таблицы S_Obl

Наименование поляТип данныхДлинаКлючевое полеKodoblЧисловое Длинное целое Да (Совпадения не допускаются)NamoblТекстовый50

Сущности ГОРОДА соответствует таблица S_Gorod.


Таблица 1.11

Структура таблицы S_Gorod

Наименование поляТип данныхДлинаКлючевое полеKodgorodЧисловое Длинное целое Да (Совпадения не допускаются)NamgorodТекстовый50KodoblЧисловое Длинное целое

Сущности УЛИЦЫ соответствует таблица S_Ulic.


Таблица 1.12

Структура таблицы S_Ulic

Наименование поляТип данныхДлинаКлючевое полеKodUlicЧисловое Длинное целое Да (Совпадения не допускаются)NamulicТекстовый50KodgorodЧисловое Длинное целое

Сущности УДО соответствует таблица S_UDO.


Таблица 1.13

Структура таблицы S_UDO

Наименование поляТип данныхДлинаКлючевое полеKodudoЧисловое Длинное целое Да (Совпадения не допускаются)NamudoТекстовый50KodoblЧисловое Длинное целое

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


Рисунок 1.4. Логическая структура реляционной базы данных


.5.3 Выбор конкретной СУБД

Одним из основных критериев выбора СУБД является оценка того, насколько эффективно внутренняя модель данных, поддерживаемая системой, способна описать концептуальную схему. Большинство СУБД для персональных ЭВМ работают с реляционной моделью. Таковы системы FoxPro, Paradox, Clipper. Перечисленные СУБД эффективны для создания небольших изолированных систем с несложной структурой данных, с относительно небольшими объемами данных (10Мб - 1Гб) и несложными запросами. За пределами такого рода ограничений эффективность использования указанных СУБД существенно снижается.

Для хранения данных в приложении выбрана СУБД Microsoft Access, которая поддерживает реляционную модель данных.

Microsoft Access является одним из самых популярных приложений в семействе настольных СУБД реляционного типа. Все версии Access имеют в своем арсенале средства, значительно упрощающие ввод и обработку данных, поиск данных и предоставление информации в виде таблиц, графиков и отчетов. Начиная с версии Access 2000, появились также Web-страницы доступа к данным, которые пользователь может просматривать с помощью программы Internet Explorer. Помимо этого, Access позволяет использовать электронные таблицы и таблицы из других настольных и серверных баз данных для хранения информации, необходимой приложению. Присоединив внешние таблицы, пользователь Access будет работать с базами данных в этих таблицах так, как если бы это были таблицы Access. При этом и другие пользователи могут продолжать работать с этими данными в той среде, в которой они были созданы.


1.6 Обоснование выбора архитектуры технологии доступа к данным


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

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


Рисунок 1.5. Архитектура АРМ


1.7 Алгоритм решения поставленной задачи


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

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

Данный алгоритм состоит из следующих этапов:

1.Ввод информации о имеющихся, призывных и мобилизационных людских ресурсов.

2.Ввод информации о назначении на должность.

.Ввод информации о присвоении воинского звания.

.Ввод информации о выписке из состава воинской части.

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


Рисунок 1.6. Структура информационной системы


1.8 Структурно-функциональная схема информационной системы


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

Общая схема информационной системы представлена на рисунке 1.7.














Рисунок 1.7. Общая схема информационной системы


В качестве технологии реализации задачи обмена данными с Microsoft Excel была использована технология автоматизации (OLE Automation). Автоматизация позволяет одному приложению управлять другим приложением. Управляемое приложение называется сервером автоматизации.

Технология доступа к данным ADO (ActiveX Data Objects) - это высокоуровневый компонент технологии доступ к данным, разработанный компанией Microsoft.

Схема функций, реализуемых технологией ADO в разработанном приложении отображена на рисунке 1.8.



















Рисунок 1.8. Схема функций, реализуемых технологией ADO в проектируемом приложении


2. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ АВТОМАТИЗИРОВАНОГО РАБОЧЕГО МЕСТА СОТРУДНИКА ОТДЕЛА МРиК


2.1 Назначение и цель создания информационной системы


Целью дипломной работы является разработка автоматизированного рабочего места специалиста отдела МРиК. Разработанное программное средство позволит:

сократить время работника отдела МРиК на документальное оформление сведений воинского учета о гражданах, состоящих на воинском учете;

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

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

Назначение проектируемой программной системы состоит в следующем:

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

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

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

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

Программа должна иметь возможности:

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

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

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

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

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

2.Изучение и формализация требований будущих пользователей;

.Проектирование структуры и создание таблиц базы данных;

.Создание экранных форм;

.Отладка программного продукта;

.Внедрение информационной системы в воинской части;

.Проведение мероприятий по обучению сотрудников отдела МРиК работе с информационной системой.


2.2Требования к информационной системе


.2.1 Требования к функциям информационной системы

Проектируемое АРМ должно помочь пользователю в реализации расчетов при выполнении ей своих основных функций. Проектируемое АРМ должно обеспечивать выполнение следующих функций:

?ручной ввод оперативной информации;

?формирование БД и их использование в вычислительных алгоритмах;

?способностью осуществлять пересчет задачи при корректировке информации;

?возможностью оперативной корректировки информации.


.2.2 Требования к интерфейсу пользователя

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

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

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

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

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

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

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

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


.2.3 Требования к реактивности системы

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

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

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


.2.4 Требования к защите информации

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


2.2.5 Требования к надёжности системы

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


2.3Перечень и описание входных и выходных данных


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

Условно-постоянная информация, необходимая для решения поставленной задачи включает:

-Справочник «Подразделения воинской части». Формируется на основе структуры управления воинской части.

-Справочник «Должности воинской части». Формируется на основе штатно-должностного расписания воинской части.

-Справочник «Список УДО». Формируется на основе данных о имеющихся в каждом регионе УДО или военкоматов (комиссариатов).

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

учетная карта призывника;

алфавитная карточка;

карточка первичного учета.

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

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

Выходной информацией являются документы, содержащие следующую информацию:

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

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

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

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


2.4 Описание функциональных возможностей и схем диалога


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

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

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


Рисунок 2.1. Главное окно приложения


Главная форма приложения разделена на две части.

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

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

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

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


Рисунок 2.2. Справочник УДО

Кнопка «Новый» открывает форму для внесения информации по новому УДО (рисунок 2.3).


Рисунок 2.3. Добавление записи в справочник УДО


При нажатии на кнопку «Сохранить» введенная информация запишется в таблицу справочников УДО.

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

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


Рисунок 2.4. Добавление военнослужащего в состав подразделения


При выборе пункта «Рядовой» появится форма для ввода информации о рядовом (рисунок 2.5).


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


Рисунок 2.5. Ввод информации о рядовом


Для сохранения введенной информации необходимо нажать кнопку «Сохранить».

При выборе пункта «Офицер» появится форма для ввода информации о рядовом (рисунок 2.6).

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


Рисунок 2.6. Ввод информации об офицере


Для работы с военнослужащим необходимо выделить его в списке и нажать правую кнопку мыши (рисунок 2.7).


Рисунок 2.7. Операции с записью


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


Рисунок 2.8. Формирование документа


Формируемые документы:

Книга учета личного состава (Приложение А);

Книга учета офицеров, сержантов и солдат по контракту (Приложение Б);

Книга штатно-должностного учета личного состава (Приложение В).

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


2.5 Принципы и результаты тестирования программной системы


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

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

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

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


3. ОБОСНОВАНИЕ ЭКОНОМИЧЕСКОЙ ЭФФЕКТИВНОСТИ ПРОЕКТА


.1 Понятие экономической эффективности


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

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

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

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

Показатели экономической эффективности программного изделия определяются:

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

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

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

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

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


3.2 Выбор и обоснование методики расчета трудоемкости и стоимости разработки


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

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

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

- трудоемкость разработки;

- длительность разработки;

годовая экономия;

единовременные затраты на разработку и внедрение;

текущие затраты на функционирование.

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

В зависимости от этого:

- первые методы основаны на четкой идентификации операций процесса разработки ПП;

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

3.1.1 Методика оценивания затрат СОСОМО II

В конце 70-х годов Барри Боэмом была разработана модель оценивания объемов работ при разработке информационных систем, и получила название конструктивная модель стоимости (Constructive Cost Model -COCOMO). На сегодняшний день данная модель оценки трудоёмкости разработки ПП является наиболее известной среди множества подобных моделей.

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

Модель ориентирована на порционность поступления информации для оценивания на протяжении всего периода разработки ПП и является трехуровневой [8].

- Предварительная модель - обеспечивает предварительную оценку трудозатрат на ПС на ранних стадиях разработки. Модель предназначена для оценки трудоемкости прототипирования, а также разработки ПС с использованием интегрированных сред (ICASE);

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

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

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

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

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


, (3.1)


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

оценивается уровень производительности,.

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


. (3.2)


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

Трудоемкость вычисляется следующим образом:


, (3.3)


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

- фактор процесса разработки, который вычисляется по формуле:

, (3.4)


где факторы Wi принимают значения от 0 до 5:

W1 - предсказуемость проекта для данной организации, от полностью знакомого (0) до совсем непредсказуемого (5);

W2 - гибкость процесса разработки, от полностью определяемого командой при выполнении общих целей проекта (0) до полностью фиксированного и строгого (5);

W3 - степень удаления рисков, от полной (0) до небольшой (5), оставляющей около 80% рисков;

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

W5 - зрелость процессов в организации, от 0 до 5 в виде взвешенного количества положительных ответов на вопросы о поддержке ключевых областей процесса в модели CMM.

- произведение семи коэффициентов затрат, каждый из которых лежит в интервале от 1 до 6:

- возможности персонала;

надежность и сложность продукта;

требуемый уровень повторного использования;

сложность платформы;

опытность персонала;

использование инструментов;

плотность графика проекта.

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

Формула для трудоемкости имеет вид:

, (3.5)


где


, (3.6)


где


, (3.7)


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

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

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

CM - процент модифицируемого для повторного использования кода;

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

SU - фактор понятности повторного использования кода.

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

Коэффициент вычисляется как (1 + (процент кода, выброшенного из-за изменений в требованиях)/100).

Коэффициент является произведением 17 коэффициентов затрат, имеющих значения от 1 до 6:

- надежность продукта;

сложность продукта;

размер базы данных разрабатываемого приложения;

требуемый уровень повторного использования;

требуемый уровень документированности;

уровень производительности по времени;

уровень требований к занимаемой оперативной памяти;

изменчивость платформы;

возможности аналитика проекта;

возможности программистов;

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

опыт работы команды с используемыми платформами;

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

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

возможности используемых инструментов;

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

фактор сжатия графика проекта.

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


, (3.8)


где tразр.- срок разработки информационной системы, в месяцах;

Т(А) - линейный коэффициент зависимости срока разработки типа проекта;

T - трудоемкость в человеко-месяцах;

Т(В) - экспоненциальный коэффициент зависимости срока разработки от типа проекта;

- сумма корректировочных коэффициентов факторов масштабирования. Модель СОСОМО II имеет ряд достоинств, среди которых следует отметить объективность и простоту применения.

3.1.2 Методика расчета трудоемкости программного средства Госкомтруда 1986 года

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

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

Параметр «Стадии разработки ПС» может принимать значения:

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

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

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

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

«Внедрение»;

«Предварительное проектирование».

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

- использование CASE-технологий;

объединение технического и рабочего проекта.

При использовании CASE-технологии стадии «Техническое задание», «Эскизный проект» и «Технический проект» объединяются в одну стадию «Предварительное проектирование», за которой следуют стадии «Рабочий проект» и «Внедрение».

Объединение стадий «Технический проект» и «Рабочий проект» в одну стадию «Технорабочий проект», предполагает обязательное наличие этих двух стадий.

Параметр «Элементы, повышающие сложность ПС» может принимать значения:

«Наличие экранных подсказок и меню функций»;

«Выдача на экран контекстно-зависимой помощи»;

«Обеспечение хранения и поиска данных в сложных структурах»;

«Возможность связи с другими ПС».

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

- «Принципиально новое ПС, не имеющее доступных аналогов»;

«ПС, являющееся развитием определенного параметрического ряда ПС на новом типе ЭВМ/ операционной системы (ОС)»;

«ПС, являющееся развитием определенного параметрического ряда ПС на прежнем типе ЭВМ/ОС».

Параметры «Новый тип ЭВМ» и «Новый тип ОС» определяют, используется ли новый тип ЭВМ или ОС при разработке ПС

Параметр «Степень охвата реализуемых функций стандартными ПС» может принимать одно из следующих значений:

- «Свыше 60%»;

«От 40% до 60%»;

«От 20% до 40%»;

«До 20%».

Параметр «Средства разработки ПС» может принимать одно из следующих значений:

- «Язык Ассемблера»;

«Процедурные языки высокого уровня (C, Pascal, и др.)»;

«Системы программирования на основе СУБД»;

«CASE-средства».

Параметр «Характер среды разработки» может принимать одно из следующих значений:

- «Большие ЭВМ без «дружелюбной» среды (ЕС ЭВМ с ОС ЕС)»;

«Большие ЭВМ с «дружелюбной» средой (RS, mainframe)»;

«Малые ЭВМ без дружелюбной среды (СМ ЭВМ с ОС РВ, UNIX)»;

«Малые ЭВМ с «дружелюбной» средой (VAX, DEC)»;

«Персональные ЭВМ (с MS-DOS, Windows)»;

«Другие персональные ЭВМ (Apple)»;

«Сети ЭВМ локальные (типа NetWare)»;

«Глобальные сети (через модемы)».

Параметр «Характеристики ПС» может принимать значения:

1)«Наличие мощного интеллектуального языкового интерфейса высокого уровня с пользователем (без учёта подсказок и меню функций)»;

2)«Режим работы в реальном времени»;

3)«Обеспечение телекоммуникационной обработки данных»;

)«Машинная графика»;

)«Криптография и другие методы защиты от несанкционированного доступа»;

)«Обеспечение существенного распараллеливания вычислений»;

)«Оптимизационные расчеты»;

)«Моделирование объектов и процессов»;

)«Задачи анализа и прогнозирования»;

10)«Сложные экономические, инженерные или научные расчеты»;

11)«Обеспечение настройки ПС на изменения структур входных и выходных данных».

Характеристики ПС определяют параметр «Группа сложности», пункты 1 - 6 соответствуют максимальной группе сложности, 7 - 11 - средней группе сложности, если же разрабатываемое ПС не обладает ни одной из перечисленных характеристик, оно относится к минимальной группе сложности.

Параметр «Функции ПС» может принимать значения:

«Управление работой компонентов ПС»;

- «Обработка прерываний»;

«Ввод данных в интерактивном режиме»;

«Вывод данных в табличной форме на экран и на печать»;

«Обработка ошибочных ситуаций»;

«Система настройки ПС на условия применения»;

«Формирование последовательных файлов»;

«Сортировка файлов»;

«Обработка файлов»;

«Формирование базы данных»;

«Обработка записей базы данных»;

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

«Статистическая обработка данных»;

«Расчет экономических показателей»;

«Экономический анализ и прогнозирование»;

«Составление сводных балансов».

Данные функции могут присутствовать как все вместе, так и по отдельности.

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


, (3.9)


где Тобщ - общая трудоемкость разработки ПС (в чел.-днях);

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

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

Трудоемкость i-ой стадии разработки ПС, i = 0..5, определяется по формуле:Ti = Li * Кн * То, для i = 0,1,2,3,5, (3.10)

Ti = Li * Кн *Кт * То, для i = 4,


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


(3.11)


В случае отсутствия стадии «Эскизный проект» L3 = L2 + L3.

В случае объединение стадий «Технический проект» и «Рабочий проект» в одну стадию «Технорабочий проект» L3 = 0,85 * L3 + L4.

Кн - поправочный коэффициент, учитывающий степень новизны ПС и использование при разработке ПС новых типов ЭВМ и ОС, определяется по таблице;

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

То - общая трудоемкость разработки ПС (в чел.-днях) определяется по формуле:


То = Тур * Ксл, (3.12)


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

Ксл -коэффициент сложности ПС, определяется по формуле:


, (3.13)

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

n - количество дополнительно учитываемых характеристик ПС.

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


Тур = Тб * Кур , (3.14)


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

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

Общий объем разрабатываемого ПС, определяется по формуле:


, (3.15)


где Vi - объем i-ой функции ПС, i = 1..16, учитывающий тип ЭВМ, определяется по таблице;

n - общее число функций.

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


. (3.16)


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

Ч = Tобщ/t . (3.17)


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

- для предсказания усилий на разработку в модели COCOMO II необходимо сначала предсказать размер конечной системы в единицах KDSI (Thousands of Delivered Source Instructions, тысяч строк исходных инструкций поставляемого кода), то есть данная модель основана на размере кода ПП, а длина кода не всегда отражает размер современных программных продуктов;

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

точность модели COCOMO II согласована с большим количеством фактических данных и зависит от точности оценивания входных данных.

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

3.3 Расчет частных показателей экономической эффективности


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

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

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

-годовая экономия (годовой прирост прибыли);

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


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

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

-стадии разработки ПС;

-сложность ПС;

-степень новизны ПС;

-новый тип ЭВМ;

-новый тип ОС;

-степень охвата реализуемых функций стандартными ПС;

-средства разработки ПС;

-характер среды разработки;

-характеристики ПС;

-группа сложности;

-функции ПС;

-тип ЭВМ.

Параметр «Стадии разработки ПС» может принимать значения:

-«Техническое задание»;

-«Эскизный проект»;

-«Технический проект»;

-«Рабочий проект»;

-«Внедрение»;

-«Предварительное проектирование».

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

-использование CASE-технологий;

-объединение технического и рабочего проекта.

При использовании CASE-технологии стадии «Техническое задание», «Эскизный проект» и «Технический проект» объединяются в одну стадию «Предварительное проектирование», за которой следуют стадии «Рабочий проект» и «Внедрение».

Объединение стадий «Технический проект» и «Рабочий проект» в одну стадию «Технорабочий проект», предполагает обязательное наличие этих двух стадий.

Параметр «Элементы, повышающие сложность ПС» может принимать значения:

-«Наличие экранных подсказок и меню функций»;

-«Выдача на экран контекстно-зависимой помощи»;

-«Обеспечение хранения и поиска данных в сложных структурах»;

-«Возможность связи с другими ПС».

Данные элементы могут присутствовать как вместе, так и по отдельности.

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

-«Принципиально новое ПС, не имеющее доступных аналогов»;

-«ПС, являющееся развитием определенного параметрического ряда ПС на новом типе ЭВМ/ операционной системы (ОС)»;

-«ПС, являющееся развитием определенного параметрического ряда ПС на прежнем типе ЭВМ/ОС».

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

Параметр «Степень охвата реализуемых функций стандартными ПС» может принимать одно из следующих значений:

-свыше 60%;

-от 40% до 60%;

-от 20% до 40%;

-до 20%.

Параметр «Средства разработки ПС» может принимать одно из следующих значений:

-язык Ассемблера;

-процедурные языки высокого уровня (C, Pascal, и другие);

-системы программирования на основе СУБД;

-CASE-средства.

Параметр «Характер среды разработки» может принимать одно из следующих значений:

-«Большие ЭВМ без «дружелюбной» среды (ЕС ЭВМ с ОС ЕС)»;

-«Большие ЭВМ с «дружелюбной» средой (RS, mainframe)»;

-«Малые ЭВМ без «дружелюбной» среды (ЭВМ с ОС UNIX)»;

-«Малые ЭВМ с «дружелюбной» средой (VAX, DEC)»;

-«Персональные ЭВМ IBM-PC совместимые (с MS-DOS, Windows)»;

-«Другие персональные ЭВМ (Apple)»;

-«Сети ЭВМ локальные (типа NetWare)».

-«Глобальные сети (через модемы)».

Параметр «Характеристики ПС» может принимать значения:

-«Наличие мощного интеллектуального языкового интерфейса высокого уровня с пользователем (без учёта подсказок и меню функций)»;

-«Режим работы в реальном времени»;

-«Обеспечение телекоммуникационной обработки данных»;

-«Машинная графика»;

-«Криптография и другие методы защиты от несанкционированного доступа»;

-«Обеспечение существенного распараллеливания вычислений»;

-«Оптимизационные расчеты»;

-«Моделирование объектов и процессов»;

-«Задачи анализа и прогнозирования»;

-«Сложные экономические, инженерные или научные расчеты»;

-«Обеспечение настройки ПС на изменения структур входных и выходных данных».

Характеристики ПС определяют параметр «Группа сложности», пункты 1 - 6 соответствуют максимальной группе сложности, 7 - 11 - средней группе сложности, если же разрабатываемое ПС не обладает ни одной из перечисленных характеристик, оно относится к минимальной группе сложности. Данные элементы могут присутствовать как вместе, так и по отдельности.

Параметр «Функции ПС» может принимать значения:

-«Управление работой компонентов ПС»;

-«Обработка прерываний»;

-«Ввод данных в интерактивном режиме»;

-«Вывод данных в табличной форме на экран и на печать»;

-«Обработка ошибочных ситуаций»;

-«Система настройки ПС на условия применения»;

-«Формирование последовательных файлов»;

-«Сортировка файлов»;

-«Обработка файлов»;

-«Формирование базы данных»;

-«Обработка записей базы данных»;

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

-«Статистическая обработка данных»;

-«Расчет экономических показателей»;

-«Экономический анализ и прогнозирование»;

-«Составление сводных балансов».

Данные функции могут присутствовать как все вместе, так и по отдельности.

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

Тобщ - общая трудоемкость разработки ПС (в чел.-днях) рассчитывается по формуле:


, (3.1)


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

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

Тi - трудоемкость i - ой стадии разработки ПС, i = 0..5 определяется по формуле:


Ti = Li ? Кн ? То, для i = 0,1,2,3,5 (3.2)


где Li - удельный вес трудоемкости i - ой стадии разработки ПС, учитывающий наличие той или иной стадии и использование CASE-технологии, причем


, (3.3)


в случае отсутствия стадии «Эскизный проект» L3 = L2 + L3; в случае объединение стадий «Технический проект» и «Рабочий проект» в одну стадию «Технорабочий проект» L3 = 0,85 ? L3 + L4.

Кн - поправочный коэффициент, учитывающий степень новизны ПС и использование при разработке ПС новых типов ЭВМ и ОС;

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

То - общая трудоемкость разработки ПС (в чел.-днях) определяется по формуле:


То = Ксл ? Тур, (3.4)


где Ксл -коэффициент сложности ПС, определяется по формуле:


, (3.5)

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

n - количество дополнительно учитываемых характеристик ПС.

Тур - трудоемкость разработки ПС с учетом конкретных условий разработки, определяется по формуле:


Тур = Тб ? Кур, (3.6)


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

Кур - поправочный коэффициент, учитывающий характер среды разработки и средства разработки ПС;

Vо- общий объем разрабатываемого ПС, определяется по формуле:


, (3.7)


где Vi - объем i- ой функции ПС, i = 1..16, учитывающий тип ЭВМ; n - общее число функций.


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

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


, (3.8)


где Tобщ - трудоемкость разработки программного изделия, рассчитывается по формуле (3.1), чел-мес.

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


Чn = Tобщ / t , (3.9)


где Тобщ - трудоемкость разработки программного изделия, чел-мес;

t - длительность разработки программного изделия, месяцев.


.3.3Расчет годовой экономии функционирования программного изделия

Годовая экономия функционирования ПИ рассчитывается следующим образом:


Пг = (П1 + П2 + П3) ? (1+ЕН ?Т), (3.10)


где П1 - экономия, получаемая в t - году в результате сокращения затрат трудовых и материальных ресурсов, тг;

П2 - экономия, получаемая в t - году в результате повышения качества новой техники, ее потребительских свойств, тг;

П3 - дополнительная прибыль в t - году от приоритетной новизны решения, полученного в автоматизируемой системе в кратчайшие сроки, тг;

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

?Т - сокращение длительности автоматизируемого процесса, лет.

.3.4Расчет единовременных затрат


Единовременные затраты на создание ПП определяются по формуле:


К = КП + КК, (3.11)


где КП - предпроизводственные затраты, тг;

КК - капитальные затраты на создание, тг.

Предпроизводственные затраты на создание определяются по формуле:


КП = Косн.зп. + Кдоп.зп. + Кпр, (3.12)


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

Кдоп.зп. - затраты на дополнительную заработную плату разработчиков (составляют 20% от основной заработной платы), тг;

Кпр - прочие расходы, включают расходы на машинное время, тг.

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

Косн.зп. = О ? t , (3.13)


где О - оклад разработчика, тг;

t - трудоемкость разработки, чел-мес.

Прочие расходы включают расходы на машинное время:


Кпр = Тмаш ? Смаш, (3.14)


где Тмаш - длительность разработки, отладки и тестирования программного изделия, час;

Смаш - стоимость 1 часа маш.времени, тг.

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


Кк=Кктс+Кмонт+Кинв+Кзд+Кос+Ктр+Ксоп+Квысв, (3.15)


где Кктс - сметная стоимость КТС, тг;

Кмонт- затраты на установку, монтаж и запуск КТС в работу, тг;

Кинв - затраты на производственно-хозяйственный инвентарь, тг;

Кзд - затраты на строительство и реконструкцию зданий для размещения КТС, тг;

Кос - сумма оборотных средств, тг;

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

Ксоп - сметная стоимость системы стандартного обеспечения применения КТС, тг;

Квысв- остаточная удельная стоимость высвобожденных средств, тг.

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


Квысв = Кперв ? (1 - а?Ттехн), (3.16)


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

а - годовая норма амортизации;

Ттехн - срок эксплуатации высвобожденного оборудования, лет.


.3.5Расчет текущих затрат

Т.к. ПП находится на этапе создания, то предпочтение отдаем нижеописанному методу расчета.

Годовые текущие затраты Иг определяются по формуле:


, (3.17)


где Иi - затраты, вызванные решением i-й задачи, тг;

n - число задач, решаемых в течение года, шт;

Исист - общесистемные затраты за год, тг.

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


, (3.18)


где Игi - годовые текущие затраты (вычисляются по формуле 3.17), тг.


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

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


Зг = ИГ + К, (3.19)


где ИГ - годовые текущие издержки на функционирование ПП (без учета амортизации на реновацию) (вычисляются по формуле 3.17), тг;

К - единовременные затраты на создание ПП (вычисляются по формуле 3.11), тг.


3.4 Определение обобщающих показателей экономической эффективности


К основным обобщающим показателям экономической эффективности относятся:

-годовой экономический эффект;

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

-коэффициент экономической эффективности функционирования;

-срок окупаемости системы.


.4.1 Расчет годового экономического эффекта от разработки и внедрения программного изделия

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


ЭГ = ПГ - ЗГ , (3.20)


где ЭГ - годовой экономический эффект от разработки и внедрения ПП, тыс.тг.;

ПГ - годовая экономия (годовой прирост прибыли) (вычисляется по формуле 3.10), тыс.тг.;

ЗГ - суммарные затраты за год (вычисляются по формуле 3.19), тыс.тг.

3.4.2 Расчет суммарного экономического эффекта функционирования программного изделия

Экономический эффект функционирования ПИ за весь расчетный период определяется разностью суммарных результатов в стоимостной оценке и затрат:


Эо = По - Зо , (3.21)


где По, Зо - суммарные по годам расчетного периода экономия и затраты (тыс.тг.), рассчитываются следующим образом:


, (3.22)

, (3.23)


где Пt - экономия в t-ом году расчетного периода (рассчитывается по формуле 3.10), тыс.тг;

Зt - затраты в t-ом году расчетного периода (рассчитываются по формуле 3.19), тыс.тг;

tn и tk - соответственно начальный и конечный годы расчетного периода;

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


3.4.3 Расчет коэффициента экономической эффективности единовременных затрат

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


, (3.24)


где П - годовая экономия (годовой прирост прибыли) (рассчитывается по формуле 3.10), тыс.тг;

Иг - годовые текущие издержки на функционирование, (рассчитываются по формуле 3.19), тыс.тг;

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

Если для коэффициента ЕК выполняется условие: ЕК>=ЕН, капитальные вложения считаются экономически эффективными.


.4.4 Расчет срока окупаемости программного изделия

Срок окупаемости представляет собой отношение единовременных суммарных затрат на разработку и внедрение ПИ к годовой экономии (к годовому приросту прибыли):


, (3.25)


где К - единовременные затраты на разработку и внедрение, (вычисляются по формуле 3.11), тыс.тг;

Пг - годовая экономия (годовой прирост прибыли) (рассчитывается по формуле 3.10), тыс.тг;

Иг - годовые текущие издержки на функционирование, (рассчитываются по формуле 3.19), тыс.тг.


3.5 Расчет цены программного продукта


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

Цена программной продукции формируется на базе экономически обоснованной (нормативной) себестоимости её производства и прибыли, тг.:


Цпп = С + Пн + Нэ , (3.26)


где С - себестоимость ПП, тг. (используем единовременные затраты (3.11 );

Пн - нормативная прибыль, тг.;

Нэ - надбавка к цене, тг., если годовой экономический эффект от применения ПП больше 10 тыс. тг., надбавка к цене за эффективность берется 20 % от нормативной прибыли: Нэ = 0.2 ?Пн тг.

Нормативная прибыль определяется как:


Пн = Уп ? Фзп , (3.27)


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

Фзп - фонд заработной платы разработчиков ПП, тг.

Уровень прибыли рассчитывается по формуле:

Уп = Руп + Рп , (3.28)


где Руп - расчётный уровень прибыли (норматив рентабельности), включаемый в цену на разработку (ориентировочно 90-100 % к Фзп);

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


3.6 Расчет показателей экономической эффективности


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

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

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

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

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

Для расчета экономической эффективности был определен ряд исходных параметров, которые представлены в виде таблицы (таблица 3.1).


Таблица 3.1

Исходные данные для расчета

Наименование показателейУсловные обозначенияЕдиница измеренияЗначения показателябез ППс ПП12345Оклад программистаОтг-35000Стоимость одного часа машинного времениСМтг4040Сметная стоимость КТСККТСтг700070000Трудоемкость обработки информации по одной задачеtЗчас3 чел/час0,05 час (маш. вр.)Эксплуатац.расходы функционирования ПП (% от сметной стоимости) - амортизация (5%) - текущий ремонт(2%) - содержание оборудования (2,5%) Итого: Исист тг тг тг тг 3500 1400 1750 6650Зарплата специалиста (включая отчисления)тг50000Удельная стоимость трудозатрат одного специалистаСспецтг170170Количество задач решаемых за годNЗЗадач/год11003600Период функционирования ППТЛет-5

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

-стадии разработки ПС: «предварительное проектирование», «рабочий проект» и «внедрение», так как используется CASE-технология;

-сложность ПС принимает значение «выдача на экран контекстно-зависимой помощи» и «возможность связи с другими ПС»;

-степень новизны ПС принимает значение «ПС, являющееся развитием определенного параметрического ряда ПС на прежнем типе ЭВМ/ОС»;

-степень охвата реализуемых функций стандартными ПС - от 40% до 60%;

-средства разработки ПС - процедурные языки высокого уровня (C, Pascal, и другие);

-характер среды разработки - персональные ЭВМ совместимые (с MS-DOS, Windows);

-характеристики ПС - «оптимизационные расчеты», а также «задачи анализа и прогнозирования»;

-группа сложности - средняя;

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

Вычислим по формуле (3.7) общий объем разрабатываемого ПС и получим:

Vо = 1580 + 3740 + 3790 + 2750 + 8630 = 20490 исходных команд.

Трудоемкость разработки ПС с учетом конкретных условий разработки, определяется по формуле (3.6):

Тур = 1613 × 0,17 = 274,21 чел-дни.

Коэффициент сложности ПС, вычисленный по формуле (3.5), равен:

Ксл = 1 + (0,07 + 0,09) = 1,16.

Общая трудоемкость разработки ПС определяется по формуле (3.4) следующим образом:

То = 1,16 × 274,21 = 318,08 чел-дн.

Определим трудоемкость каждой стадии разработки ПС по формуле (3.2):= L0 × Кн × То = 0,45 × 0,40 × 318,08 = 57,25 чел-дн.

T4 = L4 × Кн × Кт × То = 0,30 × 0,40 × 0,9 × 318,08 = 34,34 чел-дн.

T5 = L5 × Кн × То = 0,18 × 0,40 × 318,08 = 22,9 чел-дн.

Тогда общая трудоемкость разработки ПС будет равна:

Тобщ = 57,25 + 34,34 + 22,9 = 114,49 чел-дн.

Для перевода в чел-мес делим на 22 рабочих дня в месяце:

Тобщ = 114,49 / 22 = 5,2 чел-мес.

Длительность разработки программного изделия t рассчитывается по формуле (3.8), мес:

t = 2,5 × (5,2)0,32 = 4,23 мес.

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

Чn = Tобщ / t = 5,2 / 4,23 = 1 чел.

Расчет экономии от функционирования программного продукта.

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

П2 = Сспец · tЗ · NЗ - (Сспец +См)· tЗ · NЗ = 170 × 3 × 1100 - (170 + 40) × 0,05 × ?3600 = 523200 тг.

Определим сокращение длительности автоматизируемого процесса по формуле:

лет

Расчет годовой экономии производится по формуле (3.10):

Пг = 523200 · (1 + 0,15 · 0,49) = 561655,2 тг.

Расчет единовременных затрат на создание и внедрение программного продукта, по формуле (3.11):

Причем Кк = 0, т.к. используется старая ВТ,

К = КП = Косн.зп. + Кдоп.зп. + Кпр

Косн.зп. = 35000 × 5,2 = 182000 тг.

Кдоп.зп. = 0,2 × 182000 = 36400 тг.

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

Тмаш = t × 22 × 8 = 4 × 22 × 8 = 704 час.

Кпр = 3 ? 704 × 40 = 84480 тг.

К = 182000 + 36400 + 84480 = 302880 тг.

Расчет текущих затрат. Расчет годовых текущих затрат производится по формуле (3.17):

Исист = 6650 тг

Иi= (100 + 40) × 0,05 = 7 тг.

Иг = 6650 + 7 × 3600 = 31850 тг.

Суммарные текущие затраты на функционирование программного продукта за 5 лет с приведением к расчетному году (первому году функционирования программного продукта) по формуле (3.18):

И = 31850 · (1,0 + 0,91 + 0,83 + 0,75 + 0,68 + 0,62) = 152561,5 тг.

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

Зг = К + Иг = 302880 + 31850 = 334730 тг.

Расчет экономии от функционирования программного продукта за 5 лет по формуле (3.22):

По = 561655,2 × (1,0 + 0,91 + 0,83 + 0,75 + 0,68 + 0,62) = 2690328,4 тг.

Расчет суммарных затрат на создание и 5-ти летнее функционирование программного продукта по формуле (3.23):

Зо = К + И = 302880 + 152561,5 = 455441,5 тг.

Годовой экономический эффект по формуле (3.20) будет равен:

Эг = П - ЗГ = 561655,2 - 334730 = 226925,2 тг.

Экономический эффект за 5 лет по формуле (3.21) равен:

Э = 2690328,4 - 455441,5 = 2234886,9 тг.

Коэффициент экономической эффективности единовременных затрат, по формуле (3.24):

Ек= (561655,2 - 31850) / 302880 = 1,74

Cрок окупаемости, по формуле (3.25):

Т = 1 / 1,74 = 0,57 года.

Для расчета цены программного продукта необходимо определить фонд заработной платы. Фонд заработной платы, состоит из основной Косн и дополнительной заработной платы разработчиков Кдоп (20% от основной зар.платы).

Фзп = 182000 + 0,2 × 182000 = 218400 тг.

Для расчета цены необходимо определить расчетный уровень прибыли (норматив рентабельности), по формуле (3.28): примем Руп = 90 %, Рп = 5 % к Фзп, тогда уровень прибыли будет равен:

Уп = 0,9 + 0,05 = 0,95

Определим нормативную прибыль, по формуле (3.27):

Пн = 0,95 × 218400 = 207480 тг.

Поскольку годовой экономический эффект от применения ПП составляет отрицательную величину, то надбавку к цене за эффективность не рассчитываем. Таким образом, договорная цена ПП по формуле (3.26) составит: Цпп = С + Пн = 302880 + 207480 = 510360 тг.

Расчет эффективности показывает, что информационная система для автоматизированного рабочего места специалиста отдела МРиК выгодна в экономическом отношении, так как коэффициент экономической эффективности единовременных затрат ЕК = 1,74 превышает норматив эффективности капитальных вложений ЕН, который принимается равным 0,15 для всех отраслей народного хозяйства. В первый год эксплуатации аналитической системы экономический эффект является равен 226925,2, за пять лет функционирования системы экономический эффект составит 2234886,9 тенге. Средства, вложенные на разработку программного обеспечения, а именно 302880 тенге, окупятся менее чем за 0,57 года его функционирования.


4. БЕЗОПАСНОСТЬ И ЭКОЛОГИЧНОСТЬ ПРОЕКТА


4.1 Общие положения по безопасности проекта


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

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

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

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

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

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

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

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

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

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

В ГОСТ 12.0.003-74 "ССБТ. Опасные и вредные производственные факторы. Классификация" приводится классификация элементов условий труда, выступающих в роли опасных и вредных производственных факторов. Они подразделяются на четыре группы: физические, химические, биологические, психофизиологические.

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

К физическим - опасным производственным факторам при работе с ЭВМ, можно отнести:

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

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

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

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

-повышенный уровень шума на рабочем месте;

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

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

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

Рентгеновское излучение генерируется в результате торможения электронов в слое люминофора на поверхности экрана монитора. При ускоряющем анодном напряжении менее 25 кВ энергия рентгеновского излучения полностью поглощается стеклом экрана.

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

К опасным психофизиологическим и вредным производственным факторам относятся физические (статические и динамические), нервно-психические перегрузки (умственное перенапряжение, перенапряжение анализаторов, монотонность труда, эмоциональные перегрузки) [10].


4.2 Безопасность, эргономика и техническая эстетика рабочего места инженера-программиста


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

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

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

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

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

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

Человек должен так организовать свое рабочее место, чтобы условия труда были комфортными и соответствовали требованиям СНиП:

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

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

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

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

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

-нормальные условия в отношении шума и вибрации;

-нормальный температурный режим;

-нормальная влажность воздуха;

-необходимая вентиляция.

К рабочему месту инженера-программиста предъявляются следующие требования:

  1. Требования к параметрам микроклимата и воздушной среды (ГОСТ 12.1.005-88. Общие санитарно-гигиенические требования к воздуху рабочей зоны).

Оптимальные параметры микроклимата приведены в таблице 4.1.


Таблица 4.1

Оптимальные параметры микроклимата.

СезонТемпература воздуха, tºСОтносительная влажность, %Скорость движения воздуха,м/сХолодный и переходный (средне суточная температура меньше 10 ºС)22-2460-400.1Теплый (среднесуточная температура воздуха 10 ºС и выше)21-23 23-2460-40 60-400.1 0.2

  • Запылённость воздуха не должна превышать 0.75 мг/м3. На одного инженера - программиста должен приходиться объём помещения 15м3 при площади 4.5 м2 (без учёта проходов и оборудования). В течение трудового дня необходимо обеспечить воздухообмен помещения объёмом 25-50 м3, отвод влаги 350-500 г и тепла 50 кДж на каждый килограмм массы тела работающего.
  • Требования к уровню шума (ГОСТ 12.1.003-83. Шум).

Уровень шума для инженера - программиста составляет не более 50 дБ.

  1. Требования к освещенности;

Нормативное значение коэффициента естественного освещения (КЕО) при боковом освещении равно 1.3 %, освещённость при работе с экраном дисплея - 200 лк, при работе с экраном дисплея и документом - 300 лк.

  1. Требования безопасности к излучению от дисплея.

В стандарт Р 50948-96 и в СНиП включены требования и нормы на параметры излучений дисплеев (они соответствуют шведскому стандарту): напряженность электромагнитного поля в 50 сантиметрах вокруг дисплея по электрической составляющей равна 2.5 В/м.

Плотность магнитного потока в 50 сантиметрах вокруг дисплея составляет 250 нТл в диапазоне частот 5 Гц-2КГц; поверхностный электростатический потенциал составляет 500 В. Время работы за дисплеем не должно превышать 4-х часов в сутки.

  1. Требования эргономики и технической эстетики (ГОСТ 12.2.032-78. Рабочее место при выполнении работ сидя).

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

Рабочее место оператора ЭВМ состоит из монитора, системного блока, клавиатуры, мыши, принтера. Клавиатура должна быть расположена непосредственно перед оператором. Расстояние от глаз оператора до монитора должно составлять 0.5 - 0.7 м. На столе, на котором расположена ПЭВМ, должно оставаться место для наглядного, графического материала, для возможности работать с литературой, делать какие-либо пометки.

К размерам рабочего места предъявляются требования:

-высота рабочей поверхности 655 мм;

-высота сидения 420 мм (желательно регулируемого);

-расстояние от сидения до нижнего края рабочей поверхности 150мм;

-размеры пространства для ног 650x500x600.

  1. Требования к выполнению правил пожарной безопасности.

В случае пожара необходимо:

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

-по возможности вынести легковоспламеняющиеся, взрывоопасные материалы и наиболее ценные предметы;

-приступить к тушению пожара имеющимися средствами (огнетушитель, песок и т.д.);

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

  1. Требования к электробезопасности.

Рассмотрим требования безопасности при работе с ЭВМ. Работа производится в лаборатории, где стоят точные приборы.

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

ГОСТ 12.2.007-75 подразделяет электрические изделия по способу защиты человека от поражения электрическим током на пять классов: 0, 01, 1, 2, 3.

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

Опасность поражения человека электрическим током определяется множеством факторов:

-индивидуальные особенности людей;

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

-путь тока в теле человека;

-род и частота тока.

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

Каждому работающему в лаборатории следует помнить:

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

-с неисправным оборудованием не работать;

-не загромождать рабочее место посторонними предметами;

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

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

При поражении электрическим током следует:

-освободить пострадавшего от воздействия электрического тока;оказать доврачебную помощь;

-вызвать врача.


4.3 Создание условий для организации режима труда и отдыха при работе с ЭВМ


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

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

-группа А - работа по считыванию информации с экрана ПЭВМ с предварительным запросом;

-группа Б - работа по вводу информации;

-группа В - творческая работа в режиме диалога с ПЭВМ.

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

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

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

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

Для 8-часовой рабочей смены при работе с ПЭВМ регламентированные перерывы рекомендуется установить:

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

-для 2 категории работ - через 2 часа от начала рабочей смены и через 1.5-2 часа после обеденного перерыва продолжительностью 15 минут каждый или через каждый час работы продолжительностью 10 минут каждый;

-для 1 категории работ через 1.5-2 часа от начала рабочей и через 1.5-2 часа после обеденного перерыва продолжительностью 20 минут каждый или через каждый час работы продолжительностью 15 минут каждый.

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

При 12-часовой рабочей смене регламентированные перерывы рекомендуется установить в первые 8 часов работы аналогично перерывам при 8-часовой рабочей смене, а в течение последних 4 часов, независимо от вида и категории трудовой деятельности, каждый час работы продолжительностью 15 минут.

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

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

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

4.4 Экологичность проекта


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

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

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

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

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

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

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

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

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

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

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

-Выработка критериев оптимизации - выбора наиболее согласованного с экологическим императивом и экологически ориентированного социально - экономического развития общества - экоразвития.

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

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

Охрана окружающей природной среды складывается из:

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

-материального стимулирования природоохранной деятельности, стремящегося сделать её экономически выгодной для предприятий;

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

Охране подлежат следующие объекты:

-естественные экологические системы, озоновый слой атмосферы;

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

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

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

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

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

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

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

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

Существует два основных направления природоохранной деятельности предприятий. Первое - очистка вредных выбросов.

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


ЗАКЛЮЧЕНИЕ


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

Разработанное программное средство позволит:

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

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

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

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

После аналитического исследования предметной области и информационных объектов была создана база данных в СУБД Access. Обоснована и применена наиболее удобная в данном случае технология обмена данными между приложением и базой данных ActiveX Data Object.

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

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

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ


1Автоматизированные информационные технологии в экономике: учебник/ под ред. Титоренко Г.А. - М: ЮНИТИ, 2003 г.

2Антонюк. Информационные системы в управлении. М.: 2006.

Ахаян Р. и др., Эффективная работа с СУБД, Санкт-Петербург, «Питер», 2003 г.

4Бемер С., Фратер Г. Microsoft Access для пользователя. - Киев: Торгово-издательское бюро BHV, 1994, М:Фирма БИНОМ, 2005 г.

5Бекаревич Ю. Самоучитель Access 2003 - СПб.:БХВ-Петербург, 2003г.

6Бойко В.В., Савинков В.М. Проектирование информационной базы автоматизированной системы на основе СУБД. М.: Финансы и статистика.

7ГОСТ Р 50377-92. Безопасность оборудования информационной технологии, включая электрическое конторское оборудование.

8ГОСТ Р 50923-96. Дисплеи. Рабочее место оператора. Общие эргономические требования и требования к производственной среде. Методы измерения.

ГОСТ Р 50948-96. Средства отображения информации индивидуального пользования.

ГОСТ Р 51141-98 Делопроизводство и архивное дело. Термины и определения. - М., Госстандарт России, 1998.

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

12Замулин А.В., Системы программирования баз данных и знаний.- Новосибирск: Наука, 2006 г.

Кобевник В.Ф. Охрана труда. - К.: Высшая школа, 2003 г.

Когаловский М.Р. Технология баз данных на персональных ЭВМ.-М.: Финансы и статистика, 2005 г.

Куправа Т.Д. Создание и программирование баз данных средствами СУБД. - М.: Мир, 2004 г.

Ларичев О.И., Петровский А.В. «Системы поддержки принятия решений. Современное состояние и перспективы их развития», 2005.

Марков А.С., Лисовский К.Ю. Базы данных. Введение в теорию и методологию. - М.: Финансы и статистика, 2004 г.

Мищенин А.И., Теория экономических информационных систем, М.: Финансы и статистика , 2004 г.


Приложение А


Книга алфавитного учета личного состава

№ п/пФамилия, имя и отчество. Дата рождения. В каком подразделении проходит службуМесто и время призыва. Из какой части прибыл. Номер учетно-послужной или личной карточкиСемейное положение. Фамилия, имя и отчество жены (отца, матери или другого родственника). Адрес семьиДата и номер приказа о зачислении в списки части, в каком в/звании и должности В каком в/звании и должности выбыл из частиПо какой причине и куда выбыл. Дата и номер приказа об исключении из списков части123456Пример заполненияКапанов Аманбай ШаукеновичАршалинским УДО Акмолинской области, 25.04.2006 г.Холост. Отец - Капанов Шаукен Досмаганбетович, г.Аршалы, ул.Богенбай батыра, д. 7, кв. 17 26.04.2006 г., № 159 рядовой, стрелок Уволен по окончании срока службы. Аршалинский УДО Акмолинской области, 29.04.2007 г. № 177 рядовой, стрелок

Приложение Б


Книга алфавитного учета личного состава

№ п/пФамилия, имя и отчество Личный номерВоинское звание, чей приказ о присвоении, его номер и дата Серия и номер удостоверения личностиДата и номер приказа по части о зачислении в списки Занимаемая должность, чей приказ о назначении, его номер и датаЧисло, месяц и год рождения Место рожденияНациональностьОбразование: а) гражданское б) военное (военно-специальное), № ВУСС какого времени в ВС РК и каким ОДО (УДО) призван. Из какой части прибылСемейное положение, фамилия, имя, отчество и год рождения жены, имена и года рождения детей. Адрес семьиНа какую должность и куда выбыл, номер и дата приказа по личному составу. Дата приказа по части об исключении из списков12345678910

Приложение В

Книга штатно-должностного учета личного состава

№ п/пДолжность по штату№ ВУС по штатуВоинское званиеФамилия, имя и отчествоВремя и год призыва (дата окончания контракта)по штатуфактическое1234567Пример заполнения Управление Боевые подразделения 1-й мотострелковый батальон1командир батальона 0210023подполковникмайорСалимжанов Батырхан Сеилханович29.01.20101-я мотострелковая рота1командир роты0210023майор майорБатулин Артур Ратмирович16.11.20105стрелок100915рядовойрядовойИскаков Даурен Аманбаевич2-2006

Приложение Г


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


Главная кнопочная форма

unit Main;

interface, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, ScrollView, CustomGridViewControl, CustomGridView,, ToolWin, ComCtrls, Menus, ImgList, CustomCellSource,, cxGraphics, cxControls, cxLookAndFeels,, dxSkinsCore, dxorgchr, StdCtrls;= class(TForm): TStatusBar;: TMainMenu;: TMenuItem;: TToolBar;: TImageList;: TImageList;: TMenuItem;: TMenuItem;: TPanel;: TSplitter;: TPanel;: TSplitter;: TdxOrgChart;: TPanel;: TSplitter;: TPanel;: TPanel;: TPanel;: TLabel;: TLabel;: TGridView;: TGridView;: TTreeView;: TPanel;: TPanel;: TGridView;: TLabel;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TDataCellSource;: TPopupMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TDataCellSource;: TPopupMenu;: TMenuItem;: TPopupMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TGridView;: TDataCellSource;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TToolButton;: TPopupMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;FormCreate(Sender: TObject);FormShow(Sender: TObject);N3Click(Sender: TObject);dxOrgChart1Changing(Sender: TObject; Node: TdxOcNode;Allow: Boolean);TreeView1Change(Sender: TObject; Node: TTreeNode);N4Click(Sender: TObject);N6Click(Sender: TObject);N7Click(Sender: TObject);N8Click(Sender: TObject);N9Click(Sender: TObject);N11Click(Sender: TObject);N12Click(Sender: TObject);N16Click(Sender: TObject);N13Click(Sender: TObject);GridView1SelectCell(Sender: TObject; ACol, ARow: Integer);GridView3SelectCell(Sender: TObject; ACol, ARow: Integer);N14Click(Sender: TObject);N17Click(Sender: TObject);N18Click(Sender: TObject);N21Click(Sender: TObject);N23Click(Sender: TObject);N27Click(Sender: TObject);N28Click(Sender: TObject);N29Click(Sender: TObject);N30Click(Sender: TObject);N26Click(Sender: TObject);N31Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TfMain;, gcDataPath : string;, gnDoljn, gnSoldat, gnChel : integer;DM, Util, Zvan, Obl, Gorod, Ulic, UDO, NewSoldat, NewOficer, NewGorod,, Naznach, SmenaZvan, ComObj, DB;

{$R *.dfm}TfMain.FormCreate(Sender: TObject);

// путь, откуда запущен .exe:= ExtractFilePath(Application.ExeName);

// путь до базы:= gcExePath + 'MRK.mdb';;TfMain.FormShow(Sender: TObject);

begin

// соединение с базой

// сначала проверим наличие базы по найденному пути gcDataPath

DecimalSeparator := '.';FileExists(gcDataPath) then

// нашли, коннектимсяnot DataConnect(gcDataPath) then

begin('Ошибка подключения к базе данных. Обратитесь к разработчику.');.Panels.Items[0].Text := 'Соединение с БД не установлено. Ошибка соединения';;;.Panels.Items[0].Text := 'Соединение с БД установлено';

end else('Файл базы данных ['+gcDataPath+'] не найден.');.Enabled := false;.Panels.Items[0].Text := 'Соединение с БД не установлено. Файл не найден';;;TfMain.N3Click(Sender: TObject);;;TfMain.dxOrgChart1Changing(Sender: TObject; Node: TdxOcNode;Allow: Boolean);i : integer;I := 0 to dxOrgChart1.Count-1 do(dxOrgChart1.AbsoluteItems[i]=Node) then:= i;(gnNode);(gnNode);;;;TfMain.TreeView1Change(Sender: TObject; Node: TTreeNode);:= node.AbsoluteIndex;.Caption := 'Активная должность [' + Trim(Node.Text)+']';(gnDoljn);;TfMain.N4Click(Sender: TObject);.DataCellSource1.Active := True;.ShowModal;;TfMain.N6Click(Sender: TObject);.DataCellSource1.Active := True;.ShowModal;;TfMain.N7Click(Sender: TObject);();.ShowModal;;TfMain.N8Click(Sender: TObject);();.ShowModal;;TfMain.N9Click(Sender: TObject);();.ShowModal;;TfMain.N11Click(Sender: TObject);.qZvanSoldat.Close;.qZvanSoldat.SQL.Clear;.qZvanSoldat.SQL.Add('select * from s_zvan where numzvan=1');.qZvanSoldat.Open;.Edit1.Clear; fNewSoldat.Edit2.Clear; fNewSoldat.Edit3.Clear; fNewSoldat.Edit4.Clear; fNewSoldat.Edit8.Clear;.Edit9.Clear; fNewSoldat.Edit10.Clear; fNewSoldat.Edit11.Clear;.ComboBox1.ItemIndex:=-1; fNewSoldat.ComboBox2.ItemIndex:=-1; fNewSoldat.ComboBox3.ItemIndex:=-1;.ComboBox4.ItemIndex:=-1;.DBLookupComboBox4.KeyValue:=-1; fNewSoldat.DBLookupComboBox5.KeyValue:=-1;.ShowModal;;TfMain.N12Click(Sender: TObject);.qZvanOficer.Close;.qZvanOficer.SQL.Clear;.qZvanOficer.SQL.Add('select * from s_zvan where numzvan=2');.qZvanOficer.Open;.Edit1.Clear; fNewOficer.Edit2.Clear; fNewOficer.Edit3.Clear; fNewOficer.Edit4.Clear; fNewOficer.Edit5.Clear;.Edit6.Clear; fNewOficer.Edit7.Clear; fNewOficer.Edit8.Clear; fNewOficer.Edit9.Clear;.Edit11.Clear;.ComboBox1.ItemIndex := -1;fNewOficer.ComboBox2.ItemIndex := -1; fNewOficer.ComboBox4.ItemIndex := -1;.DBLookupComboBox1.KeyValue := -1; fNewOficer.DBLookupComboBox2.KeyValue := -1;.ShowModal;;TfMain.N16Click(Sender: TObject);

begin:= 2;

// сначала проверить, занимает ли должность

dt.qQuery1.Close;.qQuery1.SQL.Clear;.qQuery1.SQL.Add('select kodDoljn from D_Oficer where KodOficer='+IntToStr(gnSoldat));.qQuery1.Open;DT.qQuery1.FieldByName('koddoljn').AsInteger <> 666 then

begin('Выбранный офицер не может быть удален из списков части, так как занимает должность.'+#13+'Необходимо освободить от занимаемой должности.');

exit;;.Edit1.Clear;.DateTimePicker1.Date := Now;.ComboBox1.ItemIndex := -1;.ShowModal;;TfMain.N13Click(Sender: TObject);:= 1;.Edit1.Clear;.DateTimePicker1.Date := Now;.ComboBox1.ItemIndex := -1;.ShowModal;;TfMain.GridView1SelectCell(Sender: TObject; ACol, ARow: Integer);:= GridView1.Cell[0,GridView1.SelectedRow].AsInteger;;TfMain.GridView3SelectCell(Sender: TObject; ACol, ARow: Integer);:= GridView3.Cell[0,GridView3.SelectedRow].AsInteger;;TfMain.N14Click(Sender: TObject);

begin

// проверка на должность.qQuery1.Close;

dt.qQuery1.SQL.Clear;.qQuery1.SQL.Add('select kodDoljn from D_Oficer where KodOficer='+IntToStr(gnSoldat));.qQuery1.Open;DT.qQuery1.FieldByName('koddoljn').AsInteger <> 666 then

begin('Выбранный офицер занимает должность.');

exit;;.DateTimePicker1.Date := Now;.DBLookupComboBox2.KeyValue := -1;.ShowModal;;TfMain.N17Click(Sender: TObject);

begin

// сначала проверить, есть ли должность

dt.qQuery1.Close;.qQuery1.SQL.Clear;.qQuery1.SQL.Add('select kodDoljn from D_Oficer where KodOficer='+IntToStr(gnSoldat));.qQuery1.Open;DT.qQuery1.FieldByName('koddoljn').AsInteger = 666 then

begin('Выбранный офицер не занимает никакую должность.');

exit;;

// убрать должность.qQuery1.Close;.qQuery1.SQL.Clear;.qQuery1.SQL.Add('UPDATE D_oficer SET koddoljn=666 where KodOficer='+IntToStr(gnSoldat));

dt.qQuery1.ExecSQL;

// пометить в таблице

dt.qQuery1.Close;.qQuery1.SQL.Clear;.qQuery1.SQL.Add('UPDATE D_Doljn SET dat2='''+DateToStr(Now)+''' where KodOficer='+IntToStr(gnSoldat));

dt.qQuery1.ExecSQL;('Выбранный офицер освобожден от занимаемой должности.');

getViewOficer(gnNode);(gnDoljn);;TfMain.N18Click(Sender: TObject);.DBLookupComboBox2.KeyValue := -1;.ShowModal;;TfMain.N21Click(Sender: TObject);oExcel : Variant;: Integer;gnSoldat = 0 then exit;.qQuery1.Close;.qQuery1.sql.Clear;.qQuery1.SQL.Add('SELECT d_oficer.*, s_zvan.namzvan, s_doljn.namdoljn, s_udo.namudo');.qQuery1.SQL.Add('FROM s_udo INNER JOIN ((d_oficer INNER JOIN s_doljn ON d_oficer.koddoljn=s_doljn.koddoljn) INNER JOIN s_zvan ON d_oficer.kodzvan=s_zvan.kodzvan) ');.qQuery1.SQL.Add('ON s_udo.kodudo=d_oficer.kodudo ');.qQuery1.SQL.Add('where kodoficer='+IntToStr(gnSoldat));.qQuery1.Open;DT.qQuery1.RecordCount > 0 then

// копировать макетnot CopyFile(PChar(gcExePath + 'KartOficer.xls'), PChar(gcExePath+'excel\' + 'KartOficer.xls'), False) then

begin('Ошибка копирования макета отчета. Продолжение невозможно.');;;

oExcel := CreateOleObject('Excel.Application');.Application.Visible := False;.WorkBooks.Open(gcExePath+'excel\' + 'KartOficer.xls');.Range['c2'].Value := DT.qQuery1.fieldbyname('famil').AsString;.Range['c3'].Value := DT.qQuery1.fieldbyname('imja').AsString;.Range['c4'].Value := DT.qQuery1.fieldbyname('otch').AsString;.Range['c5'].Value := DT.qQuery1.fieldbyname('datroj').AsString;.Range['c6'].Value := DT.qQuery1.fieldbyname('nac').AsString;.Range['k2'].Value := DT.qQuery1.fieldbyname('nomer').AsString;.Range['a8'].Value := DT.qQuery1.fieldbyname('nom_ud').AsString;.Range['d11'].Value := DT.qQuery1.fieldbyname('obr1').AsString;.Range['d12'].Value := DT.qQuery1.fieldbyname('obr2').AsString;.Range['d13'].Value := DT.qQuery1.fieldbyname('nomvus').AsString;.Range['d15'].Value := DT.qQuery1.fieldbyname('rodstv').AsString;.Range['D20'].Value := DT.qQuery1.fieldbyname('namzvan').AsString;.Range['h20'].Value := DT.qQuery1.fieldbyname('dat_pr').AsString;.Range['j20'].Value := DT.qQuery1.fieldbyname('nom_pr').AsString;.Range['l20'].Value := DT.qQuery1.fieldbyname('kem_pr').AsString;.Range['n20'].Value := DT.qQuery1.fieldbyname('namudo').AsString;.Range['d24'].Value := DT.qQuery1.fieldbyname('dat_zap').AsString;.Range['f24'].Value := DT.qQuery1.fieldbyname('nom_zap').AsString;.Range['l24'].Value := DT.qQuery1.fieldbyname('namDoljn').AsString;.Application.ActiveWorkbook.Save;.Application.Visible := True;;;TfMain.N23Click(Sender: TObject);oExcel : Variant;gnSoldat = 0 then exit;.qQuery1.Close;.qQuery1.sql.Clear;.qQuery1.SQL.Add('SELECT d_soldat.*, s_zvan.namzvan, s_udo.namudo');.qQuery1.SQL.Add('FROM (D_Soldat INNER JOIN s_udo ON D_Soldat.kodudo = s_udo.kodudo) INNER JOIN s_zvan ON D_Soldat.kodzvan = s_zvan.kodzvan ');.qQuery1.SQL.Add('where kodsoldat='+IntToStr(gnSoldat));.qQuery1.Open;DT.qQuery1.RecordCount > 0 then

// копировать макетnot CopyFile(PChar(gcExePath + 'KartSoldat.xls'), PChar(gcExePath+'excel\' + 'KartSoldat.xls'), False) then

begin('Ошибка копирования макета отчета. Продолжение невозможно.');;;

oExcel := CreateOleObject('Excel.Application');.Application.Visible := False;.WorkBooks.Open(gcExePath+'excel\' + 'KartSoldat.xls');.Range['c2'].Value := DT.qQuery1.fieldbyname('famil').AsString;.Range['c3'].Value := DT.qQuery1.fieldbyname('imja').AsString;.Range['c4'].Value := DT.qQuery1.fieldbyname('otch').AsString;.Range['c5'].Value := DT.qQuery1.fieldbyname('datroj').AsString;.Range['c6'].Value := DT.qQuery1.fieldbyname('nac').AsString;.Range['c8'].Value := DT.qQuery1.fieldbyname('rodstv').AsString;.Range['d8'].Value := DT.qQuery1.fieldbyname('famil_r').AsString;.Range['f8'].Value := DT.qQuery1.fieldbyname('imja_r').AsString;.Range['h8'].Value := DT.qQuery1.fieldbyname('otch_r').AsString;.Range['d9'].Value := DT.qQuery1.fieldbyname('adres_r').AsString;.Range['c11'].Value := DT.qQuery1.fieldbyname('dat_pr').AsString;.Range['d11'].Value := DT.qQuery1.fieldbyname('namudo').AsString;.Range['c14'].Value := DT.qQuery1.fieldbyname('dat_zap').AsString;.Range['d14'].Value := DT.qQuery1.fieldbyname('nom_zap').AsString;.Range['f14'].Value := DT.qQuery1.fieldbyname('namzvan').AsString;.Range['h14'].Value := DT.qQuery1.fieldbyname('Doljn').AsString;.Application.ActiveWorkbook.Save;.Application.Visible := True;;;TfMain.N27Click(Sender: TObject);oExcel : Variant;,J : Integer;.qQuery1.Close;.qQuery1.sql.Clear;.qQuery1.SQL.Add('SELECT d_soldat.*, s_zvan.namzvan, s_udo.namudo');.qQuery1.SQL.Add('FROM (D_Soldat INNER JOIN s_udo ON D_Soldat.kodudo = s_udo.kodudo) INNER JOIN s_zvan ON D_Soldat.kodzvan = s_zvan.kodzvan ');.qQuery1.SQL.Add(' where isOpen = True order by Famil');.qQuery1.Open;DT.qQuery1.RecordCount > 0 then

// копировать макетnot CopyFile(PChar(gcExePath + 'RepSoldat.xls'), PChar(gcExePath+'excel\' + 'RepSoldat.xls'), False) then

begin('Ошибка копирования макета отчета. Продолжение невозможно.');;;

oExcel := CreateOleObject('Excel.Application');.Application.Visible := False;.WorkBooks.Open(gcExePath+'excel\' + 'RepSoldat.xls');.qQuery1.First;:= 5; J := 1;not dt.qQuery1.Eof do.Range['A'+IntToStr(I)].Value := J;.Range['B'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('famil').AsString+' '+DT.qQuery1.fieldbyname('imja').AsString+' '+DT.qQuery1.fieldbyname('otch').AsString+' '+DateToStr(DT.qQuery1.fieldbyname('datroj').AsDateTime);.Range['C'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('namudo').AsString + ' '+DateToStr(DT.qQuery1.fieldbyname('dat_pr').AsDateTime);.Range['D'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('sempol').AsString+'. '+DT.qQuery1.fieldbyname('rodstv').AsString+' - '+DT.qQuery1.fieldbyname('Famil_r').AsString+' '+DT.qQuery1.fieldbyname('imja_r').AsString+' '+DT.qQuery1.fieldbyname('otch_r').AsString+'. '+DT.qQuery1.fieldbyname('adres_r').AsString;.Range['E'+IntToStr(I)].Value := DateToStr(DT.qQuery1.fieldbyname('dat_zap').AsDateTime)+', №'+DT.qQuery1.fieldbyname('nom_zap').AsString+'. '+DT.qQuery1.fieldbyname('namzvan').AsString+', '+DT.qQuery1.fieldbyname('doljn').AsString;DT.qQuery1.fieldbyname('prich_del').AsString <> '' then.Range['F'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('prich_del').AsString+'. '+ DateToStr(DT.qQuery1.fieldbyname('dat_del').AsDateTime)+', №'+DT.qQuery1.fieldbyname('nom_del').AsString;:=I+1; J:=J+1;.qQuery1.Next;;.Application.ActiveWorkbook.Save;.Application.Visible := True;;;TfMain.N28Click(Sender: TObject);oExcel : Variant;,J : Integer;.qQuery1.Close;.qQuery1.sql.Clear;.qQuery1.SQL.Add('SELECT d_soldat.*, s_zvan.namzvan, s_udo.namudo');.qQuery1.SQL.Add('FROM (D_Soldat INNER JOIN s_udo ON D_Soldat.kodudo = s_udo.kodudo) INNER JOIN s_zvan ON D_Soldat.kodzvan = s_zvan.kodzvan ');.qQuery1.SQL.Add(' where isOpen = False order by Famil');.qQuery1.Open;DT.qQuery1.RecordCount > 0 then

// копировать макетnot CopyFile(PChar(gcExePath + 'RepSoldat.xls'), PChar(gcExePath+'excel\' + 'RepSoldat.xls'), False) then

begin('Ошибка копирования макета отчета. Продолжение невозможно.');;;

oExcel := CreateOleObject('Excel.Application');.Application.Visible := False;.WorkBooks.Open(gcExePath+'excel\' + 'RepSoldat.xls');.qQuery1.First;:= 5; J := 1;not dt.qQuery1.Eof do.Range['A'+IntToStr(I)].Value := J;.Range['B'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('famil').AsString+' '+DT.qQuery1.fieldbyname('imja').AsString+' '+DT.qQuery1.fieldbyname('otch').AsString+' '+DateToStr(DT.qQuery1.fieldbyname('datroj').AsDateTime);.Range['C'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('namudo').AsString + ' '+DateToStr(DT.qQuery1.fieldbyname('dat_pr').AsDateTime);.Range['D'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('sempol').AsString+'. '+DT.qQuery1.fieldbyname('rodstv').AsString+' - '+DT.qQuery1.fieldbyname('Famil_r').AsString+' '+DT.qQuery1.fieldbyname('imja_r').AsString+' '+DT.qQuery1.fieldbyname('otch_r').AsString+'. '+DT.qQuery1.fieldbyname('adres_r').AsString;.Range['E'+IntToStr(I)].Value := DateToStr(DT.qQuery1.fieldbyname('dat_zap').AsDateTime)+', №'+DT.qQuery1.fieldbyname('nom_zap').AsString+'. '+DT.qQuery1.fieldbyname('namzvan').AsString+', '+DT.qQuery1.fieldbyname('doljn').AsString;DT.qQuery1.fieldbyname('prich_del').AsString <> '' then.Range['F'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('prich_del').AsString+'. '+ DateToStr(DT.qQuery1.fieldbyname('dat_del').AsDateTime)+', №'+DT.qQuery1.fieldbyname('nom_del').AsString;:=I+1; J:=J+1;.qQuery1.Next;;.Application.ActiveWorkbook.Save;.Application.Visible := True;;;TfMain.N29Click(Sender: TObject);oExcel : Variant;,J : Integer;.qQuery1.Close;.qQuery1.sql.Clear;.qQuery1.SQL.Add('SELECT d_oficer.*, s_zvan.namzvan, s_doljn.namdoljn, s_udo.namudo');.qQuery1.SQL.Add('FROM ((d_oficer INNER JOIN s_doljn ON d_oficer.koddoljn=s_doljn.koddoljn) INNER JOIN s_udo ON d_oficer.kodudo=s_udo.kodudo) INNER JOIN s_zvan ON d_oficer.kodzvan=s_zvan.kodzvan ');.qQuery1.SQL.Add(' where isOpen = True order by Famil');.qQuery1.Open;DT.qQuery1.RecordCount > 0 then

// копировать макетnot CopyFile(PChar(gcExePath + 'RepOficer.xls'), PChar(gcExePath+'excel\' + 'RepOficer.xls'), False) then

begin('Ошибка копирования макета отчета. Продолжение невозможно.');;;

oExcel := CreateOleObject('Excel.Application');.Application.Visible := False;.WorkBooks.Open(gcExePath+'excel\' + 'RepOficer.xls');.qQuery1.First;:= 5; J := 1;not dt.qQuery1.Eof do.Range['A'+IntToStr(I)].Value := J;.Range['B'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('famil').AsString+' '+DT.qQuery1.fieldbyname('imja').AsString+' '+DT.qQuery1.fieldbyname('otch').AsString+'. T-'+DT.qQuery1.fieldbyname('nomer').AsString;.Range['C'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('namzvan').AsString + ', '+DT.qQuery1.fieldbyname('kem_pr').AsString+', №'+DT.qQuery1.fieldbyname('nom_pr').AsString+', '+DateToStr(DT.qQuery1.fieldbyname('dat_pr').AsDateTime) ;.Range['D'+IntToStr(I)].Value := DateToStr(DT.qQuery1.fieldbyname('dat_zap').AsDateTime)+', №'+DT.qQuery1.fieldbyname('nom_zap').AsString+'. '+DT.qQuery1.fieldbyname('namdoljn').AsString;.Range['E'+IntToStr(I)].Value := DateToStr(DT.qQuery1.fieldbyname('datroj').AsDateTime);.Range['F'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('nac').AsString;.Range['G'+IntToStr(I)].Value := 'a)'+DT.qQuery1.fieldbyname('obr1').AsString+'; б)'+DT.qQuery1.fieldbyname('obr2').AsString+'. ВУС-'+DT.qQuery1.fieldbyname('nomvus').AsString;.Range['H'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('namudo').AsString;.Range['I'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('sempol').AsString+'. '+DT.qQuery1.fieldbyname('rodstv').AsString;DT.qQuery1.fieldbyname('prich_del').AsString <> '' then.Range['J'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('prich_del').AsString+'. '+ DateToStr(DT.qQuery1.fieldbyname('dat_del').AsDateTime)+', №'+DT.qQuery1.fieldbyname('nom_del').AsString;:=I+1; J:=J+1;.qQuery1.Next;;.Application.ActiveWorkbook.Save;.Application.Visible := True;;;TfMain.N30Click(Sender: TObject);oExcel : Variant;,J : Integer;.qQuery1.Close;.qQuery1.sql.Clear;.qQuery1.SQL.Add('SELECT d_oficer.*, s_zvan.namzvan, s_doljn.namdoljn, s_udo.namudo');.qQuery1.SQL.Add('FROM ((d_oficer INNER JOIN s_doljn ON d_oficer.koddoljn=s_doljn.koddoljn) INNER JOIN s_udo ON d_oficer.kodudo=s_udo.kodudo) INNER JOIN s_zvan ON d_oficer.kodzvan=s_zvan.kodzvan ');.qQuery1.SQL.Add(' where isOpen = False order by Famil');.qQuery1.Open;DT.qQuery1.RecordCount > 0 then

// копировать макетnot CopyFile(PChar(gcExePath + 'RepOficer.xls'), PChar(gcExePath+'excel\' + 'RepOficer.xls'), False) then

begin('Ошибка копирования макета отчета. Продолжение невозможно.');;;

oExcel := CreateOleObject('Excel.Application');.Application.Visible := False;.WorkBooks.Open(gcExePath+'excel\' + 'RepOficer.xls');.qQuery1.First;:= 5; J := 1;not dt.qQuery1.Eof do.Range['A'+IntToStr(I)].Value := J;.Range['B'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('famil').AsString+' '+DT.qQuery1.fieldbyname('imja').AsString+' '+DT.qQuery1.fieldbyname('otch').AsString+'. T-'+DT.qQuery1.fieldbyname('nomer').AsString;.Range['C'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('namzvan').AsString + ', '+DT.qQuery1.fieldbyname('kem_pr').AsString+', №'+DT.qQuery1.fieldbyname('nom_pr').AsString+', '+DateToStr(DT.qQuery1.fieldbyname('dat_pr').AsDateTime) ;.Range['D'+IntToStr(I)].Value := DateToStr(DT.qQuery1.fieldbyname('dat_zap').AsDateTime)+', №'+DT.qQuery1.fieldbyname('nom_zap').AsString+'. '+DT.qQuery1.fieldbyname('namdoljn').AsString;.Range['E'+IntToStr(I)].Value := DateToStr(DT.qQuery1.fieldbyname('datroj').AsDateTime);.Range['F'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('nac').AsString;.Range['G'+IntToStr(I)].Value := 'a)'+DT.qQuery1.fieldbyname('obr1').AsString+'; б)'+DT.qQuery1.fieldbyname('obr2').AsString+'. ВУС-'+DT.qQuery1.fieldbyname('nomvus').AsString;.Range['H'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('namudo').AsString;.Range['I'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('sempol').AsString+'. '+DT.qQuery1.fieldbyname('rodstv').AsString;DT.qQuery1.fieldbyname('prich_del').AsString <> '' then.Range['J'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('prich_del').AsString+'. '+ DateToStr(DT.qQuery1.fieldbyname('dat_del').AsDateTime)+', №'+DT.qQuery1.fieldbyname('nom_del').AsString;:=I+1; J:=J+1;.qQuery1.Next;;.Application.ActiveWorkbook.Save;.Application.Visible := True;;;TfMain.N26Click(Sender: TObject);oExcel : Variant;,J, nKodNode, nRecSoldat, nRecOficer : Integer;: string;:= 6;

// копировать макетnot CopyFile(PChar(gcExePath + 'Uchet.xls'), PChar(gcExePath+'excel\' + 'Uchet.xls'), False) then

begin('Ошибка копирования макета отчета. Продолжение невозможно.');;;

oExcel := CreateOleObject('Excel.Application');.Application.Visible := False;.WorkBooks.Open(gcExePath+'excel\' + 'Uchet.xls');

// берем справочник узлов и перебираем.s_node.First;

while not dt.s_node.Eof do:= dt.s_node.fieldbyname('kodnode').AsInteger;:= dt.s_node.fieldbyname('namnode').AsString;

// теперь из офицеров и солдан выбрать которые в этом узле

DT.qQuery1.Close;.qQuery1.SQL.Clear;.qQuery1.SQL.Add('SELECT D_Soldat.*, s_zvan.namzvan ');.qQuery1.SQL.Add('FROM s_zvan INNER JOIN D_Soldat ON s_zvan.kodzvan = D_Soldat.kodzvan ');.qQuery1.SQL.Add('where D_Soldat.kodnode='+IntToStr(nKodNode)+' and D_Soldat.isOpen=True');.qQuery1.Open;:= dt.qQuery1.RecordCount;.qQuery2.Close;.qQuery2.SQL.Clear;.qQuery2.SQL.Add('SELECT D_Oficer.*, s_zvan.namzvan, s_doljn.namdoljn ');.qQuery2.SQL.Add('FROM (d_oficer INNER JOIN s_doljn ON d_oficer.koddoljn=s_doljn.koddoljn) INNER JOIN s_zvan ON d_oficer.kodzvan=s_zvan.kodzvan ');.qQuery2.SQL.Add('where D_Oficer.kodnode='+IntToStr(nKodNode)+' and D_Oficer.isOpen=True');.qQuery2.Open;:= dt.qQuery2.RecordCount;

// если в узле есть солдаты или офицеры

if (nRecSoldat>0) or (nRecOficer>0) then:= 1;

// название подразделения.Range['A'+IntToStr(I)].Value := cNamNode;:= i+1;nRecOficer>0 thennot dt.qQuery2.Eof do.Range['A'+IntToStr(I)].Value := J;.Range['B'+IntToStr(I)].Value := DT.qQuery2.fieldbyname('namdoljn').AsString;.Range['C'+IntToStr(I)].Value := DT.qQuery2.fieldbyname('nomvus').AsString;.Range['D'+IntToStr(I)].Value := DT.qQuery2.fieldbyname('namzvan').AsString;.Range['E'+IntToStr(I)].Value := DT.qQuery2.fieldbyname('famil').AsString+' '+DT.qQuery2.fieldbyname('imja').AsString+' '+DT.qQuery2.fieldbyname('otch').AsString;.Range['F'+IntToStr(I)].Value := DateToStr(DT.qQuery2.fieldbyname('dat_zap').AsDateTime);:= i+1; J:=J+1;.qQuery2.Next;;;nRecSoldat>0 thennot dt.qQuery1.Eof do.Range['A'+IntToStr(I)].Value := J;.Range['B'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('doljn').AsString;

//oExcel.Range['C'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('nomvus').AsString;.Range['D'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('namzvan').AsString;.Range['E'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('famil').AsString+' '+DT.qQuery1.fieldbyname('imja').AsString+' '+DT.qQuery1.fieldbyname('otch').AsString;.Range['F'+IntToStr(I)].Value := DateToStr(DT.qQuery1.fieldbyname('dat_pr').AsDateTime);:= i+1; J:=J+1;.qQuery1.Next;;;:= I + 2;;.s_node.Next;;.Application.ActiveWorkbook.Save;.Application.Visible := True;;TfMain.N31Click(Sender: TObject);oExcel : Variant;: Integer;gnSoldat = 0 then Exit;

// копировать макетnot CopyFile(PChar(gcExePath + 'Slujba.xls'), PChar(gcExePath+'excel\' + 'Slujba.xls'), False) then

begin('Ошибка копирования макета отчета. Продолжение невозможно.');;;

oExcel := CreateOleObject('Excel.Application');.Application.Visible := False;.WorkBooks.Open(gcExePath+'excel\' + 'Slujba.xls');.Range['B3'].Value := GridView1.Cell[1,GridView1.SelectedRow].AsString;.Range['B4'].Value := GridView1.Cell[2,GridView1.SelectedRow].AsString;.Range['B5'].Value := GridView1.Cell[3,GridView1.SelectedRow].AsString;.Range['B6'].Value := GridView1.Cell[4,GridView1.SelectedRow].AsString;

// найти должности занимаемые.qQuery2.Close;

DT.qQuery2.SQL.Clear;.qQuery2.SQL.Add('SELECT D_Doljn.Dat1, D_Doljn.Dat2, s_doljn.namdoljn ');.qQuery2.SQL.Add('FROM D_Doljn INNER JOIN s_doljn ON D_Doljn.koddoljn=s_doljn.koddoljn ');.qQuery2.SQL.Add('where D_Doljn.kodoficer='+IntToStr(gnSoldat)+' order by Dat1');.qQuery2.Open;dt.qQuery2.RecordCount > 0 then:=10;.qQuery2.First;not dt.qQuery2.Eof do.Range['A'+IntToStr(I)].Value := DT.qQuery2.fieldbyname('namdoljn').AsString;.Range['B'+IntToStr(I)].Value := DateToStr(DT.qQuery2.fieldbyname('dat1').AsDateTime);DT.qQuery2.fieldbyname('dat2').AsString <> '01.01.9999' then.Range['C'+IntToStr(I)].Value := DateToStr(DT.qQuery2.fieldbyname('dat2').AsDateTime);:=i+1;.qQuery2.Next;;;.Application.ActiveWorkbook.Save;.Application.Visible := True;;

end.

Утилита вспомогательных процедур и функций

unit Util;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Menus, ImgList, ComCtrls, ToolWin, Chart, DbChart, Series, StdCtrls, DBCtrls, ExtCtrls;

// коннект с БДDataConnect(_path : string) : Boolean;

// по коду города - код областиgetKodOblByKodGorod(_KodGorod : integer) : integer;

// список городовgetViewGorod();

// список улицgetViewUlic();

// список УДОgetViewUDO();

// список солдатgetViewSoldat(_Node : Integer);

// список офицеровgetViewOficer(_Node : Integer);

// должностьgetViewDoljn(_Doljn : integer);DM, Main, Gorod, Obl, Ulic, UDO, DB;DataConnect(_path : string) : Boolean;DT.Connector.Connected = False then

// подключение к БД.Connector.Provider := 'Microsoft.Jet.OLEDB.4.0';.Connector.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+_path+';Persist Security Info=False;';.Connector.Connected := True;.s_node.TableName := 's_node';.s_node.Active := True;.s_doljn.TableName := 's_doljn';.s_doljn.Active := True;.s_zvan.TableName := 's_zvan';.s_zvan.Active := True;.s_obl.TableName := 's_obl';.s_obl.Active := True;.s_gorod.TableName := 's_gorod';.s_gorod.Active := True;.s_ulic.TableName := 's_ulic';.s_ulic.Active := True;.s_udo.TableName := 's_udo';.s_udo.Active := True;.D_Soldat.TableName := 'D_Soldat';.D_Soldat.Active := True;.d_oficer.TableName := 'd_oficer';.d_oficer.Active := True;.d_doljn.TableName := 'd_doljn';.d_doljn.Active := True;:= True;:= False;;;;getKodOblByKodGorod(_KodGorod : integer) : integer;.qQuery1.Close;.qQuery1.SQL.Clear;.qQuery1.SQL.Add('SELECT KodObl from S_gorod where kodgorod='+IntToStr(_KodGorod));.qQuery1.Open;dt.qQuery1.RecordCount > 0 then Result := dt.qQuery1.fieldbyname('kodobl').AsInteger else Result :=0;;getViewGorod();.qMainGorod.Close;.qMainGorod.SQL.Clear;.qMainGorod.SQL.Add('SELECT s_gorod.kodgorod, s_gorod.namgorod, s_obl.namobl ');.qMainGorod.SQL.Add('FROM s_gorod INNER JOIN s_obl ON s_gorod.kodobl=s_obl.kodobl');.qMainGorod.Open;.DataCellSource1.Active := True;;getViewulic();.qMainUlic.Close;.qMainUlic.SQL.Clear;.qMainUlic.SQL.Add('SELECT s_ulic.kodulic, s_ulic.namulic, s_gorod.namgorod, s_obl.namobl ');.qMainUlic.SQL.Add('FROM (s_ulic INNER JOIN s_gorod ON s_ulic.kodgorod=s_gorod.kodgorod) INNER JOIN s_obl ON s_ulic.kodobl=s_obl.kodobl;');.qMainUlic.Open;.DataCellSource1.Active := True;;getViewUDO();.qSpravUdo.Close;.qSpravUdo.SQL.Clear;.qSpravUdo.SQL.Add('SELECT s_udo.kodudo, s_udo.namudo, s_obl.namobl ');.qSpravUdo.SQL.Add('FROM s_udo INNER JOIN s_obl ON s_udo.kodobl=s_obl.kodobl');.qSpravUdo.Open;.DataCellSource1.Active := True;

{SELECT D_Soldat.Famil, D_Soldat.Imja, D_Soldat.Otch, s_zvan.namzvan, D_Soldat.doljns_zvan INNER JOIN D_Soldat ON s_zvan.kodzvan = D_Soldat.kodzvan; };getViewSoldat(_Node : Integer);cStr : AnsiString;.qQuery1.Close;.qQuery1.SQL.Clear;.qQuery1.SQL.Add('SELECT cstr from s_node where kodnode='+IntToStr(_node));.qQuery1.Open;:=dt.qQuery1.fieldbyname('cstr').AsString;.qMainSoldat.Close;.qMainSoldat.SQL.Clear;.qMainSoldat.SQL.Add('SELECT D_Soldat.KodSoldat, D_Soldat.Famil, D_Soldat.Imja, D_Soldat.Otch, s_zvan.namzvan, D_Soldat.doljn ');.qMainSoldat.SQL.Add('FROM s_zvan INNER JOIN D_Soldat ON s_zvan.kodzvan = D_Soldat.kodzvan ');.qMainSoldat.SQL.Add('where D_Soldat.kodnode in ('+cStr+') and D_Soldat.isOpen=True');.qMainSoldat.Open;.DataCellSource1.Active := True;;getViewOficer(_Node : Integer);cStr : AnsiString;.qQuery1.Close;.qQuery1.SQL.Clear;.qQuery1.SQL.Add('SELECT cstr from s_node where kodnode='+IntToStr(_node));.qQuery1.Open;:=dt.qQuery1.fieldbyname('cstr').AsString;.qMainOficer.Close;.qMainOficer.SQL.Clear;.qMainOficer.SQL.Add('SELECT D_Oficer.KodOficer, D_Oficer.Famil, D_Oficer.Imja, D_Oficer.Otch, s_zvan.namzvan, s_doljn.namdoljn ');.qMainOficer.SQL.Add('FROM (d_oficer INNER JOIN s_doljn ON d_oficer.koddoljn=s_doljn.koddoljn) INNER JOIN s_zvan ON d_oficer.kodzvan=s_zvan.kodzvan ');.qMainOficer.SQL.Add('where D_Oficer.kodnode in ('+cStr+') and D_Oficer.isOpen=True');.qMainOficer.Open;.DataCellSource2.Active := True;;getViewDoljn(_Doljn : integer);.qMainDoljn.Close;.qMainDoljn.SQL.Clear;.qMainDoljn.SQL.Add('SELECT d_doljn.num, d_oficer.Famil, d_oficer.Imja, d_oficer.otch, s_zvan.namzvan, D_Doljn.dat1, D_Doljn.dat2 ');.qMainDoljn.SQL.Add('FROM ((D_Doljn INNER JOIN d_oficer ON D_Doljn.kodoficer=d_oficer.kodoficer) INNER JOIN s_doljn ON D_Doljn.koddoljn=s_doljn.koddoljn) INNER JOIN s_zvan ON d_oficer.kodzvan=s_zvan.kodzvan ');.qMainDoljn.SQL.Add('WHERE d_doljn.koddoljn='+IntToStr(_Doljn));.qMainDoljn.Open;.DataCellSource3.Active := True;

end;.

Форма назначения на должность

unit Naznach;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ComCtrls, Buttons, ExtCtrls, DBCtrls;= class(TForm): TPanel;: TLabel;: TLabel;: TBitBtn;: TDateTimePicker;: TDBLookupComboBox;BitBtn1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TfNaznach;DM, Main, Util;TfNaznach.BitBtn1Click(Sender: TObject);nKodDoljn : Integer;DBLookupComboBox2.KeyValue = -1 then exit;

nKodDoljn := DBLookupComboBox2.KeyValue;

// Проверить на занятость такой должности

dt.qQuery1.Close;.qQuery1.SQL.Clear;.qQuery1.SQL.Add('select kodDoljn from D_Oficer where isOpen=True and KodDoljn='+IntToStr(nKodDoljn));.qQuery1.Open;DT.qQuery1.RecordCount > 0 then

begin('Данная должность уже занята.');;;

// сначала обновить в d_oficer

dt.qQuery1.Close;.qQuery1.SQL.Clear;.qQuery1.SQL.Add('UPDATE D_oficer SET koddoljn='+IntToStr(nKodDoljn)+' where KodOficer='+IntToStr(gnSoldat));.qQuery1.ExecSQL;

// записать в d_doljn.d_doljn.Close;.d_doljn.Open;.d_doljn.Insert;.d_doljn.FieldByName('kodoficer').AsInteger := gnSoldat;.d_doljn.FieldByName('dat1').AsDateTime := DateTimePicker1.Date;.d_doljn.FieldByName('dat2').AsDateTime := StrToDate('01.01.9999');.d_doljn.FieldByName('koddoljn').AsInteger := nKodDoljn;.d_doljn.Post;.d_doljn.Close;.d_doljn.Open;(gnNode);(gnDoljn);;;.

Форма добавления офицера

unit NewOficer;

interface, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, DBCtrls, StdCtrls, ComCtrls, ExtCtrls, Buttons;= class(TForm): TPanel;: TBitBtn;: TGroupBox;: TBevel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TEdit;: TEdit;: TEdit;: TDateTimePicker;: TComboBox;: TComboBox;: TGroupBox;: TGroupBox;: TLabel;: TDateTimePicker;: TGroupBox;: TLabel;: TLabel;: TDateTimePicker;: TEdit;: TMemo;: TComboBox;: TLabel;: TLabel;: TEdit;: TBevel;: TLabel;: TEdit;: TLabel;: TEdit;: TBevel;: TLabel;: TEdit;: TLabel;: TEdit;: TDBLookupComboBox;: TLabel;: TLabel;: TEdit;: TLabel;: TDBLookupComboBox;Edit5KeyPress(Sender: TObject; var Key: Char);Edit8KeyPress(Sender: TObject; var Key: Char);Edit4KeyPress(Sender: TObject; var Key: Char);Edit11KeyPress(Sender: TObject; var Key: Char);Edit9KeyPress(Sender: TObject; var Key: Char);BitBtn1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TfNewOficer;DM, Util, Main;

{$R *.dfm}TfNewOficer.Edit5KeyPress(Sender: TObject; var Key: Char);not (key in ['1','2','3','4','5','6','7','8','9','0', #8])key:=#0;;TfNewOficer.Edit8KeyPress(Sender: TObject; var Key: Char);not (key in ['1','2','3','4','5','6','7','8','9','0', #8])key:=#0;;TfNewOficer.Edit4KeyPress(Sender: TObject; var Key: Char);not (key in ['1','2','3','4','5','6','7','8','9','0', #8])key:=#0;;TfNewOficer.Edit11KeyPress(Sender: TObject; var Key: Char);not (key in ['1','2','3','4','5','6','7','8','9','0', #8])key:=#0;;TfNewOficer.Edit9KeyPress(Sender: TObject; var Key: Char);not (key in ['1','2','3','4','5','6','7','8','9','0', #8])key:=#0;;TfNewOficer.BitBtn1Click(Sender: TObject);cFamil, cImja, cOtch, cNac, cSemPol, cRodstv, cKemPr, cObr1, cObr2 : String;, nKodUdo, nNomZap, nNomer, nNomPr, nNomUd, nNomVus : Integer;, dDatZap, dDatPr : TDate;(Edit1.Text='') or (Edit2.Text='') or (Edit3.Text='') or (Edit4.Text='') or (Edit5.Text='') or (Edit6.Text='') or (Edit7.Text='') or

(Edit8.Text='') or (Edit9.Text='') or (Edit8.Text='') or (Edit11.Text='') or

(ComboBox1.ItemIndex=-1) or (ComboBox2.ItemIndex=-1) or (ComboBox4.ItemIndex=-1) or

(DBLookupComboBox1.KeyValue=-1) or (DBLookupComboBox2.KeyValue=-1) then

begin('Не все поля заполнены.');

exit;;:= Trim(Edit1.Text);:= Trim(Edit2.Text);:= Trim(Edit3.Text);:= ComboBox2.Text;:= ComboBox4.Text;:= Memo1.Text;:= ComboBox1.Text;:= Trim(Edit6.Text);:= Trim(Edit7.Text);:= DBLookupComboBox1.KeyValue;:= DBLookupComboBox2.KeyValue;:= StrToInt(Edit4.Text);:= StrToInt(Edit11.Text);:= StrToInt(Edit5.Text);:= StrToInt(Edit9.Text);:= StrToInt(Edit8.Text);:= DateTimePicker1.Date;:= DateTimePicker3.Date;:= DateTimePicker2.Date;

// сохраняем.d_oficer.Close;.d_oficer.Open;.d_oficer.Insert;.d_oficer.FieldByName('famil').AsString := cFamil;.d_oficer.FieldByName('imja').AsString := cImja;.d_oficer.FieldByName('otch').AsString := cOtch;.d_oficer.FieldByName('datroj').AsDateTime := dDatRoj;.d_oficer.FieldByName('nac').AsString := cNac;.d_oficer.FieldByName('sempol').AsString := cSemPol;.d_oficer.FieldByName('rodstv').AsString := cRodstv;.d_oficer.FieldByName('nomer').AsInteger := nNomer;.d_oficer.FieldByName('nom_ud').AsInteger := nNomUd;.d_oficer.FieldByName('kem_pr').AsString := cKemPr;.d_oficer.FieldByName('nom_pr').AsInteger := nNomPr;.d_oficer.FieldByName('dat_pr').AsDateTime := dDatPr;.d_oficer.FieldByName('dat_zap').AsDateTime := dDatZap;.d_oficer.FieldByName('nom_zap').AsInteger := nNomZap;.d_oficer.FieldByName('kodzvan').AsInteger := nKodZvan;.d_oficer.FieldByName('obr1').AsString := cObr1;.d_oficer.FieldByName('obr2').AsString := cObr2;.d_oficer.FieldByName('nomvus').AsInteger := nNomVus;.d_oficer.FieldByName('kodudo').AsInteger := nKodUdo;.d_oficer.FieldByName('koddoljn').AsInteger := 666;.d_oficer.FieldByName('kodnode').AsInteger := gnNode;.d_oficer.FieldByName('isopen').AsBoolean := True;.d_oficer.Post;

except('Ошибка добавления в справочник солдатов. Обратитесь к разработчику.');;

end;.Clear; Edit2.Clear; Edit3.Clear; Edit4.Clear; Edit5.Clear;Edit6.Clear; Edit7.Clear; Edit8.Clear; Edit9.Clear; Edit11.Clear;.ItemIndex := -1;ComboBox2.ItemIndex := -1; ComboBox4.ItemIndex := -1;.KeyValue := -1; DBLookupComboBox2.KeyValue := -1;(gnNode);

end;.

Форма добавления солдата

unit NewSoldat;

interface, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, DBCtrls, StdCtrls, ComCtrls, ExtCtrls, Buttons;= class(TForm): TPanel;: TBitBtn;: TGroupBox;: TBevel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TEdit;: TEdit;: TEdit;: TDateTimePicker;: TComboBox;: TComboBox;: TGroupBox;: TLabel;: TEdit;: TLabel;: TEdit;: TLabel;: TEdit;: TLabel;: TComboBox;: TLabel;: TEdit;: TGroupBox;: TLabel;: TDateTimePicker;: TLabel;: TDBLookupComboBox;: TGroupBox;: TLabel;: TLabel;: TDateTimePicker;: TEdit;: TDBLookupComboBox;: TLabel;: TComboBox;: TLabel;BitBtn1Click(Sender: TObject);Edit11KeyPress(Sender: TObject; var Key: Char);

{ Private declarations }

{ Public declarations };: TfNewSoldat;DM, Main, Util;

{$R *.dfm}TfNewSoldat.BitBtn1Click(Sender: TObject);cFamil, cImja, cOtch, cNac, cSemPol, cRodstv, cFamil_r, cImja_r, cOtch_r, cAdres_r, cDoljn : String;, nKodUdo, nNomZap : Integer;, dDatZap, dDatPr : TDate;(Edit1.Text='') or (Edit2.Text='') or (Edit3.Text='') or (Edit4.Text='') or (Edit8.Text='') or (Edit9.Text='') or (Edit10.Text='') or (Edit11.Text='') or

(ComboBox1.ItemIndex=-1) or (ComboBox2.ItemIndex=-1) or (ComboBox3.ItemIndex=-1) or (ComboBox4.ItemIndex=-1) or

(DBLookupComboBox5.KeyValue=-1) or (DBLookupComboBox4.KeyValue=-1) then

begin('Не все поля заполнены.');

exit;;:= Trim(Edit1.Text);:= Trim(Edit2.Text);:= Trim(Edit3.Text);:= ComboBox2.Text;:= ComboBox4.Text;:= ComboBox1.Text;_r := Trim(Edit4.Text);_r := Trim(Edit8.Text);_r := Trim(Edit9.Text);_r := Trim(Edit10.Text);:= ComboBox3.Text;:= DBLookupComboBox5.KeyValue;:= DBLookupComboBox4.KeyValue;:= StrToInt(Edit11.Text);:= DateTimePicker1.Date;:= DateTimePicker2.Date;:= DateTimePicker3.Date;

// сохраняем.D_Soldat.Close;.D_Soldat.Open;.D_Soldat.Insert;.D_Soldat.FieldByName('famil').AsString := cFamil;.D_Soldat.FieldByName('imja').AsString := cImja;.D_Soldat.FieldByName('otch').AsString := cOtch;.D_Soldat.FieldByName('datroj').AsDateTime := dDatRoj;.D_Soldat.FieldByName('nac').AsString := cNac;.D_Soldat.FieldByName('sempol').AsString := cSemPol;.D_Soldat.FieldByName('rodstv').AsString := cRodstv;.D_Soldat.FieldByName('famil_r').AsString := cFamil_r;.D_Soldat.FieldByName('imja_r').AsString := cImja_r;.D_Soldat.FieldByName('otch_r').AsString := cOtch_r;.D_Soldat.FieldByName('adres_r').AsString := cAdres_r;.D_Soldat.FieldByName('kodudo').AsInteger := nKodUdo;.D_Soldat.FieldByName('dat_pr').AsDateTime := dDatPr;.D_Soldat.FieldByName('dat_zap').AsDateTime := dDatZap;.D_Soldat.FieldByName('nom_zap').AsInteger := nNomZap;.D_Soldat.FieldByName('kodzvan').AsInteger := nKodZvan;.D_Soldat.FieldByName('doljn').AsString := cDoljn;.D_Soldat.FieldByName('kodnode').AsInteger := gnNode;.D_Soldat.FieldByName('isopen').AsBoolean := True;.D_Soldat.Post;

except('Ошибка добавления в справочник солдатов. Обратитесь к разработчику.');;

end;.Clear; Edit2.Clear; Edit3.Clear; Edit4.Clear; Edit8.Clear;.Clear; Edit10.Clear; Edit11.Clear;.ItemIndex:=-1; ComboBox2.ItemIndex:=-1; ComboBox3.ItemIndex:=-1;(gnNode);;TfNewSoldat.Edit11KeyPress(Sender: TObject; var Key: Char);not (key in ['1','2','3','4','5','6','7','8','9','0', #8])key:=#0;;.


ВВЕДЕНИЕ Воинский учёт в Республике Казахстан является составной частью воинской обязанности <#"justify">- обеспечивать командиров и начальников всех

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ