Загрузка данных


Учебная практика ПМ.01 "Тренажёр арифметики"
Справочная информация
WPF
Платформа для разработки десктопных приложений на C# с использованием XAML для описания интерфейса. (https://metanit.com/sharp/wpf/)
EntityFrameworkCore
ORM библиотека для работы с базой данных через C# классы (модели, контекст, миграции). (https://metanit.com/sharp/efcore/)
MVVM
Архитектурный паттерн, позволяющий отделить логику приложения от визуальной части. (https://metanit.com/sharp/wpf/22.1.php)
Цель занятия
Закрепить навыки объектно ориентированного проектирования, работы с WPF, MVVM и Entity Framework Core через создание настольного приложения «Тренажёр арифметики», позволяющего:
•	просматривать список доступных тестов;
•	проходить тесты с подсчётом правильных и неправильных ответов;
•	создавать собственные тесты, состоящие из арифметических вопросов;
•	сохранять тесты в базе данных;
•	отображать результаты прохождения.
Структура решения
Решение должно содержать 2 проекта, аналогично примеру из документа:
«Решение должно содержать 2 проекта: Class Library и WPF приложение»
1) Class Library — ArithmeticTrainer.Core
Содержит:
•	сущности (Test, Question, AnswerOption);
•	контекст БД (ArithmeticTrainerContext);
•	конфигурации EF Core;
•	вспомогательные классы (enum типа операции, валидаторы и т.п.);
•	интерфейсы репозиториев (опционально).
2) WPF приложение — ArithmeticTrainer.App
Содержит:
•	MVVM структуру (Models, ViewModels, Views);
•	сервисы работы с БД (через Core);
•	UI для:
o	просмотра списка тестов;
o	прохождения теста;
o	создания/редактирования тестов;
o	отображения результатов.
1. Архитектура и сущности
Сущность Test
Представляет тест по арифметике.
Поля:
•	Id
•	Title
•	Description
•	CreatedAt
•	Questions (one to many)
Сущность Question
Представляет один вопрос теста.
Поля:
•	Id
•	TestId
•	Text (например: «5 + 7 = ?»)
•	CorrectAnswer
•	WrongAnswers (список вариантов)
•	OperationType (enum: Add, Subtract, Multiply, Divide)
Сущность AnswerOption
Поля:
•	Id
•	QuestionId
•	Text

ArithmeticTrainerContext
Содержит DbSet:
•	DbSet<Test>
•	DbSet<Question>
•	DbSet<AnswerOption>
2. База данных и EF Core
Требования:
•	Использовать EF Core 8+
•	SQL Server LocalDB
•	Миграции обязательны
•	Связи:
o	Test 1 → many Question
o	Question 1 → many AnswerOption
3. Функциональные требования WPF приложения
1) Главное окно — список тестов
Отображает:
•	список всех тестов;
•	дату создания;
•	количество вопросов.
Пользователь может:
•	открыть тест для прохождения;
•	создать новый тест;
•	редактировать существующий;
•	удалить тест.
2) Окно прохождения теста
Отображает:
•	текущий вопрос;
•	варианты ответов;
•	номер вопроса;
•	прогресс.
Пользователь может:
•	выбрать ответ;
•	перейти к следующему вопросу;
•	завершить тест.
После завершения отображается:
•	количество правильных ответов;
•	количество неправильных;
•	процент выполнения.
3) Окно создания/редактирования теста
Пользователь может:
•	указать название теста;
•	добавить вопросы;
•	для каждого вопроса:
o	указать текст;
o	выбрать тип операции;
o	указать правильный ответ;
o	добавить неправильные варианты;
•	удалить вопросы;
•	сохранить тест.
4. Дополнительные требования
Валидация
•	название теста — обязательно;
•	минимум 1 вопрос;
•	минимум 2 варианта ответа;
•	корректный ответ должен быть числом.
Удобство использования
•	автоматическая нумерация вопросов;
•	сортировка тестов по дате создания;
•	отображение прогресса прохождения;
•	возможность повторного прохождения теста.
5. Задание студенту
В рамках учебной практики необходимо разработать настольное приложение «Тренажёр арифметики» на WPF с использованием MVVM и Entity Framework Core.
Студент должен:
1.	Создать решение из двух проектов:
o	ArithmeticTrainer.Core — библиотека классов;
o	ArithmeticTrainer.App — WPF приложение.
2.	Реализовать сущности Test, Question, AnswerOption.
3.	Настроить контекст БД и миграции.
4.	Создать главное окно со списком тестов.
5.	Реализовать окно прохождения теста с подсчётом результатов.
6.	Реализовать окно создания/редактирования тестов.
7.	Обеспечить валидацию данных.
8.	Реализовать сохранение тестов в БД.