Языки программирования. Курсовая работа. Семестр 3. Курсовая работа должна быть выполнена на языке программирования C# с использованием технологии объектно-ориентированного программирования (классы, наследование, виртуальные функции). Цель работы. Для заданной коллекции коллекций объектов (таблица 1) разработать совокупность (иерархию) классов реализации объектов всех уровней и приложение, демонстрирующее: – выполнение типовых операций с объектами и коллекциями (создание объекта/коллекции, добавление объекта в коллекцию, выборка заданного объекта, удаление заданного объекта из коллекции, …) в соответствии с вариантом вида и способа реализации коллекции; – и, по запросу пользователя – текущее состояние указанной коллекции. Для всех объектов – элементов коллекций – должен быть выбран, обоснован и реализован адекватный перечень полей (свойств) и методов (например, для любого объекта, отображающего человека, типичными полями являются: фамилия, имя, отчество, дата рождения (объект), адрес места рождения(объект), адрес проживания (объект), образование/воинское звание/специальность/квалификация, …). Таблица 1 Коллекция коллекций Коллекция Элемент коллекции 1 Факультет, курс Студенческая группа Студент 2 Населенный пункт Вид транспорта Маршрут 3 Компьютерный класс Компьютер Устройства 4 Завод Цех Рабочий 5 Дом Квартира Житель 6 Рота Взвод Солдат 7 Склад Стеллаж Товар 8 Расписание занятий Аудитория Дисциплина 9 … … … Таблица 1 может быть расширена по предложениям студентов при выборе ими варианта задания. Вид реализуемой в приложении коллекции (столбцы таблицы 2): 1. 2. 3. 4. 5. 6. 7. 8. Список с произвольным доступом Стек Очередь Двусторонний стек Двусторонняя очередь Неупорядоченное множество (все элементы множества различны) Упорядоченное множество Словарь (множество пар «ключ – значение» Способ реализации коллекции (строки таблицы 2): 1. 2. 3. 4. 5. 6. 7. 8. Массив фиксированного размера Массив динамически изменяющегося размера Линейный однонаправленный список Линейный двунаправленный список Несбалансированное двоичное дерево Сбалансированное двоичное дерево Красно-черное дерево B-дерево В таблице 2 приведены максимальные оценки, соответствующие каждому сочетанию вида коллекции (столбцы) и способа ее внутренней реализации (строки). Например, максимальная оценка для упорядоченного множества (столбец 7), реализуемого в виде массива фиксированного размера (строка 1) равна 3.5 балла. Окончательная оценка за курсовую работу, округляемая до целого значения, формируется преподавателем с учетом проверки расчетно-пояснительной записки и защиты. 1 2 3 4 5 6 7 8 1 3.5 4.5 3 3 3 4 4 5 2 3 4 3 3 3.5 4 4 5 3 3 4 3 3 3.5 4 4 5 4 3.5 4 3.5 3 3.5 4.5 4.5 5 5 3.5 4 3.5 3 3.5 4.5 4.5 5 6 3 4 3 3 3 4 4 5 Таблица 2 7 8 3.5 3.5 4 4.5 3.5 3.5 3.5 3.5 3.5 3.5 4.5 4.5 4.5 4.5 5 5 Вариант задания на курсовую работу выбирается студентом самостоятельно в виде совокупности трех чисел: Первая – номер строки из таблицы 1. Вторая – номер столбца таблицы 2. Третья – номер строки таблицы 2. Выбранный вариант должен быть уникальным в пределах потока, для обеспечения чего студент сообщает преподавателю желаемую им комбинацию чисел. Если она никем не занята, то этот вариант закрепляется за студентом, иначе им должен быть выбран другой вариант (например – предложена дополнительная строка таблицы 1; содержимое предлагаемого сочетания коллекций и объектов должно быть одобрено преподавателем). Согласованные таким образом варианты публикуются на сайте дисциплины. Содержание пояснительной записки Пояснительная записка должна иметь объем не менее 20 стр. текста (без приложений, шрифт 12), выполнена в соответствии с ГОСТ 2.105-95 «Общие требования к текстовым документам» и СТП 1.701-98 «Текстовые документы» и содержать следующие разделы. 1. Развернутое описание задания. 2. Структурное описание разработки. Описание используемых структур данных, форматов данных, сопровождаемое необходимыми графическими иллюстрациями (рисунками). Содержательное описание основных алгоритмов и их особенностей. Структурное описание разработки должно давать представление о том, какие основные решения приняты при разработке, как работает программа, какие данные являются статическими, какие – динамическими, должны быть упомянуты особенности алгоритмов. Структурное описание должно быть словесным с привлечением графических иллюстраций (схем, рисунков) и фрагментов оригинальных алгоритмов и структур данных. 3. Функциональное описание – перечень основных функций программы и алгоритмов их выполнения. Ограничения (по памяти, по времени, …). 4. Описание пользовательского интерфейса. 5. Результаты исполнения программы с тестовыми данными (скриншоты). 6. Выводы. 7. Список используемой литературы. 8. Приложение: текст программы с комментариями по существу алгоритма и структур данных. Критерии оценивания Приложение может быть как графическим, так и консольным и должно быть реализовано в виде иерархии/совокупности классов (рекомендуется использование абстрактных, параметризованных и вложенных классов) и интерфейсов. Приложение должно демонстрировать выполнение всех своих функций в произвольной последовательности по выбору пользователя через систему меню. 1. Для каждой группы заданий установлен начальный уровень оценки по пятибалльной шкале, определяемый сложностью задания. 2. При “идеальном” выполнении задания оценка может быть повышена, но не более, чем на 0,5 балла. 3. При низком качестве выполнения работы (отсутствие иерархии наследования, вложенных, абстрактных, параметризованных классов, отсутствие интерфейсов, необоснованное использование вложенных, абстрактных, параметризованных классов или интерфейсов) оценка может быть снижена на 0,5–2 балла. 4. Пояснительная записка и файл программы (проект) сдаются преподавателю за 3 дня до защиты. Работоспособность программы должна быть продемонстрирована при защите. Защита курсовой работы проходит в форме собеседования с вопросами как по пояснительной записке, так и по тексту программы. 5. Неполное описание разработанного приложения, небрежное оформление пояснительной записки, выявление не самостоятельного выполнения работы влечет снижение оценки на 0,5 – 2 балла.