Счётчики ЖКХ — исходный код приложения
Мобильное приложение для ОС Аврора: учёт показаний приборов учёта и расчёт коммунальных платежей. Курсовая работа по дисциплине «Разработка мобильных приложений».
Автор: Кривошеин Максим Константинович, группа ИС-2301, СПбГЭУ
Платформа: ОС Аврора 5.2 (Aurora SDK 5.2.0.180), Qt 5.6, C++ / QML (Sailfish Silica), SQLite
Пакет: ru.krivoshein.UtilityMeters, версия 1.0, архитектуры aarch64, armv7hl, x86_64
Возможности
- Список приборов учёта пяти типов: холодная и горячая вода, электроэнергия, газ, отопление. Для каждого задаются название, тариф и заводской номер; счётчики можно изменять и удалять.
- Ввод показаний с датой. Показание проверяется во время ввода:
- не меньше предыдущего и не больше следующего по дате;
- дата не в будущем, на одну дату — одно показание;
- если расход более чем в 3 раза выше среднего, показывается предупреждение.
- Расчёт расхода (разница с предыдущим показанием) и стоимости (расход × тариф), сумма к оплате за текущий месяц и сравнение с прошлым месяцем.
- Карточка счётчика: последнее показание, средний расход, расход и начисления за 12 месяцев, график расхода по месяцам, история показаний с удалением ошибочных записей.
- Статистика платежей: итог и среднее за 12 месяцев, самый дорогой месяц, график по месяцам и структура выбранного месяца по счётчикам.
- Напоминание с 20 по 25 число, если за текущий месяц переданы не все показания.
- Экспорт отчёта в CSV (
~/Documents/UtilityMeters_<дата>.csv, UTF-8, разделитель;), файл открывается в табличных редакторах. - Демо-данные: четыре счётчика с показаниями за 12 месяцев для знакомства с приложением.
- Работает без интернета, данные хранятся на устройстве в базе SQLite и сохраняются после перезапуска.
Архитектура
QML (Sailfish Silica) C++
────────────────────────────── ─────────────────────────────────────────
MainPage, MeterPage, StatisticsPage ──▶ MeterStore ── фасад для QML (meterStore)
MeterDialog, ReadingDialog │ MeterListModel ── модель списка счётчиков
BarChart, MessageBanner, TypeIcon │ Consumption ── расчёты и проверка показаний
│ MeterType ── типы счётчиков и единицы
└─ Database ── SQLite (QtSql)
-
Database(src/database.*) — таблицыmetersиreadings, внешний ключ с каскадным удалением, уникальность пары «счётчик — дата», версия схемы вPRAGMA user_version, запросы с подстановкой параметров, добавление счётчика и демо-данных в транзакции. -
Consumption(src/consumption.*) — правила расчёта без зависимости от базы и интерфейса: расход по показаниям, расход по месяцам, средний расход, стоимость с округлением до копеек, проверка нового показания. Покрыты юнит-тестами. -
MeterStore(src/meterstore.*) — объект, подключённый в корневой контекст QML: модель списка, итоги месяца, данные для графиков и статистики, проверка и сохранение показаний, экспорт CSV. Ошибки и уведомления передаёт в QML сигналами. -
QML — экраны и диалоги Silica, собственные компоненты: столбчатая диаграмма
BarChart, всплывающее сообщениеMessageBanner, значок типа счётчикаTypeIcon.
Расход показания относится к месяцу, в котором показание снято: так начисляют плату управляющие компании по показаниям, переданным жильцами.
Структура
ru.krivoshein.UtilityMeters.pro проект qmake (QT += sql)
ru.krivoshein.UtilityMeters.desktop ярлык, разрешение Documents для экспорта
rpm/ru.krivoshein.UtilityMeters.spec описание RPM-пакета
resources.qrc, images/types/ значки типов счётчиков
src/main.cpp запуск, открытие базы, регистрация meterStore
src/database.* работа с SQLite
src/consumption.* расчёты и проверка показаний
src/metertype.* типы счётчиков
src/meter.h структуры Meter и Reading
src/meterlistmodel.* модель списка счётчиков
src/meterstore.* фасад для QML
qml/UtilityMeters.qml окно приложения
qml/pages/ экраны и диалоги
qml/components/ BarChart, MessageBanner, TypeIcon
qml/cover/DefaultCoverPage.qml обложка с суммой к оплате
tests/ юнит-тесты QtTest
screenshots/ снимки экрана
Сборка и запуск
Проект открывается в Аврора IDE (Qt Creator из Aurora SDK 5.2) и собирается для любой
архитектуры. Пакеты подписываются и проходят rpm-validator с профилем regular.
Тесты
Юнит-тесты правил расчёта собираются для компьютера разработчика:
cd tests
qmake tests.pro && make && ./tst_consumption
Результат: Totals: 25 passed, 0 failed, 0 skipped.
Ограничения
- Тариф хранится у счётчика: если его изменить, стоимость пересчитывается и за прошлые месяцы. Для учёта смены тарифов нужна история тарифов с датой начала действия.
- Нет передачи показаний в управляющую компанию: приложение работает без интернета.
Скриншоты
| Первый запуск | Главный экран | Счётчик | История |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Показание | Ошибка | Предупреждение | Новый счётчик |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Статистика | Экспорт CSV |
|---|---|
![]() |
![]() |









