- •Курсовая работа
- •Глава 1
- •Глава 2
- •2.1.1 Матрицы
- •2.1.2 Определители.
- •2.2.1. Функциональные требования
- •2.2.2. Требования к интерфейсу
- •Глава 3
- •3.2.1.Классы
- •3.2.2.Модули
- •3.2.3.Схема алгоритма
- •3.2.4.Обработка исключений
- •Исходный текст программы Project1.Cpp
- •Unit1.H
- •Unit1.Cpp
- •File1.Cpp
- •Unit2.H
- •Unit2.Cpp
- •File2.H
2.2.1. Функциональные требования
В программе должны быть реализованы:
Представление матрицы в формате, описанном выше. Для этого должен использоваться отдельный класс – класс матриц.
Операции изменения размеров матриц.
Операции преобразования матриц (транспонирование).
Операции инициализации матриц (инициализация единичной, нулевой, случайной, одночисельнной матрицы).
Операции сложения, и умножения матриц.
Операции умножения матрицы на скаляр и возведение в скалярную степень.
Удобная память калькулятора (буфер).
2.2.2. Требования к интерфейсу
Интерфейс должен обеспечивать пользователю возможность:
удобного ввода данных с клавиатуры;
изменять размер вычисляемых матриц и контролировать текущие размеры рабочих матриц и результирующей;
Производить все операции, перечисленные в «Функциональных требованиях» интуитивно понятным и удобным способом;
Визуально контролировать содержимое буферной памяти калькулятора;
Не допускать обработки исходных данных, противоречащих логике работы программы путем вывода сообщений об ошибке;
Внешний вид программы:
Глава 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 значениями из активной матрицы;
1) SGRight(int SGNUM)
Проверяет допустимость значений каждой строки соответствующей параметру SGNUM StringGrid;
2) ExceptCatch(int ErrCode)
Хранит инструкции по обработке каждого исключения;
Класс TAboutBox1:
Переменные:
Элементы интерфейса формы в форме указателей на объекты;
Методы:
Конструктор: _fastcall TForm1(TComponent* Owner);
Класс TErrorBox1:
Переменные:
Переменные типа *TLabel, используемые для вывода в форму сообщений об ошибке;
Остальные элементы интерфейса формы в форме указателей на объекты;
Методы:
Конструктор: _fastcall TForm1(TComponent* Owner);