Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Задания для самостоятельного выполнения. 3.6.Добавьте поиск информации об абоненте телефонного справочника по:




 

3.6. Добавьте поиск информации об абоненте телефонного справочника по:

– адресу (улице, дому, квартире);

– телефону.

 

Упражнение 13.4. Дополним приложение “Телефонный справочник” возможностью сортировки абонентов.

Решение

1-й этап. Доработаем визуальный интерфейс приложения.

Дополним меню пунктом “Сортировка” и подпунктами “По фамилии” и “По квартире”.

2-й этап. Разработаем необходимый программный код.

Списки List<T> можно сортировать с помощью стандартного метода Sort (). Для определения порядка элементов списка данный метод использует компаратор (специальный класс) по умолчанию Comparer.Default. Но в нашем приложении список состоит из записей со многими полями, в таком случае компаратор по умолчанию не сможет отсортировать список, поскольку не умеет определять порядок элементов. В связи с этим мы напишем собственный компаратор. Для этого в пространстве имен namespace Lab13 (с конца программы отступите одну закрывающую фигурную скобку, для удобства можете свернуть класс формы) опишите класс-компаратор CompareByLastName:

 

class CompareByLastName: IComparer<Note>

 

Затем щелкните мышью по слову IComparer, под первой буквой этого слова вы увидите подчеркивание в виде маленького синего прямоугольника. Наведите на него указатель мыши и, нажав на стрелочку вниз на появившейся иконке, вы увидите список опций, среди них выберите “Implement interface ‘IComparer<Note>’” (Реализовать интерфейс) (рис. 13.7).

 

 

В описании класса появится заготовка метода Compare (), который на вход получает два объекта класса Note, а на выходе выдает целое число: положительное, если первый объект больше второго, отрицательное – если меньше, и ноль, если объекты равны.

 

class CompareByLastName: IComparer<Note>

{

#region IComparer<Note> Members

 

public int Compare(Note x, Note y)

{

throw new NotImplementedException();

}

 

#endregion

}

 

Директива # region … # endregion ограничивает часть кода, который может быть свернут.

Измените тело метода Compare () – вместо строки, указывающей, какой тип исключения будет генерироваться при вызове этого метода:

 

throw new NotImplementedException();

 

запишите следующий оператор, который будет сравнивать две строки (фамилии):

 

return string.Compare(x.LastName, y.LastName);

 

Таким образом, наш класс-компаратор CompareByLastName будет сравнивать элементы списка по фамилии.

Создайте обработчик выбора подпункта меню “По фамилии” (в пункте “Сортировка”). Запишите в него следующие операторы.

 

if (PhoneNote.Count > 0) // если список не пуст

{

// сортировка списка по фамилии

PhoneNote.Sort(new CompareByLastName());

current = 0; // задаем номер текущего элемента

PrintElement(); // вывод текущего элемента

 

}

 

Запустите приложение. Проверьте, правильно ли выполняется сортировка по фамилии.

Сейчас аналогично создайте компаратор для сравнения абонентов по квартире.

 

class CompareByFlat: IComparer<Note>

{

#region IComparer<Note> Members

 

public int Compare(Note x, Note y)

{

return x.Flat.CompareTo(y.Flat);

}

 

#endregion

}

 

Обработчик выбора подпункта “По квартире” должен содержать следующие операторы:

 

if (PhoneNote.Count > 0)

{

PhoneNote.Sort(new CompareByFlat());

current = 0;

PrintElement();

}

 

Запустите приложение. Проверьте, правильно ли выполняется сортировка по квартире.

 





Поделиться с друзьями:


Дата добавления: 2016-09-03; Мы поможем в написании ваших работ!; просмотров: 382 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Лучшая месть – огромный успех. © Фрэнк Синатра
==> читать все изречения...

4261 - | 4148 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.013 с.