| |
При ведении учета потребления электроэнергии юридических абонентов инженеру необходимо предоставить возможность введения данных о потреблении электроэнергии юридических абонентов. А именно: №, коэффициент счетчика; настоящие и предыдущие показания.
Предыдущие показания должны заноситься автоматически, т.е. считываться с настоящих показаний предыдущего месяца.
Также необходимо реализовать возможность на основании введенных данных автоматических расчетов:
расчет среднесуточного потребления электроэнергии;
расчет предполагаемого (ожидаемого) расхода электроэнергии за месяц;
расчет текущего расхода;
расчет разности предполагаемого и текущего расходов.
На рисунке 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 - "Ввод ежемесячных показаний"
В окне "Ввод ежемесячных показаний" инженер вручную заносит данные в поле "Настоящие показания". Поля "Наименование фидера", "Дата", "Предыдущие показания" заполняются автоматически, а поля "Разность" и "Расход" - высчитываются программным путем.