Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Матричный калькулятор.doc
Скачиваний:
6
Добавлен:
01.05.2025
Размер:
290 Кб
Скачать
☆

2 Техническое задание

2.1 Анализ предметной области

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

2.2 Проектирование программного продукта

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

2.2.1 Функциональные требования

В программе должны быть реализованы:

- представление матрицы в формате, описанном выше. Для этого должен использоваться отдельный класс – класс матриц;

- операции изменения размеров матриц;

- операции преобразования матриц (транспонирование);

- операции инициализации матриц (инициализация единичной, нулевой, случайной матриц);

- операции сложения, и умножения матриц;

- операции умножения матрицы на скаляр и возведение в скалярную степень;

- удобная память калькулятора (буфер).

2.2.2 Требования к интерфейсу

Интерфейс должен обеспечивать пользователю возможность:

  1. удобного ввода данных с клавиатуры;

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

  3. производить все операции, перечисленные в «Функциональных требованиях» интуитивно понятным и удобным способом;

  4. визуально контролировать содержимое буферной памяти калькулятора;

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

Внешний вид программы:

Рисунок 1 - Интерфейс программы

3 Рабочий проект

3.1 Общие сведения (среда функционирования (ос), способ загрузки, способ инсталляции, требования к по, требования к то)

Среда функционирования:

Borland C++ Builder – это среда быстрой разработки, в которой в качестве языка программирования используется язык C++ Builder (C++ Builder Language). Можно сказать, что язык C++ Builder – это расширенный С++. Например, в С++ Builder есть строковый (AnsiString) и логический (Bool) типы, которых нет в классическом С++. К тому же несомненным преимуществом языка C++ Builder является встроенная RAD (rapid application development) которая обеспечивает быструю разработку приложений.

Запуск программы:

Стандартный, т.е. двойной клик на иконке программы.

Способ инсталляции:

Копирование исполняемого файла программы на нужный носитель.

Требования к ПО и к ТО:

  • операционная система Windows 9x/ME/2000/XP/2003

  • 16 Мб оперативной памяти

  • 1 Мб свободного пространства на жестком диске

  • Pentium 133 MHz

3.2 Укрупненный алгоритм

3.2.1 Классы

В данном проекте реализованы 4 класса:

class TMatrix {...}

класс матриц;

class TForm1 : public TForm {...}

главная форма

class TAboutBox1 : public TForm {...}

форма окна About;

class TErrorBox1 : public TForm {...}

форма окна ошибок;

Класс Tmatrix

Переменные:

- квадратный массив целых чисел **_mat;

- беззнаковые целые _NNUM1 и _NNUM2 определяющие размеры массива mat.

Методы

Изменение размера:

1) void DeleteOldMatrix() - удаляет старую матрицу;

2) void InitNewMatrix1() - выделяет память под новую матрицу размером 3x3;

3) void InitNewMatrix1(int M, int N) - выделяет память под новую матрицу размером MxN.

Инициализация:

1) void InitRandom() - заполняет матрицу случайными числами;

2) void InitZero() - заполняет матрицу нулями;

3) void InitE() - если матрица квадратная, то инициализирует единичную матрицу.

Действия с одним элементом:

1) void InitElem(int i, int j, int NewInt) - присваивает элементу с индексом [i][j] значение NewInt;

2) int GetElem(int, int) - возвращает значение элемента с индексом [i][j].

Операции с двумя матрицами:

1) void MSumm(TMatrix &A, TMatrix &B) - возвращает значение суммы матриц A и B;

2) void MDiff(TMatrix &A, TMatrix &B) - возвращает значение разности матриц A и B;

3) void MMult(TMatrix &A, TMatrix &B) - возвращает значение произведения матриц A и B.

Операции с одной матрицей:

1) void MScalMult(int ScalInt) - возвращает значение умножения матрицы на скаляр ScalInt;

2) void MNegative() - возвращает значение умножения матрицы на -1;

3) void MTrans() - возвращает значение транспонированной матрицы.

Класс TForm1

Переменные:

Элементы интерфейса программы в форме указателей на объект;

Четыре переменные матрицы типа TMatrix:

- _Mat1, _Mat2 – Матрицы привязанные к таблицам строк StringGrid 1 и 2 соответственно;

- _Res - Матрица привязанная к таблице StringGrid3 (хранит результат выполнения операций);

- _Mem – Матрица являющаяся памятью калькулятора.

Четыре переменные целого типа, хранящие размеры таблиц строк StringGrid1 и 2:

_SG1_R, _SG1_C, _SG2_R, _SG2_C;

- указатель типа TStringGrid *_SGFocus, определяющий какая таблица строк StringGrid активна в данный момент;

- указатель типа TMatrix *_MatFocus, определяющий какая матрица соответствует активной таблице строк StringGrid;

- переменная целого типа _Edit1Num хранящая значение поля Edit1(поля для значения какого-то целого скаляра);

- переменная целого типа _SGFocusInt определяющая номер активной таблицы StringGrid;

- переменная целого типа _Memory определяющая, используется ли память калькулятора.

Методы:

Конструктор:

__fastcall TForm1(TComponent* Owner);

Функции нажатия на кнопки формы:

Функции чтения формы:

1) ReadMemory() - заносит значения из активной StringGrid в матрицу памяти;

2) ReadForm() - заполняет матрицы _Mat1 и _Mat2 значениями из соответствующих StringGrid;

3) ReadMatrix() - заполняет соответствующую матрицу значениями из активной StringGrid.

Функции вывода значений в интерфейс:

1) Print(int Index) - заполняет соответствующую параметру Index StringGrid из соответствующей матрицы;

2) WriteMemory() -выводит значение памяти калькулятора в активную StringGrid;

3) WriteForm() - заполняет StringGrid3 значениями из матрицы _Res (выводит результат);

4) WriteMatrix() - заполняет активную StringGrid значениями из активной матрицы;

5) SGRight(int SGNUM) - проверяет допустимость значений каждой строки соответствующей параметру SGNUM StringGrid;

6) ExceptCatch(int ErrCode) - хранит инструкции по обработке каждого исключения.

Класс TAboutBox1

Переменные:

Элементы интерфейса формы в форме указателей на объекты;

Методы

Конструктор:

__fastcall TForm1(TComponent* Owner);

Класс TErrorBox1

Переменные:

Переменные типа *TLabel, используемые для вывода в форму сообщений об ошибке;

Остальные элементы интерфейса формы в форме указателей на объекты:

Методы

Конструктор:

__fastcall TForm1(TComponent* Owner).

3.2.2 Модули

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

  1. Unit1.h - используется для хранения класса TForm1;

  2. Unit2.h - используется для хранения класса TMatrix;

  3. Unit3.h - используется для хранения класса TAboutBox;

  4. Unit4.h - используется для хранения класса TErrorBox;

  5. Unit1.cpp - используется для хранения методов класса TForm1 с формой доступа published;

  6. File1.cpp - используется для хранения методов класса TForm1 с формой доступа public(описанные программистом);

  7. Unit2.cpp - используется для хранения методов класса TMatrix;

  8. Unit3.cpp - используется для хранения методов класса TAboutBox;

  9. Unit4.cpp - используется для хранения методов класса TErrorBox;

  10. File2.h - используется для хранения глобальных констант.