ВП2_ИУС13 / ВП2_лр2_ИУС13в
.docВП2_ЛР№2 ИУС13в
Лабораторная работа №2
“Интерфейсы. Применение коллекций в С#”
Цель: закрепить теоретические знания и приобрести практические навыки использования коллекций в С#. Создание собственных делегатов и событий.
Задание к лабораторной работе:
1. Построить класс (при необходимости - иерархию классов) для описания объекта, указанного в варианте. Среди методов обязательно наличие конструктора с параметрами, свойства – получение всех полей объекта.
2. Реализовать механизм интерфейсов, как минимум 2 интерфейса (например, ввода-вывода и сортировки по указанному признаку).
3. Разработать набор классов, позволяющих сравнивать объекты класса по разным критериям. Класс, описывающий объект по варианту, должен содержать процедуру-свойство, которая создает экземпляр соответствующего класса.
4. Контейнерный управляющий класс для работы с объектами должен быть реализован на базе заданной структуры данных и должен содержать методы, обеспечивающие сохранение информации в файле и считывание из файла, отображение на экране, а также методы, обеспечивающие выполнение со структурой действий, указанных в задании. Сортировка объектов в контейнерном классе по разным критериям должна быть реализована в виде функции высших порядков, функциональный аргумент задать делегатом, определяющим класс функций сравнения.
5. Для демонстрации работы с методами контейнерного класса предусмотреть соответствующие пункты меню.
Варианты заданий:
№ |
Объект, поля |
Структура данных |
Обработка |
1 |
Исходные данные - текст, вводимый пользователем (без знаков препинания). Разбить на слова и составить словарь частоты появления слов в тексте |
SortedList |
Обеспечить подсчет средней и максимальной длины слова. Затем удалить все слова, короче 4 букв. Посчитать по частоте появления данные для построения гистограммы на 10 интервалах |
2 |
Рабочие. Поля – ФИО, возраст, зарплата, стаж работы, должность ,инвентарный номер (ключ) |
SortedList |
Реализовать подсчет среднего стажа, средней зарплаты. Удаление из списка рабочего с указанным инвентарным номером или всех рабочих, возраст которых выше заданного |
3 |
Электронные письма. Поля – адрес получателя, адрес отправителя, размер, содержимое |
Queue |
Обеспечить наполнение очереди сообщениями. Осуществить отправку сообщений из очереди, если размер письма превышает заданный, то поместить его в новую очередь, которую затем вывести на экран. Составить список уникальных адресов и вывести его на экран |
4 |
Документы .Поля - название, дата рассмотрения, ФИО подписывающего |
Stack |
Обеспечить подписание документов с датой рассмотрения не позже указанной. Составить список уникальных названий документов и ФИО, вывести их на экран. |
5 |
Счета в банке. Поля – ФИО, идентификационный номер, сумма |
ArrayList |
Каждому второму владельцу счета увеличить сумму на счету на 20%, а каждому третьему - уменьшить на 30%. Все счета, сумма на которых меньше заданной, удалить. Добавить в список новые счета, если в списке уже есть счет на такие же ФИО, то вставить в список сразу же за уже существующим счетом. |
6 |
База телефонных номеров (7–значных) в структуре SortedList, используя номер как ключ, а ФИО – как значение |
SortedList |
Вывести всех абонентов имеющих одинаковые 2, 3, 4, последние цифры номера. Удалить абонентов с указанными ФИО. Вывести номера в списке для абонентов, у которых все цифры номера одинаковые. |
7 |
Студенты. Поля – ФИО, группа, курс, средний бал, специальность, сумма стипендии |
ArrayList |
Сформировать список студентов на отчисление, имеющих средний бал меньше заданного. Для студентов имеющих бал 5.0 увеличить стипендию на 25%, а имеющих бал 3.0. и ниже уменьшить на 100%. Вывести список студентов указанной группы или указанного курса |
8 |
Лекарства. Поля – срок годности, стоимость, вид применения, форма выпуска |
SortedList (ключ - название) |
Сформировать список всех лекарств с указанной формой выпуска. Удалить из списка все лекарства, у которых истек срок годности. Сформировать еще один список с клавиатуры и вставить его в существующий в указанное место |
9 |
Изделия на конвейере. Поля – наименование, масса, учетный номер, стадия обработки |
Queue |
Обеспечить обработку изделий, имеющих стадию обработки, равную заданной. Изделия, имеющие меньший номер – поместить в конец очереди, увеличив стадию на 1. Изделия, имеющие больший номер – удалить из очереди. Определить среднюю массу изделия в очереди. Определить, имеется ли в оочереди изделие с указанным номером |
10 |
Заявки на техническое обслуживание. Поля – дата, тип проблемы, адрес заявителя, номер оператора, принявшего заявку |
SortedList (ключ - уникальный номер заявки) |
Вывести перечень заявок для каждого оператора. Удалить заявки, которые поступили до некоторой даты. Сформировать уникальный список типов проблем. |
11 |
Программы на компьютере. Поля – название, путь, размер, частота использования, последняя дата использования |
ArrayList |
Сформировать список программ, частота использования которых, выше заданной. Осуществить запуск программы с указанным именем (увеличить ч-ту использования. три программы с самой давней датой удалить из списка |
12 |
ж/д билеты. Поля - номер поезда, пункт назначения, вагон, место, цена билета |
ArrayList. |
Для всех билетов, имеющих указанный пункт назначения вывести цены. Удалить из списка все билеты на указанный номер поезда. Вставить в указанную позицию в список нов. билет |
13 |
Исходные данные - текст, вводимый пользователем (без знаков препинания). Разбить на слова и составить словарь частоты появления слов в тексте |
SortedList |
Обеспечить подсчет средней и максимальной длины слова. Затем удалить все слова, короче 4 букв. Посчитать по частоте появления данные для построения гистограммы на 10 интервалах |
14 |
Проекты. Поля – название, дата начала разработки, ФИО разработчиков, дата завершения, ФИО руководителя, стоимость |
SortedList |
Реализовать подсчет средней стоимости проетов, количества разработчиков. Удаление из списка проекта с указанным номером или всех проектов, дата завершения которых меньше текущей |
15 |
Электронные письма. Поля – адрес получателя, адрес отправителя, размер, содержимое |
Queue |
Обеспечить наполнение очереди сообщениями. Осуществить отправку сообщений из очереди, если размер письма превышает заданный, то поместить его в новую очередь, которую затем вывести на экран. Составить список уникальных адресов и вывести его на экран |
16 |
Такси в таксопарке. Поля – Марка машины, номер, ФИО водителя, пробег.
|
SortedList |
Обеспечить создание списка, используя номер машины как ключ. Сформировать список машин одной марки. Определить машину с максимальным и минимальным пробегом и удалить их из списка. |
17 |
Телепередачи. Поля – время эфира, категория, название, ведущий
|
Queue |
Извлекать программы из очереди. Если время эфира оказывается меньше только что извлеченной программы, то удалить из очереди. Сформировать список названий программ. |
18 |
Пользователи компьютерной сети. Поля – ФИО, адрес, IP, сумма на счету. |
SortedList |
Выдать IP пользователя с указанным логином. Выдать список всех, у кого на счету сумма выше заданной. Всех, у кого сумма ниже заданной, удалить из списка |
19 |
Фрукты. Поля – вид, сорт, зрелость, цена за кг. |
ArrayList |
Обеспечить отображение на экране групп фруктов. Из нескольких фруктов одинакового вида и сорта оставить те, у которых максимальная цена. Посчитать, каких фруктов больше зрелых или незрелых и все зрелые сорвать (перенести в другой список) |
20 |
Статьи толкового словаря. Поля - термин (ключ), пояснение (значение) |
SortedList |
Обеспечить выдачу пояснения по указанному термину. Удалить все термины, описание которых менее указанного числа символов и более указанного числа символов |
21 |
записи о возрасте людей (имя – ключ, возраст – значение) |
SortedList |
Вывести список имен людей, у которых возраст старше заданного. Удалить из списка всех людей с нечетным возрастом и посчитать, сколько раз встречаются лица с одинаковым возрастом |
22 |
авиабилеты. Поля – ФИО, номер рейса, пункт назначения, цена билета |
ArrayList. |
Для всех билетов, имеющих указанный пункт назначения вывести цены. Удалить из списка все билеты на указанный номер рейса. Вставить в указанную позицию в список нов. билет |
23 |
книги. Поля – автор, год издания, кол-во страниц |
SortedList (ключ - название книги) |
Вывести все книги одного указанного автора, сформировать список уникальных авторов. Определить среднее количество страниц и удалить все книги, у которых страниц меньше |
24 |
Покупатели. Поля – ФИО, сумма денег, кол-во артикулов, которые желает приобрести |
Queue |
Обеспечить обслуживание всех покупателей в очереди. Если у покупателя денег меньше, чем некоторая стоимость товара, то покупатель ставится в новую очередь, иначе считается обслуженным – его сумма уменьшается и покупатель ставится в другую очередь. В очереди необслуженных определить покупателя с минимальным количеством артикулов и переставить его в конец очереди. Обе очереди вывести на экран. |
25 |
Грузы. Поля – масса, тип, хрупкий/не хрупкий |
Stack |
Считая стек вагоном заданной грузоподъемности, загрузить в вагон грузы, не выше норматива. Обеспечить перегрузку в три новых вагона, рассортировав грузы по весу (малый, средний, большой). При перегрузке удалить все хрупкие товары. Содержимое трех вагонов вывести на экран |