МКЭ-процессор. Главное окно МКЭ процессора. Подзадачи. Структура данных МКЭ. Решатели. Конечные элементы, страница 5

 6.2 Организация программного доступа к данным.

Доступ к таблицам физико-механических параметров материалов реализован в двух классах объектов: класс TMatDataTab определяет операции над отдельной таблицей, а класс TMatDataBase – над базой данных в целом.

Экземпляр класса TMatDataTab содержит поля данных:

** DataTab

Double

Динамически распределяемый массив числовых данных. Этот массив содержит максимальное число строк данных (их количество равно общему числу возможных параметров материала и определяется значением константы MATCONST в файле MatData.h)

TabNumber

Int

Отсчетов температуры

Handler

HANDLERTYPE

идентификатор материала

Invar

InvarArray (double *)

Массив констант, не зависящих от температуры

Name

Char[256]

Обозначение материала

* Неиспользуемые строки данных содержат нулевые значения.

Методы работы с данными:

int OK()

Проверка на существование таблицы параметров

HANDLERTYPE Handle()

Обеспечивает доступ к хэндлеру

double& Data(const int i,const int T)

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

Zero()

Заполняет таблицу нулевыми значениями

int UnloadToText(TFileStream*)

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

int FormRows(int*)

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

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

** MatData

TMatDataTab

Адрес массива указателей на таблицы данных

TabNumber

Int

Число используемых таблиц данных

TabSize

Int

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

IsModify

Int

Признак изменения данных

MaxHandler

HANDLERTYPE

SouDataFile

Char[256]

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

int SetFileName(const char*)

Изменяет поле SouDataFile

virtual int Save()

Сохранение материала в *.txt

virtual int SaveAs()

Сохранение материала в *.txt

virtual int Close()

Вывод диалогового окна с запросом на сохранение.

virtual int Open(int)

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

virtual int Create(int)

Выгружаем старую базу данных в текущий директорий модели

int OK()

Проверка на существование таблицы материалов

ClearAll()

Очищает таблицу материалов

char* StoffName(int)

Возвращает обозначение материала

intTempNum(int)

Число отсчетов температуры

Zero(int)

Обнуление таблицы

int Rename(int,const char*)

Переименование таблицы

int LoadFromTxt(const char* FileName)

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

int UnloadToTxt(const char* FileName)

Выгружает базу данных в текстовый файл

Sort()

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

Excluse(int)

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

int Add(const char* s)

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

int Find(const char* s)

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

int FindHandle(HANDLERTYPE)

Возвращает номер таблицы по заданному хэндлеру.

int IsIsotrop(int Tab)

int IsOrthotrop(int Tab)

int Interpol(int Tab, double T, double* Res)

Интерполяция

HANDLERTYPE Handle(int Tab)

Возвращает хэндлер заданной таблицы.

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

6.3 Организация интерактивного доступа к данным.

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

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