Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая.docx
Скачиваний:
21
Добавлен:
21.05.2015
Размер:
813.67 Кб
Скачать

2.Технология разработки приложения

2.1 Алгоритм решения

В самом начале выполнения программы появляется форма, где пользователю предлагается заполнить соответствующие поля необходимыми для расчета данными.

В начале выполнения программы производится проверка полноты и корректности введенных данных. Если пользовательские данные не прошли проверку – выводится соответствующее уведомление.

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

После этого результаты выводятся в специально отведенные окна, а выполнение программы прекращается.

2.2. Макет приложения

2.2.1 Form

Макет приложения. Модель Шумана (tabPage1)

menuStrip1

tabPage1

tabPage3

tabPage5

tabPage4

groupBox1

Label52

label58

textBox17

label61

label63

label51

label60

label64

textBox15

label59

label65

label50

label48

label66

textBox16

label62

label67

label49

abel49

textBox14

label54

textBox19

label53

textBox18

button5

button2

statusStrip1

menuStrip1 – выводит список меню содержащий пункты «Сохранить результаты» и «Выход»

tabPage1 – вкладка элемента tabControl1, содержащая в себе элементы: label49—54, label63—67, label 61, label59, label48, label62, label58, textBox14—19, groupBox4

label52—принимает текстовое значение «Командных строк в программе»

label51—принимает текстовое значение «Строк содержащих ошибку»

label50—принимает текстовое значение «Дней работы»

label49—принимает текстовое значение «Ошибок за время работы»

label58—принимает текстовое значение «Исходные данные»

label54—принимает текстовое значение «Конечный результат»

label61—принимает сокращенное значение «КСП»

label60—принимает сокращенное значение «ССО»

label59—принимает сокращенное значение «ДР»

label48—принимает сокращенное значение «ОВР»

label62—принимает сокращенное значение «КП»

textBox17—получает значение введенных пользовательских данных в графу «Командных строк в программе»

textBox15— получает значение введенных пользовательских данных в графу «Строк содержащих ошибок»

textBox16— получает значение введенных пользовательских данных в графу «Дней работы»

textBox14— получает значение введенных пользовательских данных в графу «Ошибок за время работы»

textBox18— получает значение введенных пользовательских данных в графу «Коэффициент пропорциональности», по умолчанию установлено значение «1».

textBox19—служит для вывода результатов вычислений, произведенных по формуле Шумана.

button5 – принимает текстовое значение «Очистить», а также отчищает все поля в данном блоке

2.2.2 Form

Макет приложения. Модель Джелинского-Моранды(tabPage3)

menuStrip1

tabPage1

tabPage3

tabPage5

tabPage4

groupBox3

label41

textBox10

label42

textBox12

label45

textBox11

label46

textBox13

button3

label14

textBox4

label69

label73

label72

label71

label15

label70

label19

label16

label17

label18

button3

statusStrip1

tabPage3—содержит все группы объектов, таких как label41-42, label45-46, label73-69, label19-14, textBox4, button3, textBox13-10, groupBox3.

label41— принимает текстовое значение «Число ошибок, первоначально находящихся в программе.

label42— принимает текстовое значение «Коэффициент пропорциональности»

label45— принимает текстовое значение «Количество ошибок спустя время»

label46— принимает текстовое значение «время обнаружения i ошибки»

label73— принимает текстовое значение «Результат»

label69— принимает текстовое значение «Исходные данные»

label72— принимает сокращенное значение «ЧОПНВП»

label71— принимает сокращенное значение «КП»

label70— принимает сокращенное значение «КОСВ»

label15— принимает сокращенное значение «ВОО»

label14—принимает текстовое значение «Конечный результат»

Элементы label19—label16 принимают одинаковые начальные текстовые значения «null»

textBox10— получает значение введенных пользовательских данных в графу «Число ошибок, первоначально находящихся в программе»

textBox12— получает значение введенных пользовательских данных в графу «Коэффициент пропорциональности»

textBox11— получает значение введенных пользовательских данных в графу «Количество ошибок спустя время»

textBox13— получает значение введенных пользовательских данных в графу «Время обнаружения ошибки»

textBox4— служит для вывода результатов вычислений, произведенных по формуле Джелинского-Моранды.

button3—– принимает текстовое значение «Очистить», а также отчищает все поля в данном блоке

2.2.3

Макет приложения. Модель Миллса(tabPage5)

menuStrip1

tabPage1

tabPage3

tabPage5

tabPage4

groupBox1

label9

label5

button1

label2

textBox1

label3

label6

label7

textBox2

label4

label8

textBox3

label13

label44

button2

statusStrip1

tabPage5—содержит группы объектов, label9-1, textBox3-1, groupBox1, button1, label13, label44.

label2—принимает текстовое значение «Количество искусственно внесенных ошибок»

label3— принимает текстовое значение «Число собственных найденных ошибок»

label4— принимает текстовое значение «Число обнаруженных к моменту оценки искусственных ошибок»

label5— принимает текстовое значение «Результат»

label9— принимает текстовое значение «Исходные данные»

label13— принимает текстовое значение «Конечный результат»

label6— принимает сокращенное значение «КИВО»

label7— принимает сокращенное значение «ЧОНО»

label8— принимает сокращенное значение «ЧОКМОИО»

label10—первоначально получает пустое значение, а после получает значения графы «Количество искусственно внесенных ошибок»

label11—первоначально получает пустое значение, а после получает значения графы «Число собственных найденных ошибок»

label12— первоначально получает пустое значение, а после получает значения графы «Число обнаруженных к моменту оценки искусственных ошибок»

label44—получает и выводит результат вычислений по формуле Миллса

button1— принимает текстовое значение «Очистить», а также отчищает все поля в данном блоке.

textBox1——получает значение введенных пользовательских данных в графу «Количество искусственно внесенных ошибок»

textBox2——получает значение введенных пользовательских данных в графу «Число собственных найденных ошибок»

textBox3——получает значение введенных пользовательских данных в графу «Число обнаруженных к моменту оценки искусственных ошибок»

2.2.4 Form

Макет приложения. Модель Липова(tabPage4)

menuStrip1

tabPage1

tabPage3

tabPage5

tabPage4

2.2.4 Form

groupBox5

label74

textBox20

button2

label76

textBox22

textBox23

label77

textBox24

label78

label75

textBox24

label90

label91

label92

label86

label82

label85

label84

label87

label89

label88

label93

label94

label95

label97

label96

button4

statusStrip1

tabPage4—содержит группы объектов, label78-74, label84-97, label82, groupBox5, button4.

label74—принимает текстовое значение «Количество используемых тестов»

label76—принимает текстовое значение «Общее количество искусственно внесенных ошибок

label77—принимает текстовое значение «Количество собственных ошибок, до начала тестирования

label78— принимает текстовое значение «Количество внесенных ошибок к концу тестирования

label75—принимает текстовое значение «Количество собственных ошибок к концу тестирования»

label86—принимает текстовое значение «Результат»

label82— принимает текстовое значение «Исходные данные»

label90— принимает текстовое значение «Конечный результат»

label91—принимает текстовое значение «Вероятность обнаружения ошибки при использовании различного числа m тестов»

label92—получает и выводит результат вычислений по формуле Липова, начальное значение «null»

label85— принимает сокращенное значение «КИТ»

label84— принимает сокращенное значение «ОКИВО»

label87— принимает сокращенное значение «КСОДНТ»

label88— принимает сокращенное значение «КВОКТ»

label89— принимает сокращенное значение «КСОКТ»

textBox20——получает значение введенных пользовательских данных в графу «Количество используемых тестов»

textBox22——получает значение введенных пользовательских данных в графу «Общее количество искусственных внесенных ошибок»

textBox23——получает значение введенных пользовательских данных в графу «Количество собственных ошибок до начала тестирования»

textBox24——получает значение введенных пользовательских данных в графу «Количество внесенных ошибок к концу тестирования»

textBox21——получает значение введенных пользовательских данных в графу «Количество собственных ошибок к концу тестирования»

button4—принимает текстовое значение «Очистить», а также отчищает все поля в данном блоке.

2.3 Описание программы

2.3.1 tabPage1

Иерархия классов

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

Используемые элементы:

Button;

textBox;

label;

statusStrip;

menuStrip;

groupBox;

Обработчики событий

private void button5_Click(object sender, EventArgs e)

Функции

В данной вкладке одна функция

Функция Suman производит расчет по формуле Шумана и передает результат в соответствующий объект вывода, как изображено на рисунке 1.1

public void Lipov(EventArgs e_Lipov)

{

try

{

if (textBox20.Text == "")

{

MessageBox.Show("Введите количество используемых тестов!", "Модель Липова");

}

if (textBox22.Text == "")

{

MessageBox.Show("Введите общее количество искусственно внесенных ошибок!", "Модель Липова");

}

if (textBox23.Text == "")

{

MessageBox.Show("Введите количество собственных ошибок до начала тестирования!", "Модель Липова");

}

if (textBox21.Text == "")

{

MessageBox.Show("Введите количество собственных ошибок к концу тестирования!", "Модель Липова");

}

if (textBox24.Text == "")

{

MessageBox.Show("Введите количество внесенных ошибок к концу тестирования!", "Модель Липова");

}

// Проверка на введенные значения

int t20;

if (!int.TryParse(textBox20.Text, out t20))

MessageBox.Show("Введите числовое значение!");

int t21;

if (!int.TryParse(textBox21.Text, out t21))

MessageBox.Show("Введите числовое значение!");

int t22;

if (!int.TryParse(textBox22.Text, out t22))

MessageBox.Show("Введите числовое значение!");

int t24;

if (!int.TryParse(textBox24.Text, out t24))

MessageBox.Show("Введите числовое значение!");

int t23;

if (!int.TryParse(textBox23.Text, out t23))

MessageBox.Show("Введите числовое значение!");

}

catch (Exception ex)

{

MessageBox.Show("Ошибка:" + ex.Message);

}

double m, q, S, N, n, V;

m = Double.Parse(textBox20.Text);

S = Double.Parse(textBox22.Text);

N = Double.Parse(textBox23.Text);

n = Double.Parse(textBox21.Text);

V = Double.Parse(textBox24.Text);

q = (n + V) / n;

double Q = (m / (n + V)) * Math.Pow(n + V, q) * Math.Pow(m - n - V, 1 - q) * ((N / n) * (S / V) / ((N + S) / (n + V)));

label92.Text = Q.ToString();

label93.Text = m.ToString();

label94.Text = S.ToString();

label95.Text = N.ToString();

label96.Text = V.ToString();

label97.Text = n.ToString();

if (Q < 0)

{

MessageBox.Show("Введены значения, при которых результат отрицателен!", "Модель Липова");

}

}

Результат работы вы можете видеть на рисунке 1.2

Рисунок 1.2 Расчет по модели Шумана

2.3.2 tabPage3

Иерархия классов

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

Используемые элементы:

Button;

textBox;

label;

statusStrip;

menuStrip;

groupBox;

Обработчики событий

private void button3_Click(object sender, EventArgs e)

Функции

В данной вкладке тоже одна функция

Функция Moranda производит расчет по формуле Джелинского-Моранды и выводит результат

public void Moranda(EventArgs e_Moranda)

{

try // Проверка вводимых значений на число и пустоту

{

if (textBox11.Text == "")

{

MessageBox.Show("Введите количество ошибок спустя время!", "Модель Джелинского-Моранды");

}

if (textBox13.Text == "")

{

MessageBox.Show("Введите время обнаружения i-ошибки!", "Модель Джелинского-Моранды");

}

if (textBox12.Text == "")

{

MessageBox.Show("Введите коэффициент пропорциональности!", "Модель Джелинского-Моранды");

}

if (textBox10.Text == "")

{

MessageBox.Show("Введите число ошибок первоначально находящихся в программе!", "Модель Джелинского-Моранды");

}

int t10;

if (!int.TryParse(textBox10.Text, out t10))

MessageBox.Show("Введите числовое значение!");

int t12;

if (!int.TryParse(textBox12.Text, out t12))

MessageBox.Show("Введите числовое значение!");

int t13;

if (!int.TryParse(textBox13.Text, out t13))

MessageBox.Show("Введите числовое значение!");

int t11;

if (!int.TryParse(textBox11.Text, out t11))

MessageBox.Show("Введите числовое значение!");

}

catch (Exception ex)

{

MessageBox.Show("Ошибка:" + ex.Message);

}

double lambda, C, N, i, P,t;

N = Double.Parse(textBox10.Text);

C = Double.Parse(textBox12.Text);

i = Double.Parse(textBox11.Text);

t = Double.Parse(textBox13.Text);

lambda = C * (N - i + 1);

P = lambda * Math.Exp(lambda * (-1) * t);

textBox4.Text = " Функция плотности распределения времени обнаружения i-й ошибки, отсчитываемого от момента выявления:" + P.ToString();

label16.Text = N.ToString();

label19.Text = C.ToString();

label18.Text = i.ToString();

label17.Text = t.ToString();

}

Результат работы виден на рисунке 1.3

Рисунок 1.3 Результат выполнения расчетов по модели Джелинского-Моранды

2.3.3 tabPage5

Иерархия классов

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

Используемые элементы:

Button;

textBox;

label;

statusStrip;

menuStrip;

groupBox;

Обработчики событий

private void button1_Click(object sender, EventArgs e)

Функции

В данной вкладке одна функция

Функция Mills производит расчет по формуле Миллса и выводит результат

public void Mills(EventArgs e_Mills)

{

try

{

if (textBox1.Text == "")

{

MessageBox.Show("Введите количество искусственно внесенных ошибок!", "Модель Миллса");

}

if (textBox2.Text == "")

{

MessageBox.Show("Введите число собственных найденных ошибок!", "Модель Миллса");

}

if (textBox13.Text == "")

{

MessageBox.Show("Введите число обнаруженных к моменту оценки искусственных ошибок!", "Модель Миллса");

}

int t1;

if (!int.TryParse(textBox1.Text, out t1))

MessageBox.Show("Введите числовое значение!");

int t2;

if (!int.TryParse(textBox2.Text, out t2))

MessageBox.Show("Введите числовое значение!");

int t3;

if (!int.TryParse(textBox3.Text, out t3))

MessageBox.Show("Введите числовое значение!");

}

catch (Exception ex)

{

MessageBox.Show("Ошибка:" + ex.Message);

}

double S, n, V, N;

S = Double.Parse(textBox1.Text);

n = Double.Parse(textBox2.Text);

V = Double.Parse(textBox3.Text);

N = (S * n) / V;

label44.Text = "Первоначальное число ошибок в программе равно:" + N.ToString();

label10.Text = S.ToString();

label11.Text = n.ToString();

label12.Text = V.ToString();

}

Результат выполнения вычислений по формуле Миллса хорошо видны на рисунке 1.4

2.3.4 tabPage4

Иерархия классов

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

Используемые элементы:

Button;

textBox;

label;

statusStrip;

menuStrip;

groupBox;

Обработчики событий

private void button4_Click(object sender, EventArgs e)

Функции

В данной вкладке одна функция

Функция Lipov производит вычисления по формуле Липова и выводит результат

public void Lipov(EventArgs e_Lipov)

{

try

{

if (textBox20.Text == "")

{

MessageBox.Show("Введите количество используемых тестов!", "Модель Липова");

}

if (textBox22.Text == "")

{

MessageBox.Show("Введите общее количество искусственно внесенных ошибок!", "Модель Липова");

}

if (textBox23.Text == "")

{

MessageBox.Show("Введите количество собственных ошибок до начала тестирования!", "Модель Липова");

}

if (textBox21.Text == "")

{

MessageBox.Show("Введите количество собственных ошибок к концу тестирования!", "Модель Липова");

}

if (textBox24.Text == "")

{

MessageBox.Show("Введите количество внесенных ошибок к концу тестирования!", "Модель Липова");

}

// Проверка на введенные значения

int t20;

if (!int.TryParse(textBox20.Text, out t20))

MessageBox.Show("Введите числовое значение!");

int t21;

if (!int.TryParse(textBox21.Text, out t21))

MessageBox.Show("Введите числовое значение!");

int t22;

if (!int.TryParse(textBox22.Text, out t22))

MessageBox.Show("Введите числовое значение!");

int t24;

if (!int.TryParse(textBox24.Text, out t24))

MessageBox.Show("Введите числовое значение!");

int t23;

if (!int.TryParse(textBox23.Text, out t23))

MessageBox.Show("Введите числовое значение!");

}

catch (Exception ex)

{

MessageBox.Show("Ошибка:" + ex.Message);

}

double m, q, S, N, n, V;

m = Double.Parse(textBox20.Text);

S = Double.Parse(textBox22.Text);

N = Double.Parse(textBox23.Text);

n = Double.Parse(textBox21.Text);

V = Double.Parse(textBox24.Text);

q = (n + V) / n;

double Q = (m / (n + V)) * Math.Pow(n + V, q) * Math.Pow(m - n - V, 1 - q) * ((N / n) * (S / V) / ((N + S) / (n + V)));

label92.Text = Q.ToString();

label93.Text = m.ToString();

label94.Text = S.ToString();

label95.Text = N.ToString();

label96.Text = V.ToString();

label97.Text = n.ToString();

if (Q < 0)

{

MessageBox.Show("Введены значения, при которых результат отрицателен!", "Модель Липова");

}

}

2.3.5 Сохранение результатов

Для сохранения результатов изпользуется обработчик событий ToolStripMenu.

После произведения вычислений по предложенным выше моделям, пользователь может сохранить свои результаты.

На рисунке 1.5 показано как сохранить результаты вычислений.

Далее нам нужно выбрать куда сохранить результаты:

Рисунок 1.6 Выбор пути для сохранения

А после подтверждения сохранения, уведомление об успешной операции:

Рисунок 1.7. Уведомление об успешном сохранении.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]