Skip to content

Repository files navigation

Learning Spanish

Learning Spanish — настольное WPF-приложение для изучения испанских слов с помощью интерактивных карточек.

Пользователь проходит тест, выбирая правильный перевод слова, получает очки и может посмотреть результаты предыдущих попыток. Набор карточек не зафиксирован в коде: его можно редактировать, сохранять и загружать из JSON-файла.

Проект разработан как самостоятельное учебное приложение для практики C#, WPF, привязки данных и архитектурного паттерна MVVM.


Основные возможности

  • изучение испанских слов по карточкам;
  • выбор ответа из нескольких вариантов;
  • случайное перемешивание карточек перед началом теста;
  • отдельное перемешивание вариантов перевода;
  • проверка ответа и визуальная обратная связь;
  • начисление очков за правильные ответы;
  • сохранение имени игрока и результата;
  • просмотр и очистка статистики;
  • экспорт и импорт статистики в формате JSON;
  • добавление, редактирование и удаление карточек;
  • сохранение пользовательского набора карточек;
  • загрузка карточек из выбранного JSON-файла.

Технологический стек

  • C#
  • .NET 8
  • WPF
  • XAML
  • MVVM
  • INotifyPropertyChanged
  • ObservableCollection
  • собственная реализация ICommand
  • Newtonsoft.Json
  • стандартные диалоги Windows для открытия и сохранения файлов

Как работает тренировка

  1. Пользователь вводит имя и открывает режим тренировки.
  2. Приложение перемешивает карточки и варианты ответов.
  3. На экране отображается слово на испанском и несколько возможных переводов.
  4. После выбора ответа приложение проверяет его и показывает результат.
  5. За правильный ответ начисляется 15 очков.
  6. После завершения результат сохраняется в статистику.

Если пользовательский файл карточек ещё не создан, приложение загружает встроенный демонстрационный набор слов.


Работа с данными

Для локального хранения используются JSON-файлы:

  • AllCards.json — пользовательский набор карточек;
  • Statistics.json — имена игроков и набранные очки.

Файлы создаются рядом с запущенным приложением. Через интерфейс можно выбрать другой JSON-файл для импорта карточек или статистики, а также сохранить результаты в указанное пользователем место.

Модель карточки содержит:

  • идентификатор;
  • слово на испанском;
  • правильный перевод;
  • список возможных ответов.

Архитектура

Проект частично построен по паттерну MVVM:

  1. Model — карточки, сериализуемые модели, статистика игрока и команды.
  2. ViewModel — состояние приложения, коллекции данных, команды и логика тренировки.
  3. View — WPF-страницы и окна, созданные с помощью XAML.

Основная логика сосредоточена в AllCardsViewModel: класс управляет карточками, текущим вопросом, очками, статистикой, состоянием кнопок и операциями с файлами.

Для автоматического обновления интерфейса используются INotifyPropertyChanged и ObservableCollection.


Структура проекта

learningSpanish/
├── Model/
│   ├── Card.cs                  # Модель учебной карточки
│   ├── SerializableCard.cs      # Представление карточки для JSON
│   ├── playerStatistics.cs      # Результат игрока
│   └── BaseCommand.cs           # Реализация ICommand
├── View/
│   ├── MainWindow.xaml          # Главное меню
│   ├── StartCards.xaml          # Режим тренировки
│   ├── EditCardsView.xaml       # Управление карточками
│   ├── CardView.xaml            # Окно редактирования
│   ├── Statistic.xaml           # Просмотр статистики
│   └── NavigationWindow.xaml    # Навигационное окно
├── ViewModel/
│   └── AllCardsViewModel.cs     # Состояние и логика приложения
├── App.xaml                     # Ресурсы и точка входа WPF
└── learning_Spanish.csproj      # Конфигурация .NET-проекта

Локальный запуск

Требования

  • Windows;
  • .NET 8 SDK;
  • Visual Studio 2022 с компонентом .NET Desktop Development или другая среда с поддержкой WPF.

Запуск через Visual Studio

git clone https://github.com/Gonerr/learningSpanish.git
cd learningSpanish

Откройте learning_Spanish.sln, восстановите NuGet-пакеты и запустите проект.

Запуск из консоли

dotnet restore
dotnet run --project learning_Spanish.csproj

WPF поддерживается только в Windows.


Реализованные технические решения

  • привязка элементов WPF-интерфейса к ViewModel;
  • уведомление интерфейса об изменениях состояния;
  • управление действиями через команды;
  • навигация между WPF-страницами;
  • сериализация и десериализация коллекций;
  • импорт и экспорт пользовательских данных;
  • алгоритм случайного перемешивания карточек и ответов;
  • динамическое управление доступностью элементов интерфейса;
  • хранение пользовательской статистики между запусками.

Текущее состояние и развитие

Приложение является функциональным учебным прототипом.

Возможные направления развития:

  • добавить тематические наборы слов и уровни сложности;
  • реализовать повторение слов, в которых пользователь чаще ошибается;
  • добавить произношение и аудиозаписи;
  • перенести работу с файлами в отдельный сервис;
  • завершить разделение логики интерфейса по MVVM;
  • добавить валидацию редактируемых карточек;
  • хранить пользовательские данные в системной папке приложения;
  • добавить автоматические тесты для подсчёта очков и сериализации.

Автор

Анастасия Лихачева

Проект разработан самостоятельно в качестве учебной работы для изучения C#, WPF, MVVM и организации локального хранения данных.

About

A WPF trial-application for learning Spanish through learning cards on C#.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages