Автор работы: Пользователь скрыл имя, 26 Февраля 2012 в 21:45, курсовая работа
С++ был создан в начале 80-х Бьерном Страуструпом. Страуструп имел перед собой две цели: (1) оставить С++ совместимым с обычным С и (2) расширить С конструкциями объектно-ориентированного программирования (ООП), основанными на понятии класса в Simula 67.
Конечная цель создания С++ - предоставить профессиональному программисту язык, который можно использовать при создании объектно-ориентированного программного обеспечения, не жертвуя эффективностью или переносимостью С.
Введение 3
1. Техническое задание 6
2. Рабочий проект 7
2.1.Общие сведения (среда функционирования (ОС), способ загрузки,
способ инсталляции, требования к ПО, требования к ТО) 7
2.2. Алгоритм программы 8
2.2.1.Классы 8
2.2.2.Диаграмма классов 13
2.2.3.Модули 14
2.2.4.Схема алгоритма 15
2.2.5.Диаграмма последовательности 16
2.2.6.Обработка исключений 17
2.3.Руководство пользователя 18
Заключение……………………………..……………………………………….........23
Список используемой литературы…………………..……..…………....…..…….. 24
Функции вывода значений в интерфейс:
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)
Хранит инструкции по обработке каждого
исключения
Класс TAboutBox:
Переменные:
Элементы интерфейса формы в форме указателей на объекты;
Методы:
Конструктор:
__fastcall TForm1(TComponent* Owner);
Класс TAboutBox1:
Переменные:
Переменные типа *TLabel, используемые для вывода в форму сообщений об ошибке;
Остальные элементы интерфейса формы в форме указателей на объекты;
Методы:
Конструктор:
__fastcall TForm1(TComponent* Owner);
2.2.2 Диаграмма классов
2.2.3.Модули программы
Исходный текст программы размещается в четырех модулях (восьми файлах) и двух дополнительных файлах:
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 используется для хранения методов класса TAboutBox1;
10) File2.h используется для хранения глобальных констант;
2.2.4.Схема алгоритма
Любая функция нажатия функциональной кнопки главного окна использует одну из функций чтения формы и/или одну из функций вывода в форму описанных в файле File1.cpp
Сначала происходит чтение одной или двух таблиц строк StringGrid с занесением значений из них в соответствующие матрицы.
Затем с помощью методов класса TMatrix данные обрабатываются и выводятся по необходимости в результирующую или одну из рабочих StringGrid.
Рассмотрим на примере функции нажатия кнопки сложения.
1) Чтение обеих StringGrid с помощью метода ReadForm() с занесением результата в _Mat1 и _Mat2.
2) Присвоение матрице _Res значения суммы матриц _Mat1 и _Mat2 с помощью метода класса TMatrix MSumm(TMatrix, TMatrix).
3) Вывод матрицы _Res в форму с помощью функции WriteForm().
2.2.5 Диаграмма последовательности
2.2.6.Обработка исключений
В программе генерируются исключения с кодом целого типа.
Все они делятся на 6 групп:
Код 1: Несоответствующий выбранной операции размер матрицы (матрица должна быть квадратной).
Код 2: Несоответствующие выбранной операции размеры матриц (матрицы должны иметь одинаковый размер).
Код 3: Недопустимые данные (элементами матриц могут быть только числа).
Код 4: Недопустимые данные (независимое поле Edit должно содержать только числа).
Код 5: Несоответствующие выбранной операции размеры матриц (высота первой матрицы должна соответствовать ширине второй).
Код 10: Внутренняя ошибка класса TMatrix (неправильные индексы). От пользователя не зависит.
При поимке любого исключения вызывается функция ExceptCatch(int ErrorCode), которая выводит соответствующее сообщение об ошибке в форму TErrorBox1 и показывает саму форму.
2.3.Руководство пользователя
Интерфейс любой программы должен отличаться легкой восприимчивостью пользователем.
Если пользователь сможет разобраться в программе без руководства, то работа программиста будет считаться выполненной великолепно. В этой работе тоже были приложены усилия для создания простого, понятного и удобного интерфейса.(рис. 1)
рис. 1- показан интерфейс программы.
В правой части окна(одна над другой) находятся три основные панели.
Каждая из двух верхних представляют собой панель, включающую рабочую таблицу строк (рис. 2а) и два объекта (рис. 2б,в) изменения размера таблицы.
Каждый объект представляет собой числовое поле и две кнопки «+» и «-». Верхний объект изменения размера таблицы (рис2.б) служит для изменения высоты таблицы, нижний (рис. 2в) – ширины.
рис. 2- Одна из двух верхних панелей.
Каждая такая панель представляет собой матрицу.
Для ввода данных необходимо:
1. Выбрать нужный размер
2. Выделяя курсором необходимую ячейку ввести значение данной ячейки.
рис. 3- Результирующая панель.
В правом нижнем углу окна находится результирующая панель.
Она представляет собой панель, включающую результирующую таблицу (рис. 2а) и две кнопки (рис. 3в) для переноса данных из результирующей таблицы в одну из рабочих.
Верхняя кнопка «ТО 1» служит для переноса данных в первую матрицу, нижняя – во вторую.
В левом верхнем углу отображается информация о размерах матрицы (рис. 3б): высоте и ширине.
Панель основных операций.
Над матрицами можно выполнять операции сложение, вычитание, умножение с помощью нажатия соответствующей кнопки на панели основных операций
(рис. 4).
«*» - умножение матриц(рис. 4а);
«+» - сложение матриц(рис. 4б);
«-» - вычитание матриц(рис. 4в);
«Модуль» - подсчет определителя матрицы(рис. 4г);
рис. 4- Панель основных операций.
Операции преобразования матрицы.
Во время работы матрицу можно преобразовать с помощью нажатия соответствующей кнопки на панели дополнительных операций (рис. 5).
«Е» - инициализация единичной матрицы(рис. 5а);
«0» - инициализация нулевой матрицы(рис. 5д);
«Rand» - инициализация случайной матрицы(рис. 5е);
«Integer» - инициализация матрицы целым из поля «Число» (рис. 5б)
«- Х» - умножение матрицы на –1(рис. 5з);
«Х * С» - умножение матрицы на скаляр(рис. 5в);
«Х ^ C» - возведение матрицы в скалярную степень(последовательное умножение на себя)(рис. 5ж);
«Т» - транспонирование матрицы(рис. 5г);
рис. 5- Панели дополнительных операций
Все эти операции производятся над активной матрицей.
Чтобы сделать матрицу активной необходимо сначала выделить соответствующую ей таблицу, а затем нажать соответствующую операции кнопку.
Для операций умножения на скаляр и возведения в скалярную степень используется целое число.
Это число вводится в числовое поле (рис. 6) находящееся в верхней правой части окна.
рис. 6 - числовое поле
Для очистки всей формы (обнуления всех матриц формы) используется кнопка «С»(рис. 7), находящаяся в левом нижнем углу окна.
рис. 7 - кнопка «обнуления всех матриц формы»
Использование памяти.
В данном калькуляторе можно использовать память для хранения одной матрицы.
Все операции с памятью производятся с помощью кнопок на панели памяти
(рис. 8)
Чтобы занести в память матрицу нужно выделить матрицу кликом мыши и нажать кнопку «М». На панели появится индикатор «М».
Чтобы вынести результат из памяти нужно выделить матрицу кликом мыши и нажать кнопку «МR».
Чтобы очистить память необходимо нажать «МС». Индикатор «М» исчезнет.
рис. 8 – Кнопки панели памяти.
Для получения информации о программе нажмите кнопку «О программе», находящуюся в левом верхнем углу окна.
рис. 9 - кнопка «О программе»
Заключение
Данная программа является типичным примером реализации программ использованием объектно-ориентированной технологии программирования
созданных для Windows с помощью Borland C++ Builder.
Достоинством данной программы является ее простота в использовании в наиболее распространенной, на данный момент, операционной системе Windows и то, что при необходимости можно добавить нужные кнопки-функции.
Недостаток программы в том, что при наборе очень сложных функций одновременно программа выдает ошибку набора. Поэтому чтобы избежать этой ошибки необходимо соблюдать последовательность и правильность набора команд.
Список использованной литературы
1. Бьерн Страуструп «Язык программирования C++» специальное издание. Москва, Санкт – Петербург,2002.
2. Г.Шилдт «Теория и практика Си++.» СПб.:BHV – Санкт-Петербург, 1996.
3. Н. Подбельский «Язык С++»; Питер, Санкт – Петербург 2004.
4. Валерий Лаптев «С++ Экспресс курс», БХВ – Санкт-Петербург, 2004.
5. А.Я. Лемих «С/С++ в примерах и задачах» Москва, 2004.
6. Кун С. «Матричные процессоры на СБИС». М. 1991
7. «Транспьютеры. Архитектура и ПО». Пер. с англ./ Под ред. Г. Харпа.- М.: Радио и связь, 1993.
8. «СуперЭВМ. Аппаратная и программная организация.»/ Под ред. С.Фернбаха. Пер. с англ. - М.: Радио и связь, 1991.
9. «Вычислительные комплексы, системы и сети» / А.М.Ларионов, С.А.Майоров, Г.И.Новиков: Учебник для вузов. Л:Энергоиздат. Ленингр.отд-ние, 1987.
10. «Фути К., Судзуки Н. Языки программирования и схемотехника» СБИС: Пер. с япон. М.: Мир, 1988.
11. Головкин Б.А. «Параллельные вычислительные системы». М.:Наука, 1980.
12. Н.Культин «Практика программирования на С++». «Питер», Санкт – Петербург 2003.
13. А.Л. Фридман «Язык программирования С++ » курс лекций; Интернет Университет Информационных технологий; Москва 2003
14. Т.А. Павловская «С/С++ Программирование на языке высокого уровня» учебник для вузов; Питер, Санкт – Петербург 2004.
15. http://www.parallel.ru
16. http://www.rusmath.ru
ПРИЛОЖЕНИЕ А.
Исходный код программы
Project1.cpp
//----------------------------
#include <vcl.h>
#pragma hdrstop
//----------------------------
USEFORM("Unit1.cpp", Form1);
USEFORM("Unit3.cpp", AboutBox);
USEFORM("Unit4.cpp", AboutBox1);
//----------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__
Application->CreateForm(__
Application->CreateForm(__
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&
}
}
return 0;
}
//----------------------------
Unit1.h
//----------------------------
#ifndef Unit1H
#define Unit1H
#ifndef File1H
#define File1H
//----------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include "CSPIN.h"
#include <ExtCtrls.hpp>
#include <Grids.hpp>
#include "Unit2.h"
class TMatrix;
//----------------------------
class NSquare {};
class InsideError {};
class NRightSize {};
Информация о работе Конструирование программ и языки программирования