Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Поле редактирования с возможностью задания IP-адреса

Работа добавлена на сайт samzan.net:


red235;

Курсовая работа

По дисциплине "Объектно-ориентированное программирование"

На тему "Поле редактирования с возможностью задания IP-адреса"


Содержание

1. Постановка задачи и ее анализ

2. Иерархия классов и интерфейсов

3. Описание классов, их полей, свойств

4. Блок-схемы алгоритмов

5. Тестирование

Заключение

Приложение

приложение интерфейс программирование алгоритм


1. Постановка задачи и ее анализ

Предлагается разработать компонент для дальнейшего использования при создании приложений. Выбор родительского компонента следует осуществить исходя из цели разработки. Компонент должен обладать соответствующими свойствами и событиями, указанными в пояснении. Продемонстрировать использование разработанного компонента в приложении.

При этом необходимыми условиями работы являются использование в качестве инструмента разработки - среды программирования Microsoft Visual Studio.NET. Язык программирования C#.

В данной пояснительной записке рассматривается описание процесса создания компонента дальнейшего использования при создании приложений "Editip".

Компонент "Editip" содержит в себе 4 свойства "ip1", "ip2", "ip3", "ip4", хранящие IPv4 номера побитно. Эти свойства были созданы для проверки правильности обработки компонентов введенных данных. При событии изменения строки идет проверка на ввод цифр или точки. Если введен неудовлетворяющий этому условию символон убирается из строки, без сброса каретки. Если в строке обнаружится более трех точек, и после последней будет стоять числовсе содержимое текстового поля обновляется согласно правилам ввода IP-адреса (754.198589.50.5 превращается в 255.255.50.5).


2. Иерархия классов и интерфейсов

Рисунок 1Иерархия классов

3. Описание классов, их полей, свойств

Класс "Editip" является дочерним классом "TextBox". В него добавлены свойства свойства "ip1", "ip2", "ip3", "ip4" типа byte. Изменен метод "OnTextCanged", в котором идет проверка на удовлетворение введенных данных условию поставленной задачи и обработка этих данных с изменением свойств, таких как "ip1", "ip2", "ip3", "ip4" и "Text".


4. Блок-схемы алгоритмов

Алгоритм метода "OnTextChanged".


5. Тестирование

Для тестирования компонента был приглашен человек с опытом пользователя работы на компьютере, который проверял компонент в специально созданной форме на все возможные ошибки. Тестирование показало, что функциональность компонента соответствует предъявленным требованиям.

В результате тестирования компонента были осуществлены следующие операции:

- в форму был помещен созданный компонент "Editip" и четыре стандартных компонента "Label" имеющих обозначение ip1, ip2, ip2, ip4 соответственно;

- в событии TextCanged компонента Editip было прописано присвоение свойств ip1, ip2, ip3, ip4 проверочным строкам (выделены жирным).

Рисунок 4Ввод в форму ip адреса

- при внесении в поле компонента числа превышающего 255, ip автоматически снижали это число в 255.

Рисунок 5Ввод в форму больших чисел


- после ввода последних цифр, после третьей точки, вид компонента приходил в "порядок", если числа ip1, ip2, ip3 не соответствовали требованиям

Рисунок 6Ввод в форму последнего числа

- была выявлена ошибка переполнения, вследствие ввода слишком большого числа, которое не могло быть преобразовано в числовой формат Int32.

Рисунок 7Ошибка


Ошибка была исправлена использованием в компоненте try-catch

Рисунок 8Ошибка исправлена


Заключение

В рамках курсовой работы была создан компонент "Editip" для дальнейшего использования при создании приложений. В процессе проектирования использовались методологии объектно-ориентированного программирования.

В процессе создания программы мы более тесно познакомились с синтаксисом языка C#, в частности создания компонентов, которые очень удобно использовать в широком спектре разнотипных программ.


Приложение

Листинг

Модуль главной формы

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace OOPip

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void editip1_TextChanged(object sender, EventArgs e)

{

label1.Text = Convert.ToString(editip1.ip1);

label2.Text = Convert.ToString(editip1.ip2);

label3.Text = Convert.ToString(editip1.ip3);

label4.Text = Convert.ToString(editip1.ip4);

}

}

}


Модуль компонента "Editip"

using System;

using System.ComponentModel;

using System.Collections.Generic;

using System.Diagnostics;

using System.Text;

namespace OOPip

{

public partial class Editip : System.Windows.Forms.TextBox

{

public Editip()

{

InitializeComponent();

}

public Editip(IContainer container)

{

container.Add(this);

Text = "0.0.0.0";

InitializeComponent();

}

// объявляем переменные хранящие циры ip адреса

public short ip1, ip2, ip3, ip4;

// встраиваемся в событие изменения текста

protected override void OnTextChanged(EventArgs e)

{

// обнуляем переменные хранящие циры ip адреса

ip1 = 0;

ip2 = 0;

ip3 = 0;

ip4 = 0;

// запоминаем положение каретки

int start = SelectionStart;

//счетчик точек

byte pCount = 0;

// если строка не пуста

try

{

if (Text != "")

{

// нам нужен ввод только цифр, проверяем введенные символы на соответствие

for (int i = 0; i < Text.Length; i++)

{

// проверка на соответствие числам

if ((Convert.ToInt32(Text[i]) >= 48 && Convert.ToInt32(Text[i]) <= 57)

// или соотвествие точке, не стоящей первой, не более чем третей и после цифры

|| (Text[i] == '.' && pCount < 3 && i >= 1

&& (Convert.ToInt32(Text[i - 1]) >= 48 && Convert.ToInt32(Text[i - 1]) <= 57)))

{

if (Text[i] == '.')

{

pCount++;

}

}

else

{

Text = Text.Substring(0, i) + Text.Substring(i + 1);

}

}

// закрываем ипы методом сканирования на точки

string Str = Text;

int ii = 0;

if (Str.IndexOf('.') != -1)

{

ii = (Convert.ToInt32(Str.Substring(0, Str.IndexOf('.'))));

if (ii > 255) { ii = 255; } ip1 = Convert.ToByte(ii);

Str = Str.Substring(Str.IndexOf('.') + 1);

}

if (Str.IndexOf('.') != -1)

{

ii = (Convert.ToInt32(Str.Substring(0, Str.IndexOf('.'))));

if (ii > 255) { ii = 255; } ip2 = Convert.ToByte(ii);

Str = Str.Substring(Str.IndexOf('.') + 1);

}

if (Str.IndexOf('.') != -1)

{

ii = (Convert.ToInt32(Str.Substring(0, Str.IndexOf('.'))));

if (ii > 255) { ii = 255; } ip3 = Convert.ToByte(ii);

Str = Str.Substring(Str.IndexOf('.') + 1);

}

if (Str != "")

{

ii = (Convert.ToInt32(Str)); if (ii > 255) { ii = 255; } ip4 = Convert.ToByte(ii);

}

}

}

catch { }

// приводим в "божеский вид" напечатаный текст, если уже имеется 3 точки и последний символ не точка

if (pCount == 3 && Text.LastIndexOf('.') != Text.Length - 1)

{

Text = Convert.ToString(ip1) + "." + Convert.ToString(ip2) + "." + Convert.ToString(ip3) + "." + Convert.ToString(ip4);

}

// возвращаем каретку на место (сбивается при измении текста)

SelectionStart = start;

base.OnTextChanged(e);

}

}

}

Размещено на 




1. Надзор и контроль охраны труда
2. Антибольшевистские правительства.html
3. И Функции одной переменной Производная функции в точке1
4. Морфология как раздел грамматики
5. 17930
6. Создание и редактирование текстовых документов в текстовом процессоре word 9x.html
7. По расчёту устойчивости производственных жилых и административных зданий к воздействию резкого повышени
8. Архимед (rhimedes)
9. ПОЛУ Цель- расширить представление учащихся по орфоэпии и лексике; закрепить умение видеть пройденные
10. . Философия. Её предмет и роль в обществе 1
11. Типитака или Трипитака
12. Понятие брэнд в социальной психологии
13. Расширение Описание
14. На этих страницах Вы получите наиболее полную информацию о нашем сотрудничестве
15. мелит дифтерия столбняк краснуха паротит гемофил
16. Доклад- Исследование электрической цепи переменного тока при последовательном соединении
17. В настоящее время затрагивается и освещается много аспектов становления и развития местного самоуправлени
18. перший договір між Росією і імперією Цин про кордон торгівлі та з інших питань
19. Курсовая работа- Определение способности почвенных бактерий к разложению синтетических моющих средств
20. Овсень, Петрушка, потешные молодцы и ребячьи игрушки