Надежность программного обеспечения
Набор требований к программному продукту "Калькулятор". Тестовые сценарии для модульного тестирования. Использование системы визуального проектирования. Разработка программного кода. Вычисление цикломатического числа и построение графы каждого модуля.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 04.11.2014 |
Размер файла | 170,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Министерство образования Республики Беларусь
БЕЛОРУССКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Международный институт дистанционного образования
Кафедра информационных технологий
КОНТРОЛЬНАЯ РАБОТА
Надежность программного обеспечения
Выполнила
Захарик В.Н.
Минск 2014
Содержание
Введение
- 1. Общее описание
- 1.1 Функции продукта
- 1.1.1 Работа в роли пользователя
- 1.2 Пользовательские характеристики
- 1.3 Общие ограничения
- 1.4 Допущения и зависимости
- 1.4.1 Операционные системы
- 1.4.2 Зависимость от процессора
- 2. Специальные требования
- 2.1 Функциональные требования
- 2.1.1 Пользовательский интерфейс
2.1.2 Навигация
- 2.1.3 Параметры геометрических фигур
- 2.1.4 Вывод полученных данных
- 2.1.5 Главное окно
- Задание № 2.Модульное тестирование
- 1. Обзор разработанного программного кода
- 2. Вычисление цикломатического числа и построение графы каждого модуля
- 3. Тестовые сценарии
5.Тестирование
- Литература
Введение
Целью создания этого документа является определение набора требований к программному продукту «Калькулятор». Документ предназначен для разработчиков и тестировщиков ПП. Документ организован таким образом, что позволяет выделять, идентифицировать и выбирать отдельные требования. Требования излагаются на таком уровне детализации, что на их основе разработчики могут создавать программный продукт, а тестировщики - выполнять аттестацию этого продукта.
Программный продукт «Калькулятор», может использоваться для элементарных арифметических действий.
Программное средство обладает интуитивно понятным интерфейсом пользователю, не обладающему глубокими познаниями компьютерных программ. Не требует установки.
программный калькулятор модуль
1. Общее описание
1.1 Функции продукта
В этом разделе описываются функциональные высокоуровневые свойства программного продукта «Калькулятор». Более подробное описание требований находится в разделе 2.0.
1.1.1 Работа в роли пользователя
Программное средство Моделирование должен обеспечивать следующие возможности для пользования:
- возможность ввода начальных чисел;
- возможность выбора арифметических операций;
- средства отображения результатов расчета;
1.2 Пользовательские характеристики
Пользователями описываемого программного продукта могут являться любые люди умеющие обращаться с персональным компьютером.
1.3 Общие ограничения
Ниже перечислены ограничения, которые могут повлиять на возможности команды разработчиков программного обеспечения (ПО):
· Ограничения, связанные с оборудованием: должна быть возможность эксплуатации программы на архитектуре ПК основанной на процессоре PentiumII и выше;
· Требования, накладываемые языками высокого уровня: в качестве среды программирования выбрать Visual Studeo C++ 2008.
1.4 Допущения и зависимости
В этом разделе описаны допущения и зависимости, связанные с программным продуктом «Калькулятор». С целью упрощения будущих ссылок каждое допущение или зависимость помечается соответствующим заголовком. Перечисленные допущения следует принимать во внимание во время создания конфигураций для тестирования «Калькулятор».
1.4.1 Операционные системы
Предполагается, что пользователь выполняет приложение на компьютере, работающем под управлением одной из следующих операционных систем: MicrosoftWindowsXP, MicrosoftWindowsNT 3/51 или выше, MicrosoftWindows 2000, MicrosoftWindows 7 Максимальная.
1.4.2 Зависимость от процессора
Приложение не зависит от типа применяемого процессора. Перечисленные ранее допустимые операционные системы могут использоваться на платформах с процессорами x86, RISC, SPARC, Motorola или РРС.
2. Специальные требования
В этом разделе представлены детализованные требования, относящиеся к программному продукту «Калькулятор».
2.1 Функциональные требования
2.1.1 Пользовательский интерфейс
Пользовательский интерфейс для «Калькулятор» создается с использованием системы визуального проектирования, встроенной в Visual Studeo C++ 2008.
2.1.2 Навигация
Главное окно ПП Visual Studeo C++ 2008, включает в себя следующие пункты:
1. Отображение элементов управления для ввода данных
2. Кнопки для выбора арифметических операций
3. Отображение результата в текстовом окне
2.1.3 Калькулятор
Главное окно содержит поля для ввода начальных значений.
Таблица 1. Поля ввода данных
Поле |
Тип |
Ограничения |
Описание, параметры, ограничения |
|
textBox1 |
textBox |
Поле предназначено только для ввода вещественных или целых числовых символов. |
Вводится число для арифметической операции. |
|
textBox2 |
TextBox |
Поле предназначено только для ввода строковых символов. |
Вводится знак арифметической операции. |
|
textBox3 |
TextBox |
Поле предназначено только для ввода вещественных или целых числовых символов. |
Вводится число для арифметической операции. |
Таблица 2. Кнопки назначения знака арифметической операции
Название кнопки |
Тип |
Ограничения |
Описание |
|
bPlus |
Button |
Знак арифметической операции «+» |
||
bMinus |
Button |
Знак арифметической операции «-» |
||
bUmnoz |
Button |
Знак арифметической операции «x» |
||
bDelit |
Button |
Знак арифметической операции «/» |
2.1.4 Вывод полученных данных
Результат выполнения арифметической операции выводится в поле textBox4.
Таблица 3Окно «textBox4»
Название элемента |
Тип |
Ограничения |
Описание |
|
textBox4 |
TextBox |
Выводится результат арифметической операции. |
2.1.5 Главное окно
Пользователь имеет возможность ознакомиться со списком арифметических операций которые производит данный программный продукт.
2.2 Требования к производительности
Требований к производительности не имеется.
Задание №2. Модульное тестирование
Провести обзор разработанного программного кода. В случае обнаружения ошибок составить отчет
Отдельные модули программы:
- процедура нажатия на кнопку bPlus_Click(System::Object^ sender, System::EventArgs^ e);
- процедура нажатия на кнопку bMinus_Click(System::Object^ sender, System::EventArgs^ e);
- процедура нажатия на кнопку bUmnoz_Click(System::Object^ sender, System::EventArgs^ e);
- процедура нажатия на кнопку bDelit_Click(System::Object^ sender, System::EventArgs^ e);
- процедура изменения содержимого текстового поля textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e);
- функция PlusMinus(System::String ^Znak);
- функция Rezultat(void);
1. В ходе проведения обзора разработанного программного кода были обнаружены следующие ошибки:
Таблица 1. Ошибки обзора
№ Ошибки |
Название модуля/функции |
Описание ошибки |
Важность ошибки (высокая, средняя, низкая) |
Ошибка исправлена Да/Нет |
|
1 |
textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e); |
В процедуре textBox1_TextChanged () не проводилась проверка входных данных на возможность преобразования их в вещественный или целый тип |
высокая |
Да |
1. Для каждого модуля построить графы и вычислить цикломатические числа.
Метрический показатель сложности или цикломатическое число G потокового графа определяется по формуле:
G=R-V+2,
где G - минимальное количество тестовых проходов
R - количество ребер графа;
V - количество вершин графа.
Процедура нажатия на кнопку bPlus_Click(System::Object^ sender, System::EventArgs^ e);
G=1-2+2=1
Процедура нажатия на кнопку bMinus_Click(System::Object^ sender, System::EventArgs^ e);
G=1-2+2=1
Процедура нажатия на кнопку bUmnoz_Click(System::Object^ sender, System::EventArgs^ e);
G=1-2+2=1
Процедура нажатия на кнопку bDelit_Click(System::Object^ sender, System::EventArgs^ e);
G=1-2+2=1
процедура изменения содержимого текстового поля textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e);
G=6-5+2=3
функция PlusMinus(System::String ^Znak);
G=4-4+2=2
функция Rezultat(void);
G=13-9+2=6
2. Разработать тестовые сценарии для модульного тестирования
Таблица 2. Модуль bPlus _Click()
G |
№ сце-нария |
Описание прохода |
Контрольные примеры, позволяющие реализовать описанную ситуацию |
Тест пройден Да/Нет |
|
G=1 |
1 |
a-b |
Z=1; |
Да |
Таблица 3. Модуль textBox1_TextChanged()
G |
№ сценария |
Описание прохода |
Контрольные примеры, позволяющие реализовать описанную ситуацию |
Тест пройден Да/Нет |
|
G=3 |
1 |
a-b-d-e-с |
textBox3->Text=”10” textBox2->Text=”+” s=15 textBox4->Text=Rezultat(); |
Да |
|
2 |
a-b-e-с |
textBox3->Text=”10” textBox2->Text=”+” s=0 |
Да |
||
3 |
a-с |
textBox3->Text=”” textBox2->Text=”” |
Да |
Таблица 4. Модуль PlusMinus
G |
№ сце-нария |
Описание прохода |
Контрольные примеры, позволяющие реализовать описанную ситуацию |
Тест пройден Да/Нет |
|
G=2 |
1 |
a-b-c |
textBox4->Text="15" |
Да |
|
2 |
a-d-c |
textBox4->Text="" |
Да |
Таблица 5. Модуль Rezultat
G |
№ сценария |
Описание прохода |
Контрольные примеры, позволяющие реализовать описанную ситуацию |
Тест пройден Да/Нет |
|
G=6 |
1 |
a-b-s-d-c |
textBox1->Text=10 Z=1 |
Да |
|
2 |
a-b-g-d-c |
textBox1->Text=10 Z=2 |
Да |
||
3 |
a-b-f-d-c |
textBox1->Text=10 Z=3 |
Да |
||
4 |
a-b-e-d-c |
textBox1->Text=10 Z=4 |
Да |
||
5 |
a-b-k-d-c |
textBox1->Text=10 Z=0 |
Да |
||
6 |
a-c |
textBox1->Text=”” Z=0 |
Да |
Все тесты пройдены.
Реализовать рассмотренные выше проходы Microsoft::VisualStudio::TestTools::UnitTesting.
Листинг тэста:
#include "StdAfx.h"
using namespace Microsoft::VisualStudio::TestTools::UnitTesting;
using namespace Calculator;
namespace TestProject1 {
using namespace System;
ref class Form1Test;
/// <summary>
///Это класс теста для Form1Test, в котором должны
///находиться все модульные тесты Form1Test
///</summary>
[TestClass]
public ref class Form1Test
{
private: Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ testContextInstance;
/// <summary>
///Получает или устанавливает контекст теста, в котором предоставляются
///сведения о текущем тестовом запуске и обеспечивается его функциональность.
///</summary>
public: property Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ TestContext
{
Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ get()
{
return testContextInstance;
}
System::Void set(Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ value)
{
testContextInstance = value;
}
#pragma region Дополнительные атрибуты теста
//
//При написании тестов можно использовать следующие дополнительные атрибуты:
//
//ClassInitialize используется для выполнения кода до запуска первого теста в классе
//public: [ClassInitialize]
//static System::Void MyClassInitialize(TestContext^ testContext)
//{
//ClassCleanup используется для выполнения кода после завершения работы всех тестов в классе
//public: [ClassCleanup]
//static System::Void MyClassCleanup()
//{
//TestInitialize используется для выполнения кода перед запуском каждого теста
//public: [TestInitialize]
//System::Void MyTestInitialize()
//{
//TestCleanup используется для выполнения кода после завершения каждого теста
//public: [TestCleanup]
//System::Void MyTestCleanup()
//{
#pragma endregion
/// <summary>
///Тест для PlusMinus
///</summary>
public: [TestMethod]
[DeploymentItem(L"Calculator.exe")]
void PlusMinusTest()
{
Calculator::Form1_Accessor^ target = (gcnew Calculator::Form1_Accessor()); // TODO: инициализация подходящего значения
String^ Znak = System::String::Empty; // TODO: инициализация подходящего значения
bool expected = false; // TODO: инициализация подходящего значения
bool actual;
actual = target->PlusMinus(Znak);
Assert::AreEqual(expected, actual);
Assert::Inconclusive(L"Проверьте правильность этого метода теста.");
}
/// <summary>
///Тест для Rezultat
///</summary>
public: [TestMethod]
[DeploymentItem(L"Calculator.exe")]
void RezultatTest()
{
Calculator::Form1_Accessor^ target = (gcnew Calculator::Form1_Accessor()); // TODO: инициализация подходящего значения
String^ expected = System::String::Empty; // TODO: инициализация подходящего значения
String^ actual;
actual = target->Rezultat();
Assert::AreEqual(expected, actual);
Assert::Inconclusive(L"Проверьте правильность этого метода теста.");
}
/// <summary>
///Тест для textBox1_TextChanged
///</summary>
public: [TestMethod]
[DeploymentItem(L"Calculator.exe")]
void textBox1_TextChangedTest()
{
Calculator::Form1_Accessor^ target = (gcnew Calculator::Form1_Accessor()); // TODO: инициализация подходящего значения
Object^ sender = nullptr; // TODO: инициализация подходящего значения
System::EventArgs^ e = nullptr; // TODO: инициализация подходящего значения
target->textBox1_TextChanged(sender, e);
Assert::Inconclusive(L"Невозможно проверить метод, не возвращающий значение.");
}
namespace TestProject1 {
}
Результат тестирования функции PlusMinus();
public: [TestMethod]
[DeploymentItem(L"Calculator.exe")]
void PlusMinusTest()
{
Calculator::Form1_Accessor^ target = (gcnew Calculator::Form1_Accessor()); // TODO: инициализация подходящего значения
String^ Znak = "+"; // TODO: инициализация подходящего значения
bool expected = true; // TODO: инициализация подходящего значения
bool actual;
actual = target->PlusMinus(Znak);
Assert::IsTrue(actual==expected);
}
Литература
1. Канер, C. Тестирование программного обеспечения / C. Канер [и др.]. - К.: ДиаСофт, 2001.- 544 с.
2. Калбертсон, Р. Быстрое тестирование / Р. Калбертсон, К. Браун, Г. Кобб. - М.: Вильямс, 2002. - 384 с.
3. Майерс, Г. Искусство тестирования программ / Г. Майерс. - М.: Финансы и статистика, 1982.
4. Майерс, Г. Надежность программного обеспечения / Г. Майерс. - М., 1980.
5. Липаев, В.В. Тестирование программных средств / В.В. Липаев. - М., 1999.
6. Липаев, В.В. Обеспечение качества программных средств: методы и стандарты / В.В. Липаев. - М., 2001.
7. Липаев, В.В. Надежность программных средств / В.В. Липаев. - М., 1998.
Приложение листинг программы
#pragma once
namespace Calculator {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Сводка для Form1
/// Внимание! При изменении имени этого класса необходимо также изменить
/// свойство имени файла ресурсов ("Resource File Name") для средства компиляции управляемого ресурса,
/// связанного со всеми файлами с расширением.resx, от которых зависит данный класс. В противном случае,
/// конструкторы не смогут правильно работать с локализованными
/// ресурсами, сопоставленными данной форме.
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: добавьте код конструктора
//
}
protected:
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
private: System::Windows::Forms::TextBox^ textBox1;
protected:
private: System::Windows::Forms::TextBox^ textBox2;
private: System::Windows::Forms::TextBox^ textBox3;
private: System::Windows::Forms::TextBox^ textBox4;
private: System::Windows::Forms::Label^ label1;
private: System::Windows::Forms::Button^ bPlus;
private: System::Windows::Forms::Button^ bMinus;
private: System::Windows::Forms::Button^ bUmnoz;
private: System::Windows::Forms::Button^ bDelit;
private:
/// <summary>
/// Требуется переменная конструктора.
/// </summary>
System::ComponentModel::Container ^components;
System::Int32 Z;
#pragma region Windows Form Designer generated code
/// <summary>
/// Обязательный метод для поддержки конструктора - не изменяйте
/// содержимое данного метода при помощи редактора кода.
/// </summary>
void InitializeComponent(void)
{
this->textBox1 = (gcnew System::Windows::Forms::TextBox());
this->textBox2 = (gcnew System::Windows::Forms::TextBox());
this->textBox3 = (gcnew System::Windows::Forms::TextBox());
this->textBox4 = (gcnew System::Windows::Forms::TextBox());
this->label1 = (gcnew System::Windows::Forms::Label());
this->bPlus = (gcnew System::Windows::Forms::Button());
this->bMinus = (gcnew System::Windows::Forms::Button());
this->bUmnoz = (gcnew System::Windows::Forms::Button());
this->bDelit = (gcnew System::Windows::Forms::Button());
this->SuspendLayout();
//
// textBox1
//
this->textBox1->BorderStyle = System::Windows::Forms::BorderStyle::None;
this->textBox1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 14.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(204)));
this->textBox1->Location = System::Drawing::Point(76, 35);
this->textBox1->Name = L"textBox1";
this->textBox1->Size = System::Drawing::Size(162, 22);
this->textBox1->TabIndex = 0;
this->textBox1->TextChanged += gcnew System::EventHandler(this, &Form1::textBox1_TextChanged);
//
// textBox2
//
this->textBox2->BorderStyle = System::Windows::Forms::BorderStyle::None;
this->textBox2->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 14.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(204)));
this->textBox2->Location = System::Drawing::Point(208, 63);
this->textBox2->Name = L"textBox2";
this->textBox2->ReadOnly = true;
this->textBox2->Size = System::Drawing::Size(30, 22);
this->textBox2->TabIndex = 0;
//
// textBox3
//
this->textBox3->BorderStyle = System::Windows::Forms::BorderStyle::None;
this->textBox3->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 14.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(204)));
this->textBox3->Location = System::Drawing::Point(76, 91);
this->textBox3->Name = L"textBox3";
this->textBox3->ReadOnly = true;
this->textBox3->Size = System::Drawing::Size(162, 22);
this->textBox3->TabIndex = 0;
//
// textBox4
//
this->textBox4->BorderStyle = System::Windows::Forms::BorderStyle::None;
this->textBox4->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 14.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(204)));
this->textBox4->Location = System::Drawing::Point(76, 119);
this->textBox4->Name = L"textBox4";
this->textBox4->ReadOnly = true;
this->textBox4->Size = System::Drawing::Size(162, 22);
this->textBox4->TabIndex = 0;
//
// label1
//
this->label1->AutoSize = true;
this->label1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 14.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(204)));
this->label1->Location = System::Drawing::Point(49, 117);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(21, 24);
this->label1->TabIndex = 1;
this->label1->Text = L"=";
//
// bPlus
//
this->bPlus->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 14.25F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(204)));
this->bPlus->Location = System::Drawing::Point(269, 34);
this->bPlus->Name = L"bPlus";
this->bPlus->Size = System::Drawing::Size(38, 32);
this->bPlus->TabIndex = 2;
this->bPlus->Text = L"+";
this->bPlus->UseVisualStyleBackColor = true;
this->bPlus->Click += gcnew System::EventHandler(this, &Form1::bPlus_Click);
//
// bMinus
//
this->bMinus->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 14.25F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(204)));
this->bMinus->Location = System::Drawing::Point(313, 35);
this->bMinus->Name = L"bMinus";
this->bMinus->Size = System::Drawing::Size(38, 32);
this->bMinus->TabIndex = 2;
this->bMinus->Text = L"-";
this->bMinus->UseVisualStyleBackColor = true;
this->bMinus->Click += gcnew System::EventHandler(this, &Form1::bMinus_Click);
//
// bUmnoz
//
this->bUmnoz->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 14.25F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(204)));
this->bUmnoz->Location = System::Drawing::Point(357, 35);
this->bUmnoz->Name = L"bUmnoz";
this->bUmnoz->Size = System::Drawing::Size(38, 32);
this->bUmnoz->TabIndex = 2;
this->bUmnoz->Text = L"x";
this->bUmnoz->UseVisualStyleBackColor = true;
this->bUmnoz->Click += gcnew System::EventHandler(this, &Form1::bUmnoz_Click);
//
// bDelit
//
this->bDelit->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 14.25F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(204)));
this->bDelit->Location = System::Drawing::Point(401, 35);
this->bDelit->Name = L"bDelit";
this->bDelit->Size = System::Drawing::Size(38, 32);
this->bDelit->TabIndex = 2;
this->bDelit->Text = L"/";
this->bDelit->UseVisualStyleBackColor = true;
this->bDelit->Click += gcnew System::EventHandler(this, &Form1::bDelit_Click);
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(593, 305);
this->Controls->Add(this->bDelit);
this->Controls->Add(this->bUmnoz);
this->Controls->Add(this->bMinus);
this->Controls->Add(this->bPlus);
this->Controls->Add(this->label1);
this->Controls->Add(this->textBox4);
this->Controls->Add(this->textBox3);
this->Controls->Add(this->textBox2);
this->Controls->Add(this->textBox1);
this->Name = L"Form1";
this->Text = L"Калькуляток";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
this->ResumeLayout(false);
this->PerformLayout();
}
#pragma endregion
//нажимаем кнопку +
private: System::Void bPlus_Click(System::Object^ sender, System::EventArgs^ e)
{
PlusMinus("+");
Z=1;
}
// функция выстовления знаков
System::Boolean PlusMinus(System::String ^Znak)
{
if(this->textBox4->Text!="")
{
textBox3->Text=textBox4->Text;
textBox2->Text=Znak;
textBox1->Text="";
textBox4->Text="";
}
else
{
textBox2->Text=Znak;
textBox3->Text=textBox1->Text;
textBox1->Text="";
}
return true;
}
//нажимаем кнопку -
private: System::Void bMinus_Click(System::Object^ sender, System::EventArgs^ e)
{
PlusMinus("-");
Z=2;
}
//нажимаем кнопку x
private: System::Void bUmnoz_Click(System::Object^ sender, System::EventArgs^ e)
{
PlusMinus("x");
Z=3;
}
//нажимаем кнопку /
private: System::Void bDelit_Click(System::Object^ sender, System::EventArgs^ e)
{
PlusMinus("/");
Z=4;
}
//изменяем значение поля ввода данных
private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e)
{
if(textBox3->Text!="" && textBox2->Text!="")
{//если текстовые поля не пусты
System::Double s=0;
if(System::Double::TryParse(textBox1->Text,s))//проверка на значение поля
textBox4->Text=Rezultat();
}
//результат вычислений
System::String ^Rezultat(void)
{
System::String ^Rez="";//результат вычислений
if(textBox1->Text!="")//если текстовое поле не пустое
{
switch(Z)
{
case 1: //если count = 2
{
Rez=System::Convert::ToString(System::Convert::ToDouble(textBox3->Text)+System::Convert::ToDouble(textBox1->Text)); // выполнить сложение
break;
}
case 2: // если count = 2
{
Rez=System::Convert::ToString(System::Convert::ToDouble(textBox3->Text)-System::Convert::ToDouble(textBox1->Text)); // выполнить сложение
break;
}
case 3: // если count = 3
{
Rez=System::Convert::ToString(System::Convert::ToDouble(textBox3->Text)*System::Convert::ToDouble(textBox1->Text)); // выполнить сложение
break;
}
case 4: // если count = 4
{
Rez=System::Convert::ToString(System::Convert::ToDouble(textBox3->Text)/System::Convert::ToDouble(textBox1->Text)); // выполнить сложение
break;
}
default: // если count равно любому другому значению
Rez="";
}
return Rez;
}
//загрузка формы
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
Z=0;//значение знака
}
Размещено на Allbest.ru
Подобные документы
Реализация программного средства "Действия над матрицами". Разработка кода программного продукта на основе готовой спецификации на уровне модуля. Использование инструментальных средств на этапе отладки программного модуля. Выбор стратегии тестирования.
отчет по практике [296,1 K], добавлен 19.04.2015Разработка программного кода и алгоритма действий приложения "калькулятор". Использование функций в программе Matlab. Разработка кнопок, опций, интерфейса, оформление. Части кода Matlab и тестовый набор. Инструкция пользователя по работе программы.
курсовая работа [527,1 K], добавлен 27.09.2014Анализ требований к программному продукту. Требования к информационной и программной совместимости. Проектирование архитектуры программного продукта. Виды программ и программных документов. Общие сведения о С++. Технология разработки программного модуля.
дипломная работа [1,2 M], добавлен 05.08.2011История развития и виды тестирования программного обеспечения. Инсталляционное, регрессионное, конфигурационное, интеграционное, локализационное, модульное тестирование. Методы сокращения трудоемкости модульного тестирования разрабатываемого приложения.
курсовая работа [309,5 K], добавлен 16.12.2015Сравнительный анализ технологий тестирования. Разработка программного модуля "Интеллектуальная обучающая система для широкого перечня курсов". Обоснование необходимости и важности этапа отладки в процессе разработки данного программного обеспечения.
дипломная работа [101,2 K], добавлен 17.06.2011Разработка алгоритма поставленной задачи и реализация средствами автоматизированного проектирования. Составление программного продукта на основе готовой спецификации на уровне модуля, проведение его тестирования, использование инструментальных средств.
контрольная работа [257,5 K], добавлен 01.05.2015Структурная диаграмма программного модуля. Разработка схемы программного модуля и пользовательского интерфейса. Реализация программного модуля: код программы; описание использованных операторов и функций. Вид пользовательской формы с заполненной матрицей.
курсовая работа [215,3 K], добавлен 01.09.2010Структурная диаграмма программного модуля. Нахождение суммы элементов, находящихся над главной диагональю. Реализация программного модуля: код программы; описание использованных операторов и функций. Особенности тестирования программного модуля.
курсовая работа [146,6 K], добавлен 01.09.2010Основные стадии разработки, принципы тестирования и отладка программного модуля "VFS". Особенности проектирования на языке UML. Методы "грубой силы" и их применение при отладке программы. Вредные факторы, присутствующие на рабочем месте программиста.
дипломная работа [827,0 K], добавлен 07.03.2012История возникновения тестирования программного обеспечения, основные цели и особенности его проведения. Виды и типы тестирования, уровни его автоматизации. Использование и исследование необходимых технологий. Полный цикл прогона всей системы мониторинга.
дипломная работа [1,7 M], добавлен 03.05.2018