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

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




Не нашли то, что вам нужно?
Посмотрите вашу тему в базе готовых дипломных и курсовых работ:

(Результаты откроются в новом окне)

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


Государственный комитет РФ по высшему образованию

Московский Институт Электронной Техники

(Технический Университет)

Факультет МПиТК

Кафедра ИУВС

Пояснительная записка

к дипломному проекту на тему

“Клиентская часть

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

Дипломант Авд ейчев Д. В.

Руководитель проекта Тареев А. Н.

Консультант Фишкис В. М.

Консультант по технологической

части Волков.

Консультант по организационно-

экономической части Мормуль Н. Ф.

Консультант по технике

безопасности Каракеян В. И.

1999 г.

Содержание

Заказать написание дипломной - rosdiplomnaya.com

Специальный банк готовых оригинальных дипломных работ предлагает вам написать любые работы по требуемой вам теме. Правильное написание дипломных работ на заказ в Челябинске и в других городах РФ.

1. Введение

2. Эскизный проект

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

2.1.1 Определение понятия модели

2.1.2 Требования, предъявляемые к системе экономического планирования.

2.1.3 Выбор платформы проектирования и еe обоснование

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

2.2.1 Структура экономической модели

2.2.2 Язык модели

2.3 Общая отруктура системы

2.4 Структуры данных

2.4.1 Инфологическая модель базы данных

2.4.2 Даталогическая модель данных

3. Технический проект

3.1 Конфигурация технических средств

3.2 Алгоритмы предварительной подготовки данных для расчета экономической модели

3.2.1 Общий алгоритм работы программы

3.2.2 Структура программы

3.2.3 Архитектура Borland Database Engine (IDAPI) – ядро доступа к данным.

3.2.4 Иерархия форм.

3.2.5 Создание псевдонима BDE.

3.2.6 Модуль формы fmNew.

4. Технология программирования с использованием средств быстрой разработки приложений.

4.1 Введение

4.2 Особенности RAD–средств

4.2.1 Визуальная компонентность.

4.2.2 Многократное использование кода.

4.3 Создание программ в среде Delphi.

4.4 Отладка программ.

5. Расчёт затрат на разработку программы

5.1 Введение

5.2 Составляющие затрат на разработку программ Kр

5.3 Затраты на непосредственную разработку КП

5.3.1 Факторы КП как объекта проектирования, влияющие на непосредственные затраты при разработке сложных программ.

5.3.2 Применение современных методов разработки КП.

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

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

5.4 Затраты на изготовление опытного образца как продукции производственно-технического назначения.

5.5 Затраты на технологию и программные средства автоматизации разработки КП.

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

5.7 Расчет затрат на разработку системы моделирования макроэкономики

5.7.1 Исходные данные

5.7.2 Коэффициенты изменения трудоемкости

5.7.3 Расчет непосредственных затрат на разработку

5.7.4 Затраты на ЭВМ

5.8 Выводы

6. Организация рабочего места программиста

6.1 Условия производственно-экологической безопасности разработчика пользователя ЭВМ

6.2 Вредные воздействия при работе с компьютером

6.3 Факторы обитаемости

6.4 Воздействие электромагнитного излучения монитора

6.5 Оптимизация условий зрительного восприятия

6.6 Освещение

6.7 Микроклимат

6.8 Оптимизация акустических условий

6.9 Электробезопасность.

6.9.1 Меры защиты от поражения электрическим током.

6.9.2 Защита от статического электричества.

6.9.3 Защита от электромагнитных полей и ионизирующего излучения

6.10 Психофизические факторы

6.11 Организационные мероприятия

6.12 Пожаробезопасность

6.13 Мероприятия по организации рабочего места

6.14 Заключение

6.15 Выводы

7. Литература

Глава 1

СПЕЦИАЛЬНАЯ ЧАСТЬ

«Клиентская часть технологической среды разработки экономических моделей»

Введение

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

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

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

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

*  Экономист - пользователь: занимается изучением макроэкономики на основе математической модели, построенной экономистом - разработчиком.

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

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

1.  Эскизный проект   1.1  Постановка задачи 1.1.1  Определение понятия модели

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

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

Прежде всего, формальная Модель является особым типом общего понятия Модели. Сама семантика общего понятия включает Объект моделирования. Модель Чего? - без ответа на этот вопрос понятие Модели просто не имеет смысла.

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

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

-   какие значения параметров возможны при данном наборе ограничений,

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

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

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

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

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

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

В самом общем виде постановка задачи в парадигме программирования в ограничениях формулируется следующим образом. Пусть на переменные x1, x2 ..., xn , областями значений которых являются множества X1 , X2 , ..., Xn , заданы ограничения Ci (x1 , x2 , ..., xn), i =1, k. Требуется найти наборы значений <a1 , a2 , ..., an> (ai Î Xi), которые бы удовлетворяли всем ограничениям одновременно.

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

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

Метод недоопределенных моделей (Н-моделей) был предложен в начале 80-x годов для представления и обработки неполностью определенных знаний [9]. Рассматриваемый вначале как оригинальный метод из области искусственного интеллекта, он трансформировался постепенно в прикладную технологию программирования в ограничениях. Технология Н-моделей выделяется среди других подходов вычислительной мощностью, универсальностью и эффективностью. Фактически она является единственной технологией, которая позволяет решать задачу удовлетворения ограничений в самой общей постановке. Модель макроэкономики РФ и представляет собой недоопределенную модель.


1.1.2  Требования, предъявляемые к системе экономического планирования.

Теперь можно уточнить постановку задачи. Требуется написать систему, которая представляет собой технологическую среду для разработки больших экономических моделей. Система должна работать под управлением Windows95, реализована в среде разработки Borland Delphi 3 и должна состоять из двух компонентов - вычислительного ядра системы (engine) и оболочки над ним. Оболочка включает в себя:

-   Набор интерфейсов для всех типов процессов

-   База данных (БД), структура которой предполагает несколько проекций:

a.  несколько моделей,

b.  несколько вариантов одной модели (в процессе ее разработки),

c.  несколько вариантов значений (для отладки комплекса данных и\или бюджета)

-   "Кожух" для engine:

- два уровня программы: на внешнем языке и на внутреннем,

- два уровня данных: внутренний и внешний (с заданной точностью)

- компонент управления процессом: поиск корней, управление «сужением» интервалов, задание точности и т. д.

- определение состава данных, выдаваемых на интерфейс.

-   Сервис: графика, генерация отчетов, help.

1.1.3  Выбор платформы проектирования и еe обоснование

В качестве операционной среды, в которой реализовался данный ПП, была выбрана среда Windows’95 (Windows NT). Причины этого следующие:

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

-   Возможность работы с большими массивами данных, реализация чего в среде Windows 3.1 или в среде MS-DOS представляет нетривиальную и трудновыполнимую задачу;

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

-   32-разрядность систем Windows’95 и Windows NT увеличивает скорость работы с соответствующими числами.

В качестве среды программирования была выбрана среда Borland Delphi 3, сочетающая в себе как все преимущества всех средств, относящихся к RAD[1], так и свои собственные преимущества:

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

-   Использование всех преимуществ операционных систем Windows’95 и Windows NT, включая 32-разрядность, многозадачность, удобный интерфейс и прочее;

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

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

Таким образом, в качестве платформы для реализации была выбрана связка Windows’95 (NT) - Borland Delphi 3.

1.2  Экономическая модель в системе экономического планирования 1.2.1  Структура экономической модели

Экономическая модель состоит из трех частей:

*  переменных

*  описания взаимосвязей между переменными

*  подмоделей

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

Описание взаимосвязей между переменными или система ограничений параметров представляет собой систему уравнений и неравенств. В системе она представляется в виде отдельного файла. Язык описания очень схож с описанием выражений на языках высокого уровня, таких как Basic, Pascal или C/C++.

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

Пример простейшей модели бюджета, на которой испытывался прототип данной системы, можно посмотреть на рис.1


--------------------------------------------------

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

|
--------------------------------------------------------- --------------------------------------------------

Рис.1. Простейшая модель бюджета РФ.

1.2.2  Язык модели

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

Этот язык можно разделить на внешний и внутренний. Под внешним языком подразумевается форма записи, которой придерживается экономист - разработчик. Внутренний язык - это формат записи, который «понимает» вычислитель системы. Фактически, в системе внешний язык идентичен внутреннему, но, чтобы добиться совместимости с первой версией (макетом), предусмотрена возможность распознавания текста модели макета.

1.2.2.1  Внутренний язык - язык вычислителя UniCalc

Язык UniCalc - это правила по которым записывается модель для решателя UniCalc.

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

Алфавит входного языка решателя UniCalc состоит из всех букв латинского алфавита и русского алфавита, всех цифр и набора специальных символов: +, -, *, /, ^, (, ), [, ], =, <, <=, >, >=, <>, :=, ,, ;, and, or, not, ->, (*, *).

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

Переменные в UniCalc’е рассматриваются двух типов: целые и вещественные. Тип переменной принимается по умолчанию. Имена целых переменных начинаются с букв i, j, k, l, m, n для латинского алфавита, и соответственно - с букв и, й, к, л, м, н для русского алфавита. Остальные переменные считаются вещественными. Большие и малые буквы в имени различаются.

1.2.2.1.1  Константы

В системе определены константы двух типов: целые и вещественные. Целые константы - целые числа в диапазоне от -2147483646 до 2147483646. Пример записи целого числа:

-10, -5, 0, 15, 100,...

Вещественные константы - вещественные числа в диапазоне от -1e+19 до 1e+19. Пример записи вещественных констант: -0.03, 3.14, 0.9999999, 10.44e-5,...

Язык содержит встроенные константы для задания постоянных величин:

p= 3.14159,

e = 2.71828,

g = 9.80665.

Эти константы изображаются следующим образом:

p - @pi; e - @e; g - @g.

Пример:

l:=[-@pi/2, @pi/2];

S = @pi*r^2;

f = (@e^x - @e^(-x))/2;

F = M*@g^2/2.

1.2.2.1.2  Переменные

В UniCalc'e рассматриваются переменные двух типов: целые и вещественные. Тип переменной определяется первым символом ее имени. Имя может состоять из букв латинского и русского алфавита, а также цифр, причем первым символом обязательно должна быть буква. Имена распознаются по первым восьми символам. Большие и малые буквы в имени различаются. Имена целых переменных начинаются с букв i, j, k, l, m, n, для латинского алфавита, и соответственно с букв и, й, к, л, м, н, для русского алфавита. Для больших букв умолчание сохраняется. Остальные переменные считаются вещественными.

1.2.2.1.3  Стандартные математические функции

sin() синус;

cos() косинус;

asin() арксинус;

acos() арккосинус;

tg() тангенс;

ctg() котангенс;

atan() арктангенс;

ln() натуральный логарифм;

exp() экспонента;

abs() абсолютное значение;

sign() знак числа;

sqrt() квадратный корень;

dif() функция символьного дифференцирования

max(a, b,..,c) максимальное значение;

min(a, b,...,c) минимальное значение;

lower(0 нижнее значение;

upper() верхнее значение;

1.2.2.1.4  Пользовательские функции

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

имя_функции (список формальных параметров) := выражение;

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

Вызов функции:

имя_функции (список фактических параметров);

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

f(x, y) := x^2 + y^2 - 1;

Пример вызова функции:

f(23.1, z+5) = 0;

1.2.2.1.5  Комментарии

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

1.2.2.1.6  Арифметические операции

+ операция сложения;

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

* операция умножения;

/ операция деления;

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

Арифметические операции по приоритету в порядке убывания располагаются следующим образом: ^, /, *, -, +. Фактически операции "+" и "-" имеют одинаковый приоритет, так же как и /" и "*". Для изменения приоритета операций используются круглые скобки. Результатом операции деления в случае обоих целых операндов является целая часть частного.

1.2.2.1.7  Логические операции

OR логическое "ИЛИ";

AND логическое "И";

NOT логическое "НЕ";

-> импликация.

Логические операции по приоритету в порядке убывания располагаются следующим образом: NOT, AND, OR, ->.

1.2.2.1.8  Операции отношения

= равно;

<> не равно;

< меньше;

> больше;

<= меньше или равно;

>= больше или равно.

1.2.2.1.9  Оператор присваивания

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

Пример операции присваивания:

х := 999;

Y := [5+6*10, 999].

1.2.2.1.10  Переменные - массивы

В последних версиях решателя возможно использование массивов произвольной размерности:

<array_name>[index_expr1, index_expr2, ... , index_exprN

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

1.2.2.2  Внешний язык

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

1.2.2.3  Пример формулы на внешнем языке и внутреннем языке

Пусть существует несколько параметров A, B и С которые зависят от индекса Y, изменяющегося в диапазоне от 1992 до 1995. Параметр С, кроме этого зависит от индекса K, изменяющегося в диапазоне от 1 до 4-х. Также от параметра К зависит параметр D. Между ними существует взаимосвязь:

C{K, Y}=A{Y}+B{Y-1}+D{K+2};

Фигурные скобки {} «показывают» препроцессору, что перед ним переменная, которая зависит от индексов, находящихся в этих скобках. После трансляции на внутренний язык получается система уравнений:

C[1,1993]=A[1993]+B[1992]+D[3];

C[1,1994]=A[1994]+B[1993]+D[3];

C[1,1995]=A[1995]+B[1994]+D[3];

C[2,1993]=A[1993]+B[1992]+D[4];

C[2,1994]=A[1994]+B[1993]+D[4];

C[2,1995]=A[1995]+B[1994]+D[4];

Но все это сделано для распознавания «старых» моделей. Эту формулу также можно записать в виде, применяемом в нынешней версии.


1.3  Общая отруктура системы

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

Рис.2. Структура системы.

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

Вычислитель системы - UniCalc - реализован в виде динамически связываемой библиотеки (Dynamic Link Library), которая экспортирует функции и переменные. Вычислитель основан на принципах недоопределенной математики и разрабатывается в Академгородке в Новосибирске.

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

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

1.4  Структуры данных

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

1.4.1  Инфологическая модель базы данных

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

-   предметной области;

-   объектов и связи между ними;

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

-   ограничения целостности;

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

-   информационных потребностей пользователя.

1.4.1.1  Предметная область

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

1.4.1.2  Описание объектов

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

Рис.3. Структура объектов базы данных.

1.4.1.3  Связи между объектами

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

Рис.4. Связи между объектами.

1.4.1.4  Лингвистическое описание

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

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

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

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

-   название файла ограничений (файл, содержащий систему уравнений и неравенств для данной модели) - динамический атрибут.

Кроме этого в базе существуют объекты, которые описывают логическую структуру модели.

Объект «Экономический параметр». Синонимом данного объекта также является «экономическая переменная». Объект имеет следующие свойства:

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

-   описание параметра (название параметра) - статическое свойство.

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

-   обозначение индекса модели - статический атрибут, показывающий, под каким псевдонимом используется индекс. В проекте обычно имеет вид «Y» (year);

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

-   максимальное значение;

-   шаг изменения, в проекте обычно имеет значение «1».

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

-   номер версии. После запуска системы, т. е. до всех расчетов, по умолчанию номер версии равен нулю;

-   комментарий по версии - например, «Проверка предложения фракции ЛДПР по введению новых налогов»

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

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

-   значение - динамическое свойство. Имеет вид либо точного значения, либо некоторого интервала.

1.4.1.5  Алгоритмические связи

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

Значение индекса = минимальное значение + i * шаг изменения, i - некоторое целое число, при условии, что значение индекса меньше либо равно максимальному значению индекса.

1.4.1.6  Информационные потребности пользователя

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

1.4.1.7  Ограничение целостности

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

В объекте «Индекс» минимальное значение должно быть меньше максимального значения. Кроме того, сумма минимального значения индекса с шагом изменения должна быть меньше либо равно максимального значения индекса. Шаг изменения - это неотрицательное значение.

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

1.4.2  Даталогическая модель данных

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

Все объекты и связи между объектами в нашем случае можно выразить следующими соотношениями:

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

-   экономический параметр(обозначение параметра в модели, описание параметра) - таблица Params.db;

-   индекс(обозначение индекса, минимальное значение индекса, максимальное значение, шаг изменения) - таблица Indexes.db;

-   версия расчета модели(номер версии, обозначение модели, комментарий по версии) - таблица Version.db;

-   зависимость экономического параметра от индексов(обозначение параметра, обозначение индекса) - таблица Inter.db;

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

1.  Различные сочетания индексов в переменной(обозначение параметра, обозначение индекса, значение индекса, номер сочетания индексов) - таблица Param.db.

2.  Значение параметра(обозначение экономической переменной, значение переменной, порядковый номер в переменной, номер версии расчета) - таблица Ver_value.db.

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

На уровне таблиц это выглядит следующим образом:

В приведенных ниже таблицах обозначение вида «X» в колонке «№», где X - номер поля, означает, что данное поле является ключевым.

Indexes. db

--------------------------------------------------

Имя

|

Тип

|

Размер

|

Комментарий

|
---------------------------------------------------------
“1” | ID | Char | 5 | Обозначение индекса |
---------------------------------------------------------
2 | Mn | Integer | Минимальное значение |
---------------------------------------------------------
3 | Mx | Integer | Максимальное значение |
---------------------------------------------------------
4 | Step | Integer | Шаг изменения |
--------------------------------------------------------- --------------------------------------------------

Model. db

--------------------------------------------------

Имя

|

Тип

|

Размер

|

Комментарий

|
---------------------------------------------------------
“1” | ID | Char | 10 | Обозначение модели |
---------------------------------------------------------
2 | Remark | Char | 50 | Комментарий по модели |
---------------------------------------------------------
3 | Path | Char | 100 | Директория, в которой хранятся файлы модели |
---------------------------------------------------------
4 | MFile | Char | 20 | Файл описания модели |
--------------------------------------------------------- --------------------------------------------------

Inter. db

--------------------------------------------------

Имя

|

Тип

|

Размер

|

Комментарий

|
---------------------------------------------------------
“1” | ID | Char | 10 | Обозначение объекта |
---------------------------------------------------------
“2” | IID | Char | 10 | Обозначение объекта, от которого зависит ID |
---------------------------------------------------------
3 | InForm | Integer | Позиция в последовательности индексов, от которых зависит переменная, в системе ограничений |
---------------------------------------------------------
4 | Kind | Char | 10 | Тип записи |
--------------------------------------------------------- --------------------------------------------------

Неописанные в отношениях поля:

-   InForm - необходимо для распознавания файла ограничений. Показывает номер в последовательности индексов, например, при обозначении некоторой переменной f, зависящей от индексов K и Y, в виде f(Y,K), позиция Y равняется единице, для K - два.

-   Kind - введено для дальнейшего развития проекта. Для описанного отношения значение будет «v» (variable), т. е. запись в таблице описывает взаимосвязь переменной с индексом. В дальнейшем будет использоваться для описания вхождения в модель некоторых глобальных переменных, т. е. модель будет выступать в качестве подмодели, значение в этом случае «g» (global).

Param. db

--------------------------------------------------

Имя

|

Тип

|

Размер

|

Комментарий

|
---------------------------------------------------------
«1» | ID | Char | 10 | Обозначение переменной |
---------------------------------------------------------
«2» | IID | Char | 10 | Обозначение индекса |
---------------------------------------------------------
«3» | iid_value | integer | Значение индекса |
---------------------------------------------------------
«4» | Num | Integer | Порядковый номер в переменной |
--------------------------------------------------------- --------------------------------------------------

Params.db

--------------------------------------------------

Имя

|

Тип

|

Размер

|

Комментарий

|
---------------------------------------------------------
«1» | ID | Char | 10 | Обозначение переменной |
---------------------------------------------------------
2 | Remark | Char | 50 | Описание переменной |
--------------------------------------------------------- --------------------------------------------------

Version. db

--------------------------------------------------

Имя

|

Тип

|

Размер

|

Комментарий

|
---------------------------------------------------------
«1» | Ver | Integer | Номер версии |
---------------------------------------------------------
2 | Remark | Memo | Комментарий по версии |
---------------------------------------------------------
«3» | ID | Char | 10 | Обозначение модели |
--------------------------------------------------------- -------------------------------------------------- 2.  Технический проект

В этом разделе рассматриваются алгоритмы клиентской части реализации доступа к данным в архитектуре клиент/сервер.

2.1  Конфигурация технических средств

Требования к составу и параметрам технических средств соответствуют требованиям к программному продукту - системе моделирования макроэкономики.

Минимально необходимое оборудование:

PC.................................................... 80486 SX2-66;

RAM................................................ 12 MB;

HDD................................................ 50 MB свободных;

Screen.............................................. Color VGA.

Рекомендуемое оборудование:

PC.................................................... Pentium 133 МГц;

RAM................................................ 32 MB;

HDD................................................ 30 MB свободных;

Screen.............................................. Color SVGA;

Необходимое программное обеспечение:

ОС................................................... Windows’95;

Машина баз данных....................... Borland DataBase Engine 3.0;

Приложение.................................... Система моделирования макроэкономики.


2.2  Алгоритмы предварительной подготовки данных для расчета экономической модели 2.2.1  Общий алгоритм работы программы

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


2.2.2  Структура программы

Структура программы представлена на риc.5

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

Рис.5. Структура программы.


2.2.3  Архитектура Borland Database Engine (IDAPI) – ядро доступа к данным.

За более чем 25-летнюю историю развития реляционных баз выработался ряд новых требований к методам и средствам доступа к данным. За такую долгую историю в промышленном использовании нашли своё применение огромное количество форматов хранения данных. Поэтому одним из основных вопросов дальнейшего развития СУБД стал вопрос о создании единой среды обработки данных. На базе многолетнего опыта создания инструментальных средств компания Borland предоставила разработчикам свою технологию доступа к данным – Borland Database Engine, Известную также как IDAPI (Integrated Database API).Идеология доступа к локальным и клиент/серверным данным существенно отличаются (в одном случае используется навигационный подход, в другом – язык SQL, ориентированный на множество данных). BDE объединяет эти подходы без уменьшения функциональных возможностей кождого из них. Поэтому BDE (IDAPI) положен в основу инструментов создания масштабируемых систем обработки данных, одним из которых является Delphi.

BDE предоставляет единый набор функций (API) обработки локальных и серверных данных. Обращение к различным источникам данных основано на коцепции драйверов. Таким образом обеспечивается интерфейс к наиболее распространённым форматам/способам хранения данных: dBase, Paradox и серверным источникам InterBase, Oracle, Sysbase, Informix, MS SQL-Server.

Когда речь заходит об обработке данных в структуре клиент/сервер следует понимать, что реализация доступа к серверным данным несколько усложняется. В этом случае вводится понятие middleware – некоего среднего звена, отвечающего за взаимодействие универсального интерфейса (в нашем случае IDAPI) с клиентскими средствами сервера БД. В качестве такого middleware для пользователей BDE выступает Borland SQL Links, также реализованный в виде набора драйверов для каждого конкретного сервера. --------------------------------------------------
Рисунок убран из работы и доступен только в оригинальном файле. |
--------------------------------------------------------- --------------------------------------------------
Рис. 6 отражает такой подход к обработке серверных данных.

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


2.2.4  Иерархия форм.

Формы баз данных Delphi можно разделить на четыре следующих функциональных класса.

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

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

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

4. Главная-подчиненная. Форма, которая показывает строки двух или более связанных таблиц.

При разработке приложения прежде всего создаются и сохраняются в хранилище объектов Delphi формы-предки. Затем на их основе создаются все формы, являющиеся потомками.

Рисунок убран из работы и доступен только в оригинальном файле.
Рис.6. Иерархия форм.

2.2.5 Создание псевдонима BDE

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

Для создания псевдонима мы используем многофункциональное средство Delphi Database Explorer.

Рисунок убран из работы и доступен только в оригинальном файле.
Рис.7. Окно Database Explorer после добавления нового псевдонима BDE.

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

2.2.6  Модуль формы fmNew

Если мы выберем пункт меню Файл®Новая модель, тогда вызывается модуль, который отвечает за открытие новой модели.

Рис.8. Форма fmNew.

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

Модуль состоит из пяти процедур. Рассмотрим только наиболее интересующие нас.

--------------------------------------------------
Рисунок убран из работы и доступен только в оригинальном файле. |
--------------------------------------------------------- --------------------------------------------------
Процедура TfmNew. BitBtn1Click

Рисунок убран из работы и доступен только в оригинальном файле.
Рис.9. Алгоритм работы процедуры TfmNew. BitBtn1Click

Описываем переменные:

var

s : String;

i : longint;

Если в строке не ввели имя модели тогда вывести сообщение ‘Введите имя модели’

begin

if eNew. Text='' then begin

MessageDlg('Введите имя модели', mtError, [mbOk], 0);

eNew. SetFocus;

exit;

end;

Если не ввели путь к базе данных модели вывести сообщение об ошибке

if ePath. Text='' then begin

MessageDlg('Введите путь к базе данных модели', mtError, [mbOk], 0);

ePath. SetFocus;

exit;

end;

Если не ввели название файла модели вывести сообщение об ошибке

if eModel. Text='' then begin

MessageDlg(‘Введите название файла модели', mtError, [mbOk], 0);

eModel. SetFocus;

exit;

end;

Идентификация имени модели

fmMain. DbPath:=ePath. Text+'\'+eNew. text+'.gdb';

fmMain. Model:=ePath. Text+'\'+eNew. text+'.gdb';

Вырезаем имя файла с текстом формул

s:=UpperCase(eModel. Text);

if (pos('.MDL',s)=0) then begin

s:='';

if pos('.',eModel. Text)=length(eModel. Text)-3

then for i:=1 to length(eModel. Text)-4 do s:=s+eModel. Text[i];

s:=eModel. Text+'.MDL';

end;

fmMain. FModel:=s;

Обработка исключительной ситуации

try fileUtil. copyfile(extractfilepath(application. ExeName)+'base. gdb',ePath. Text+'\'+eNew. text+'.gdb',nil);

except

showmessage(Не найден прототип базы);

exit;

end;

Добавляем параметры подключения к базе данных.

with fmmain. DataBase do begin

Connected:=false;

Params. Clear;

params. Add('user name=sysdba');

params. Add('password=masterkey');

params. Add('server name='+ePath. Text+'\'+eNew. text+'.gdb');

Connected:=true;

end;

Модуль формы fmForm1.

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

Рисунок убран из работы и доступен только в оригинальном файле.
Рис.10. алгоритм работы процедуры TfmForm1.FormCreate формы fmForm1.

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

Процедура TfmForm1.FormCreate.

begin

i:=1;

strQ:='select ID, path, MFile from Model';

qMain. Close;

qsec. Close;

with db1 do begin

Connected:=false;

Params. Clear;

params. Add('user name=sysdba');

params. add('password=masterkey');

params. Add('server name='+fmmain. dbPath);

Connected:=true;

end;

model_name:=fmMain. DbPath;

qMain. SQL. Clear;

qSec. SQL. Clear;

qsec. Close;

Выборка имени модели из таблицы ‘Model’

Self. qMain. SQL. Add(strQ);

Self. qMain. Open;

model:=tv. Items. AddFirst(nil, Self. qMain. FieldByName('ID').AsString);

fmMain. FModel:=Self. qMain. FieldByName('MFile').AsString;

Цикл рекурсивной выборки подмоделей и переменных

while i<Self. qMain. RecordCount do begin

Self. qMain. First;

Self. qMain. MoveBy(i);

child_model:=tv. Items. AddChild(model, Self. qMain. FieldByName('ID').AsString);

strTmp:=Self. qMain. FieldByName('Path').AsString;

Self. qMain. close;

showchild(child_model, strTmp);

inc(i);

strQ:='select ID, path from Model';

Self. qMain. SQL. Clear;

Self. qMain. SQL. Add(strQ);

Self. qMain. Open;

end;

Выборка параметров моделей из таблицы ‘Params’

i:=0;

strQ:='Select id from params';

Self. qMain. close;

Self. qMain. SQL. Clear;

Self. qMain. SQL. Add(strQ);

Self. qMain. Open;

Заполнение дерева

while i<Self. qMain. RecordCount do begin

(tv. Items. AddChild(model, Self. qMain. FieldByName('id').AsString));

Self. qMain. Next;

inc(i);

end;

count_grids:=0;

qMain. Close;

qSec. close;

Визуализация дерева и таблицы

fmMain. SpeedButton3.Enabled:=true;

fmMain. SpeedButton2.Enabled:=true;

fmMain. SpeedButton1.Enabled:=true;

treevisible:=true;

tablevisible:=true;

graphvisible:=true;

model. Expand(true);

end;

Модуль формы fmVar

Форма отвечающая за ввод переменных.

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

Рис.11. Форма fmVar.

Процедура TfmVar. BitBtn1Click.

Дерево модели может включать в себя переменные, подмодели, а также группы из переменных и подмоделей, но на данном этапе развития проекта понятие группы пока не рассматривается.. Также пока не существует модели макроэкономики, которая была бы структурирована достаточным образом, т. е. в нее кроме переменных входила бы хоть одна подмодель. Таким образом, на данном этапе развития проекта имеет смысл говорить о модели, состоящей только из переменных. Программно это выполнено следующим образом: после ввода имени переменных, комментария и индексов, от которых зависит переменная, из таблицы indexes.db с помощью SQL - запроса выбирается информация по индексам, от которых зависит переменная, и, на основании этой информации, формируется таблица для первоначальных значений. Далее, после того, как пользователь ввел начальные значения переменной, заполняются таблицы inter.db, param.db, params.db и var_value.db. Все это делает процедура класса fmVar.

Рисунок убран из работы и доступен только в оригинальном файле.
Рис.11. алгоритм работы процедуры TfmVar.BitBtn1Click формы fmVar.

var

i, j, num : longint;

Two : Boolean; - имеет значение True, когда переменная зависит от 2-х индексов

begin

if (eVar. Text='') or (lbVar. Items. Count=0) then exit;

if lbVar. Items. Count>2 then begin

MessageDlg('В переменной должно быть не больше двух индексов',mtError,[mbOk],0);

exit;

end;

IndexChance:=not IndexChance;

lbAll. Enabled:=not lbAll. Enabled;

lbVar. Enabled:=not lbVar. Enabled;

sgVar. Enabled:=not sgVar. Enabled;

eVar. Enabled:=not eVar. Enabled;

eRem. Enabled:=not eRem. Enabled;

sgVar. ShowHint:=not sgVar. ShowHint;

if lbVar. Items. Count=2 then Two:=True

else Two:=False;

Кнопка Ok нажата один раз

if not IndexChance then begin

fmMain. qMain. SQL. Clear;

Выборка параметров индексов

fmMain. qMain. SQL. Add('SELECT * from Indexes where ID='+#39+lbVar. Items. Strings[0]+#39+';');

fmMain. qMain. Open;

Количество столбцов таблицы sgVar

sgVar. ColCount:=round((fmMain. qMain. FieldByName('Mx').AsInteger-fmMain. qMain. FieldByName('Mn').AsInteger) div fmMain. qMain. FieldByName('Step').AsInteger+1)+1;

Если переменная зависит от 2-х индексов

if Two then begin

fmMain. qSec. SQL. Clear;

fmMain. qSec. SQL. Add('SELECT * from Indexes where ID='+#39+lbVar. Items. Strings[1]+#39+';');

fmMain. qSec. Open;

Количество строк таблицы sgVar для второго индекса

sgVar. RowCount:=round((fmMain. qSec. FieldByName('Mx').AsInteger-fmMain. qSec. FieldByName('Mn').AsInteger) div fmMain. qSec. FieldByName('Step').AsInteger+1)+1;

end;

Заполнение верхней строки таблицы sgVar значениями индекса

sgVar. FixedRows:=1;

sgVar. FixedCols:=1;

for i:=1 to sgVar. ColCount-1 do

sgVar. Cells[i,0]:=IntToStr(fmMain. qMain. FieldByName('Mn').AsInteger+(i-1)*fmMain. qMain. FieldByName('Step').AsInteger);

Если переменная зависит от 2-х индексов

if Two then begin

Заполнение первого столбца таблицы sgVar значениями второго индекса

for i:=1 to sgVar. RowCount-1 do

sgVar. Cells[0,i]:=IntToStr(fmMain. qSec. FieldByName('Mn').AsInteger+(i-1)*fmMain. qSec. FieldByName('Step').AsInteger); sgVar. Cells[0,0]:=fmMain. qSec. FieldByName('Id').AsString+'\'+fmMain. qMain. FieldByName('Id').AsString;

end

else sgVar. Cells[0,0]:=fmMain. qMain. FieldByName('Id').AsString;

fmMain. qMain. Close;

fmMain. qSec. Close;

end

Кнопка Ok нажата второй раз

else begin

for i:=0 to lbVar. Items. Count-1 do begin

fmMain. qMain. SQL. Clear;

Заносим имя переменной и ее индекс в таблицу Inter

fmMain. qMain. SQL. Add('INSERT INTO Inter VALUES('+#39+eVar. Text+#39+','+#39+lbVar. Items. Strings[i]+#39+',1,'+#39+'v'+#39+');');

fmMain. qMain. ExecSQL;

end;

num:=0;

Заносим в базу данных значения переменных иэ табл. sgVar

for i:=1 to sgVar. ColCount-1 do

for j:=1 to sgVar. RowCount-1 do begin

fmMain. qMain. SQL. Clear;

inc(num);

fmMain. qMain. SQL. Add('INSERT INTO Param VALUES('+#39+eVar. Text+#39+','+#39+lbVar. Items. Strings[0]+#39+','+#39+sgVar. Cells[i,0]+#39+','+IntToStr(num)+');');

fmMain. qMain. ExecSQL;

Заносим в табл. Param имена переменных и их комментарии

if Two then begin

fmMain. qMain. SQL. Clear;

fmMain. qMain. SQL. Add('INSERT INTO Param VALUES('+#39+eVar. Text+#39+','+#39+lbVar. Items. Strings[1]+#39+','+#39+sgVar. Cells[0,j]+#39+','+IntToStr(num)+');');

fmMain. qMain. ExecSQL;

end;

fmMain. qMain. SQL. Clear;

fmMain. qMain. SQL. Add('INSERT INTO Var_value VALUES('+#39+eVar. Text+#39+','+IntToStr(num)+','+#39+sgVar. Cells[i, j]+#39+','+'0);');

fmMain. qMain. ExecSQL;

fmMain. qMain. SQL. Clear;

fmMain. qMain. SQL. Add('INSERT INTO Var_value VALUES('+#39+eVar. Text+#39+','+IntToStr(num)+'," ",'+'-1);');

fmMain. qMain. ExecSQL;

end;

fmMain. qMain. SQL. Clear;

fmMain. qMain. SQL. Add('INSERT INTO Params (id, remark) VALUES('+#39+eVar. Text+#39+','+#39+eRem. Text+#39+')');// changed for MDI

fmMain. qMain. ExecSQL;

Добавляем переменную в дерево переменных

if not(TfmForm1(fmMain. ActiveMDIChild).tv. Selected. HasChildren or not(TfmForm1(fmMain. ActiveMDIChild).tv. Selected. Parent<>nil )) then TfmForm1(fmMain. ActiveMDIChild).tv. Items. AddChild(TfmForm1(fmMain. ActiveMDIChild).tv. Selected. Parent, eVar. Text)

else TfmForm1(fmMain. ActiveMDIChild).tv. Items. AddChild(TfmForm1(fmMain. ActiveMDIChild).tv. Selected, eVar. Text);

Close;

end;

end;

Модульформы fmSetInter.

Рисунок убран из работы и доступен только в оригинальном файле.
Рис.12. форма fmSetInter.

Рисунок убран из работы и доступен только в оригинальном файле.
Рис.13. алгоритм работы процедуры TfmSetInter. cb1Change формы fmSetInter.

Процедура TfmSetInter. cb1Change.

var

i:integer;

begin

Если минимальное значение изменено

if TComboBox(sender).name='cb1' then begin

Списку максимальных значений присвоить список минимальных

cb2.items:=cb1.items;

Если выбрано мин. значение – удаляем из макс. списка лишнее

if cb1.itemindex<>-1 then for i:=0 to cb1.itemindex-1 do cb2.Items. Delete(0);

end;

Если выбраны все значения – кнопка Ok доступна

if (cb1.ItemIndex<>-1) and (cb2.itemindex<>-1) then OKBtn. enabled:=true

else okBtn. enabled:=False;

Сохраняем значения

min:=cb1.items[cb1.itemindex];

max:=cb2.items[cb2.itemindex];

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

Модульформы fmIndex.

Рис.14. форма fmIndex.

Рис.15. алгоритм работы процедуры TfmIndex. FormClose.

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

var

i : longint;

begin

Курсор в начало таблицы

tIndex. First;

цикл по всем строкам таблицы

for i:=1 to tIndex. RecordCount do begin

условия корректности

if (tIndex. FieldByName('Mn').AsInteger>tIndex. FieldByName('Mx').AsInteger)

or (tIndex. FieldByName('Mn').AsInteger+tIndex. FieldByName('Step').AsInteger>tIndex. FieldByName('Mx').AsInteger)

then begin

сообщение об ошибке

MessageDlg('Введите привильное значение индекса', mtError, [mbOk], 0);

Action:=caNone;

exit;

end;

переход на следущую строку

tIndex. Next;

end;

закрытие таблицы tIndex

tIndex. Active:=False;

end;

Глава 2

ТЕХНОЛОГИЧЕСКАЯ ЧАСТЬ

Технология программирования с использованием средств быстрой разработки приложений”

2. Технология программирования с использованием средств быстрой разработки приложений   2.1 Введение

Тема данной главы - технология быстрой разработки приложений - RAD (Rapid Application Development). Данная технология сравнительно нова, но она быстро становится популярной, многие производители средств разработки приложений взяли эту технологию на вооружение.

Хотя это и новый подход в программировании, но и до появления RAD–средств делались попытки облегчить труд программиста, сделать этот труд более продуктивным, повысив этим быстродействие и удобство создания приложений. Первоначально появились интегрированные среды разработки - IDE (Integrated Development Environment), объединяющие компилятор, специальный текстовый редактор, ориентированный на работы с текстами на целевом языке программирования и средства отладки - трассировщик—дебаггер и другие. По сравнению с предыдущими средствами программирования это был большой шаг вперед, но затем появились CASE–средства, которые позволяли максимально визуализировать процесс создания программы, но пользоваться ими было чересчур неудобно из-за их негибкости. В большинстве случаев написать достаточно сложную программу было очень трудно. Сейчас эти средства используются там, где подход достаточно однообразен - например при написании средств работы с базами данных.

Средства же быстрой разработки приложений (в дальнейшем - RAD–средства), взяв все лучшее из интегрированных сред разработки и CASE систем, объединили мощь и гибкость работы с исходными текстами с удобством создания графического интерфейса пользователя - GUI (Graphic User Interface). К сожалению, большинство RAD–средств не позволяют визуализировать логику самой программы, но и те методы, которые заложены в современные RAD–средства, позволяют поднять производительность разработки программ в 2-3 раза.

Первой вариантом RAD–средств можно назвать продукт фирмы Microsoft - Visual Basic, появившийся в начале девяностых годов. Но пик популярности подобных средств наступил совсем недавно - сразу несколько ведущих фирм по производству средств создания приложений анонсировали новые версии своих продуктов, которые уже могут по праву называться RAD–средствами. Среди них можно назвать Microsoft Visual C++, Microsoft Visual Java, Power Builder (PowerSoft), Optima++ (PowerSoft), Borland Delphi, Borland C++ Builder и много других. В данной главе основной акцент будет делаться на систему Borland Delphi 3, поскольку именно эта среда использовалась при разработке программы в рамках данного дипломного проекта. Соответственно, большее внимание будет уделяться и диалекту языка Pascal - Object Pascal, который используется в качестве языка программирования в среде Delphi.

2.2 Особенности RAD–средств

Две основных черты RAD–средств - это визуальная компонентность и многократное использование кода. Каждая из этих черт предназначена для повышения производительности программирования. Рассмотрим их подробнее.

2.2.1 Визуальная компонентность

Данный подход является логическим развитием объектно-ориентированного программирования (ООП). Каждый компонент имеет свои события (events), методы (methods) и свойства (properties). Методы и события пришли из объектно-ориентированного программирования, а свойства являются привилегией компонентного подхода. Свойства позволяют изменить состояние компонента, причем как динамически - во время работы программы, так и статически - визуально во время разработки. Естественно, что компоненты имеет все те особенности, что и объекты в объектно-ориентированном программировании - наследование, полиморфизм и инкапсуляция. Таким образом, описание типичного компонента выглядит следующим образом:

TBitBtn = class(TButton)

private

FCanvas: TCanvas;

FGlyph: Pointer;

FStyle: TButtonStyle;

FKind: TBitBtnKind;

FLayout: TButtonLayout;

FSpacing: Integer;

FMargin: Integer;

IsFocused: Boolean;

FModifiedGlyph: Boolean;

procedure DrawItem(const DrawItemStruct: TDrawItemStruct);

procedure SetGlyph(Value: TBitmap);

function GetGlyph: TBitmap;

function GetNumGlyphs: TNumGlyphs;

procedure SetNumGlyphs(Value: TNumGlyphs);

procedure GlyphChanged(Sender: TObject);

function IsCustom: Boolean;

function IsCustomCaption: Boolean;

procedure SetStyle(Value: TButtonStyle);

procedure SetKind(Value: TBitBtnKind);

function GetKind: TBitBtnKind;

procedure SetLayout(Value: TButtonLayout);

procedure SetSpacing(Value: Integer);

procedure SetMargin(Value: I

Здесь опубликована для ознакомления часть дипломной работы "Клиентская часть технологической среды для разработки больших экономических моделей: компоненты поддержки работы эксперта-экономиста при формировании и отладке (в расчетном режиме) структурного текста модели". Эта работа найдена в открытых источниках Интернет. А это значит, что если попытаться её защитить, то она 100% не пройдёт проверку российских ВУЗов на плагиат и её не примет ваш руководитель дипломной работы!
Если у вас нет возможности самостоятельно написать дипломную - закажите её написание опытному автору»


Просмотров: 533

Другие дипломные работы по специальности "Информатика":

Web-сайт для учителей информатики: анализ существующих и разработка нового приложения

Смотреть работу >>

Поиск фотооборудования

Смотреть работу >>

Автоматизированная система складского учета в ЗАО "Белгородский бройлер"

Смотреть работу >>

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

Смотреть работу >>

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

Смотреть работу >>