При ведении учета потребления электроэнергии юридических абонентов инженеру необходимо предоставить возможность введения данных о потреблении электроэнергии юридических абонентов. А именно: №, коэффициент счетчика; настоящие и предыдущие показания.
Предыдущие показания должны заноситься автоматически, т.е. считываться с настоящих показаний предыдущего месяца.
Также необходимо реализовать возможность на основании введенных данных автоматических расчетов:
расчет среднесуточного потребления электроэнергии;
расчет предполагаемого (ожидаемого) расхода электроэнергии за месяц;
расчет текущего расхода;
расчет разности предполагаемого и текущего расходов.
На рисунке 3.5 показан алгоритм работы подсистемы " Учет потребления электроэнергии бытовых абонентов".
При ведении учета потребления электроэнергии бытовых абонентов необходимо иметь возможность внесения данных о расходе потребления электроэнергии бытовыми абонентами на фидерах.
Для формирования отчетов инженеру пофидерного анализа необходимо предоставить возможность выбора типа отчета. А также возможность предварительного просмотра отчета нажатием кнопки "сформировать отчет", и если необходимо, распечатать его.
При проектировании базы данных следует придерживаться правил нормализации таблиц:
каждое поле любой таблицы должно быть уникальным;
каждая таблица должна иметь уникальный идентификатор (первичный ключ), который может состоять из одного или нескольких полей таблицы;
для каждого значения первичного ключа должно быть одно и только одно значение любого из столбцов данных, и это значение должно относиться к объекту таблицы;
должна иметься возможность изменения значения любого поля (не входящего в первичный ключ), и это не должно повлечь за собой изменения другого поля.
Каждый объект будет представлен отдельной таблицей базы данных. Элементы данных будут представлены полями таблиц. Имена таблиц и их полей подберем исходя из имен объектов и элементов данных. Проект базы данных включает в себя 5 таблиц:
таблицу фидеров (Phider);
таблицу абонентов "Abonent-inf";
таблицу расхода на фидерах "Phider- Rashod";
таблицу расхода юридических абонентов "Abonent_Pashod";
таблицу расхода бытовых абонентов "Bit".
Опишем базу данных в табличной форме.
Таблица 3.1 - Структура таблицы "Phider"
Имя поля | Описание | Тип | Размер | Ключ |
Name | Наименование фидера | Текстовый | 25 | * |
N_schetchik | № счетчика | Числовой | Длинное целое | |
Koef | Коэффициент | Числовой | Короткое целое | |
Pokaz | Показания | Числовой | Значение с плавающей точкой | |
Temp | Поле для хранения промежуточной информации | Числовой | Длинное целое |
Таблица "Phider- Rashod" (таблица 3.2) является подчиненной таблице "Phider".
Таблица 3.2 - Структура таблицы "Phider- Rashod"
Имя поля | Описание | Тип | Размер | Ключ |
Nomer | Номер записи | Счетчик | Длинное целое | * |
Name | Наименование фидера | Текстовый | 25 | |
Data | Дата | Дата | Краткий формат даты | |
Pred_Pokaz | Предыдущие показания | Числовой | Длинное целое | |
Nast | Настоящие показания | Числовой | Длинное целое | |
Raznost | Разность | Числовой | Длинное целое | |
Koef | Коэффициент | Числовой | Длинное целое | |
Rashod | Расход | Числовой | 6 | |
Polez | Полезный отпуск электроэнергии | Числовой | Длинное целое | |
Poteri | Количество неоплаченной электроэнергии | Числовой | Длинное целое | |
Procenti | Количество неоплаченной электроэнергии в процентах | Числовой | Длинное целое |
Таблица 3.3 - Структура таблицы "Abonent-inf"
Имя поля | Описание | Тип | Размер | Ключ |
Name | Наименование абонента | Текстовый | 100 | * |
N_schetchik | № счетчика | Числовой | Длинное целое | |
Nast_Pokaz | Настоящие показания | Числовой | Длинное целое | |
Phider | Фидер | Текстовый | 50 | |
Adres | Адрес | Текстовый | 240 | |
Tel | Телефон | Текстовый | 10 | |
Temp | Поле для хранения промежуточной информации | Числовой | Длинное целое |
Таблица "Abonent_Pashod" (таблица 3.4) является подчиненной таблице "Abonent-inf".
Таблица 3.4 - Структрура таблицы "Abonent_Pashod"
Имя поля | Описание | Тип | Размер | Ключ |
Nomer | Номер записи | Счетчик | Длинное целое | * |
Name | Наименование абонента | Текстовый | 255 | |
Data | Дата | Дата | Краткий формат даты | |
Pred_Pokaz | Предыдущие показания | Числовой | Длинное целое | |
Nast | Настоящие показания | Числовой | Длинное целое | |
Rashod | Расход | Числовой | Длинное целое | |
Pokaz_Kontr | Показания контрольного съема | Числовой | Длинное целое | |
Data_Rasnost | Разность между датой отчета и датой контрольного съема в днях | Числовой | Короткое целое | |
Day_Rashod | Среднесуточный расход | Числовой | Длинное целое | |
Ozid_Rashod | Ожидаемый расход | Числовой | Длинное целое | |
Rasnost_Rashod | Разность между отчетом по расходу и ожидаемым расходом | Числовой | Длинное целое | |
Phider | Фидер | Текстовый | 50 |
Таблица 3.5 - Структура таблицы "Bit"
Имя поля | Описание | Тип | Размер | Ключ |
Phider | Фидер | Текстовый | 50 | |
Data | Дата | Дата | Краткий формат даты | |
Pokaz | Показания | Числовой | Длинное целое |
Итак, спроектировано 5 таблиц базы данных. Для удобства работы две из них следует проиндексировать.
Таблицу "Phider- Rashod" - по полю Name и Data. Индекс по полю Data необходим для фильтрации записей в таблице по дате отчетного месяца. Индекс по полю Name применяется для фильтрации записей по наименованию фидера.
Таблицу "Abonent_Pashod" - по полю Nast для определения записей, которые содержат показания контрольного съема и не содержат данных о показаниях по отчету, и по полям Name и Data.
Связи между таблицами показаны на рисунке 3.7.
Рисунок 3.7 - Структура базы данных.
Данная программа написана на языке Delphi, имеет простой графический интерфейс.
Рисунок 3.8 - Главное окно программы
При запуске программы на рабочий стол выводится главное окно, в верхней части которого находится меню для выбора режимов работы. Главное окно программы изображено на рисунке 3.8.
Для начала работы с данной программой необходимо внести данные о фидерах. Для этого в меню "Фидера" необходимо выбрать подменю "Ввод начальных показаний", которое активирует окно "Выбор даты ввода показаний" Вводится дата, которая должна быть последним днем месяца (рисунок 3.9).
Рисунок 3.9 - "Выбор даты ввода показаний"
Дата указывается при помощи компонента DateTimePicker. Окно содержит две кнопки "Далее" и "Отменить".
Рисунок 3.9 - "Ввод начальных показаний"
При нажатии кнопки "Далее" активируется окно "Ввод начальных показаний" (рисунок 3.9).
При активации окна "Ввод начальных показаний" необходимо ввести следующую информацию:
наименование фидера;
номер счетчика;
коэффициент счетчика;
начальные показания.
Начальные показания счетчика конкретного фидера предоставляются инженеру пофидерного анализа в последний день месяца перед отчетным месяцем. Например, при начале работы с программой в январе месяце начальные показания фидеров вносятся за декабрь месяц.
Ввод информации в программе осуществляется при помощи визуального компонента для работы с БД TDBGRID.
Перемещение в ячейках компонента для ввода информации осуществляется при помощи клавиш на клавиатуре "влево - вправо", а для создания новой записи - клавиши "вниз".
После нажатия на кнопку "Сохранить" данные сохраняются.
При нажатии кнопки "Отменить" возвращаемся в главное окно.
При выборе подменю "Ввод показаний" на рабочем столе активируется окно "Ввод ежемесячных показаний на фидерах" (рисунок 3.10).
Данные показания ежемесячно предоставляются инженеру пофидерного анализа в последний день месяца.
Перед активацией данного окна также появляется окно "Выбор даты ввода показаний".
Рисунок 3.10 - "Ввод ежемесячных показаний"
В окне "Ввод ежемесячных показаний" инженер вручную заносит данные в поле "Настоящие показания". Поля "Наименование фидера", "Дата", "Предыдущие показания" заполняются автоматически, а поля "Разность" и "Расход" - высчитываются программным путем.