|
|
@@ -0,0 +1,87 @@
|
|
|
+# Примерное содержание экзамена
|
|
|
+
|
|
|
+На экзамене не будет подключения к интернету, будет локальный сервер, на котором будут мои лекции и локальный репозиторий NuGet пакетов. Для переключения на локальный репозиторий выберите в "источнике пакетов" пункт __BaGetter__:
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+## Задание
|
|
|
+
|
|
|
+>Состав и критерии оценок могут измениться
|
|
|
+
|
|
|
+Написать **РАБОЧЕЕ** (то есть приложение собирается и запускается) оконное приложение, отображающее список данных, с возможностью фильтрации, поиска и сортировки данных:
|
|
|
+
|
|
|
+Каждому выдаётся набор персональных условий:
|
|
|
+
|
|
|
+- предметная область
|
|
|
+- тип поставщика данных (**CSV**, **JSON**)
|
|
|
+- тип шаблона для **ListBox** (_список_, _плитка_)
|
|
|
+- тип фильтрации (_по словарю_, _по условию_)
|
|
|
+
|
|
|
+1. Создать модель (класс) по заданной предметной области. **Обязательно** использовать типы: _целое_, _вещественное_, _дата_, _строка_, _логическое_. Одно из полей должно быть словарным (свой тип данных, как породы в "кошках") - `1` балл <!-- 1 -->
|
|
|
+
|
|
|
+ - несоответствие полей модели предметной области: штраф `0,2` балла
|
|
|
+ - отсутствие обязательного типа данных: штраф `0,2` балла
|
|
|
+
|
|
|
+1. Создать набор данных (10 записей) для модели в заданном формате и написать класс поставщика данных **LocalDataProvider**, **CSVDataProvider** или **JSONDataProvider**: до `1.5` баллов <!-- 2.5 -->
|
|
|
+
|
|
|
+ - **программный список** (определен в **LocalDataProvider**): `0,5` баллов
|
|
|
+ - **CSV** (загрузка из внешнего файла): `1,5` балла
|
|
|
+ - **JSON** (загрузка из внешнего файла): `1,5` балла
|
|
|
+
|
|
|
+ т.е. вы можете не заморачиваться с загрузкой из внешнего файла и реализовать **LocalDataProvider**
|
|
|
+
|
|
|
+1. вывести логотип компании - `0,5` балла (доступа в интернет при выполнении задания не будет, в качестве логотипа можно использовать любую загогулину, нарисованную в `paint`) <!-- 3 -->
|
|
|
+
|
|
|
+1. вывести на экран список (**ListBox**) с набором данных из поставщика данных (тип списка **StackPanel** или **WrapPanel** выбирает преподаватель) - `1` балл <!-- 4 -->
|
|
|
+
|
|
|
+ Если не можете вывести в **ListBox**, то можно использовать **DataGrid** (за него `0,5` баллов)
|
|
|
+
|
|
|
+<!-- в следующем году добавить условие про вывод картинок и заглушек -->
|
|
|
+
|
|
|
+1. реализовать поиск по текcтовому полю - `1` балл <!-- 5 -->
|
|
|
+
|
|
|
+ не защитывается, если не реализован интерфейс **INotifyPropertyChanged**
|
|
|
+
|
|
|
+1. сделать сортировку по полю - `1` балл <!-- 6 -->
|
|
|
+
|
|
|
+ не защитывается, если не реализован интерфейс **INotifyPropertyChanged**
|
|
|
+
|
|
|
+1. сделать фильтрацию _по словарному_ полю или _по условию_ (определяется преподавателем перед началом экзамена) - `1` балл <!-- 7 -->
|
|
|
+
|
|
|
+ не защитывается, если не реализован интерфейс **INotifyPropertyChanged**
|
|
|
+
|
|
|
+1. Написать пояснительную записку в **README.MD** - `0,5` балла <!-- 7.5 -->
|
|
|
+
|
|
|
+ - Добавить скриншот
|
|
|
+ - набор данных, оформленный как `код`
|
|
|
+
|
|
|
+ Штраф за отсутствующий элемент `0,2` балла
|
|
|
+
|
|
|
+ >Критерий учитывается только при наличии рабочего приложения со списком
|
|
|
+
|
|
|
+1. Файловая структура проекта (_для каждого класса свой файл_, _название файла соответствует классу_, _классы модели в отдельном каталоге_): `0.5` балла <!-- 9 -->
|
|
|
+
|
|
|
+ Штраф `0,2` балла за критерий
|
|
|
+
|
|
|
+ >Критерий учитывается только при наличии рабочего приложения со списком
|
|
|
+
|
|
|
+## Оценка
|
|
|
+
|
|
|
+Итого `8` баллов:
|
|
|
+
|
|
|
+- менее `1,6`-х баллов, оценка "2"
|
|
|
+- `1,6 ... 3,1` балла, оценка "3"
|
|
|
+- `3,2 ... 5,5` баллов, оценка "4"
|
|
|
+- `5,6` и более баллов, оценка "5"
|
|
|
+
|
|
|
+<!--
|
|
|
+
|
|
|
+Зачечания к экзамену:
|
|
|
+
|
|
|
+1. Класс в нескольких файлах (разные неймспейсы)
|
|
|
+1. CamelCase
|
|
|
+
|
|
|
+ public DateOnly? dateclownvisits { get; set; }
|
|
|
+
|
|
|
+
|
|
|
+-->
|