Разработка программного комплекса расчета компенсаций по капитальному ремонту

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    2,1 Мб
  • Опубликовано:
    2017-01-19
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка программного комплекса расчета компенсаций по капитальному ремонту

СОДЕРЖАНИЕ

Введение

. Анализ существующих систем по расчету компенсаций по капитальному ремонту

1.1 Функции фонда капитального ремонта

1.2 Факторы, влияющие на выбор

.3 Решение задачи в разных субъектах РФ

.3.1 Республика Калмыкия

.3.2 Республика Мордовия

.3.3 Вологодская область

Разработка технических требований и постановка задач выпускной квалификационной работы

.1 Требования к характеристикам взаимодействия с внешними системами

.1.1 Требования к функционированию

.1.2 Требования к информационному обеспечению

.1.3 Требования к программному обеспечению

.1.4 Требования к эргономике и технической эстетике

.1.5 Требования к организации загрузки данных

Структура программного комплекса

Описание базы данных

.1 Табличные пространства

.2 Блоки данных

.3 Экстенты

.4 Сегменты

.5 Описание структуры базы данных

. Разработка алгоритмов

Реализация программных модулей системы

. Отладка и экспериментальное тестирование

. Разработка технической документации. Руководство пользователя

Заключение

Список использованных источников

ВВЕДЕНИЕ

С наступлением 21 века мир персональных компьютеров трудно представить себе без использования различных информационных систем. Практически все системы в тoй или иной степени связаны с функциями обработки информации и долговременного хранения. Фактически информация становится фактором, определяющим эффективность любой сферы деятельности. Информационные потоки увеличиваются в геометрической прогрессии вместе с этим повышаются требования к скорости обработки данных, и теперь уже большинство операций не может быть выполнено вручную, они требуют применения наиболее передовых компьютерных технологий. Любые административные решения требуют четкой и точной оценки текущей ситуации и возможных перспектив ее изменения. И, если раньше, в оценке ситуации участвовало несколько десятков факторов, которые могли быть вычислены вручную с использованием простейших предметов (ручка, бумага, карандаш), то теперь таких факторов десятки и сотни тысяч, и ситуация меняется не в течение года, месяца, дня, а через несколько минут, а обоснованность принимаемых решений требуется большая, потому что и реакция на неправильные решения более серьезная, более быстрая и более мощная, чем раньше. И, конечно обойтись без информационных систем невозможно.

Как правило, информационные системы создаются обычно не для решения какой-либо одной задачи для одного пользователя, а для решения множество задач для целого коллектива предприятия. В настоящее время информационные системы существуют на подавляющем числе даже маленьких предприятий, не говоря уже о многотысячных концернах, заводах и т.д.

Процесс глобальной автоматизации начинается с середины 80 г. и связан с появлением первой вычислительной машины, которая не была совершенна в современном понимании и требовала специализированного программного обеспечения, а также специального технического обслуживания.

В настоящее время процесс автоматизации затронули не только производственную, техническую и технологическую сферы деятельности человечества, но и информационное пространство; в частности школы, магазины, музеи, многофункциональные информационные центры и т.д. Уже сложно представить жизнь современного общества без таких понятий как интернет, средства телекоммуникации и т.д. Автоматизация больше всего затронула информационную сферу, так как именно информация нуждалась и нуждается в быстром поиске, отборе, сортировке, преобразовании и хранении, а также в обеспечении доступа к ней.

Основное преимущество автоматизации - это, уменьшение трудозатрат на обработку единицы информации, увеличение степени достоверности и качества информации; излишнее количество внутренних промежуточных документов, различных журналов, папок, заявок и т.д., повторное внесение одной и той же информации в различные промежуточные документы, переход на так называемый электронный документооборот. Также значительно сокращает время автоматический поиск информации из специальных экранных форм, в которых указываются параметры поиска объекта.

С развитием информационных систем возникает ряд проблем:

)        отбор качественного программного обеспечения из многочисленных предложений;

)        значительные затраты на начальном этапе разработки, тестирования и внедрения;

)        необходимость введения в штат организации соответствующих специалистов для обслуживания информационной системы, либо затраты по аутсорсингу.

С октября 2014 года в Вологодской области, согласно поправок в Жилищный кодекс и нормативные документы областного значения, у собственников помещений появилась обязанность уплачивать взносы на капитальный ремонт. Согласно постановлениям Правительства Вологодской области № 401 от 16.04.2010г и № 402 от 16.04.2010г, выделяются отдельные категории граждан, которым назначаются льготы на уплату взносов на капитальный ремонт. Разработан следующий механизм начисления льгот: собственник помещения уплачивает взнос на капитальный ремонт в размере 100%, затем районные центры социальных выплат высчитывают объем льготы и отправляют эти данные в некоммерческую организацию Вологодской области «Фонд капитального ремонта многоквартирных домов Вологодской области» (далее Фонд). Фонд производит начисление и отправляет эти данные обратно в центры социальных выплат для выплаты собственнику[2][3].

Целью данного дипломного проекта является создание информационной системы для нужд Фонда капитального ремонта по расчетам льготы по уплате взносов на капитальный ремонт.

1. АНАЛИЗ СУЩЕСТВУЮЩИХ СИСТЕМ ПО РАСЧЕТУ КОМПЕНСАЦИЙ ПО КАПИТАЛЬНОМУ РЕМОНТУ

В настоящее время в России все собственники помещений обязаны уплачивать взносы на капитальный ремонт. В каждом субъекте на местном уровне разработан механизм уплаты взносов, а также их размер, например, в Москве размер взноса единый и составляет 15 рублей за квадратный метр, в Санкт-Петербурге размер взноса дифференцированный, зависит от ряда показателей и составляет от 2,5 рублей до 4 рублей за квадратный метр. В Вологодской же области размер взноса составляет 6,6 рублей за квадратный метр. (постановление Правительства Вологодской области от 31 октября 2013 года № 1119 "Об установлении минимального размера взноса на капитальный ремонт общего имущества в многоквартирном доме" <#"897875.files/image001.gif">

Рисунок 3.2- Основные части программы

Кроме того, есть группа модулей, реализующих функционал различных диалоговых окон, таких как формы настройки печати отчетов, обмена данными или настроек программы. Чтобы не загромождать укрупненную схему проекта, на рисунке 3.2 эти модули не показаны.

Модуль MainKR - основной модуль программы. Он реализует рабочее пространство (внутри которого открываются все формы списков документов), главное меню, осуществляет вызовы и вывод на экран всех прочих форм.

Модуль DataKR содержит компоненты доступа к данным - соединение с СУБД Oracle, компоненты для выполнения запросов и другие компоненты, предназначенные для взаимодействия с СУБД.

Модуль FKR представляет собой хранилище классов, типов данных, глобальных переменных и констант, а также все общие процедуры и функции, используемые другими модулями программы.

Модуль AncFormKR является «предком» всех списочных форм документов. Он реализует общий для всех документов функционал - поиск, фильтрация, настройка внешнего вида списков и прочие функции. Возможности ООП (объектно-ориентированного программирования) позволяют один раз реализовать весь необходимый функционал, вместо того, чтобы повторять его в каждом объекте-наследнике. Все формы, унаследованные от AncFormKR получают от нее готовый интерфейс и набор общих для всех функций. Особенности, имеющиеся в различных документах, реализуются уже в самих модулях-наследниках.

Формы правки документов индивидуальны для каждого типа документов и реализуют интерфейс редактирования атрибутов каждого документа. Они имеют схожий вид - панель с закладками слева и элементы редактирования на основной части окна, но количество вкладок, набор команд и набор редактируемых атрибутов индивидуальны для каждого вида документа.

Так же в системе присутствуют менее важные не большие модули, перечислим их:

)        DatesDiapKR - Форма ввода диапазона дат (для отчетов, фильтров и т.п);

)        DictEditKR - универсальная форма правки значения простого справочника. Справочники, не требующего своей отдельной формы ввода (например, справочник контрагентов), могут быть изменены через специальный редактор справочников (DictsKR, см.ниже), где им сопоставлена эта форма. Она первоначально не имеет созданных в режиме разработки полей ввода, но, анализирует состав полей и типы данный, генерирует форму правки для каждого справочника индивидуально;

)        DictsKR - Редактор простых справочников;

)        FastSearchKR - Форма быстрого поиска. Во время быстрого поиска в списках документов (и справочников), над заголовком поля появляется строка набора символов. Это на самом деле форма, реализующая как раз быстрый поиск, но «безголовая». Такая форма не имеет стадартного заголовка и представлена только теми элементами, которые есть на ней. На форме FastSearchForm это единственная строка ввода поиска;

)        OpenDBKR - Форма настройки и соединения с базой данных;

)        SearchKR - подробный поиск. Есть во всех картотеках слева от основного списка документов, реализован на панели команд кнопкой «Поиск»;

)        SelectKR - Форма выбора значения из справочника;

)        VislGridKR in 'VislGridKR.pas' - реализует настройку полей каждого списка - какие вывести, какие скрыть, а также определяет цвет столбцов и сортировку. Вызывается щелчком мышь по заголовкам табличной части списка;

)        WaitKR - форма окна ожидания («подождите»);

)        FKR - основные функции, процедуры и типы данных для всего проекта;

)        OptionsKR - форма настройки программы;

)        SotrKR - список сотрудников;

)        UsersKR - списк пользователей системы;

)        UserEditKR - редактирование справочника пользователей;

)        UsrGroupsKR - группы пользователей;

)        CalendarKR - форма календарь;

)        LogKR in 'LogKR.pas -журнал событий системы;

)        MultiSelectKR - форме множественного выбора из списка;

)        LogViewKR - форма просмотра события;

)        FilesOSZN - документ загруженных исходных реестров льготников (ОСЗН);

)        FilesOSZNEdit - просмотр/правка строки исходного реестра льготников;

)        RTDList - документ «Реестр льготников». Это основная исходная природная. RTDEdit форма редактирования документа из RTDList;

)        RepPaymentsKR - плательщики;

)        LoadOSZNKR - модуль загрузки и сопоставления льгот;

)        UploadOSZNKR - модуль для выгрузки файлов ОСЗН;

)        RTDRecEdit - форма правки строки по отдельному льготнику;

)        SetStateKR - установка состояния дома при ручном сопоставлении льготников;

)        UpdatesKR - работа с обновлением программы;

)        WordKR - реализованы функции MS Word;

)        OffsetListKR - зачеты (список);

)        OffsetEditKR - Правка зачетов;

)        AboutKR - форма «О программе»;

)        WNewKR - форма «Что нового»;

)        LCList - список лицевых счетов;

)        LCEdit - форма правки лицевого счета.

Большинство форм в программе не создаются при старте (кроме нескольких часто используемых). Для улучшения работы с памятью и предотвращения утечек памяти, они создаются по мере необходимости, а при закрытии освобождают память.

4. ОПИСАНИЕ БАЗЫ ДАННЫХ

У базы данных есть как логические структуры, так и физические структуры, представлено на рисунке 4.1.

Рисунок 4.1- Базы данных, табличные пространства и файлы данных

Взаимосвязь между базами данных, табличными пространствами и файлами данных проиллюстрирована на рисунке. Каждая база данных логически делится на два или более табличных пространства. Один или более файлов данных создаются явным образом для каждого табличного пространства, чтобы физически хранить данные всех сегментов в табличном пространстве. Если это временное табличное пространство, у него имеется временный файл вместо файла данных. Файл данных табличного пространства может физически храниться с помощью любой поддерживаемой технологии хранения.

4.1 Табличные пространства

База данных делится на логические единицы хранения данных, называемые табличными пространствами, которые собирают в группу связанные логические структуры или файлы данных. Например, табличные пространства обычно группируют все сегменты приложения, чтобы упростить некоторые административные операции.

4.2 Блоки данных

На самом низшем уровне гранулярности данные базы данных Oracle хранятся в блоках данных. Один блок данных соответствует определенному числу байтов физического пространства на диске. Размер блока данных указывается для каждого табличного пространства, когда оно создается. База данных использует и выделяет свободное пространство базы данных в блоках данных Oracle.

4.3 Экстенты

Следующий уровень логического пространства базы данных - экстент. Экстент - определенное число непрерывных блоков данных Oracle (полученных за одно выделение), которые используются, чтобы хранить определенный тип информации. Блоки данных Oracle в экстенте логически непрерывны, но могут быть физически разбросаны на диске из-за чередования RAID и реализаций файловой системы.

4.4 Сегменты

Уровень логического хранения базы данных, стоящий над экстентом называют сегментом. Сегмент - набор экстентов, выделенных для определенной логической структуры. Сегменты данных: каждая некластеризованная, не индексная таблица имеет сегмент данных, за исключением внешних таблиц, глобальных временных таблиц и секционированных таблиц, в которых у каждой таблицы есть один или более сегментов. Все данные таблицы хранятся в экстентах ее сегмента данных. Для секционированной таблицы у каждой секции есть сегмент данных. У каждого кластера есть сегмент данных. Данные каждой таблицы в кластере сохраняются в сегменте данных кластера.

Индексные сегменты: у каждого индекса есть индексный сегмент, который сохраняет все его данные. Для секционированного индекса у каждой секции есть индексный сегмент.

Сегменты отмены: одно табличное пространство отмены создается для каждого экземпляра базы данных. Это табличное пространство содержит многочисленные сегменты отмены, чтобы временно хранить информацию отмены. Информация в сегменте отмены используется, чтобы генерировать согласованную по чтению информацию базы данных, а также во время восстановления базы данных - для отката незафиксированных транзакций пользователей.

Временные сегменты: временные сегменты создаются базой данных Oracle, когда SQL-оператор нуждается во временной рабочей области, чтобы завершить выполнение. Когда оператор заканчивает выполнение, экстенты временного сегмента возвращаются экземпляру для будущего использования. Указывайте либо временное табличное пространство по умолчанию для каждого пользователя, либо временное табличное пространство по умолчанию, которое будет использоваться для всей базы данных.

Есть другие типы сегментов, не упомянутые выше. Есть также объекты схемы, такие как представления, пакеты, триггеры, и т.д., которые не считают сегментами даже при том, что они являются объектами базы данных. Сегменту принадлежит соответствующее выделение дискового пространства. Другие объекты существуют как строки, хранимые в системном сегменте метаданных. Сервер базы данных Oracle динамически выделяет пространство. Когда существующие экстенты сегмента заполняются, добавляются дополнительные экстенты. Поскольку экстенты выделяются по необходимости, экстенты сегмента могут быть, а могут и не быть непрерывными на диске, и они могут принадлежать различным файлам данных одного и того же табличного пространства.

4.5 Описание структуры базы данных

В качестве системы управления базой данных в проекте выбрана СУБД Oracle. Общее количество таблиц в используемой базе данных - более 300, но в рамках данного проекта нас интересует часть структуры, отвечающая за хранение и обработку данных по льготным категориям граждан.

Хранение входных данных (копия содержимого DBF-файла) производится в двух таблицах - RT_PEP_OSZNFILE и RT_PEP_OSZNFILEDATA. Эти две таблицы представляют документ «Импорт реестра льготников». Первая - RT_PEP_OSZNFILE - шапка документа, содержит общую информацию - имя файла, дату загрузки, количество записей и другую служебную информацию. Второй - RT_PEP_OSZNFILEDATA - собственно табличная часть документа, представляющая собой копию данных их DBF-файла органов социальной защиты населения[8,10].

Для работы с данными по льготам необходимо их обработать и сопоставить с лицевыми счетами и помещениями в многоквартирных домах. При этом входные загруженные данные необходимо оставить в неизменном виде. Для работы с данными создается другой документ - «Реестр льготников». Он представлен тремя таблицами - RTD_DOC_1002_500_00, RTD_DOC_1002_500_01, RTD_DOC_1002_500_02. Первая из них - шапка документа, вторая содержит все записи реестра льготников и третья - исключенные записи (льготники, которые ранее, в прошлом месяце, имели право на льготу, но в новом реестре они отсутствуют).

Ниже, на рисунке 4.2, представлена схема данных, используемая для хранения и обработки данных по льготам. В верхней части каждого блока - системное имя таблицы, в нижней - краткое описание. Стрелками показано направление связей, ссылки одной таблицы на другую (не информационные потоки). В базе данных предусмотрен контроль целостности, поля, поиск по которым критичен по скорости, индексированы.

Вазе данных предусмотрен контроль целостности, поля, поиск по которым критичен по скорости, индексированы

Рисунок 4.2- Схема базы данных Oracle

5. РАЗРАБОТКА АЛГОРИТМОВ

Разработку алгоритма является неотъемлемой частью создания любой автоматизированной информационной системы и служит его основой. Алгоритм чаще всего представляют в виде блок-схемы с описанием всех стадий.

Рассмотрим на примере загрузки и сопоставления записей реестра льготников[9].

На входе в процедуру указывается имя файла архива (типа G08xxx04.zip), признак муниципального или федерального файла, номер записи, с которой начать (если 0 - с начала файла), номер записи, которой закончить (если 0 - до конца файла).

Последние 2 параметра используются в случае, если загрузка была прервана где-то в середине файла и нужно продолжить с прерванного момента, чтобы не обрабатывать все заново. Далее извлекается из архива файл DBF-формата, открывается таблица и создается новый документ «Импорт реестра льготников» (таблица RT_PEP_OSZNFILE), «Реестр льготников» (таблица RTD_DOC_1002_500_00).

Далее описывается цикл по записям в DBF-файле. Сначала создается строка в табличной части документа «Импорт реестра льготников» (RT _PEP _ OSZNFILEDATA), затем происходит сбор строки для табличной части документа «Реестр льготников» (RTD_DOC_1002_500_01)

Сбор происходит по следующим параметрам:

)        поиск соответствия физического лица в соответствующем справочнике по коду СНИЛС;

)        если найдено физическое лицо по СНИЛС, сверяется его адрес по коду КЛАДР (строка могла переехать). Если адрес совпадает - все нормально, иначе привязывается ему новый адрес (какой отделение социальной защиты населения передала);

)        если не найден по СНИЛС, ищется по адресу. Сначала по КЛАДР - если найден, все нормально, берется этот адрес. Если по КЛАДР не найден (или КЛАДР пустой - в муниципальных файлах этого кода нет), ищется по строкам - населенный пункт, улица, дом. Если не найден - ставится признак «Адрес не обслуживается» (не наш дом);

)        если адрес найден (дом наш), но указанной квартиры в доме нет, ставит статус «Не найдено помещение»;

)        если адрес найден и квартира такая есть в базе данных, но сам многоквартирный дом не числится на расчетах в Фонде, ставится статус дома «Адрес не обслуживается»;

)        если адрес совсем не найден, даже с точностью до дома, запись получает статус «Адрес не найден»;

)        для найденных обслуживаемых адресов проверяется категория льгот. Есть вероятность, что появилась новая льгота. При необходимости создается новая запись о наличии льготы (в таблицу rt_pep_person), иначе (при имеющейся льготе), используем ту, что есть сейчас в базе данных. Также возможна ситуация, когда льгота в файле отделения социальной защиты населения не указана, либо указана льгота с кодом, отсутствующая в нашем справочнике. В этом случае запись получает статус «Льгота не определена»;

)        после всех проверок и сопоставлений, если запись не получила статусов в пунктах 5.2.3 - 5.2.7, она получает статус «Успешно», по ней будет рассчитана льгота, согласно проценту категории льготника. Происходит сохранение строки в табличной части документа Реестр льготников» (RTD_DOC_1002_500_01).

Далее цикл заканчивается. Происходит закрытие файла DBF, сохранение оставшихся данных документов «Импорт реестра льготников» и «Реестр льготников» и выход из процедуры.

Далее рассмотрим данный алгоритм на примере блок-схемы, представлена на рисунке 5.1.

Рисунок 5.1- Блок-схема

6. РЕАЛИЗАЦИЯ ПРОГРАММНЫХ МОДУЛЕЙ СИСТЕМЫ

В данном пункте рассмотрим интерфейс автоматизированной информационной системы, а также часть кода с комментариями^

)        окно входа в систему. При запуске ярлыка системы выходит меню для ввода логина и пароля. В системе реализована одноуровневая система идентификации. В настоящее время данного уровня защиты вполне достаточно, так как подключение происходит только из локально вычислительной сети организации с белым внешним IP-адресом. Со стороны сервера данный адрес прописан в разрешенных подключениях. В будущем при следующих этапах модернизации будет реализована двухуровневая система идентификации со 128 битным шифрованием, когда программа начнет работать через WEB формы и будет доступна из любой точки по средствам сети Интернет, представлено на рисунке 6.1.

Рисунок 6.1- Окно входа в систему

)        общий вид системы, главное окно, представлено на рисунке 6.2.

Рисунок 6.2- Общий вид

)        меню документы. Данный раздел сейчас находится в стадии разработки. В последующих обновлениях здесь будут реализованы функции различных дополнительных начислений, проведений ремонтов, некоторые документы и соглашения. Так же будет реализован импорт льготников и статистика. В конце 2016 года будет приняты поправки в законодательство, обязывающие производить импорт льготников в нескольких форматах в электронном виде, а также в определенных печатных формах с включением блока статистики в разрезе по кварталам и с целым набором показателей, представлено на рисунок 6.4.

Рисунок 6.3- Меню действия

Рисунок 6.4- Меню документы

)        меню Справочники. Данное меню создано с заделом на будущее и находится в разработке. Используются только Реестр льготников и Сотрудники. Пункт Реестр льготников позволяет получить всю имеющуюся информацию о любом льготнике в Вологодской области. В пункте Сотрудники реализована функция учета сотрудников, как пользователей системы. Наименование управления, отдела, должности, фамилия, имя, отчество. При входе в программу с правами администратора в данном меню можно посмотреть настройку и разграничение прав пользователей. В будущих обновлениях планируется реализация учета рабочего времени, то есть сколько часов, минут и секунд конкретный пользователь затратил на работу в системе в разрезе по окнам, представлено на рисунке 6.5.

Рисунок 6.5- Меню справочники

)        меню Отчеты находится в разработке.

)        меню Сервис. В пункте Загрузка реестров ОСЗН производится загрузка всех присланных файлов по районо. В пункте Выгрузка рассчитанных льгот для ОСЗН указывается корневая папка для выгрузки готовых файлов обмена для последующей отправки. В последующих обновлениях будут реализованы функции расчетов с банками и другими кредитными учреждениями, ведущими расчеты с абонентами. В пункте Настройка программы указываются общие настройки интерфейса. Во вкладке Обмен данными настраивается путь для выгрузки готовых рассчитанных файлов обмена, представлены на рисунках 6.6, 6.7.

Рисунок 6.6- Меню сервис

Рисунок 6.7- Пункт настройка программы

)        пункт Расчет льгот. При нажатии Действия-Расчет льгот открывается дополнительное окно с параметрами расчета льгот. Указывается период месяц и год, район и вид льготника (федеральные и областные либо муниципальные). При нажатии на кнопку «Выполнить» производится расчет льгот по заданным параметрам, представлены на рисунках 6.8, 6.9, 6.10, 6.11.

Рисунок 6.8- Расчет льгот

Рисунок 6.9- Выбор параметров

Рисунок 6.10

Рисунок 6.11

Ниже представлен характерный фрагмент кода программы. В качестве фрагмента использована процедура выгрузки данных рассчитанных льгот в файл DBF-формата для последующей передачи в органы социальной защиты населения. Так как по требованию органов социальной защиты населения, форматы данных для федеральных/областных и муниципальных льгот различаются, это учтено в процедуре выгрузки. Эталонные пустые таблицы берутся из файлов «OSZN_Header_F.DBF» (федеральный) и OSZN_Header_M.DBF (муниципальный). Файлы расположены в каталоге C:\ProgramData\KR. Интерфейс пользователя, обеспечивающий настройку выгрузки данных, представлен на рисунке 6.12[4-7,11].

Рисунок 6.12- Выгрузка данных

//Процедура выгрузки данных по рассчитанным льготам в органы соц.защины населения

TUploadOSZNForm.UploadToDBF;s,s_ord,ps,ps_u,pcode:string;,pr,sm,smd:double;,m,lcount,fs, lc_id:integer;:file;//Для работы с DBF-файлом напрямую, через файловые операции,s2:string;:boolean;//Признак муниципального документа.

//От этого зависит формат DBF-таблицыNB:byte = 101;//Код для DBF-файла.

//Кодовая страница CP866 (файл ОСЗН имеет не

//совсем стандартный заголовок и для того, чтобы

//все у принимающей стороны все правильно

//загрузилось, принудительно будем менять DBF-заголовокID_Doc500=0 then begin('Необходимо выбрать документ для выгрузки!', mtWarning, [mbok], 0);;;

//Выгрузка данных льгот в DBF

//Вывод на экран формы ожидания:=TWaitForm.Create(self);.Label1.Caption:='Выборка данных...'+#13+'Пожалуйста, подождите';.Button1.Visible:=true;.Label2.Visible:=true;.Label2.Caption:='';.Label3.Visible:=false;.ProgressBar1.Visible:=true;.Show;.ProcessMessages;//Обновление всех окон программы.Cursor:=crHourglass;//Курсор «песочные часы»:=Inttostr(ComboBox6.ItemIndex+1);length(s)<2 then s:='0'+S;:=Inttostr(SpinEdit3.Value)+s;//Расчетный период ФКР

//Загрузим из файла текст SQL-запроса.TempQuery.Close;.TempQuery.SQL.LoadFromFile(appdata+'\SQL\UploadOSZN.sql');_u:=s+'.'+copy(Inttostr(SpinEdit3.Value),3,2);//Период ОСЗН.TempQuery.ParamByName('D1_ID').AsInteger:=ID_Doc500;.TempQuery.ParamByName('Per').AsString:=ps;.TempQuery.ParamByName('D1_ID').AsInteger:=ID_Doc500;

//Сортировка выгружаемых данных. Задается в форме настройки.RadioGroup1.ItemIndex of

:s_ord:='order by d1.f_recnum';

:s_ord:='order by (Case NVL(SUM(a.f_pepamount),0) when 0 then 0 else 1 end) desc, d1.f_src_fname, d1.f_src_name, d1.f_src_sname';;{case}(DM.TempQuery,s_ord,true);//Ф-ия замены строки ORDER запроса

// DM.TempQuery.SQL.SaveToFile(appdata+'\temp\test_upload.sql'); {используем для тестирования}DM.TempQuery.RecordCount>0 then begin:=DM.TempQuery.FieldByName('P_CODE').AsString;length(pcode)<2 then pcode:='0'+pcode;length(pcode)<3 then pcode:='0'+pcode;.TempQuery.FetchAll;.Label1.Caption:='Выгрузка данных...'+#13+'Пожалуйста, подождите';.Refresh;:=DM.TempQuery.RecordCount;:=0;pr:=100/lcount;

//Создадим таблицу DBF.UploadTable.DatabaseName:=Options.UploadDir;.UploadTable.TableName:='G'+OSZNCode+pcode+s+'.dbf';//Имя файла

//Проверка и корректировка имени файла. Если такой файл существует -

//добавим в имя «_2», затем «_3» и т.д., пока не найдем имя,

//которого еще нет. Ограничиваем нумерацию числом 100.:=1;(FileExists(DM.UploadTable.DatabaseName+ '\'+ DM.UploadTable.TableName)) and (N<100) do begin(n);.UploadTable.TableName:='G'+OSZNCode+pcode+s+'_'+inttostr(n)+'.dbf';;.UploadTable.TableType:=ttDBase;.UploadTable.TableLevel:=3;.UploadTable.FieldDefs.Clear;.DBFTable.DatabaseName:=appdata+'\SQL';:=(DM.TempQuery.FieldByName('f_ismunic').AsInteger=1);not isMunic then:=appdata+'\OSZN_Header_F.DBF' //Феделальный/областной формат:=appdata+'\OSZN_Header_M.DBF';//Муниципальный формат(PChar(s), PChar(DM.UploadTable.DatabaseName+ '\' + DM.UploadTable.TableName), true);.UploadTable.Open;:=false;(not DM.TempQuery.Eof)and (isBreak=false) do begin.Label2.Caption:='Записи: '+Inttostr(DM.TempQuery.RecNo)+' / '+Inttostr(DM.TempQuery.RecordCount);//Показ счетчика записей.ProcessMessages;:=DM.TempQuery.FieldByName('f_recnum').AsString;

//Построчная выгрузка в DBF.UploadTable.Insert;.UploadTable.FieldByName('KOD_R').Value := DM.TempQuery.FieldByName('KOD_R').Value;

//Заполним все поля с совпадающими именамиn:= 0 to DM.TempQuery.FieldCount-1 do beginDM.UploadTable.FindField( DM.TempQuery.Fields[n].DisplayName)<>nil then beginUPPERCase(DM.TempQuery.Fields[n].DisplayName)<>'SNILS' then begin(DM.TempQuery.Fields[n].DataType<>ftString)and(DM.TempQuery.Fields[n].DataType<>ftWideString) then.UploadTable.FindField(DM.TempQuery.Fields[n].DisplayName).Value:=DM.TempQuery.Fields[n].Value.UploadTable.FindField(DM.TempQuery.Fields[n].DisplayName).AsString:=DM.TempQuery.Fields[n].AsString;else begin //У СНИЛС-а вырежем лишние символы

//Это особенность хранения данного кода у нас и у ОСЗН:=StringReplace(DM.TempQuery.Fields[n].AsString,'-','',[rfReplaceAll]);:=StringReplace(s,' ','',[rfReplaceAll]);.UploadTable.FindField(DM.TempQuery.Fields[n].DisplayName).Value:=s;;;;

// Номер дома поправим. Тут надо отрезать все, после цифр:=TrimAll(DM.TempQuery.FieldByName('HOUSE').AsString);:='';:=DM.TempQuery.FieldByName('KORP').AsString;n:=1 to length(s) do begins[n] in ['0'..'9'] then s1:=s1+s[n]s2:=s2+s[n];;.UploadTable.FieldByName('HOUSE').Value:=s1;.UploadTable.FieldByName('KORP').Value:=s2;

//Остальные поляDM.UploadTable.FieldByName('K_FLAT').AsInteger<>1 then //Сумму в 0, это не льгота. Нет номера квартиры - дом частный..UploadTable.FieldByName('SUMMA1').AsFloat:=0;//Сумма льготы.UploadTable.FieldByName('PERIOD').AsString:=ps_u;//Период.UploadTable.FieldByName('ORG_PLAT').AsInteger:=DM.TempQuery.FieldByName('p_code').AsInteger;.UploadTable.FieldByName('LC_ID').AsString:=DM.UploadTable.FieldByName('LCHET').AsString;DM.UploadTable.FieldByName('K_FLAT').AsInteger=1 then begin //Собственность физ.лица. льгота имеет смысл (иначе не предоставляется)

//Наличие задолженности

//Сначала нужно выяснить подходящий лицевой счет

{ DM.TempQuery2.close;.TempQuery2.SQL.Text:='SELECT * FROM rt_cr_lacc WHERE f_room_id = '+(DM.TempQuery.FieldByName('r_id').AsInteger)+' and f_state=1';.TempQuery2.Open;DM.TempQuery2.FetchAll;:=0;DM.TempQuery2.RecordCount>0 then beginnot DM.TempQuery2.Eof do begin_id:=DM.TempQuery2.FieldByName('id').AsInteger;:=smd+GetLSSaldo(lc_id,today);;;.TempQuery2.close;}(DM.UploadTable.FieldByName('SUMMA_D').AsFloat>0) then begin

//Проаналитзируем величину задолженности. Д.б. не меньше 3х-кратного

//ежемесячного начисления. Иначе льгота не предоставляется.:=GetRoomAmount(SpinEdit3.Value,ComboBox6.ItemIndex+1,DM.TempQuery.FieldByName('r_id').AsInteger);DM.UploadTable.FieldByName('SUMMA_D').AsFloat>=(sm*3) then begin //Есть долг.UploadTable.FieldByName('P_DOLG').AsInteger:=1;.UploadTable.FieldByName('SUMMA_D').AsFloat:=DM.UploadTable.FieldByName('SUMMA_D').AsFloat;else begin //Нет долга.UploadTable.FieldByName('P_DOLG').AsInteger:=0;.UploadTable.FieldByName('SUMMA_D').AsFloat:=0;;else begin.UploadTable.FieldByName('P_DOLG').AsInteger:=0;.UploadTable.FieldByName('SUMMA_D').AsFloat:=0;;.UploadTable.FieldByName('SUMMA2').AsFloat:=DM.TempQuery.FieldByName('RC_SUM').AsFloat;else begin //Это иная форма собственности, льготы тут не считаем.UploadTable.FieldByName('P_DOLG').AsInteger:=0;.UploadTable.FieldByName('SUMMA_D').AsFloat:=0;.UploadTable.FieldByName('SUMMA2').AsFloat:=0;;isMunic then m:=10 else m:=20;n:=3 to m do begin.UploadTable.FieldByName('SUMMA'+inttostr(n)).AsFloat:=0;.UploadTable.FieldByName('K_USL'+inttostr(n)).AsInteger:=24;;.UploadTable.Post;.TempQuery.Next;:=tot+pr;.ProgressBar1.Position:=trunc(tot);;.UploadTable.Close;.TempQuery.close;

//Еще надо подправить байт кодировки...(f,DM.UploadTable.DatabaseName+'\'+DM.UploadTable.TableName);:=2;(f,1);(f,29);//29-й байт от начала файла - кодовая страница.(f,NB,1);:=FileSize(f);(f);

//Теперь создадим файл акта для получателя. Он в формате MS Word.

//lcount - кол-во лиц

//fs - размер файла

//DM.UploadTable.TableName - имя файла.Label1.Caption:='Формирование акта приема-передачи...'+#13+'Пожалуйста, подождите';.Refresh;.TempQuery.Close;.TempQuery.SQL.Text:='SELECT * FROM rt_pep_oszndocs WHERE id='+inttostr(ID_Pol);.TempQuery.Open;

//Тут используем функции модуля WordKR для удобства работы с MS Word.CreateWord(VWord) then begin //Создание соединения с COM-сервером Word(VWord,false);//Скрыть Word(VWord,appdata+'\Templates\Act_templ.docx');//Шаблон(VWord);(VWord);(VWord);(VWord);

//Дальше работаем в защищенной секции Try…Except с обработкой ошибок

//Заполнение реквизитов в печатной форме

//Функция FindAndPasteTextDoc находит и заменяет определенный метки на

//нужный текст.(VWord,'[DOC_NUMBER]', DM.TempQuery.FieldByName('DOC_NUMBER').AsString);(VWord,'[DOC_DATE]', DM.TempQuery.FieldByName('DOC_DATE').AsString);(VWord,'[OSZN_NAME]', DM.TempQuery.FieldByName('OSZN_NAME').AsString);(VWord,'[FL_COUNT]', Inttostr(lcount));(VWord,'[FILENAME]', DM.UploadTable.TableName);(VWord,'[FILESIZE]', Inttostr(fs)+' байт');(VWord,'[CDAY]', Inttostr(DayOf(Today)));(VWord,'[CMONTH]', ANSILowerCase(MonthsR[(MonthOf(Today))]));(VWord,'[CYEAR]', Inttostr(YearOf(Today)));

//Сохраним полученный файл(VWord,DM.UploadTable.DatabaseName+'\'+StringReplace(DM.UploadTable.TableName,'.dbf','.docx',[rfReplaceAll]));(VWord);:=0;//При «общении» с Вордом возникла ошибка…e:exception do begin.Free;Screen.Cursor:=crDefault;('Выгрузка данных для ОСЗН. Ошибка при получении формы Акта в MS Word.',e.Message,2);('Ошибка при Получении формы Акта в MS Word!'+#13+'Файл с данными создан учпешно.'+#13+'Ошибка: '+e.Message,mtError,[mbOk],0);(VWord);:=0;;;;

// end;.Free;Screen.Cursor:=crDefault;not isBreak then begin('Выгрузка данных для ОСЗН','ID документа: '+inttostr(ID_Doc500),5);//Запись в журнал событий('Выгрузка успешно завершена!'+#13+

'Файл: '+DM.UploadTable.DatabaseName+'\'+DM.UploadTable.TableName,mtInformation,[mbOk],0);else begin('Выгрузка данных для ОСЗН (прервано пользователем!)','ID документа: '+inttostr(ID_Doc500),5);('Выгрузка прервана пользователем, данные неполные!'+#13+

'Файл: '+DM.UploadTable.DatabaseName+'\'+DM.UploadTable.TableName,mtWarning,[mbOk],0);;else begin.UploadTable.Close;.TempQuery.close;.Free;Screen.Cursor:=crDefault;('Нет данных для выгрузки по уазанным параметрам!',mtWarning,[mbOk],0);;//Общая обработка ошибокe:exception do begin

// UploadOSZNForm.enabled:=true;.UploadTable.Close;.TempQuery.close;.Free;Screen.Cursor:=crDefault;('Выгрузка данных для ОСЗН. Ошибка.',e.Message,2);('Ошибка при сохранении данных в файл DBF!'+#13+e.Message,mtError,[mbOk],0);;;;

//Конец процедуры


Среда разработки Delphi XE5 имеет достаточно мощные средства отладки приложения в процессе разработки. Перед компиляцией программы можно выбрать режим работы: Debug - с включением отладочной информации для работы дебаггера или Release - чистый исполняемый файл, без отладочной информации. Для отладки используется первый режим, для получения конечного исполняемого файла, который планируется распространять для использования в организации - режим Release[12].

В режиме Debug возможна полноценная отладка программы - с установкой точек останова во время выполнения, с просмотром (и, при необходимости, изменением) значений переменных. Просмотр значений достаточно удобен - в понятной форме просматриваются как простые, так и сложные типы данных (многомерные массивы, объекты, классы и пр.).

Каждый модуль в процессе тестирования проверялся в несколько этапов:

)        первоначальная компиляция, выявление синтаксических ошибок, ошибок логики и порядка разработки. На этом этапе нужно, чтобы программа откомпилировалась и запустилась без «красных» ошибок;

)        проверка правильности реализации основных функций модуля. Здесь выясняется, насколько работа реализованных алгоритмов соответствует предъявляемым к ним требованиям. То есть, выполняет ли программа то, что было задумано на этапах проектирования и разработки;

)        проверка на «живучесть». При этом проверятся устойчивость алгоритмов при вводе нестандартных значений, «защита от дурака».

После вышеуказанных проверок, программа отдается на тестирование специалистам в конкретной предметной области (в нашем случае - бухгалтерии), которые могут выявить ошибки и недочеты, не учтенные на этапе первоначальной разработки. Также уточняется такая немаловажная сторона работы с программой, как эргономика - удобство работы с интерфейсом программы, его «дружественность», быстрый доступ к наиболее важным и часто используемым функциям.

После тестирования специалистами, производится сборка рабочей версии программы в режиме Release. Для распространения версии по всем рабочим станциям используется функция автоматического обновления.

Так же присутствует функция автоматического обновления. В базе данных предусмотрена специальная таблица KR_UPDATES, содержащая версию программы, краткое описание, некоторую служебную информацию и, самое главное, поле типа BLOB - Binary Large Object или «большой бинарный объект». Данное понятие относится к СУБД и означает, что в поле таблицы хранятся не простые данные (строка, число, дата и т.п.), а совершенно произвольный набор байт. Им может быть что угодно - изображение, документ, архивный файл или даже другая программа. Я в рамках данного проекта использую поле BLOB для хранения архива в формате ZIP, содержащего все файлы, изменившиеся с момента предыдущей версии[16].

Операционная система не позволить удалить или перезаписать файл, который в данный момент открыт или исполняется. Соответственно, запущенная программа не может быть перезаписана новой версией той же программы и для того, чтобы обновить основной исполняемый файл, нужно закрыть программу. Но тогда какая-то другая программа должна будет заменить файл (основная уже не работает). Чтобы это стало возможным, было разработано отдельное небольшое приложение, единственной задаче которого является ожидание завершения работы основной программы, и замена ее (а также всех сопутствующих файлов) на новую версию. Эта программа называется AutoUpdater, полный исходный код ее приведен ниже.

Для пользователя обновление происходит автоматически - при запуске основной программы, на экране появляется сообщение, представлено на рисунке 7.1.

Рисунок 7.1- Скриншот обновление

При нажатии кнопки «Да» программа закрывается и запускается AutoUpdater, который и производит все дальнейшие операции. Необходимые данные от основной программы передаются ему через параметры командной строки.

Также при работе программы каждые 10 минут происходит опрос сервера на наличие обновленной версии. В случае её обнаружения происходит то же самое что и при запуске - выдача сообщения и, при согласии пользователя, обновление программы.

Таким образов в процессе разработки и тестирования происходило обновление программного обеспечения.

8. РАЗРАБОТКА ТЕХНИЧЕСКОЙ ДОКУМЕНТАЦИИ. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

Автоматизированная информационная система обладает простым и удобным интерфейсом. Связь с программой обеспечивается по средствам использования клавиатуры и манипулятора типа мышь.

Для запуска программы необходима произвести двойной клик по ярлыку программы, представлено на рисунке 8.1.

Рисунок 8.1- Ярлык

Для входа в программу необходимо ввести логин и пароль, представлено на рисунке 8.2.

Рисунок 8.2- Вход в программу

Для расчета льгот необходимо открыть меню действия и кликнуть пункт расчет льгот, представлено на рисунке 8.3.

Рисунок 8.3- Расчет льгот

Далее определить период (месяц расчета), район или город и вид льгот (федеральные либо муниципальные), представлено на рисунке 8.4.

Рисунок 8.4- Параметры

После того как выполнится расчет необходимо закрыть всплывающееся окно и перейти к меню сервис и перейти на пункт обмен данными, далее выбрать из раскрывающегося списка пункт выгрузка рассчитанных льгот для ОСЗН, представлено на рисунке 8.5.

Рисунок 8.5- Выгрузка рассчитанных льгот

Далее определить период выгрузки, название документа и получателя файла и нажать кнопку выполнить, представлено на рисунке 8.6. Получившийся файл будет сохранен в заранее настроенной папке. Данная настройка производится в меню сервис, пункт настройка программы.

Рисунок 8.6- Параметры выгрузки

ЗАКЛЮЧЕНИЕ

Применение новых современных информационных технологий, позволяющих более эффективно хранить и обрабатывать все возрастающие объемы информации, призвано обеспечить своевременное заполнение необходимых баз данных достоверной информацией, провести их актуализацию, необходимые расчеты.

В данном дипломном проекте рассмотрено создание автоматизированной информационной системы по расчету льгот отдельным категориям граждан по уплате взносов на капитальный ремонт. Создан программный комплекс в среде разработки Delphi с использованием базы данных Oracle.

Автоматизированная информационная система устанавливается на компьютер пользователя и локально хранится на нем. Связь с базой данных осуществляется посредствам сети интернет.

Были рассмотрены основные компоненты и технологические процессы автоматизированных информационных систем, а также проанализированы существующие решения подобных разработок в других регионах РФ и определены их основные задачи, минусы и плюсы, и их недостатки. В дальнейшем была поставлена задача спроектировать автоматизированную информационную систему и определен будущий функционал программы.

Данное решение позволит полностью решить задачу своевременного расчета льгот и полностью автоматизирует этот процесс. Этой задачей в организации до применения автоматизированной информационной системы занимались на ежемесячной основе три специалиста. Можно сделать вывод о том, что при должном подходе и правильном проектировании информационных систем они позволяют автоматизировать и облегчить работу с информацией на предприятии, повысить эффективность труда работников.

Также автоматизированная информационная система будет модернизироваться. В будущем она позволит решать такие задачи, как ведение расчетов с абонентами, банковские операции, ведение специальных счетов собственников помещений, реализация краткосрочно плана проведения капитальных ремонтов многоквартирных домов и так далее. Создание WEB формы позволит работать с программой не только из локально-вычислительной сети организации, но и из любой точки мира по средствам сети интернет. Также существует множество планов и идей по развитию и совершенствованию программы. Наладка взаимодействия с сайтом организации, с автоматизированными информационными системами органом социальной защиты населения напрямую, а не посредствам обмена файлами информационного обмена.

Автоматизированная информационная система успешна внедрена и используется в Некоммерческой организации Вологодской области «Фонд капитального ремонта многоквартирных домов Вологодской области».

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1.     О реализации закона области от 5 февраля 2009 года N 1956-ОЗ "О форме предоставления мер социальной поддержки по оплате жилого помещения и коммунальных услуг отдельным категориям граждан: постановлениям Правительства Вологодской области от 16.04.2010г № 401

2.      О Порядке предоставления денежных компенсаций на оплату жилого помещения и коммунальных услуг отдельным категориям граждан: постановлениям Правительства Вологодской области от 16.04.2010г № 402

.        Архангельский, А.Я. Приемы программирования в Delphi/ А.Я. Архангельский. - Москва: Бином-Пресс, 2006. - 944 с.

.        Бескоровайный, И.В. Азбука Delphi: Программирование с нуля/ И.В. Бескоровайный. - Екатеринбург: Сибирский университет, 2008. - 112 с.

.        Бобровский, С.И. Delphi 7: учебный курс / С.И. Бобровский. - Санкт-Петербург: Питер, 2005. - 736 с.

.        Голицына, О.Л. Языки программирования: учебное пособие/ О.Л. Голицына, Т.Л. Партыка, И.И. Попов. - Москва: Форум, 2008.- 400 с.

.        Емельянова, Н.З. Основы построения автоматизированных информационных систем: учебное пособие для студентов/ Н.З. Емельянова, Т.А. Партыка. - Москва: Форум, 2011. - 416 с.

.        Карпова, Т.А. Базы данных. Модели, разработка, реализация: учебное пособие/ Т.А. Карпова. - Санкт-Петербург: Питер, 2008. - 304 с.

.        Фленов, М.Е. Библия Delphi 7 / М. Фленов. - Минск: BHV, 2007. - 800 с.

.        Джефферсон, А.А. Десять главных рекомендаций по настройке приложений/А.А, Джефферснон//Russian Oracle Internet Magazine. - 2000. - 22 мая С.22-41.

Похожие работы на - Разработка программного комплекса расчета компенсаций по капитальному ремонту

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!