Разработка приложения для решения нелинейного уравнения методом хорд и вычисления интеграла методом Симпсона
Создание приложения, демонстрирующего решение нелинейного уравнения методом хорд, вычисление интеграла методом Симпсона. Характеристика системы программирования. Разработка мощных систем для работы с локальными и удаленными базами данных с помощью 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
Подобные документы
Метод хорд решения нелинейных уравнений. Вычисление интеграла методом Симпсона. Процесс численного решения уравнения. Окно программы расчета корней уравнения методом хорд. Алгоритм вычисления интеграла в виде блок-схемы. Выбор алгоритма для вычислений.
курсовая работа [832,6 K], добавлен 24.07.2012Разработка с использованием приложения Mathcad алгоритма и программы решения нелинейного уравнения методами касательных, половинного деления и хорд. Решение с помощью ее заданных нелинейных уравнений. Создание графической иллюстрации полученных решений.
курсовая работа [665,7 K], добавлен 22.08.2013Проверить условие сходимости и записать расчетные формулы для нахождения корня уравнения. Составить блок-схему алгоритма, программу решения задачи. Вычисления определенного интеграла методом Симпсона. Построить график функции Y=1/sqr(3sin(x)+2cos(x)).
курсовая работа [29,6 K], добавлен 02.10.2008Метод численного интегрирования. Использование метода половинного деления для решения нелинейного уравнения. Определение отрезка неопределенности для метода половинного деления. Получение формулы Симпсона. Уменьшение шага интегрирования и погрешности.
курсовая работа [3,0 M], добавлен 21.05.2013Обзор существующих методов по решению нелинейных уравнений. Решение нелинейных уравнений комбинированным методом и методом хорд на конкретных примерах. Разработка программы для решения нелинейных уравнений, блок-схемы алгоритма и листинг программы.
курсовая работа [435,8 K], добавлен 15.06.2013Решение циклических программ и программ вычисления функции с условием. Уравнение в табличном редакторе Microsoft Excel и в Turbo Pascal. Вычисление определенного интеграла методом прямоугольников, трапеции, Симпсона. Линейные и нелинейные уравнения.
курсовая работа [233,6 K], добавлен 27.12.2009Численные методы. Создание программного продукта, использование которого позволит одновременно исследовать два метода вычисления определенных интегралов: метод трапеций и метод Симпсона. Рассмотрен ход вычисления интеграла в виде кода программы.
курсовая работа [834,6 K], добавлен 14.04.2019Особенности точных и итерационных методов решения нелинейных уравнений. Последовательность процесса нахождения корня уравнения. Разработка программы для проверки решения нелинейных функций с помощью метода дихотомии (половинного деления) и метода хорд.
курсовая работа [539,2 K], добавлен 15.06.2013Отделение корней методом простых интеграций. Дифференцирование и аппроксимация зависимостей методом наименьших квадратов. Решение нелинейного уравнения вида f(x)=0 методом Ньютона. Решение системы линейных уравнений методом Зейделя и методом итераций.
курсовая работа [990,8 K], добавлен 23.10.2011Математическое описание, алгоритм и программа вычисления нелинейного уравнения методом дихотомии. Метод половинного деления. Метод поиска корней функции. Написание текста программы с комментариями. Проведение тестовых расчетов. Вывод ответа на экран.
курсовая работа [67,2 K], добавлен 15.02.2016