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

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 22.09.2012
Размер файла 846,0 K

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

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

Размещено на http://www.allbest.ru/

Содержание

  • Введение
  • 1. Общий раздел
  • 1.1 Характеристика системы программирования
  • 2. Технологический раздел
  • 2.1 Постановка задачи
  • 2.1.1 Организационно-экономическая сущность задачи
  • 2.1.5 Математическая модель задачи
  • 2.1.6. Логическая модель задачи
  • 2.1.7 Требования к программе
  • 2.2 Логическая модель программы
  • 2.2.1 Структурная диаграмма
  • 2.2.2 Логическая структура программы
  • 2.3 Текст программы
  • 2.4 Тестовые данные программы
  • 2.5 Результаты работы программы
  • 3. Руководство по использованию программы
  • 3.1 Руководство системного программиста
  • 3.2 Руководство программиста
  • 3.3 Руководство оператора
  • Заключение
  • Список литературы

Введение

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

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

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

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

Для реализации выполнения данной курсовой работы выбран ПК типа IBM PC, ОС Windows XP, система программирования Delphi.

1. Общий раздел

1.1 Характеристика системы программирования

Для выполнения данной курсовой работы выбран язык программирования Delphi 7 Development Environment.

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

С помощью Delphi можно создавать мощные системы для работы с локальными и удаленными БД.

Delphi - это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi - строго типизированный объектно-ориентированный язык, в основе которого лежит Object Pascal. Любая программа в Delphi состоит из файла проекта (файл с расширением dpr) и одного или нескольких модулей (файлы с расширениями pas).

Структура проекта

Файл проекта представляет собой программу, написанную на языке Object Pascal и предназначенную для обработки компилятором. Структура проекта выглядит так:

program Projecti;

uses

Forms, Unit1 in 'Unit1. pas' {fmExample};

{$R *. RES}

begin

Application. Initialize;

Application. CreateForm (tfmExample, fmExample);

Application.run;

end.

Элементы программы

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

зарезервированные слова;

идентификаторы;

типы;

константы;

переменные;

метки;

подпрограммы;

комментарии.

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

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

приложение база delphi программирование

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

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

Описания преобразований языка Delphi представлены в таблице 1.

Таблица 1 - Преобразования типов

Функция

Описание

IntToStr (Выражение)

Преобразование числового выражения целого типа в строку

StrToInt (Строка: String)

Преобразование строки, изображающей целое или вещественное число, в число

Типы данных, используемые в приложении представлены в таблице 2

Таблица 2 - Типы данных

Название

Тип данных

Длина

Диапазон значений

Integer

целый

4

-2 147 483 648. +2 147 483 647

Boolean

логический

1

False/True

Char

символьный

1

Chr (0). Chr (255)

String

символьный

~231

Набор символов Char

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

В Object Pascal есть два сорта подпрограмм: процедуры и функции. Функция отличается от процедуры только тем, что её идентификатор можно наряду с константами и переменными использовать в выражениях, т.к. функция имеет выходной результат определенного типа.

Основные операторы

В языке Delphi 7 используются следующие основные операторы:

1) Инструкция If: инструкция if позволяет выбрать один из двух возможных вариантов развития программы.

Выбор осуществляется в зависимости от выполнения условия.

В общем виде инструкция if записывается так:

Вариант 1: If-Then-Else.

If Условие Then

begin

{Инструкции, которые выполняются, если условие истинно}

end

Else

begin

{Инструкции, которые выполняются, если условие ложно}

2) Инструкция For: инструкция for используется в том случае, если некоторую последовательность действий (инструкций программы) надо выполнить несколько раз, причем число повторений заранее известна:

Вариант 1 (с увеличением счётчика):

For Счётчик: =НачальноеЗначение To КонечноеЗначение Do

begin

{инструкции}

end;

3) Инструкция Repeat: инструкция repeat, как и инструкция while, используется в программе в том случае, если необходимо выполнить повторные вычисления (организовать цикл), но число повторений во время разработки программы неизвестно и может быть определено только во время работы программы, т.е. определяется ходом вычислений.

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

Repeat

{инструкции}

Until Условие;

Сначала выполняются инструкции цикла, которые расположены между Repeat и Until. Затем вычисляется значение выражения Условие, и если оно равно False, то инструкции цикла выполняются ещё раз. И так до тех пор, пока значение выражения Условие не станет равным True.

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

While Условие Do

begin

{инструкции}

end;

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

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

Имя: array [нижний_индекс. верхний_индекс] of тип,

Компоненты Delphi

Label - надпись. Для изменения стандартной надписи на собственную следует воспользоваться свойством Caption. Изменение размеров надписи меняется с помощью изменений значений свойств Width и Height. Изменить шрифт можно с помощью свойства Font.

Edit - текстовое поле. Служит для ввода в него различного текста. Изменение положения текстового поля меняется с помощью изменений значений свойств Width и Height.

MainMenu - главное меню формы. Основное свойство компонента - Items. Его заполнение производится с помощью Конструктора Меню, вызываемого двойным щелчком на компоненте MainMenu или нажатием кнопки с многоточием рядом со свойством Items в окне Инспектора Объектов. Свойство Caption обозначает надпись раздела. Свойство Shortcut определяет клавиши быстрого доступа к разделу меню - "горячие" клавиши, с помощью которых пользователь, даже не заходя в меню, может в любой момент вызвать выполнение процедуры, связанной с данным разделом. Свойства Enabled и Visible используются для того, чтобы изменять состав доступных пользователю разделов в зависимости от режима работы приложения.

Способы структурирования программ

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

Параметры используются:

для передачи данных в подпрограмму;

для получения из результата подпрограммы.

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

Функция - это подпрограмма, т.е. последовательность инструкций, имеющая имя.

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

Переменная: = Функция (Параметры);

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

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

Объявление функции: объявление функции в общем виде выглядит так:

function Имя (параметр1: тип1,., параметрК: типК): Тип; var

// здесь объявления локальных переменных begin

// здесь инструкции функции

Имя: = Выражение; end;

где:

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

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

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

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

Объявление процедуры: в общем виде объявление процедуры выглядит так:

procedure Имя (var параметр!: тип!;. var параметрК: типК); var

// здесь объявление локальных переменных

begin

// здесь инструкции процедуры

end;

где:

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

Фактическим параметром, в зависимости от описания формального параметра в объявлении процедуры, может быть переменная, выражение или константа соответствующего типа. Если в описании процедуры перед именем параметра стоит слово var, то при вызове процедуры на месте соответствующего параметра должна стоять переменная основной программы. Использование константы или выражения считается ошибкой, и компилятор в этом случае выведет сообщение: Types of actual and formal var parameters must be identical (ТИП фактического параметра должен соответствовать типу формального параметра).

Встроенные элементы.

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

type

TForm1 = class (TForm)

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: Tform1

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

Средства отладки программ.

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

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

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

2. Технологический раздел

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

2.1.1 Организационно-экономическая сущность задачи

2.1.1.1 Место решения задачи

Местом решения задачи является лаборатория испытаний средств защиты информации.

2.1.1.2 Цель решения задачи

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

2.1.1.3 Периодичность решения задачи

Данная задача решается по мере необходимости.

2.1.2 Описательная модель задачи

2.1.3 Описание входной информации

2.1.3.1 Описание входных документов

2.1.3.2 Описание входных данных

Входные данные представлены в таблице 3.

Наименование данных

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

Тип данных

Измерительный уровень акуст. (виброц) шума в контрольной точке Lш (i)

Lsh

Числовой

вещественный

Уровень измеренного сумарного акустического сигнала L (с+ш)

LSsh

Числовой

вещественный

Расчетный уровень акустического сигнала Lc2 (i)

Lc2

Числовой

вещественный

Полоса пропускания

Fpr

Числовой

вещественный

Величина напряжения в минимальной полосе пропускания

USHpr

Числовой

вещественный

Ширина октавной полосы

Fокт

Числовой

вещественный

Частота

F

Числовой

вещественный

Измеренный уровень напряженности

Eo

Числовой

вещественный

Напряженность электромагнитного поля

Esh

Числовой

вещественный

Напряжение смеси

USsh

Числовой

вещественный

Шум в линии

Ush

Числовой

вещественный

Напряжение специально созданного сигнала

U1

Числовой

вещественный

Напряжение специально созданного сигнала

U2

Числовой

вещественный

2.1.4 Описание выходной информации

2.1.4.1 Описание выходных документов

2.1.4.2 Описание выходных данных

Описание выходных данных представлено в таблице 4.

Таблица 4 - Выходные данные

Наименование данных

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

Тип данных

Расчетный уровень акустического сигнала Lc2 (i)

Lc2

Числовой

вещественный

Октавный уровни звукоизоляции Qi

Q

Числовой

вещественный

Величина напряжения шума

USHokt

Числовой

вещественный

Величена напряжения тест-сигнала

Uc

Числовой

вещественный

Расчетное значение отношения сигнал/шум

Del

Числовой

вещественный

Напряженность электро магнитного поля

Ec

Числовой

вещественный

Требуемый радиус

R

Числовой

вещественный

2.1.5 Математическая модель задачи

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

2.1.6. Логическая модель задачи

Размещено на http://www.allbest.ru/

2.1.7 Требования к программе

2.1.7.1 Функциональные требования к программе Функциональными требованиями к программе являются:

- Расчет выходных данных

Вывод решения виде отчета

Возможность ввода данных вручную

2.1.7.2 Требования к надёжности программы Требованиями к надежности программы являются:

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

- осуществление перехвата ошибок при выполнении программы.

2.1.7.3 Требование к информативности Требованиями к информативности являются:

- наличие справочной системы;

2.1.7.4 Требования к удобству эксплуатации Требованиями к удобству эксплуатации:

- наличие меню;

- интуитивно понятный интерфейс.

2.2 Логическая модель программы

2.2.1 Структурная диаграмма

Структурная диаграмма приложения представлена на рисунке 1

Размещено на http://www.allbest.ru/

Рис. 1

Главный модуль приложения содержит в своем составе следующие модули:

· Ввод исходных данных вручную, позволяет ввести вручную исходные данные;

· Решение, позволяет выполнить и просмотреть решение методики;

· Отчет, позволяет распечатать результат решения;

· О программе - позволяет получить информацию о программе;

· Выход, позволяет завершить работу с программой;

2.2.2 Логическая структура программы

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

Размещено на http://www.allbest.ru/

Рис 2

2.3 Текст программы

FMain

unit UnMain;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, XPMan, ComCtrls;

type

TFMain = class (TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N11: TMenuItem;

XPManifest1: TXPManifest;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

procedure N2Click (Sender: TObject);

procedure N11Click (Sender: TObject);

procedure N4Click (Sender: TObject);

procedure N5Click (Sender: TObject);

procedure N6Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FMain: TFMain;

implementation

uses UnRechUtech, UnElectPreob, UnTexSred, UnKonfInfo;

{$R *. dfm}

procedure TFMain. N2Click (Sender: TObject);

begin

FMain. close;

end;

procedure TFMain. N11Click (Sender: TObject);

begin

FRechUtech. showmodal;

end;

procedure TFMain. N4Click (Sender: TObject);

begin

FElecktPreob. showmodal;

end;

procedure TFMain. N5Click (Sender: TObject);

begin

FTexSred. showmodal;

end;

procedure TFMain. N6Click (Sender: TObject);

begin

FKonfInfo. ShowModal;

end;

end.

FTexSred

unit UnTexSred;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls, ExtCtrls,math, OleServer, WordXP;

type

TFTexSred = class (TForm)

sdTexSred: TStringGrid;

RadioGroup1: TRadioGroup;

btRas: TButton;

EdRasto: TEdit;

Label1: TLabel;

BtPrint: TButton;

WordApplication1: TWordApplication;

procedure FormCreate (Sender: TObject);

procedure btRasClick (Sender: TObject);

procedure BtPrintClick (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FTexSred: TFTexSred;

k: real;

f,Eo,EoMK,Ec,EcMK,Esh,EshMK,L,L2,Muy,R,R2,R3,R4,Rkon: array [0.4] of real;

Lpr,PodKor,PodKor2,PodKorkon,E1,Epr,Ld,Ed,E2: array [0.4] of real;

n, i,P1,P2,P3: integer;

R0: real;

implementation

{$R *. dfm}

procedure TFTexSred. FormCreate (Sender: TObject);

begin

BtPrint. Enabled: =false;

// f, МГц

sdTexSred. cells [0,0]: ='f, МГц';

sdTexSred. cells [0,1]: ='54';

sdTexSred. cells [0,2]: ='161,8';

sdTexSred. cells [0,3]: ='162';

sdTexSred. cells [0,4]: ='162,12';

sdTexSred. cells [0,5]: ='486';

// Eo

sdTexSred. cells [1,0]: ='Eo, дБ';

sdTexSred. cells [1,1]: ='52,42';

sdTexSred. cells [1,2]: ='21,15';

sdTexSred. cells [1,3]: ='29,64';

sdTexSred. cells [1,4]: ='21,54';

sdTexSred. cells [1,5]: ='19,55';

// E (ш)

sdTexSred. cells [2,0]: ='E (ш), дБ';

sdTexSred. cells [2,1]: ='44,06';

sdTexSred. cells [2,2]: ='15,9';

sdTexSred. cells [2,3]: ='15,91';

sdTexSred. cells [2,4]: ='16,36';

sdTexSred. cells [2,5]: ='13,89';

end;

procedure TFTexSred. btRasClick (Sender: TObject);

begin

try

if EdRasto. text<>'' then

begin

R0: =strtofloat (EdRasto. text);

n: =sdTexSred. RowCount-1;

if RadioGroup1. ItemIndex=0 then

begin

k: =0.6;

end

else

begin

k: =1.3;

end;

for i: =0 to n-1 do

f [i]: =strtofloat (sdTexSred. Cells [0, i+1]);

for i: =0 to n-1 do

Eo [i]: =strtofloat (sdTexSred. Cells [1, i+1]);

for i: =0 to n-1 do

Esh [i]: =strtofloat (sdTexSred. Cells [2, i+1]);

// преобразование в мкВ/м

for i: =0 to n-1 do

begin

EoMK [i]: =power (10,Eo [i] /20);

EshMK [i]: =power (10,Esh [i] /20);

end;

// ----------------------------

// расчет L1 и L2

for i: =0 to n-1 do

begin

L [i]: =150/ (3.14*f [i]);

L2 [i]: =1800/f [i];

end;

// ----------------

// Ec и его вывод на экран

try

for i: =0 to n-1 do

begin

Ec [i]: =sqrt (sqr (EoMK [i]) - sqr (EshMK [i]));

sdTexSred. ColCount: =4;

sdTexSred. Cells [3,0]: ='Ec';

sdTexSred. Cells [3,1+i]: =floattostr (roundto (ec [i],-2));

end;

except

ShowMessage ('Получилось отриательное Ес');

end;

// -----------------------------

// "мю"

for i: =0 to n-1 do

begin

Muy [i]: =300/f [i];

end;

// --------

// ближняя зона

for i: =0 to n-1 do

begin

PodKor [i]: = (k*EshMK [i]) /Ec [i];

R [i]: =R0/ (power (PodKor [i],1/3));

sdTexSred. ColCount: =5;

sdTexSred. Cells [4,0]: ='Ri (бз) ';

sdTexSred. Cells [4,1+i]: =floattostr (roundto (R [i],-2));

end;

// -------------------

// считаем расстояние для пром зоны

for i: =0 to n-1 do

begin

if R0<L [i] then

Lpr [i]: =L [i]

else

Lpr [i]: =R0;

end;

// ---------------------------------

// считаем Ei для пром зоны

for i: =0 to n-1 do

begin

if R0>=L [i] then

Epr [i]: =Ec [i]

else

begin

E1 [i]: = (power ( (R0/L [i]),3)) *Ec [i];

Epr [i]: =E1 [i];

end;

end;

// ---------------------------------

// пром зона

for i: =0 to n-1 do

begin

if L [i] <R [i] then

begin

R2 [i]: =Lpr [i] / (power ( ( (k*EshMK [i]) /Epr [i]),1/2));

sdTexSred. ColCount: =6;

sdTexSred. Cells [5,0]: ='Ri (пз) ';

sdTexSred. Cells [5,1+i]: =floattostr (roundto (R2 [i],-2));

end

else

begin

sdTexSred. ColCount: =6;

sdTexSred. Cells [5,1+i]: ='Считать не нужно';

end;

end;

// ---------------------------------

// Подсчет растояния для дальней зоны

for i: =0 to n-1 do

begin

if L2 [i] >R0 then

Ld [i]: =L2 [i]

else

Ld [i]: =R0;

end;

// ---------------------------------

// подсчет E2 для дальней зоны

for i: =0 to n-1 do

begin

if L [i] >R0 then

E2 [i]: =E1 [i] * (power (L [i] /L2 [i],2))

else

E2 [i]: =Ec [i] * (power (R0/L2 [i],2));

end;

// ----------------------------

// подсчет Ei для дальней зоны

for i: =0 to n-1 do

begin

if R0<L2 [i] then

Ed [i]: =E2 [i]

else

Ed [i]: =Ec [i];

end;

// ---------------------------

// дальняя зона

for i: =0 to n-1 do

begin

if R2 [i] <L2 [i] then

begin

sdTexSred. ColCount: =7;

sdTexSred. Width: =470;

sdTexSred. Cells [6,0]: ='R (дз) ';

sdTexSred. Cells [6,1+i]: ='Считать не нужно';

end

else

begin

R3 [i]: =Ld [i] / ( ( (k*EshMK [i]) /Ed [i]));

sdTexSred. ColCount: =7;

sdTexSred. Width: =470;

sdTexSred. Cells [6,0]: ='Ri (дз) ';

sdTexSred. Cells [6,1+i]: =floattostr (roundto (R3 [i],-2));

end;

end;

// ------------

BtPrint. Enabled: =True;

end

else

begin

ShowMessage ('Введите расстояние');

end;

except

ShowMessage ('Введите верные данные');

end;

end;

procedure TFTexSred. BtPrintClick (Sender: TObject);

begin

wordapplication1. Connect;

wordapplication1. visible: =true;

wordapplication1. documents. add (emptyparam,emptyparam,emptyparam,emptyparam);

wordapplication1. Selection. TypeText ('Временная методика оценки защищенности ');

wordapplication1. Selection. TypeText ('основных технических средств и систем, ');

wordapplication1. Selection. TypeText ('предназначенных для обработки, хранения и');

wordapplication1. Selection. TypeText (' (или) передачи по линиям связи ');

wordapplication1. Selection. TypeText (' конфиденциальной информации. ');

wordapplication1. Selection. ParagraphFormat. Alignment: =wdAlignParagraphCenter;

wordapplication1. selection. Tables. Add (wordapplication1. selection. Range,6,7,EmptyParam,EmptyParam);

wordapplication1. Selection. Tables. Item (1). Borders. InsideLineStyle: =wdBlack;

wordapplication1. Selection. Tables. Item (1). Borders. OutsideLineStyle: =wdBlack;

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,1). Range. Text: ='fi, МГц';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,2). Range. Text: ='Eo, дБ';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,3). Range. Text: ='Eш, дБ';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,4). Range. Text: ='Ec, мкВ';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,5). Range. Text: ='Ri (бз) ';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,6). Range. Text: ='Ri (пр. з) ';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,7). Range. Text: ='Ri (дз) ';

for i: =0 to n-1 do

begin

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,1). Range. Text: =FloatToStr (f [i]);

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,2). Range. Text: =FloatToStr (Eo [i]);

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,3). Range. Text: =FloatToStr (Esh [i]);

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,4). Range. Text: =FloatToStr (roundto (Ec [i],-2));

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,5). Range. Text: =FloatToStr (roundto (R [i],-2));

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,6). Range. Text: =FloatToStr (roundto (R2 [i],-2));

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,7). Range. Text: =FloatToStr (roundto (R3 [i],-2));

end;

end;

end.

FElecktPreob

unit UnElectPreob;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls, ExtCtrls, OleServer, WordXP,math;

type

TFElecktPreob = class (TForm)

sgElekt: TStringGrid;

BtRasch: TButton;

RadioGroup1: TRadioGroup;

WordApplication1: TWordApplication;

btPrint: TButton;

procedure FormCreate (Sender: TObject);

procedure BtRaschClick (Sender: TObject);

procedure btPrintClick (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FElecktPreob: TFElecktPreob;

W: real;

Uzp,USsh,USHokt,Uc,Del: array [0.4] of real;

Fpr,Fokt,Buf: array [0.4] of integer;

vol: array [0.50] of string;

n, i: integer;

implementation

{$R *. dfm}

procedure TFElecktPreob. FormCreate (Sender: TObject);

begin

BtPrint. Enabled: =false;

// частоты

sgElekt. cells [0,0]: ='Частоты';

sgElekt. cells [0,1]: ='250';

sgElekt. cells [0,2]: ='500';

sgElekt. cells [0,3]: ='1000';

sgElekt. cells [0,4]: ='2000';

sgElekt. cells [0,5]: ='4000';

// U (ш. пр)

sgElekt. cells [1,0]: ='U (ш. пр) ';

sgElekt. cells [1,1]: ='0,1';

sgElekt. cells [1,2]: ='0,1';

sgElekt. cells [1,3]: ='0,3';

sgElekt. cells [1,4]: ='0,2';

sgElekt. cells [1,5]: ='0,5';

// U (с+ш)

sgElekt. cells [2,0]: ='U (с+ш) ';

sgElekt. cells [2,1]: ='0,6';

sgElekt. cells [2,2]: ='0,7';

sgElekt. cells [2,3]: ='0,6';

sgElekt. cells [2,4]: ='0,4';

sgElekt. cells [2,5]: ='0,7';

// F (окт)

sgElekt. cells [3,0]: ='F (окт) ';

sgElekt. cells [3,1]: ='175';

sgElekt. cells [3,2]: ='350';

sgElekt. cells [3,3]: ='700';

sgElekt. cells [3,4]: ='1400';

sgElekt. cells [3,5]: ='2800';

end;

procedure TFElecktPreob. BtRaschClick (Sender: TObject);

begin

try

n: =sgElekt. RowCount-1;

if RadioGroup1. ItemIndex<>-1 then

begin

if RadioGroup1. ItemIndex=0 then

W: =0.3

else

W: =0.5;

for i: =0 to n-1 do

Fpr [i]: =strtoint (sgElekt. Cells [0, i+1]);

for i: =0 to n-1 do

Uzp [i]: =strtofloat (sgElekt. Cells [1, i+1]);

for i: =0 to n-1 do

USsh [i]: =strtofloat (sgElekt. Cells [2, i+1]);

for i: =0 to n-1 do

Fokt [i]: =strtoint (sgElekt. Cells [3, i+1]);

// расчет

for i: =0 to n-1 do

begin

if Fpr [i] <=Fokt [i] then

Buf [i]: =Fpr [i]

else

Buf [i]: =Fokt [i];

end;

for i: =0 to n-1 do

begin

USHokt [i]: =Uzp [i] * (sqr (Fokt [i] /Fpr [i]));

Uc [i]: = (sqr (sqrt (USsh [i])) - (sqrt (Uzp [i])));

Del [i]: =Uc [i] /USHokt [i];

sgElekt. colcount: =8;

sgElekt. Width: =535;

sgElekt. cells [4,0]: ='Uш. окт';

sgElekt. cells [5,0]: ='Uc';

sgElekt. cells [6,0]: ='Delta';

sgElekt. cells [7,0]: ='Сравнение';

sgElekt. cells [4,1+i]: =floattostr (roundto (USHokt [i],-2));

sgElekt. cells [5,1+i]: =floattostr (roundto (Uc [i],-2));

sgElekt. cells [6,1+i]: =floattostr (roundto (Del [i],-2));

end;

for i: =0 to n-1 do

begin

if Del [i] <=W then

sgElekt. cells [7,1+i]: =floattostr (roundto (Del [i],-2)) +'<='+floattostr (W)

else

sgElekt. cells [7,1+i]: =floattostr (roundto (Del [i],-2)) +'>'+floattostr (W);

end;

BtPrint. Enabled: =true

end

else

ShowMessage ('Выберите условие');

except

ShowMessage ('Введите верные данные');

end;

end;

procedure TFElecktPreob. btPrintClick (Sender: TObject);

begin

n: =sgElekt. RowCount-1;

wordapplication1. Connect;

wordapplication1. visible: =true;

wordapplication1. documents. add (emptyparam,emptyparam,emptyparam,emptyparam);

wordapplication1. Selection. TypeText ('Временная методика по каналам ');

wordapplication1. Selection. TypeText ('электроакустических преобразований и ');

wordapplication1. Selection. TypeText ('вспомогательных технических средствах ');

wordapplication1. Selection. TypeText ('и системах. ');

wordapplication1. Selection. ParagraphFormat. Alignment: =wdAlignParagraphCenter;

wordapplication1. selection. Tables. Add (wordapplication1. selection. Range,6,5,EmptyParam,EmptyParam);

wordapplication1. Selection. Tables. Item (1). Borders. InsideLineStyle: =wdBlack;

wordapplication1. Selection. Tables. Item (1). Borders. OutsideLineStyle: =wdBlack;

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,1). Range. Text: ='Частоты';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,2). Range. Text: ='Uш. окт';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,3). Range. Text: ='Uc';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,4). Range. Text: ='Delta';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,5). Range. Text: ='Сравнение';

for i: =0 to n-1 do

begin

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,1). Range. Text: =inttostr (Fpr [i]);

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,2). Range. Text: =floattostr (USHokt [i]);

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,3). Range. Text: =floattostr (roundto (Uc [i],-2));

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,4). Range. Text: =floattostr (roundto (Del [i],-2));

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,5). Range. Text: =sgElekt. cells [7,1+i];

end;

end;

end.

FTexSred

unit UnTexSred;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls, ExtCtrls,math, OleServer, WordXP;

type

TFTexSred = class (TForm)

sdTexSred: TStringGrid;

RadioGroup1: TRadioGroup;

btRas: TButton;

EdRasto: TEdit;

Label1: TLabel;

BtPrint: TButton;

WordApplication1: TWordApplication;

procedure FormCreate (Sender: TObject);

procedure btRasClick (Sender: TObject);

procedure BtPrintClick (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FTexSred: TFTexSred;

k: real;

f,Eo,EoMK,Ec,EcMK,Esh,EshMK,L,L2,Muy,R,R2,R3,R4,Rkon: array [0.4] of real;

Lpr,PodKor,PodKor2,PodKorkon,E1,Epr,Ld,Ed,E2: array [0.4] of real;

n, i,P1,P2,P3: integer;

R0: real;

implementation

{$R *. dfm}

procedure TFTexSred. FormCreate (Sender: TObject);

begin

BtPrint. Enabled: =false;

// f, МГц

sdTexSred. cells [0,0]: ='f, МГц';

sdTexSred. cells [0,1]: ='54';

sdTexSred. cells [0,2]: ='161,8';

sdTexSred. cells [0,3]: ='162';

sdTexSred. cells [0,4]: ='162,12';

sdTexSred. cells [0,5]: ='486';

// Eo

sdTexSred. cells [1,0]: ='Eo, дБ';

sdTexSred. cells [1,1]: ='52,42';

sdTexSred. cells [1,2]: ='21,15';

sdTexSred. cells [1,3]: ='29,64';

sdTexSred. cells [1,4]: ='21,54';

sdTexSred. cells [1,5]: ='19,55';

// E (ш)

sdTexSred. cells [2,0]: ='E (ш), дБ';

sdTexSred. cells [2,1]: ='44,06';

sdTexSred. cells [2,2]: ='15,9';

sdTexSred. cells [2,3]: ='15,91';

sdTexSred. cells [2,4]: ='16,36';

sdTexSred. cells [2,5]: ='13,89';

end;

procedure TFTexSred. btRasClick (Sender: TObject);

begin

try

if EdRasto. text<>'' then

begin

R0: =strtofloat (EdRasto. text);

n: =sdTexSred. RowCount-1;

if RadioGroup1. ItemIndex=0 then

begin

k: =0.6;

end

else

begin

k: =1.3;

end;

for i: =0 to n-1 do

f [i]: =strtofloat (sdTexSred. Cells [0, i+1]);

for i: =0 to n-1 do

Eo [i]: =strtofloat (sdTexSred. Cells [1, i+1]);

for i: =0 to n-1 do

Esh [i]: =strtofloat (sdTexSred. Cells [2, i+1]);

// преобразование в мкВ/м

for i: =0 to n-1 do

begin

EoMK [i]: =power (10,Eo [i] /20);

EshMK [i]: =power (10,Esh [i] /20);

end;

// ----------------------------

// расчет L1 и L2

for i: =0 to n-1 do

begin

L [i]: =150/ (3.14*f [i]);

L2 [i]: =1800/f [i];

end;

// ----------------

// Ec и его вывод на экран

try

for i: =0 to n-1 do

begin

Ec [i]: =sqrt (sqr (EoMK [i]) - sqr (EshMK [i]));

sdTexSred. ColCount: =4;

sdTexSred. Cells [3,0]: ='Ec';

sdTexSred. Cells [3,1+i]: =floattostr (roundto (ec [i],-2));

end;

except

ShowMessage ('Получилось отриательное Ес');

end;

// -----------------------------

// "мю"

for i: =0 to n-1 do

begin

Muy [i]: =300/f [i];

end;

// --------

// ближняя зона

for i: =0 to n-1 do

begin

PodKor [i]: = (k*EshMK [i]) /Ec [i];

R [i]: =R0/ (power (PodKor [i],1/3));

sdTexSred. ColCount: =5;

sdTexSred. Cells [4,0]: ='Ri (бз) ';

sdTexSred. Cells [4,1+i]: =floattostr (roundto (R [i],-2));

end;

// -------------------

// считаем расстояние для пром зоны

for i: =0 to n-1 do

begin

if R0<L [i] then

Lpr [i]: =L [i]

else

Lpr [i]: =R0;

end;

// ---------------------------------

// считаем Ei для пром зоны

for i: =0 to n-1 do

begin

if R0>=L [i] then

Epr [i]: =Ec [i]

else

begin

E1 [i]: = (power ( (R0/L [i]),3)) *Ec [i];

Epr [i]: =E1 [i];

end;

end;

// ---------------------------------

// пром зона

for i: =0 to n-1 do

begin

if L [i] <R [i] then

begin

R2 [i]: =Lpr [i] / (power ( ( (k*EshMK [i]) /Epr [i]),1/2));

sdTexSred. ColCount: =6;

sdTexSred. Cells [5,0]: ='Ri (пз) ';

sdTexSred. Cells [5,1+i]: =floattostr (roundto (R2 [i],-2));

end

else

begin

sdTexSred. ColCount: =6;

sdTexSred. Cells [5,1+i]: ='Считать не нужно';

end;

end;

// ---------------------------------

// Подсчет растояния для дальней зоны

for i: =0 to n-1 do

begin

if L2 [i] >R0 then

Ld [i]: =L2 [i]

else

Ld [i]: =R0;

end;

// ---------------------------------

// подсчет E2 для дальней зоны

for i: =0 to n-1 do

begin

if L [i] >R0 then

E2 [i]: =E1 [i] * (power (L [i] /L2 [i],2))

else

E2 [i]: =Ec [i] * (power (R0/L2 [i],2));

end;

// ----------------------------

// подсчет Ei для дальней зоны

for i: =0 to n-1 do

begin

if R0<L2 [i] then

Ed [i]: =E2 [i]

else

Ed [i]: =Ec [i];

end;

// ---------------------------

// дальняя зона

for i: =0 to n-1 do

begin

if R2 [i] <L2 [i] then

begin

sdTexSred. ColCount: =7;

sdTexSred. Width: =470;

sdTexSred. Cells [6,0]: ='R (дз) ';

sdTexSred. Cells [6,1+i]: ='Считать не нужно';

end

else

begin

R3 [i]: =Ld [i] / ( ( (k*EshMK [i]) /Ed [i]));

sdTexSred. ColCount: =7;

sdTexSred. Width: =470;

sdTexSred. Cells [6,0]: ='Ri (дз) ';

sdTexSred. Cells [6,1+i]: =floattostr (roundto (R3 [i],-2));

end;

end;

// ------------

BtPrint. Enabled: =True;

end

else

begin

ShowMessage ('Введите расстояние');

end;

except

ShowMessage ('Введите верные данные');

end;

end;

procedure TFTexSred. BtPrintClick (Sender: TObject);

begin

wordapplication1. Connect;

wordapplication1. visible: =true;

wordapplication1. documents. add (emptyparam,emptyparam,emptyparam,emptyparam);

wordapplication1. Selection. TypeText ('Временная методика оценки защищенности ');

wordapplication1. Selection. TypeText ('основных технических средств и систем, ');

wordapplication1. Selection. TypeText ('предназначенных для обработки, хранения и');

wordapplication1. Selection. TypeText (' (или) передачи по линиям связи ');

wordapplication1. Selection. TypeText (' конфиденциальной информации. ');

wordapplication1. Selection. ParagraphFormat. Alignment: =wdAlignParagraphCenter;

wordapplication1. selection. Tables. Add (wordapplication1. selection. Range,6,7,EmptyParam,EmptyParam);

wordapplication1. Selection. Tables. Item (1). Borders. InsideLineStyle: =wdBlack;

wordapplication1. Selection. Tables. Item (1). Borders. OutsideLineStyle: =wdBlack;

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,1). Range. Text: ='fi, МГц';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,2). Range. Text: ='Eo, дБ';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,3). Range. Text: ='Eш, дБ';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,4). Range. Text: ='Ec, мкВ';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,5). Range. Text: ='Ri (бз) ';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,6). Range. Text: ='Ri (пр. з) ';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,7). Range. Text: ='Ri (дз) ';

for i: =0 to n-1 do

begin

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,1). Range. Text: =FloatToStr (f [i]);

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,2). Range. Text: =FloatToStr (Eo [i]);

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,3). Range. Text: =FloatToStr (Esh [i]);

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,4). Range. Text: =FloatToStr (roundto (Ec [i],-2));

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,5). Range. Text: =FloatToStr (roundto (R [i],-2));

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,6). Range. Text: =FloatToStr (roundto (R2 [i],-2));

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,7). Range. Text: =FloatToStr (roundto (R3 [i],-2));

end;

end;

end.

FKonfInfo

unit UnKonfInfo;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, Grids,math, OleServer,WordXP;

type

TFKonfInfo = class (TForm)

sgKonfInfo: TStringGrid;

btRasch: TButton;

RGVibor: TRadioGroup;

EdDlin: TEdit;

Label1: TLabel;

WordApplication1: TWordApplication;

BtPrint: TButton;

procedure FormCreate (Sender: TObject);

procedure btRaschClick (Sender: TObject);

procedure BtPrintClick (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FKonfInfo: TFKonfInfo;

USsh,Ush,U1,U2,Uc,P,Kp,R: array [0.4] of real;

Buf: array [0.4] of real;

i,n: integer;

l: real;

implementation

{$R *. dfm}

procedure TFKonfInfo. FormCreate (Sender: TObject);

begin

BtPrint. Enabled: =false;

// f, МГц

sgKonfInfo. cells [0,0]: ='f, МГц';

sgKonfInfo. cells [0,1]: ='30';

sgKonfInfo. cells [0,2]: ='50';

sgKonfInfo. cells [0,3]: ='70';

sgKonfInfo. cells [0,4]: ='90';

sgKonfInfo. cells [0,5]: ='110';

// U (c+ш)

sgKonfInfo. cells [1,0]: ='U (c+ш) ';

sgKonfInfo. cells [1,1]: ='60';

sgKonfInfo. cells [1,2]: ='40';

sgKonfInfo. cells [1,3]: ='50';

sgKonfInfo. cells [1,4]: ='60';

sgKonfInfo. cells [1,5]: ='80';

// U (ш)

sgKonfInfo. cells [2,0]: ='U (ш) ';

sgKonfInfo. cells [2,1]: ='10';

sgKonfInfo. cells [2,2]: ='20';

sgKonfInfo. cells [2,3]: ='10';

sgKonfInfo. cells [2,4]: ='20';

sgKonfInfo. cells [2,5]: ='10';

// U1 (изм)

sgKonfInfo. cells [3,0]: ='U1 (изм) ';

sgKonfInfo. cells [3,1]: ='75';

sgKonfInfo. cells [3,2]: ='75';

sgKonfInfo. cells [3,3]: ='80';

sgKonfInfo. cells [3,4]: ='70';

sgKonfInfo. cells [3,5]: ='68';

// U2 (изм)

sgKonfInfo. cells [4,0]: ='U2 (изм) ';

sgKonfInfo. cells [4,1]: ='45';

sgKonfInfo. cells [4,2]: ='42';

sgKonfInfo. cells [4,3]: ='49';

sgKonfInfo. cells [4,4]: ='50';

sgKonfInfo. cells [4,5]: ='44';

end;

procedure TFKonfInfo. btRaschClick (Sender: TObject);

begin

try

if RGVibor. ItemIndex<>-1 then

begin

if EdDlin. text<>'' then

begin

n: =sgKonfInfo. RowCount-1;

for i: =0 to n-1 do

USsh [i]: =strtofloat (sgKonfInfo. Cells [1, i+1]);

for i: =0 to n-1 do

Ush [i]: =strtofloat (sgKonfInfo. Cells [2, i+1]);

for i: =0 to n-1 do

U1 [i]: =strtofloat (sgKonfInfo. Cells [3, i+1]);

for i: =0 to n-1 do

U2 [i]: =strtofloat (sgKonfInfo. Cells [4, i+1]);

try

for i: =0 to n-1 do

begin

Buf [i]: =sqrt ( (power (10,USsh [i] /10)) - (power (10,Ush [i] /10)));

Uc [i]: =20* ( (ln (Buf [i])) /ln (10));

end;

except

ShowMessage ('Не возможно подсчитать Uc');

end;

for i: =0 to n-1 do

P [i]: =Uc [i] - Ush [i];

for i: =0 to n-1 do

begin

l: =strtofloat (EdDlin. text);

Kp [i]: = (20* (ln (U1 [i] /U2 [i])) /ln (10)) /l;

end;

if RGVibor. ItemIndex=0 then

begin

for i: =0 to n-1 do

R [i]: = (P [i] +10) /Kp [i];

end

else

begin

for i: =0 to n-1 do

R [i]: = (P [i]) /Kp [i];

end;

for i: =0 to n-1 do

begin

sgKonfInfo. ColCount: =9;

sgKonfInfo. Width: =600;

sgKonfInfo. Cells [5,0]: ='Uc';

sgKonfInfo. Cells [6,0]: ='П';

sgKonfInfo. Cells [7,0]: ='Кп';

sgKonfInfo. Cells [8,0]: ='R';

sgKonfInfo. Cells [5, i+1]: =floattostr (roundto (Uc [i],-2));

sgKonfInfo. Cells [6, i+1]: =floattostr (roundto (P [i],-2));

sgKonfInfo. Cells [7, i+1]: =floattostr (roundto (Kp [i],-2));

sgKonfInfo. Cells [8, i+1]: =floattostr (roundto (R [i],-2));

end;

BtPrint. Enabled: =true;

end

else

ShowMessage ('Введите длину');

end

else

ShowMessage ('Выберите условие');

except

ShowMessage ('Введите верные данные');

end;

end;

procedure TFKonfInfo. BtPrintClick (Sender: TObject);

begin

wordapplication1. Connect;

wordapplication1. visible: =true;

wordapplication1. documents. add (emptyparam,emptyparam,emptyparam,emptyparam);

wordapplication1. Selection. TypeText ('Временная методика оценки защищенности конф. информ. обрабатываемой основными техническими');

wordapplication1. Selection. TypeText ('средствами и системами, от утечки за счет наводок на вспомогательные тех. средства и сис. и их коммуникации');

wordapplication1. Selection. ParagraphFormat. Alignment: =wdAlignParagraphCenter;

wordapplication1. selection. Tables. Add (wordapplication1. selection. Range,6,8,EmptyParam,EmptyParam);

wordapplication1. Selection. Tables. Item (1). Borders. InsideLineStyle: =wdBlack;

wordapplication1. Selection. Tables. Item (1). Borders. OutsideLineStyle: =wdBlack;

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,1). Range. Text: ='f (i), МГц';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,2). Range. Text: ='U (c+ш), дБ';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,3). Range. Text: ='Uш, дБ';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,4). Range. Text: ='Uc, дБ';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,5). Range. Text: ='U1 (изм), мкВ';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,6). Range. Text: ='U2 (изм), мкВ';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,7). Range. Text: ='Кп, дБ/м';

wordapplication1. ActiveDocument. Tables. Item (1). Cell (1,8). Range. Text: ='R (i), м';

for i: =0 to n-1 do

begin

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,1). Range. Text: =sgKonfInfo. cells [0,1+i];

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,2). Range. Text: =FloatToStr (USsh [i]);

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,3). Range. Text: =FloatToStr (Ush [i]);

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,4). Range. Text: =FloatToStr (roundto (Uc [i],-2));

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,5). Range. Text: =FloatToStr (U1 [i]);

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,6). Range. Text: =FloatToStr (U2 [i]);

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,7). Range. Text: =FloatToStr (roundto (Kp [i],-2));

wordapplication1. ActiveDocument. Tables. Item (1). Cell (2+i,8). Range. Text: =FloatToStr (roundto (R [i],-2));

end;

end;

end.

2.4 Тестовые данные программы

Тестовые данные программы представлены в таблице 5

Таблица 5 - Тестовые данные на интерактивный ввод исходных данных

№ теста

Входные данные

Реакция программы

1

Решение задачи

2

Введите верные данные

2.5 Результаты работы программы

Результаты работы программы представлены на рисунках 3 - 5

Рис. 3

Рис. 4

Рис. 5

3. Руководство по использованию программы

3.1 Руководство системного программиста

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

ввод исходных данных вручную;

контроль вводимых данных;

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

процессор Intel;

принтер;

оперативная память 128 Кб;

свободное пространство на жестком диске 5 Мб;

операционная система Windows XP/Vista;

Для установки программы необходимо вставить диск в cd-дисковод, запустить значок с именем "TimeMethod. exe".

3.2 Руководство программиста

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

Для организации работы программы необходимы следующие компоненты ПК:

системный блок;

монитор;

клавиатура;

мышь;

необходимо около 5 Мб свободного места на диске

Требования к программному обеспечению:

операционная система Windows XP/Vista;

Enternet Explorer;

В процессе работы могут выдаваться сообщения, представлены на рисунках 5-9.

При попытке не выбрать условие:

Рис 5

При попытке не ввести требуемое расстояние:

Рис 6

При попытки ввести не верные данные

Рис 7

Структура файла проекта представлена на рисунке 8

Структура файла проекта

Размещено на http://www.allbest.ru/

Рис 8

"Дерево" проекта представлено на рисунке 9.

"Дерево" проекта

Рис 9

Описание модулей представлено в таблице 5.

Таблица 5 - Описание модулей программы.

Форма

Процедура

Описание

FMain

procedure TFMain. N2Click (Sender: TObject);

Выход из программы

procedure TFMain. N11Click (Sender: TObject);

Открытие формы FRechUtech

procedure TFMain. N4Click (Sender: TObject);

Открытие формы FElecktPreob

procedure TFMain. N5Click (Sender: TObject);

Открытие формы FTexSred

procedure TFMain. N6Click (Sender: TObject);

Открытие формы FKonfInfo

FElecktPreob

procedure TFElecktPreob. BtRaschClick (Sender: TObject);

Расчет первой методики

procedure TFElecktPreob. btPrintClick (Sender: TObject);

Отчет в Word

FKonfInfo

procedure TFKonfInfo. btRaschClick (Sender: TObject);

Расчет второй методики

procedure TFKonfInfo. BtPrintClick (Sender: TObject);

Отчет в Word

FRechUtech

procedure TFRechUtech. BtRaschetClick (Sender: TObject);

Расчет третей методики

procedure TFRechUtech. btPrintClick (Sender: TObject);

Отчет в Word

FTexSred

procedure TFTexSred. btRasClick (Sender: TObject);

Расчет четвертой методики

procedure TFTexSred. BtPrintClick (Sender: TObject);

Отчет в Word

3.3 Руководство оператора

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

Для вывода отчета и результата работы программы необходимо нажать кнопку "Печать в WORD".

Заключение

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

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

Достоинством данной программы являются:

- корректный ввод данных

- понятный и удобный интерфейс

Список литературы

1. С.И. Бобровский, Delphi 7 - Учебный курс. Санкт-Петербург, 2004

2. A.Я. Архангельский, 100 компонентов общего назначения библиотеки Delphi 5.2002.

3. С.И. Бобровский, Delphi 7. Учебный курс.1-е издание. 2004

4. О.О. Замков, Ю.А. Черемных, А.В. Тостопятенко, Математические методы в экономике. Москва, 2004.

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


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

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