- •Пояснительная записка
- •Задание на курсовую работу
- •2014 Реферат
- •Введение
- •1.1 Модель Шумана
- •1.2 Модель Миллса
- •1.3 Модель Джелинского-Моранды
- •1.4 Модель Липова
- •1.3 Постановка задачи
- •2.Технология разработки приложения
- •2.1 Алгоритм решения
- •2.2. Макет приложения
- •2.2.1 Form
- •3. Руководство пользователя
- •Заключение
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. Уведомление об успешном сохранении.