Skip to content

Repository files navigation

🧠 HomeworkTracker (WPF)

Система контроля домашних заданий

Change language: English

.NET WPF EF Core SQLite License


📝 Описание

HomeworkTracker (WPF) – десктопное приложение для организации и контроля выполнения домашних заданий. Позволяет управлять учебными дисциплинами, создавать задания с прикреплением файлов, сдавать решения (отдельные файлы-ответы), отслеживать прогресс через календарь и получать уведомления о ближайших дедлайнах. Реализована полнотекстовая фильтрация заданий с подсветкой найденных вхождений, валидация вводимых данных и удобный интерфейс в стиле современных приложений. В приложении используется Entity Framework Core (SQLite).

Данный проект создан в рамках курсовой работы. В ветке main (текущая) находится основное приложение, созданное с помощью WPF Application. В ветке winforms находится аналог этого приложения на Windows Forms, но с урезанным функционалом - нет уведомлений и поиска, а так же с устаревшим интерфейсом.


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

Функция Описание
📚 Дисциплины Добавление, редактирование и удаление предметов
✏️ Задания Создание, редактирование, удаление; название, описание, срок выполнения; прикрепление файлов
📎 Вложения Открытие, переименование, удаление, сохранение любых файлов, связанных с заданием
📤 Сдача решений Прикрепление файлов-ответов; задание автоматически отмечается выполненным
📅 Календарь Просмотр заданий на выбранную дату; прогресс-бар с процентом выполнения; мотивационные сообщения
✔️ Статус выполнения Отметка галочкой → зачеркивание текста (задание выполнено); просроченные невыполненные задания подсвечиваются оранжевым
🔔 Уведомления Индикатор с количеством заданий, срок которых истекает в ближайшие 3 дня; по клику – список с возможностью перехода к заданию
🔍 Поиск Фильтрация заданий по названию и описанию; подсветка найденных вхождений
📖 О программе Информация о версии и краткое руководство пользователя

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

Компонент Версия Назначение Бейдж
.NET 8.0 Платформа приложения .NET
WPF 8.0 Графический интерфейс WPF
Entity Framework Core 8.0.8 ORM для доступа к БД EF Core
SQLite 8.0.8 Локальная база данных SQLite
C# 12 Основной язык C#

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

homework-tracker/
├── Controls/                              # Пользовательские элементы управления
│   └── HighlightTextBlock.cs
├── Converters/                            # Конвертеры для XAML-привязок
│   ├── BoolToVisibilityConverter.cs
│   ├── CountToVisibilityConverter.cs
│   ├── EmptyStringToVisibilityConverter.cs
│   ├── IsOverdueConverter.cs
│   ├── StrikeThroughConverter.cs
│   ├── StringToVisibilityConverter.cs
│   └── TruncateStringConverter.cs
├── Data/                                  # Доступ к базе данных
│   └── AppDbContext.cs                    # Контекст Entity Framework Core (SQLite)
├── Helpers/                               # Вспомогательные классы
│   ├── FileHelper.cs                      # Диалог выбора файла, копирование в папку приложения, создание Attachment
│   ├── FileNameHelper.cs                  # Ввод имени файла с валидацией (InputBox)
│   └── FileNameValidator.cs               # Проверка имени файла на запрещенные символы и длину
├── Migrations/                            # Миграции Entity Framework Core
├── Models/                                # Сущности базы данных
│   ├── Attachment.cs
│   ├── Discipline.cs
│   └── HomeworkTask.cs
├── readme_images/                         # Изображения для README.md
├── Styles/                                # Стили приложения
│   ├── Resources/
│   │   └── favicon.ico                    # Иконка приложения
│   └── AppStyles.xaml                     # Глобальные стили приложения
├── ViewModels/                            # Логика привязки данных (MVVM)
│   ├── AnswerFilesViewModel.cs            # Управление файлами-ответами
│   ├── AttachmentsViewModel.cs            # Управление обычными вложениями
│   ├── BaseFileManagerViewModel.cs        # Базовый класс для обоих типов файлов
│   ├── CalendarViewModel.cs               # Данные и логика календаря
│   ├── MainViewModel.cs                   # Главная ViewModel (поля, свойства, команды)
│   ├── MainViewModel.Calendar.cs          # Часть, отвечающая за календарь
│   ├── MainViewModel.Disciplines.cs       # Часть, отвечающая за дисциплины (добавление, редактирование, удаление)
│   ├── MainViewModel.Files.cs             # Часть, отвечающая за открытие окон файлов
│   ├── MainViewModel.Notifications.cs     # Часть, отвечающая за уведомления
│   ├── MainViewModel.Tasks.cs             # Часть, отвечающая за задания (создание, редактирование, удаление, фильтрация)
│   ├── RelayCommand.cs                    # Базовая реализация ICommand для MVVM
│   ├── TaskEditorViewModel.cs             # Создание и редактирование задания
│   └── ViewModelBase.cs                   # Базовый класс для всех ViewModel
├── Views/                                 # Окна и разметка
│   ├── AboutWindow.xaml + .cs             # Информация о программе + краткое руководство
│   ├── AnswerFilesWindow.xaml + .cs       # Окно управления файлами-ответами
│   ├── AttachmentsWindow.xaml + .cs       # Окно управления обычными вложениями
│   ├── CalendarWindow.xaml + .cs          # Окно календаря
│   ├── MainWindow.xaml + .cs              # Главное окно
│   ├── NotificationsWindow.xaml + .cs     # Окно уведомлений
│   └── TaskEditorWindow.xaml + .cs        # Окно создания и редактирования задания
├── .gitignore
├── App.xaml + .cs                         # Точка входа, глобальные ресурсы, инициализация базы данных
├── AssemblyInfo.cs                        # Атрибуты сборки
├── LICENSE.txt
├── README.en.md
└── README.md

🚀 Быстрый старт

Предварительные требования

  • .NET 8.0 SDK
  • Visual Studio 2022 (или любая IDE с поддержкой WPF)

Используемые NuGet пакеты

Microsoft.EntityFrameworkCore.Sqlite -Version 8.0.8
Microsoft.EntityFrameworkCore.Tools -Version 8.0.8

Установка и запуск

git clone https://github.com/MordaRedFox/homework-tracker.git
cd homework-tracker
dotnet restore
dotnet ef database update
dotnet run

При первом запуске база данных и все необходимые таблицы создаются автоматически в папке %LocalAppData%\HomeworkTracker\homework.db. Прикрепленные файлы копируются в подпапку Attachments.


📖 Основные сценарии использования

➕ Добавление и редактирование предмета

  • На левой панели нажмите "➕ Добавить предмет" и введите название (максимум 64 символа)
  • Вы так же можете редактировать и удалить предмет, нажимая на соотвествующие кнопки около названия нуного предмета

Добавление и редактирование предмета

✏️ Создание задания

  • Выберите дисциплину в левом списке
  • Нажмите "➕ Новое задание"
  • Заполните поля: название, описание, срок выполнения
  • Прикрепите файлы к своему заданию (кнопка "➕ Добавить файл")
  • Нажмите "Сохранить"
  • Вы можете редактировать существующие задание, нажав на соотвествующую кнопку на карточке задания

Создание задания

📎 Управление файлами задания

  • На карточке задания нажмите "📁 Файлы"
  • Откроется окно со списком вложений
  • Вложения к заданию можно открыть (на стандартной программе компьютера для этого расширения), переименовать, удалить, сохранить как

Управление файлами задания

📤 Сдача решения (файл ответа)

  • В карточке задания нажмите "📤 Сдать решение"
  • Выберите файл, введите отображаемое имя – задание автоматически отметится выполненным
  • Ответы к заданию можно открыть (на стандартной программе компьютера для этого расширения), переименовать, удалить, сохранить как

Сдача решения (файл ответа)

📅 Календарь и прогресс

  • На левой панели нажмите "📅 Календарь"
  • Выберите дату – справа отобразятся задания на эту дату
  • Прогресс-бар и мотивирующее сообщение показывают процент выполнения заданий на эту дату
  • Двойной клик по заданию в списке откроет редактор задания

Календарь и прогресс

🔔 Уведомления

  • Кнопка "🔔 Уведомления" показывает количество заданий, срок которых истекает в ближайшие 3 дня (включая сегодня)
  • При нажатии открывается окно со списком уведомлений
  • Двойной клик по заданию открывает его редактирование

Уведомления

🔍 Поиск

  • Поле "🔍 Поиск задания" фильтрует задания в текущей дисциплине по названию и описанию (без учета регистра)
  • Найденные вхождения подсвечиваются желтым полупрозрачным фоном

Поиск


⚠️ Важное примечание

Этот проект был разработан начинающим программистом-самоучкой. Код может содержать:

  • ❌ Ошибки и баги
  • ⚡ Неоптимальные решения
  • 🛡️ Недочёты в архитектуре

📩 Контакты

Я открыт для конструктивной критики и предложений по улучшению кода. Если вы нашли ошибку или знаете, как сделать что-то лучше - пожалуйста, свяжитесь со мной!

Telegram   Email

About

Система контроля домашних заданий в качестве личного тайм-менеджера для учебы // A homework control system as a personal time manager for studying

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages