Загрузка данных
Учебная практика ПМ.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. Реализовать сохранение тестов в БД.