Выполнил: Деревянкин Я.В
Группа: 932321
Разработать расширяемую систему для визуализации данных из различных источников (SQLite, JSON) с возможностью построения различных типов графиков (линейные, столбчатые). Программа должна позволять:
- Загружать данные из файлов различных форматов (
.sqlite,.json). Где ключом является значение "Time", а значением ключа — "Value" - Отображать данные в виде линейных и столбчатых графиков
- Поддерживать различные стили оформления (цветной, черно-белый)
- Экспортировать графики в PDF-формат
- Обеспечить лёгкое добавление новых источников данных и типов графиков
Реализовать программу с визуальным интерфейсом с использованием паттернов проектирования:
- Адаптер — для унификации работы с различными источниками данных и типами графиков
- Внедрение зависимостей (IoC) — для управления зависимостями и обеспечения слабой связанности компонентов
- Фабрика — для создания адаптеров данных в зависимости от типа файла
- MVC — для отображения файловой системы (QFileSystemModel — модель, QTreeView/QTableView — представления)
Создать абстрактные интерфейсы IData (для загрузки данных), IChart (для построения графиков) и IChartStyle (для стилизации). Использовать IOC-контейнер для управления зависимостями.
Абстрактный класс для всех источников данных. Определяет интерфейс для загрузки и получения данных.
Методы:
getType()— возвращает тип источника данных ("sqlite", "json")getPoints()— возвращает вектор точек (x, y) для построения графикаload(source)— загрузка данных из указанного источника
Реализация интерфейса IData для загрузки данных из SQLite баз данных.
Реализация интерфейса IData для загрузки данных из JSON-файлов.
Абстрактный интерфейс для создания адаптеров данных.
Методы:
create(filePath)— создает адаптер для указанного файлаsupports(filePath)— проверяет, поддерживается ли данный файл
Конкретная реализация фабрики данных.
Интерфейс для создания различных типов графиков.
Методы:
getSupportedDataType()— возвращает поддерживаемый тип данных ("line", "bar")createChart(data)— создает и возвращает объект графика
Реализация интерфейса IChart для создания линейных графиков.
Реализация интерфейса IChart для создания столбчатых графиков.
Интерфейс для применения стилей оформления к графикам.
Методы:
applyStyle(chart)— применяет стиль к графикуgetColorMode()— возвращает режим печати (цветной/черно-белый)getName()— возвращает название стиля
Реализация интерфейса IChartStyle для цветного оформления.
Реализация интерфейса IChartStyle для черно-белого оформления.
Центральный сервис для оркестрации создания графиков.
Методы:
registerChart(dataType, chart)— регистрация графика для типа данныхsetStyle(style)— установка текущего стиля оформленияsetChartType(chartType)— установка типа графикаcreateChart(data)— создание графика на основе данных с применением стиля
Сервис для экспорта графиков в PDF-формат.
Методы:
setFileName(fileName)— установка имени файлаprint(chartView, colorMode)— печать графика в PDF
Реализация паттерна Service Locator для управления созданием объектов.
Методы:
GetObject<T>()— получение объекта указанного типаRegisterInstance<TInterface>(instance)— регистрация готового экземпляраRegisterFactory<TInterface, TConcrete, TArgs...>()— регистрация фабричного метода
Основной пользовательский интерфейс.
Компоненты:
QFileSystemModel— модель файловой системы (слева — папки, справа — файлы)QTreeView— отображение дерева папокQTableView— отображение списка файловQComboBox— выбор типа графика (линейный/столбчатый)QCheckBox— переключение черно-белого режимаQPushButton— кнопка печати в PDF
Функциональность:
- Навигация по файловой системе
- Автоматическая загрузка и отображение данных при выборе файла
- Переключение между типами графиков
- Переключение между стилями оформления
- Экспорт графика в PDF
Ссылка: https://drive.google.com/file/d/15FCWKrIWWo5EnFKi58Tfy3PeGAkaYlJA/view?usp=sharing
После запуска открывается главное окно с файловым менеджером.
- В левой панели отображается дерево папок
- В правой панели отображаются файлы с расширениями
.sqlite,.json - Клик по папке обновляет список файлов в правой панели
- Кликните по любому файлу в правой панели
- Программа автоматически определит тип файла и загрузит данные
- Данные будут отображены в виде графика в нижней части правой панели
- Тип диаграммы — выберите "Line Chart" (линейный) или "Bar Chart" (столбчатый)
- Черно-белый график — включите для подготовки к черно-белой печати
- Нажмите кнопку "Печать графика"
- Выберите место сохранения и имя файла
- PDF будет сохранен в формате A4 с автоматическим масштабированием
Входные данные: Файл SQLite с таблицей (1438 записей)
Результат: Корректное отображение данных в виде линейного или столбчатого графика с правильным временным масштабом
Входные данные: JSON-файл с массивом объектов [{"x":1, "y":10}, {"x":2, "y":20}, ...]
Результат: Корректная загрузка точек и отображение графика
Входные действия: Включение чекбокса "Черно-белый график"
Результат: График перерисовывается в черно-белом стиле (оттенки серого)
Входные действия: Нажатие кнопки "Печать графика" → выбор пути сохранения
Результат: Сохранение графика в файл PDF с правильным масштабированием на странице A4
Входные действия: Выбор "Bar Chart" в комбобоксе
Результат: Данные перерисовываются в виде столбчатой диаграммы с автоматической агрегацией при большом количестве точек
Входные действия: Выбор файла с неподдерживаемым форматом
Результат: Сообщение об ошибке в статусной строке