Structured Notes Manager — це застосунок на C++ для керування нотатками з підтримкою динамічних схем даних.
Звіти про виконання (Reports)
- Лабораторна робота №1a (Рефакторинг): Читати звіт
- Порівняння змін (GitHub Compare): Дивитися зміни між версіями
Лабораторна робота №1b (Моделювання з використанням UML): Моделювання сервісу Google Classroom. Проаналізовано структуру даних, ролі користувачів та процеси взаємодії студента з викладачем.
Ідея: Наразі в Classroom процес "Повернути на доопрацювання" є хаотичним: викладач повертає роботу, але студент не має нового чіткого дедлайну, а викладач не бачить зручного списку саме тих робіт, що "в процесі виправлення". Функціональність:
- Auto-Deadline: При натисканні "Return for Revision" викладач встановлює часове вікно (наприклад, 48 годин).
- Revision Tracking: Робота отримує унікальний стан UNDER_REVISION.
- Iteration Limit: Можливість обмежити кількість спроб здачі (наприклад, не більше 3-х).
- Лабораторна робота №1d (Ретроспектива інструменту): Читати звіт
- Лабораторна робота №1e (UML як мова опису не лише для програмування): Моделювання типових сценаріїв студента-програміста. Переглянути діаграми 1e
- Глосарій: glossary.txt
Архітектура та Моделювання (UML)
Проєкт було перебудовано з монолітної структури на модульну рівневу архітектуру (Layered Architecture).
Повний набір діаграм (Class, Sequence, Activity, Component тощо) доступний тут:
Переглянути UML діаграми (Source & PNG)
Ключові впровадження:
- Розділення на компоненти (CMake): Логіку винесено в окрему статичну бібліотеку
CoreLib, що дозволило відокремити бізнес-правила від GUI.
- Repository Pattern: Ізоляція роботи з даними через клас
NoteRepository.
- Strategy Pattern: Впровадження інтерфейсу
IStorageStrategy для динамічної зміни формату серіалізації.
- Service Layer: Виділення
ExportService та StatisticsService для дотримання принципу SRP (SOLID).
Технічні особливості і бонусні впровадження
Автоматизація та CI/CD
- GitHub Actions: Налаштовано автоматичний Pipeline для перевірки збірки та автоматичної генерації документації.
- Doxygen: Технічна документація генерується з коду при кожному коміті. Відкрити документацію (GitHub Pages)
Аналіз продуктивності (Benchmarking)
- Реалізовано вбудований модуль для порівняння бібліотек nlohmann/json та RapidJSON.
- Використано фреймворк nanobench.h для отримання точних метрик у наносекундах.
Quality Assurance
- Unit Testing: Покриття тестів для логіки
CoreLib.
- Logging: Власна система логування (папка
utils), що фіксує стан системи у log.txt.
Функціональні можливості
- Динамічні схеми: Можливість створювати власні типи нотаток з довільними полями.
- Smart Search & Sort: Сортування (AZ/ZA, дата) та фільтрація в реальному часі.
- Експорт: Генерація PDF-документів зі складною версткою та зображеннями.
- Статистика: Візуалізація активності користувача за допомогою графіків QCustomPlot.
- UI/UX: Підтримка тем (Light/Dark), інтернаціоналізація (i18n), закріплення нотаток (Pinning).