Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Кодирование. Код написание с применением правил форматирования кода.






Код написание с применением правил форматирования кода.

В ходе работы использовались следующие правила:

1) Название переменных должно отражать их суть.

2) Название функций начинаются с больших букв. Если функция выполняет какие либо действия, первое слово обозначает действие этой функции.

3) Код должен быть структурирован и легко читаем.

4) В коде должны присутствовать комментарии.

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 NUnit.Framework;

 

namespace GeometryFigure

{

public partial class Form1: Form

{

double A, B, C, D, H, R, PolyP;

double[] MassiveForFigure = new double[2];

public Form1()

{

InitializeComponent();

comboBox1.Text = " Выбрать фигуру";

comboBox2.Text = " Выбрать способ";

comboBox1.Items.Add(" Треугольник");

comboBox1.Items.Add(" Параллелограмм");

comboBox1.Items.Add(" Круг");

this.StorA.ReadOnly = true;

this.StorB.ReadOnly = true;

this.StorC.ReadOnly = true;

this.StorD.ReadOnly = true;

this.Radius.ReadOnly = true;

this.Visota.ReadOnly = true;

}

 

private void button1_Click(object sender, EventArgs e)

{

A = Convert.ToSingle(StorA.Text.ToString());

B = Convert.ToSingle(StorB.Text.ToString());

C = Convert.ToSingle(StorC.Text.ToString());

D = Convert.ToSingle(StorD.Text.ToString());

H = Convert.ToSingle(Visota.Text.ToString());

R = Convert.ToSingle(Radius.Text.ToString());

listBox1.Items.Clear();

 

if (comboBox2.SelectedItem.ToString() == " Формула Герона")

{

MassiveForFigure = TriangleGeron(A, B, C);

listBox1.Items.Add(" Площадь " + MassiveForFigure[0]);

listBox1.Items.Add(" Периметр " + MassiveForFigure[1]);

}

 

if (comboBox2.SelectedItem.ToString() == " Через основание и высоту")

{

MassiveForFigure = Parallelogramm(A, B, H);

listBox1.Items.Add(" Площадь " + MassiveForFigure[0]);

listBox1.Items.Add(" Периметр " + MassiveForFigure[1]);

}

}

 

// Функция для Формулы Герона

public double[] TriangleGeron(double A, double B, double C)

{

 

double[] MassiveGeron = new double[2];

MassiveGeron[0] = 0;

MassiveGeron[1] = 0;

if (A < (B + C) & B < (A + C) & C < (A + B))

{

PolyP = (A + B + C) / 2;

MassiveGeron[0] = Math.Sqrt(PolyP * (PolyP - A) * (PolyP - B) * (PolyP - C));

MassiveGeron[1] = (A + B + C);

}

else

listBox1.Items.Add(" Треугольник не существует");

return MassiveGeron;

}

// Функция для Параллелограмма

public double[] Parallelogramm (double A, double B, double H)

{

double[] MassiveParallelogramm = new double[2];

MassiveParallelogramm[0] = 0;

MassiveParallelogramm[1] = 0;

MassiveParallelogramm[0] = A*H;

MassiveParallelogramm[1] = (A + B) * 2;

return MassiveParallelogramm;

}

 

private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)

{

if (comboBox1.SelectedItem.ToString() == " Треугольник")

{

comboBox2.Items.Clear();

comboBox2.Items.Add(" Формула Герона");

 

}

if (comboBox1.SelectedItem.ToString() == " Параллелограмм")

{

comboBox2.Items.Clear();

comboBox2.Items.Add(" Через основание и высоту");

}

}

 

private void comboBox2_SelectionChangeCommitted(object sender, EventArgs e)

{

if (comboBox2.SelectedItem.ToString() == " Формула Герона")

{

pictureBox1.Image = Image.FromFile(" Geron.png");

this.StorA.ReadOnly = false;

this.StorB.ReadOnly = false;

this.StorC.ReadOnly = false;

this.StorD.ReadOnly = true;

this.Radius.ReadOnly = true;

this.Visota.ReadOnly = true;

}

 

if (comboBox2.SelectedItem.ToString() == " Через основание и высоту")

{

pictureBox1.Image = Image.FromFile(" Parallelogramm.png");

this.StorA.ReadOnly = false;

this.Visota.ReadOnly = false;

this.StorB.ReadOnly = false;

this.StorC.ReadOnly = true;

this.StorD.ReadOnly = true;

this.Radius.ReadOnly = true;

}

}

 

[Test]

public void TriangleGeronTest()

{

double[] massiv2 = new double[2];

double[] MassiveResult = new double[2];

//Правильные данные для теста

MassiveResult[0] = 6;

MassiveResult[1] = 12;

massiv2 = TriangleGeron(5, 4, 3);

Assert.AreEqual(MassiveResult, massiv2);

// Треугольник не существует

MassiveResult[0] = 0;

MassiveResult[1] = 0;

massiv2 = TriangleGeron(10, 4, 3);

Assert.AreEqual(MassiveResult, massiv2);

// Равносторонний треугольник

MassiveResult[0] = 27.71;

MassiveResult[1] = 24;

massiv2 = TriangleGeron(8, 8, 8);

Assert.AreEqual(true, Math.Abs(massiv2[0] - MassiveResult[0]) < 0.1);

// Одна из сторон равна 0

MassiveResult[0] = 0;

MassiveResult[1] = 0;

massiv2 = TriangleGeron(0, 8, 8);

Assert.AreEqual(MassiveResult, massiv2);

// Одна из сторон равна 0

MassiveResult[0] = 0;

MassiveResult[1] = 0;

massiv2 = TriangleGeron(8, 0, 8);

Assert.AreEqual(MassiveResult, massiv2);

// Одна из сторон равна 0

MassiveResult[0] = 0;

MassiveResult[1] = 0;

massiv2 = TriangleGeron(8, 8, 0);

Assert.AreEqual(MassiveResult, massiv2);

}

[Test]

public void TransferFunds1()

{

//Отрицатеные стороны

double[] massiv2 = new double[2];

double[] MassiveResult = new double[2];

MassiveResult[0] = 0;

MassiveResult[1] = 0;

massiv2 = TriangleGeron(-1, -5, 0);

Assert.AreEqual(MassiveResult, massiv2);

}

[Test]

public void MassiveParallelogrammTest()

{

//Тест на правильность введенных данных

double[] massiv2 = new double[2];

double[] MassiveResult = new double[2];

MassiveResult[0] = 16;

MassiveResult[1] = 16;

massiv2 = Parallelogramm(4, 4, 4);

Assert.AreEqual(MassiveResult, massiv2);

}

private void Form1_Load(object sender, EventArgs e)

{

 

}

 

private void StorA_KeyPress(object sender, KeyPressEventArgs e)

{

if (! (Char.IsDigit(e.KeyChar)))

{

if (e.KeyChar! = (char)Keys.Back)

{

e.Handled = true;

}

}

}

 

private void StorB_KeyPress(object sender, KeyPressEventArgs e)

{

if (! (Char.IsDigit(e.KeyChar)))

{

if (e.KeyChar! = (char)Keys.Back)

{

e.Handled = true;

}

}

}

 

private void StorC_KeyPress(object sender, KeyPressEventArgs e)

{

if (! (Char.IsDigit(e.KeyChar)))

{

if (e.KeyChar! = (char)Keys.Back)

{

e.Handled = true;

}

}

}

 

private void StorD_KeyPress(object sender, KeyPressEventArgs e)

{

if (! (Char.IsDigit(e.KeyChar)))

{

if (e.KeyChar! = (char)Keys.Back)

{

e.Handled = true;

}

}

}

 

private void Visota_KeyPress(object sender, KeyPressEventArgs e)

{

if (! (Char.IsDigit(e.KeyChar)))

{

if (e.KeyChar! = (char)Keys.Back)

{

e.Handled = true;

}

}

}

 

private void Radius_KeyPress(object sender, KeyPressEventArgs e)

{

if (! (Char.IsDigit(e.KeyChar)))

{

if (e.KeyChar! = (char)Keys.Back)

{

e.Handled = true;

}

}

}

 

}

}

Расчет сложности программы, с помощью метрики Холстеда.

Операторы Кол-во Операнды Кол-во
public   A  
=   B  
.   C  
{   D  
}   H  
(   R  
)   PolyP  
<   MassiveForFigure  
    comboBox1  
==   comboBox2  
-   StorA  
+   StorB  
*   StorC  
/   StorD  
return   listBox1  
[]   button1_Click  
;   comboBox1_SelectionChangeCommitted  
&   comboBox2_SelectionChangeCommitted  
if   pictureBox1  
    StorA_KeyPress  
    StorB_KeyPress  
    StorC_KeyPress  
    StorD_KeyPress  
    Visota_KeyPress  
    Radius_KeyPress  
    Numeric_Only  
    e  
    TriangleGeron  
    MassiveParallelogramm  
    MassiveGeron  
n1   Число уникальных операторов
n2   Число уникальных операндов
N1   Общее число операторов
N2   Общее число операндов
Hpvoc   Словарь программы
HPLen   Длина программы
V 4486, 153165 Обьем программы
CC   Цикломатически сложность
LoC   Число линий кода
HDIFF 42, 43333333  
     
Mi 68, 01027854 Индекс сопроваждаемости
 

Программа имеет приемлемый индекс сопровождаемости в " зеленой зоен" (20-100)






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.