- •Курсовой проект
- •Санкт-Петербург
- •Введение
- •1Теоретические основы разработки
- •1.2Описание предметной области
- •1.3Анализ методов решения.
- •1.4 Обзор средств программирования
- •2.3. Текст программы
- •2.4. Описание программы
- •2.6.3.1. Требования к функциональным характеристикам
- •2.6.3.2. Требования к информационной и программной совместимости
- •2.6.3.3. Требования к маркировке и упаковке
- •2.6.5. Средства и порядок испытаний
- •2.6.6. Методы испытаний
- •2.6.6.1. Для проверки способности обеспечивать ввод исходных данных
- •2.6.6.2. Для проверки способности программы правильно находить матрицу.
- •2.6.6.3. Для проверки способности выводить результат на экран или в файл необходимо:
- •2.7. Протокол испытаний
- •Результаты испытаний программы
- •Заключение
- •Список литературы
2.6.6. Методы испытаний
2.6.6.1. Для проверки способности обеспечивать ввод исходных данных
необходимо:
-запустить программу;
-запустить первый и второй сценарии работы
2.6.6.2. Для проверки способности программы правильно находить матрицу.
- открыть программу;
-запустить любой из сценариев
-ввести исходные данные
- вывести результат на экран, в файл;
-проверить результат перемножения с помощью калькулятора
2.6.6.3. Для проверки способности выводить результат на экран или в файл необходимо:
-запустить программу;
-запустить любой из 4 модулей
-выбрать вывод результата на экран или файл
2.7. Протокол испытаний
Результаты испытаний программы представлены в таблице 1.
Результаты испытаний программы
Таблица 1
Проверяемые требования |
Сообщения программы и вводимые значения |
Результаты |
Способность программы обеспечивать ввод исходных данных |
Вводились исходные данные – имена файлов. Программа их приняла и вывела введенные таблицы. |
Успешное создание таблиц из файла |
Способность программы обеспечивать вывод данных. |
После ввода исходных данных программа вывела результат, который по требованию записался в текстовый файл |
Успешная запись в файл |
Способность программы правильно рассчитывать данные |
В приложении представлена проверка правильности расчета результатов |
Правильные результаты |
Заключение
Разработанная в ходе выполнения курсового проекта программа удовлетворяет всем требованиям задания, что подтверждается протоколом испытаний.
Разработанная программа позволяет вычислять значение матрицы, полученной путем перемножения исходных матриц, что позволяет упрощать расчеты в некоторых областях науки и производства.
Список литературы
Корн Г., Корн Т. Алгебра матриц и матричное исчисление // Справочник по математике. — 4-е издание. — М: Наука, 1978. — С. 392—394..
Стандарты Единой Системы Программной Документации:
ГОСТ 19.105-78 Общие требования к программным документам
ГОСТ 19.106-78 Требования к программным документам, выполненным печатным способом
ГОСТ 19.201-78 Техническое задание. Требования к содержанию и оформлению
ГОСТ 19.301-78 Программа и методика испытаний. Требования к содержанию и оформлению
ГОСТ 19.401-78 Текст программы. Требования к содержанию и оформлению
ГОСТ 19.402-78 Описание программы. Требования к содержанию и оформлению
ГОСТ 19.505-79 Руководство оператора. Требования к содержанию и оформлению
ГОСТ 19.701-90 Схемы алгоритмов программ, данных и систем. Условные обозначения и правила выполнения
Приложение 1
Структура класса Matrix
#include "iostream"
using namespace std;
class Matrix
{
public:
//два конструктора
Matrix(); //создание пустой матрицы, без каких-либо параметров
Matrix(int newsizeL,int newsizeC,int newmine,int newmaxe); //создание матрицы с параметрами
//деструктор
virtual ~Matrix(); //удаление матрицы
//ввод/вывод данных
bool generateMatrix(); //генерирование матрицы
bool manualInput(); //ввод матрицы вручную
bool LoadFromFile(char[255]); //загрузка матрицы из файла
bool SaveToFile(char[255]); //запись в файл
bool PrintOnDisplay(); //вывод на экран
bool Modify(int line,int col,int newcapt); //изменить элемент матрицы
//перемножение
bool CheckMultiply(Matrix *MultMatrix); //проверить возможность умножения матриц
bool Multiply(Matrix *MultMatrix); //произвести умножение этой матрицы (A) на другую матрицу(B) - A*B
private:
int sizelines;//число строк
int sizecolumns;//число столбцов
int **elements;//содержимое матрицы
int mine;//минимально допустимый по значению элемент матрицы
int maxe;//максимально допустимый по значению элемент матрицы
int i,j,k; //счетчики(для совместимости с VS2006)
};
Основной код программы
// Multiply.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "Matrix.h"
void ChooseOutput(Matrix *RES)
{
int OutN=-1;
//bool Correct=true;
char *filename=new char[255];
while(OutN<1||OutN>3)
{
printf("print result on:\n");
printf("1. Display\n");
printf("2. File\n");
printf("3. Printer\n");
cin>>OutN;
switch(OutN)
{
case 1:
RES->PrintOnDisplay();
break;
case 2:
printf("input filename:\n");
cin>>filename;
RES->SaveToFile(filename);
break;
case 3:
break;
}
}
system("pause");
}
Matrix *LoadFromFile(bool needMenuFile,int MaxSize,int Mine,int Maxe)
{
printf("input filename:\n");
char *filename=new char[255];
cin>>filename;
Matrix *A=new Matrix();
A->LoadFromFile(filename); //добавить проверку на открытие файла
if(needMenuFile)
{
int ChL=-1;
int Cl,Cc,Nc;
while(ChL!=2)
{
printf("Correction\n");
printf("1.correction matrix\n");
printf("2.save to file and continue\n");
cin>>ChL;
switch(ChL)
{
case 1:
printf("line of correction:\n");
cin>>Cl;
printf("column of correction:\n");
cin>>Cc;
printf("new value\n");
cin>>Nc;
A->Modify(Cl,Cc,Nc);
break;
case 2:
printf("input new filename:\n");
memcpy(filename,0,255);
cin>>filename;
A->SaveToFile(filename);
break;
}
}
}
return A;
}
Matrix *LoadFromKeyboard(bool NeedMenuKeyboard,int MaxSize,int Mine,int Maxe)
{
Matrix *A=new Matrix();
A->manualInput();
if(NeedMenuKeyboard)
{
char *filename=new char[255];
int ChK=-1;
printf("Correction\n");
printf("1. Save matrix to file\n");
printf("other. continue\n");
switch(ChK)
{
case 1:
printf("input new filename:\n");
memcpy(filename,0,255);
cin>>filename;
A->SaveToFile(filename);
break;
default:
break;
}
}
return A;
}
Matrix *ChooseInput(bool NeedMenuKeyboard,bool needMenuFile,int MaxSize,int Mine,int Maxe)
{
Matrix *InM;
int ChM=-1;
while(ChM!=1 &&ChM!=2)
{
printf("Input method:\n");
printf("1.Keyboard\n");
printf("2.File\n");
cin>>ChM;
}
switch(ChM)
{
case 1:
InM=LoadFromKeyboard(NeedMenuKeyboard,MaxSize,Mine,Maxe);
break;
case 2:
InM=LoadFromFile(needMenuFile,MaxSize,Mine,Maxe);
break;
}
return InM;
}
void scenario1()
{
Matrix *A=new Matrix();
A=LoadFromFile(0,100,-9999,9999);
A->PrintOnDisplay();
Matrix *B=new Matrix();
B=LoadFromFile(0,100,-9999,9999);
B->PrintOnDisplay();
Matrix *MM=A->Multiply(B);
ChooseOutput(MM);
}
void scenario2()
{
Matrix *A=new Matrix();
A->manualInput();
Matrix *B=new Matrix();
B->manualInput();
Matrix *MM=A->Multiply(B);
ChooseOutput(MM);
}
void scenario3()
{
ChooseInput(true,false,1000,-999999,999999);
}
void scenario4()
{
ChooseInput(false,true,1000,-999999,999999);
}
int main(int argc, char* argv[])
{
int ScN=-1;//номер задачи
while(ScN!=0)
{
system("cls");
printf("input task\n");
printf("1. m,n<=100 Mij>=-100 Mij<=100 load from files\n");
printf("2. m,n<=10 Mij>=0 Mij<=1000 keyboard\n");
printf("3. m,n<=20 keyboard|file\n");
printf("4. m,n<=20 keyboard|file|modify\n");
printf("0. Exit\n");
cin>>ScN;
switch(ScN)
{
case 1:
scenario1();
break;
case 2:
scenario2();
break;
case 3:
scenario3();
break;
case 4:
scenario4();
break;
case 5:
exit(SUCCESS);
break;
}
}
return 0;
}
Приложение 2
Пример 1.Решение системы
Проверка:
|
Результаты сошлись