Реферат: АРМ бухгалтера-расчетчика

Учет квартплаты ()

Введение

Краткая характеристика предприятия

Усть-Кутская перевалочно-распределительная нефтебаза является филиалом ОАО "Иркутскнефтепродукт".

Расположена в г. Усть-Куте, Иркутской обл., на берегу р. Лена, в устье реки Якурим.

Нефтебаза классифицируется по следующим признакам:

-      по общей вместимости и максимальному объему одного резервуара относится к первой категории

-      по функциональному назначению – перевалочно-распределительная

-      по транспортным связям – смешанная, автомобильно-водно-железнодорожная

-      по номенклатуре – нефтебаза общего хранения.

Предприятие имеет восемь АЗС, а также пять филиалов-нефтескладов.

Характеристика производственной деятельности

По своему функциональному назначению нефтебаза является перевалочным пунктом для отправки нефтепродуктов в северные районы Иркутской области, Республику Саха-Якутия, Хабаровский край водным путем (по р. Лена) за период навигации с 1/05 по 25/10. Наличие мощного резервуарного парка позволяет производить накопление и хранение нефтепродукта в любое время года.

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

Маслами, смазками также обеспечиваются предприятия Братского и Усть-Илимского районов.

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

-      установка телефонов и обеспечение телефонной связью

-      передача электроэнергии через собственную подстанцию

-      снабжение паром, холодной и горячей водой от собственных источников (ТЭЦ, водозабор)

-      перевозка нефтепродуктов автотранспортом.

Производственные мощности и их оснащения

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

Схема 1

Структура управления предприятия

Схема 2

Подразделение предприятия на цеха

Непосредственная реализация нефтепродуктов осуществляется через такие основные цеха, как 1 цех, 4 цех и АЗС. Объем реализации нефтепродуктов по цехам распределяется в зависимости от сезонных условий, т.е. в летний период наибольший объем реализации нефтепродукта приходится на 1 и 4 цеха, т.к. в этих цехах производится отгрузка нефтепродуктов водным путем (танкерами).В зимний же период эти цеха производят "затарку" резервуаров на хранение нефтепродукта. Прием нефтепродукта осуществляется с вагоноцистерн через эстокады. Отгрузка производится водным путем танкерами через причалы

Цех № 1 предназначен как для хранения нефтепродукта , перевалки водным путем (танкерами), обеспечением города и филиалов темными и светлыми нефтепродуктами.

Цех № 4предназначен для хранения светлых нефтепродуктов и отправки водным путем.

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

Тарный производит перевалку горюче-смазочных материалов через бочкатару и поштучно (литол, циатим, тосол …).

Цех № 3, АЗС осуществляют реализацию нефтепродуктов населению и предприятиям наличным и безналичным расчетом.

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

 Основные производственные фонды

Условное распределение объема реализации нефтепродукта основными цехами

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

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

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

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

Высокая степень износа (более 60%) характеризует такие объекты основных средств как машины и оборудование, и транспортные средства. Их удельный вес в общем объеме составляет 2%.

Практически изношенными являются передаточные устройства, имеющие остаточную стоимость 22,7 млн.руб. при восстановительной стоимости 96,2 млн. руб.,

В связи с уменьшением капитальных вложений, ввод основных фондов за 1999-2000 сократился и не оказывает влияния. За 1999 г. введено основных средств на сумму 2,9 млн. руб. Списание основных средств в 2000 г. не производилось. Это связано с тем, что полностью амортизированные основные средства эксплуатируются, а списание основных средств физически изношенных и не эксплуатирующихся, но не имеющих остаточную стоимость не разрешается.

В целом основные средства нефтебазы имеют значительную восстановительную стоимость 606,9 млн. руб., большой износ – 356,8 млн. руб.

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

Себестоимость, прибыль и рентабельность продукции

Прибыль и рентабельность представляют собой важные показатели эффективности производства.

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

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

На предприятии различают прибыль от реализации продукции и балансовую прибыль.

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

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

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

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

Различают три вида рентабельности:

Ø  общая рентабельность - отношение суммы балансовой прибыли к среднегодовой стоимости основных производственных фондов и нормируемых оборотных средств, не про кредитованных банком;

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

Ø  Øрентабельность по отношению к расходам - отношение суммы прибыли к расходам как в целом по анализируемому предприятию, так и по отдельным видам деятельности или видам работ.

 Планирование производственно-хозяйственной деятельности предприятия

План производства и реализации продукции

Исходным элементом организации производственного процесса является качественно разработанный, своевременно доведенный до цехов и подразделений предприятия планы и плановые задания.

Планирование капитального строительства и капитального ремонта основных фондов

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

При планировании капитального строительства следует обеспечить сбалансированность лимитов капитальных вложений и строительно-монтажных работ с финансовыми и материальными ресурсами.

К основным показателям плана капитальных вложений относится:

Ä  прирост производственных мощностей за счет технического перевооружения и реконструкции

Ä  ввод в действие производственных мощностей, отдельных объектов производственного назначения за счет расширения действующих и строительства новых зданий и сооружений

Ä  ввод в действие объектов охраны природы

Ä  ввод в действие основных производственных и непроизводственных фондов

Лимит - ресурсный показатель, определяющий предельную величину капитальных вложений, в том числе на строительно-монтажные работы, на запланированный ввод в действие мощностей, объектов и создание нормативных заделов. Заказчики обязаны укладываться в соответствующие лимиты капитальных вложений.

 Предпосылки для написания приложения

Главным фактором для разработки своего приложения явилось предложение моей супруги, работающей бухгалтером на этом предприятии и выполняющей расчет квартплаты. Усть-Кутская нефтебаза имеет на своем балансе Жилищное хозяйство общей площадью – 22735 кв.метров и количеством проживающих – 14 тысяч 420 человек. Расчет квартплаты производится в бухгалтерии по данным ЖКО. При данном расчете в основном фиксируются те жильцы, с которых взимают и начисляют квартплату за предоставляемые услуги. Моей целью, при написании приложения, было наиболее полно отразить всех проживающих в СУБД и подходящей больше непосредственно для ЖКО как расчетно-информационная база всех проживающих.

Краткая характеристика системы

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

В данном приложении решаются следующие задачи:

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

Возможность выборочного начисления на предоставляемые услуги, а также возможно (если это необходимо) установить процент начисления на каждую услугу отдельно для конкретного квартиросъемщика (например в какой то период в квартире никто не проживает (отпуск ,командировка и т.д.)) следовательно за какие-то услуги плата не начисляется или начисляется в меньшем размере (10%,20%,…), или наоборот.

Возможность определения льготы для одного или группы квартиро-съемщиков и процентной ставке для каждой льготы.

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

Возможность обращения к справочным экранам, описывающими возмож-ные действия в данном месте системы.

Предусмотрен входной и выходной контроль для записей, которые являются обязательно уникальными (не повторяемость).

Описание предметной области

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

Разработка программы для учета начислений оплаты за пользование услугами, предоставляемых Жилищно-Коммунальным хозяйством Усть-Кутской нефтебазы.

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

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

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

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

Определение задач

Регистрация всех проживающих

Определение (указание), используемых услуг

Определение (выбор) льготы и ставок по ней

Определение (изменение) периода начисления льготы (необязательное условие)

Определение норм оплаты за каждую услугу (нормативы)

Определение норм оплаты за каждую услугу, для отдельного жильца или в целом для жильцов, проживающих в одном доме (необязательное условие)

Расчет квартплаты

Расчет льгот

Определение сумм к оплате

Формирование и печать квитанции об оплате для конкретного плательщика

Учет платежей квартиросъемщиков (дата и сумма платежа, остаток или задолженность)

Просмотр, Дополнение и Изменение информации обо всех категориях проживающих

Ежемесячная подготовка отчетов по различным начислениям

Редактирование и печать отчетов (в любое время и в любом количестве)

Возможность обратиться к файлам помощи (F1)

Возможность поиска

Ответы на эти вопросы позволяют подойти к главному в постановке задачи – построении инфологической модели приложения. В простейшем примере такая модель может быть отображена в виде взаимосвязей между компонентами и процессами приложения, как показано на рисунке 2.1. в практике проектирования такие схемы получили название ER-диаграмм (Entity-relationship diagram (ERD) – диаграмма “Сущность-связь”)

Максимально формализованное описание задачи теперь будет выглядеть следующим образом.

Наименование задачи:

Автоматизация работы бухгалтера по расчету квартплаты.

 

Цель работы бухгалтера:

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

 

Функции бухгалтера:

Заключение договоров и регистрация клиентов в Базе Данных.

Ведение информации по льготам и ставкам по ним.

Работа с клиентами : установление льготы, установление тарифных ставок отличных от нормативных по различным причинам, разъяснительная работа и т.д..

Ведение расчетов за используемые услуги (выписка квитанции об оплате).

Бизнес - правила:

Ввод информации на основе документов.

Требования к системе

Программа может работать под управлением операционных систем DOS или WINDOWS, при наличии пакета FoxPro 2.6 for DOS.

Перечень вводимой информации:

Фамилия, имя и отчество жильца;

Табельный номер;

Год рождения

Адрес;

Квадратные метры;

Телефон;

При наличии льготы – описание льготы, код, период;

Выбор плательщика, указанного в ордере

Нормативные ставки на услуги

Тарифные ставки и описание тарифа

Перечень печатных отчетов:

Списки по начислению

Списки льготников

Списки с показаниями счетчика

Оплата электроэнергии

Сальдо по квартиросъемщикам

Свод по квартплате за месяц

Квитанция об оплате

Проектирование базы данных

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

 

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

 

При рассмотрении требований конечных пользователей принято во внимание следующее:

 

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

База данных должна обеспечивать получение требуемых данных за приемлемое время, то есть отвечать заданным требованиям производительности.

База данных должна удовлетворять выявленным и вновь возникающим требованиям конечных пользователей.

Загруженные в базу данных корректные данные должны оставаться корректными.

Данные до включения в базу данных должны проверяться на достоверность.

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

 

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

Этап 1. Определение сущностей

Исходя из задачи, описанной выше, выделим следующие сущности:

Жильцы – БД, содержащая информацию о жильцах (RABOT.DBF)

Начисления - БД, содержащая информацию о начислениях (OPLATA.DBF)

Льготы - БД, содержащая информацию о льготах (LGOT.DBF)

Ставки - БД, содержащая информацию о ставках для конкретного жильца и (или) о жильцах, проживающих в одном доме (TABLE_R.DBF)

Тарифы - БД, содержащая информацию описания тарифов и ставок по ним (TARIF.DBF)

Первичный ключ – это атрибут (или группа атрибутов), которые единственным образом идентифицируют каждую строку в таблице.

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

Для каждой сущности определим атрибуты, которые будем хранить в БД.

Атрибуты, включаемые в состав БД, приведены в таблице 2.1. информационная модель после третьего этапа проектирования приведена на рис. 2.13

Таблица 2.1. Атрибуты и первичные ключи сущностей информационной модели

Сущность Первичный ключ Атрибуты
ЖИЛЬЦЫ

Табельный номер

Улица

Дом

Квартира

Табельный номер

Улица

Дом

Квартира

Ф.И.О

Номер телефона

Квадратные метры

Льгота

Код льготы

№ удостоверения (по льготе)

Дата, с которой будет начисляться льгота

Дата окончания начислений по льготе

Старое значение счетчика

Новое значение счетчика

Определение плательщика

Количество проживающих (в 1-й квартире)

Дата оплаты за предоставленные услуги

Остаток денежных средств

Ввод оплаты

Начисления квартплаты (Есть\Нет)

Начисления радио (Есть\Нет)

Начисления телефона (Есть\Нет)

Начисления горячей воды (Есть\Нет)

Начисления холодной воды (Есть\Нет)

Начисления коммунальн. услуг (Есть\Нет)

Начисления отопления (Есть\Нет)

Начисления электроэнергии (Есть\Нет)

ЛЬГОТА Код льготы

Код льготы

Описание льготы

Процентная ставка по квартплате

Процентная ставка по радио

Процентная ставка по телефону

Процентная ставка по горячей воде

Процентная ставка по холодной воде

Процентная ставка по ком. услугам

Процентная ставка по отоплению

ТАРИФ

Описание тарифа

Ставка оплаты

Порядок начисления (на 1-го чел.\ на 1 м2)

Выбор: на 1-го человека или на 1 м2

Сущность Первичный ключ Атрибуты
СТАВКИ Табельный номер

Табельный номер

Описание льготы

Ставка по квартплате

Ставка по радио

Ставка по телефону

Ставка по горячей воде

Ставка по холодной воде

Ставка по коммунальным услугам

Ставка по отоплению

Ставка по электроэнергии

НАЧИСЛЕНИЯ

Табельный номер

Улица

Дом

Квартира

Табельный номер

Улица

Дом

Квартира

Квадратные метры

Код льготы

Выбор плательщика

Количество проживающих

Льгота (Да\Нет)

Начисления квартплаты (Да\Нет)

Начисления радио (Да\Нет)

Начисления телефона (Да\Нет)

Начисления гор. Воды (Да\Нет)

Начисления хол. Воды (Да\Нет)

Начисления ком. Услуг (Да\Нет)

Начисления эл. Энергии (Да\Нет)

Начисления отопления (Да\Нет)

Сумма начисления квартплаты

Сумма начисления телефона

Сумма начисления радио

Сумма начисления ком.услуг

Сумма начисления отопления

Сумма начисления эл\энергии

Сумма начисления гор.воды

Сумма начисления хол.воды

Нач. квартплаты (по льготе) на 1-го чел.

Нач.телефона (по льготе) на 1-го чел.

Нач. радио (по льготе) на 1-го чел.

Нач. ком.услуг (по льготе) на 1-го чел.

Нач. отопления (по льготе) на 1-го чел.

Нач. эл\энергии (по льготе) на 1-го чел.

Нач. гор.воды (по льготе) на 1-го чел.

 Нач. хол.воды (по льготе) на 1-го чел.

Сумма нач. квартплаты по льготе

Сумма нач. гор. Воды по льготе

Сумма нач. хол. Воды по льготе

Сумма нач. ком. Услуг по льготе

Сумма нач. отопления по льготе

Сумма нач. телефона по льготе

Сумма нач. радио по льготе

Итог сумм начислений по льготе

Итог сумм начислений

Итоговая сумма к оплате

Этап 4. Физическое описание модели

На этом этапе составим базы данных, которые будут в дальнейшем реализовываться в СУБД. Назначения имен БД и их атрибутов отражены в табл. 2.2.

Таблица 2.2. Структура, используемых Баз Данных.RABOT.DBF (Жильцы)

Имя Тип Длина примечание
TAB N 4 0 Табельный номер
FAM C 40 - Ф.И.О
TEL N 8 0 Номер телефона
YL C 15 - Улица
DOM С 3 0 Дом
KW_RA С 3 0 Квартира
KV_M N 6 2 Квадратные метры
N_LG N 1 0 Код льготы
N_YD С 9 0 Номер удостоверения (по льготе)
DAT_C D 8 - Дата, с которой будет начисляться льгота
DAT_PO D 8 - Дата окончания начислений по льготе
ELEC N 6 0 Старое значение счетчика
ELEC1 N 6 0 Новое значение счетчика
OR_R N 1 0 Определение плательщика
KOL_VO N 2 0 Количество проживающих
D_OPL D 8 - Дата оплаты
OST_K N 8 2 Остаток денежных средств
OPL_TA N 8 2 Ввод оплаты
LGOT L 1 - Льгота (Да\Нет)
RAD_L L 1 - Начисления радио (Да\Нет)
TEL_L L 1 - Начисления телефона (Да\Нет)
KW_L L 1 - Начисления квартплаты (Да\Нет)
G_W_L L 1 - Начисления гор. воды (Да\Нет)
X_W_L L 1 - Начисления хол. воды (Да\Нет)
K_YS_L L 1 - Начисления ком. услуг (Да\Нет)
EL_C_L L 1 - Начисления эл. энергии (Да\Нет)
OTOP_L L 1 - Начисления отопления (Да\Нет)

OPLATA.DBF (Начисления)

Имя Тип Длина Примечание
TAB N 4 0 Табельный номер
YL C 15 - Улица
DOM С 3 0 Дом
KW_RA С 3 0 Квартира
KV_M N 6 2 Квадратные метры
N_LG N 1 0 Код льготы
OR_R N 1 0 Выбор плательщика
KOL_VO N 2 0 Количество проживающих
DAT_C D 8 - Дата, с которой будет начисляться льгота
DAT_PO D 8 - Дата окончания начислений по льготе
ELEC N 6 0 Старое значение счетчика
ELEC1 N 6 0 Новое значение счетчика
TEL_L L 1 - Начисления телефона (Да\Нет)
G_W_L L 1 - Начисления гор. Воды (Да\Нет)
X_W_L L 1 - Начисления хол. Воды (Да\Нет)
K_YS_L L 1 - Начисления ком. Услуг (Да\Нет)
EL_C_L L 1 - Начисления эл. Энергии (Да\Нет)
OTOPL_L L 1 - Начисления отопления (Да\Нет)
KW_PL N 8 2 Сумма начисления квартплаты
TEL_R N 8 2 Сумма начисления телефона
RAD_R N 8 2 Сумма начисления радио
K_YSL N 8 2 Сумма начисления ком.услуг
OTOPL N 8 2 Сумма начисления отопления
EL_C N 8 2 Сумма начисления эл\энергии
G_W N 8 2 Сумма начисления гор.воды
X_W N 8 2 Сумма начисления хол.воды
KW_PLL N 8 2 Нач. квартплаты (по льготе) на 1-го чел.
TEL_RL N 8 2 Нач.телефона (по льготе) на 1-го чел.
RAD_RL N 8 2 Нач. радио (по льготе) на 1-го чел.
K_YSLL N 8 2 Нач. ком.услуг (по льготе) на 1-го чел.
OTOPLL N 8 2 Нач. отопления (по льготе) на 1-го чел.
EL_CL N 8 2 Нач. эл\энергии (по льготе) на 1-го чел.
G_WL N 8 2 Нач. гор.воды (по льготе) на 1-го чел.
X_WL N 8 2 Нач. хол.воды (по льготе) на 1-го чел.
*SUM_KW N 8 2 Сумма нач. квартплаты по льготе
*SUM_GW N 8 2 Сумма нач. гор. Воды по льготе
*SUM_XW N 8 2 Сумма нач. хол. Воды по льготе
*SUM_KYSL N 8 2 Сумма нач. ком. Услуг по льготе
*SUM_OT N 8 2 Сумма нач. отопления по льготе
*SUM_TL N 8 2 Сумма нач. телефона по льготе
*SUM_RD N 8 2 Сумма нач. радио по льготе
*SUM_IT N 9 2 Итог сумм начислений по льготе
ITOG_N N 9 2 Итог сумм начислений
ITOG_L N 9 2 Итог сумм начислений по льготе
ITOG N 9 2 Итог сумм начислений (к оплате)

* - Сумма начислений по льготам жильцов, проживающих в одной квартире

LGOT.DBF (Льготы)

Имя Тип Длина Примечание
N_LG N 1 0 Код льготы
INFO C 20 - Описание льготы
KWP_L N 4 2 Ставка начислений по квартплате
RD_L N 4 2 Ставка начислений по радио
GW_L N 4 2 Ставка начислений по горячей воде
XW_L N 4 2 Ставка начислений по холодной воде
K_L_L N 4 2 Ставка начислений по ком. Услугам
OT_L N 4 2 Ставка начислений по отоплению
TL_L N 4 2 Ставка начислений по телефону

TABLE_R .DBF (Ставки)

Имя Тип Длина Примечание
TAB N 4 0 Табельный номер
KWP_L N 5 2 Ставка начислений по квартплате
RD_L N 5 2 Ставка начислений по радио
GW_L N 5 2 Ставка начислений по гор. Воде
XW_L N 5 2 Ставка начислений по хол. Воде
K_L_L N 5 2 Ставка начислений по ком. Услугам
OT_L N 5 2 Ставка начислений по отоплению
EL_L N 5 2 Ставка начислений электроэнергии
TL_L N 5 2 Ставка начислений по телефону

TARIF.DBF (Тарифы)

Имя Тип Длина Примечание
INFO C 25 - Описание тарифа
ST_KA N 5 2 Ставка оплаты
K_INFO C 11 - Помощь начисления (на 1-го чел.\на 1 кв.м)
K_CH L 1 -

Выбор: .T. – на 1-го человека .F. – на 1 м2

HELP.DBF – БД, содержащая описание помощи.

Имя Тип Длина Примечание
HLP M 10 - Описание помощи

M_ZAR .MEM - Файл, в котором хранятся переменные стоимости услуг ( _* ).

А также структурные файлы-индексы (CDX), для каждой базы, создаваемые программным путем.

Поддержка базы данных

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

Удобно в качестве “рабочего стола”, на котором он будет принимать решения, и совершать действия по обработке данных, взять не какое-то меню, а отображение самой базы данных. На экране должны присутствовать и указания на возможные действия пользователя. Поскольку на нем никогда не хватает места, указания на некоторые действия можно поместить в развертывающиеся световые меню. При необходимости также должна быть предусмотрена контекстно-зависимая помощь (HELP – F1).

Функции поддержки базы данных.

Для обслуживания базы необходимы следующие функции.

перемещение вперед\назад на одну запись (SKIP\SKIP –1). При этом должны блокироваться попытки выйти за первую\последнюю запись базы. Достижение верхней\нижней границы желательно отображать на экране (READ-окно).

Переход на начало\конец базы (GO TOP\BOTTOM).

Пометка записей, предназначенных для удаления, и снятие пометки (DELETE\RECALL).

Дополнение базы новой записью (APPEND BLANK).

Выход из окна редактирования.

Поиск по ключу (SEEK, LOCATE). В случае неудачного поиска указатель записей должен вернуться на исходную запись.

Вывод\печать данных.

Упаковка данных (PACK).

Переиндексация базы (REINDEX или INDEX).

Полная очистка базы от данных (вспомогательная база oplata.dbf) (ZAP).

Средства предъявления данных.

Команда BROWSE\CHANGE удобна тем, что дает панораму данных и не требует программирования перемещения в БД. В данной программе команда BROWSE в основном используется для просмотра данных и результатов вычислений.

Команда READ с командами @…SAY…@…GET:

@…SAY…GET…

@…SAY…

@…GET…

READ …

Эта форма предъявления данных является самой гибкой и дает непосредственный доступ к полям базы. Теперь кроме собственно редактирования, поля базы данных можно анализировать, трансформировать, запоминать в переменных или в других базах и т.д.. Чаще всего такой режим называют READ-окном, хотя использование команд @…GET, READ не обязывает помещать их в специальное окно – они могут проектироваться и непосредственно на экран.

Все операции над базой, предъявляемой командой READ, могут быть совершены либо после завершения команды READ, либо в вызываемых процедурах.

Обе формы (BROWSE и READ) предъявления данных активно используются в программе.

Описание работы приложения.

Управление программой осуществляется с помощью меню, так как меню является основной формой диалога в прикладных системах обработки данных. FoxPro обладает развитыми средствами поддержания меню как с объемным световым курсором (световым “зайчиком”), так и с назначаемыми клавишами. Кроме того, в FoxPro реализовано еще и “кнопочное” (Button) меню, которые означают не физическую кнопку на клавиатуре, а некоторую область на экране, которой приданы управляющие свойства. “Кнопочные” меню удобно использовать совместно с мышью.

В FoxPro имеются две альтернативные технологии построения меню – концепция, продолжающая еще из предыдущей версии СУДБ FoxBASE-2,1, и концепция, позаимствованная из СУДБ dBASEIV.

Важнейшее “идейное” различие между Fox-меню и dBASE-меню может быть определено терминами “меню-программа” и “меню-объект”. Fox-меню является только частью программы, где оно создается, используется и “умирает”. dBASE-меню после своего определения остается независимым и “живым” объектом, к которому можно обратиться из любого места прикладной системы.

Поэтому управление программой осуществляется именно с помощью dBASE-меню, а также в процедуре показано использование Fox-меню.

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

В общем случае для создания dBASE-меню и работы с ним необходимо предусмотреть следующие элементы:

Определение меню. Здесь описываются содержание, “горячие” клавиши, клавиши быстрого доступа, форма и реакции меню. Определение меню может сделано один раз в начале программы и далее только использоваться.

Активация меню. Команды\клавиши активации предъявляют меню на экране и делают его чувствительным к выбору пользователя.

Деактивация меню. Удаляет его с экрана, сохраняя в памяти для следующего возможного использования.

Удаление меню. Это действие очищает память от определения меню, и более оно не может быть использовано без нового определения.

Имеются два типа элементарных меню:

Вертикальное (“всплывающее”, или POPUP-меню),

Горизонтальное (BAR-меню)

На их основе можно строить иерархические меню практически любой сложности (вложенности). Именно по такой технологии построено меню программы и вид меню показан на рис. 2.1

Рисунок 2.1 Структура меню (ZAR)

BAR-пункт “Работа с картотекой” – при выборе этого пункта открывается READ-окно, в котором представлена информация о квартиросъемщике. В этом окне, возможно, изменять начисления услуг, изменять тарифы для жильцов квартиры или дома, период льготы, количество проживающих, возможность формирования, просмотра и печати квитанции, ввода суммы оплаты, расчета квартплаты, выбора фильтра отображения жильцов (Плательщики, Льготники, Все жильцы) и перемещения по базе дынных.

BAR-пункт “Квартиросъемщики” – при его выборе отображаются те жильцы, которые оплачивают квартплату. Вывод осуществляется в табличной форме, где показываются поля с табельным номером и фамилией, а также два дополнительных (вычисляемых) поля, которые не сохраняются в базе данных. Это поле со значком “n”, который появляется у тех жильцов, которые платят за квартиру и поле со значком “” появляется у жильцов, которые имеют льготу. На свободной области экрана выводится остальная информация о жильце, включая информацию о произведенных начислениях. Если курсор перемещать, находясь в поле со значком “n”, то автоматически будет обновляться информация на экране. На всех других полях, при нажатии клавиши “Enter” появляется Fox-меню, где можно выбрать дальнейшие действия.

 

BAR-пункт “Картотека льготников” - при его выборе показываются те жильцы которые имеют льготу. Вывод осуществляется в табличной форме, где показываются поля с табельным номером, фамилией, адрес, телефон, категория льготы, номер (название) документа, подтверждающего льготу. В нижней части экрана отображается статус-строка, где показывается дополнительная информация, а именно: если льготник является плательщиком, то показывается количество проживающих и количество льготников, иначе фамилия и таб. № того, кто платит за квартиру.

BAR-пункт “База жильцов” - такой же показ как в “Картотеке льготников”,только отображаются все жильцы.

BAR-пункт “Ввод счетчика” – это табличный вывод всех плательщиков, с данными счетчика, при вводе новых значений счетчика, сумма автоматически вычисляется и корректируется сумма к оплате.

BAR-пункт “Ввод оплаты” - это табличный вывод всех плательщиков, с данными о суммах начислений, сумме к оплате и полем для ввода суммы платежа. При вводе суммы платежа автоматически рассчитывается остаток и заносится дата платежа, которые затем отображаются в отчете и квитанции.

PAD-пункт “Отчеты”

BAR-пункт “Списки по начислению” - формируется отчет о всех произведенных начислений, и открывается окно с выводом сумм по каждой услуге, отдельно сумм по каждой услуге по льготам, итоговая сумма к уплате, остаток или задолжность, дата платежа.

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

BAR-пункт “Списки с показанием счетчика” - формируется отчет и открывается окно, в котором указаны фамилия, таб.№, адрес и данные старого и нового значений счетчика.

BAR-пункт “Оплата электроэнергии” - формируется отчет и открывается окно, где в табличной форме выводятся фамилия, таб.№, адрес, данные старого и нового значений счетчика и сумма к уплате.

BAR-пункт “Сальдо по квартиросъемщикам” – формируется отчет и открывается окно, где в табличной форме выводятся фамилия, таб.№, суммы начисления, к оплате и остаток.

 BAR-пункт “Свод по квартплате за месяц” - формируется отчет и открывается окно, где в табличной форме выводятся общие суммы по каждой услуге, отдельно по льготам, итоговые суммы начислений по квартплате, по льготам и суммы, которую организация должна получить за месяц.

После закрытия любого окна с отчетом, открывается окно с предложением распечатки.

 

PAD-пункт “Печать” - состоит из имен файлов, которые были созданы при выборе BAR-пунктов “Отчеты” это:

“Списки по начислению” - файл NACH-xx.TXT

“Списки по льготам” - файл LG_KW-xx.TXT

“Списки с показанием счетчика” - файл ELC_V-xx.TXT

 “Оплата электроэнергии” - файл EL_PL-xx.TXT

“Сальдо по квартиросъемщикам” - файл SALDO-xx.TXT

“Свод по квартплате за месяц” - файл SVOD-xx.TXT

Где хх – это номер месяца, за который сформирован отчет. Если установить курсор на имя соответствующего файла и нажать клавишу “Enter” (ВВОД), то откроется окно для просмотра-редактирования отчета. Если установить курсор на имя соответствующего файла и нажать клавишу “Spacebar” (ПРОБЕЛ), то файл распечатается, при условии, если принтер готов, иначе появится сообщение о подготовке принтера.

PAD-пункт “Сервис”

BAR-пункт “Дополнение” – открывается окно, в котором можно добавить жильцов в базу данных, с указанием льгот и услуг.

BAR-пункт “Дополнение льгот” - открывается окно, в котором добавляются или изменяются код, описание льготы и ставки по ним.

BAR-пункт “Тарифы” – открывается окно с dBASE-меню PAD-пункты которого позволяют:

PAD-пункт “Просмотр” – формирует POPUP-меню из полей базы с описанием тарифов, при нажатии клавиши “Enter”, на выбранном BAR-пункте с описанием тарифа, появляются поля редактирования данного тарифа с возможностью удаления или изменения.

PAD-пункт “Добавить” – выводит поля для дополнения тарифа.

PAD-пункт “Выйти” - закрывает окно и меню тарифов.

BAR-пункт “Нормы оплаты услуг” – при его выборе открывается окно, в котором нужно указать стоимость каждой услуги. Эти ставки действуют для расчета начисления квартплаты по умолчанию для всех жильцов.

BAR-пункт “Переиндексация” – при его выборе происходит процедура переиндексации всех БД.

BAR-пункт “Упаковка данных” – запускает процедуру физического удаления данных, которые ранее были помечены на удаление.

PAD-пункт “Расчет”

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

BAR-пункт “Расчет по льготам” – при его выборе происходит расчет для тех жильцов, которые имеют льготу и удовлетворяют требованию начала и конца действия льготы, если эти поля у жильца отсутствуют предполагается, что он не имеет срока ограничения. Вывод данных и информация в нижней части аналогична как в пункте “Расчет квартплаты”.

 

BAR-пункт “Слияние квартплаты с льготами” – при его выборе происходит расчет суммы к оплате т.е. “начисления по квартплате” минус “начисления по льготе”. После этого выводится окно с полями: таб.№, фамилия, итоговая сумма начислений, итоговая сумма начислений по льготе и сумма к оплате. В нижней части экрана показывается адрес плательщика, количество проживающих и количество льготников.

PAD-пункт “Помощь”

BAR-пункт “Помощь” -выводит окно с описанием назначений PAD- и BAR-пунктов.

 

BAR-пункт “Справка” – выводит окно с кратким описанием предназначения программы.

PAD-пункт “Выход” – позволяет выйти из программы.

Работа окнами.

В приложении используются два вида окон это:

Окна, предназначены для обработки данных.

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

При начальном запуске приложения, когда база данных пуста, любой выбор пункта меню, для работы которого необходимы данные о жильцах, вызовет диалоговое окно с предложением начать работу с дополнения. Это окно содержит поясняющий текст и две кнопки <Добавить> и <Отмена>.

Окно “Работа с картотекой” (INS)

При выборе пункта меню “КАДРЫ”-“Работа с картотекой” открывается окно размером во весь экран, в котором размещается вся основная информация о жильце. Окно визуально делится по вертикали на две части, где в первой части (около 2\3 окна) располагается сведения о жильце, а в оставшейся части, которая выделена цветом, располагаются кнопки для выбора определенных действий. Рисунок окна показан на рисунке 2 приложения 2. Рассмотрим эти части поподробней.

1 часть “Сведения о жильце”

В первых строках расположена личная информация: фамилия, таб.№, адрес, телефон, площадь квартиры, которые недоступны для редактирования, дата рождения, а также автоматически вычисляемая информация о количество лет.

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

Далее идет надпись “СОСТАВ СЕМЬИ”, которая накрыта невидимой кнопкой, при выборе которой выпадает POPUP-меню с фамилиями проживающих в данной квартире с указанием кто за неё платит и кто является льготниками. При выборе элемента меню, окно обновляется информацией об этом жильце.

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

Кнопки выбора начислений услуг ( [ ]-не начисляется, [x]-начисляется)

Поясняющий текст к кнопки (для какой услуги, которую нужно выбирать)

Ставки за услуги, эти надписи накрыты невидимыми кнопками, выбор которых открывает окно и меню, где можно изменить ставки для жильцов квартиры (дома). Описания тарифов отображается в окне в зависимости от выбора тарифа: так если расчет услуги производится в зависимости от количества проживающих в квартире, то отображаются только тарифы на одного человека, если рассчитывается от занимаемой жилплощади, то на 1 квадратный метр. (см. рис. 3 прилож. №2, а также см. описание пунктов меню “Сервис”-“Тарифы”).

Показываются суммы начислений по услугам

Показываются суммы начислений по услугам с учетом льготы.

Заголовки столбцов.

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

На следующей строке представлены итоговые суммы по начислению, льготам и к оплате.

Далее дата оплаты, сумма уплаты и остаток или задолженность.

И на последней строке расположены две кнопки “По льготам” и “По оплате”, которые доступны в том случае если данный жилец имеет льготу либо имеет ордер, либо и то и другое.

“По льготе” – при ее выборе появляется окно, которое показано на рис. 5 прилож. 2, в котором указан код, ставки и описание льготы для данного жильца. Вся информация может корректироваться, важно только помнить, что вся измененная информация повлияет на всех жильцов, имеющих этот код.

“По оплате” – при ее выборе появляется аналогичное окно, описанное выше, которое показано на рис. 6 прилож. 2, в котором содержится информация о ставках стоимости услуг для данного жильца. Если расчет ведется по нормативным ставкам, то все поля имеют нулевое значение, а также если нужно данному жильцу установить нормативные ставки, то нужно обнулить соответствующее поле. После выхода из полей редактирования появится предупреждение:

“ Установить всем жильцам дома Y/N ”,

которое будет ждать нажатие клавиш. Если нажать клавишу “Y” то ставки, которые отображались в окне будут установлены всем жильцам, проживающих в данном доме, при нажатии любой другой клавиши ставки будут установлены только жильцам данной квартиры.

На этом информация в первой части окна заканчивается, и перейдем ко второй части.

2 часть “Кнопки - меню”

Во второй части расположены кнопки, при выборе которых выполняется определенные действия по обработке данных (см. рис 2 приложения. 2 стр. 2). Разберем их по порядку расположения.

Кнопка “Изменить” – при ее выборе открывается окно, которое показано на рис 20 приложения 2 стр. 20, где можно изменить данные о жильце. Если изменяется адрес жильца, то автоматически пересчитывается количество проживающих по старому и новому адресах. Чтобы сохранить измененную информацию необходимо выйти из окна по кнопке “Подтверждаю”, если выйти по кнопке “Отмена”, внесенные изменения не сохраняются.

Кнопка “Добавить” – открывается аналогичное окно, описанное выше, которое показано на рис 19 приложения 2 стр. 19,только все поля имеют пустые значения. Также некоторые поля, при редактировании проверяются на корректность вносимых данных. Подробнее это будет описано при рассмотрении этого окна. Выход также должен происходить по кнопке “Сохранить” иначе жилец и его данные не будут внесены в БД.

Кнопка “Удалить” - помечает на удаление жильца, находящегося в окне и информация в окне обновляется.

Кнопка “Печать…” - формирует квитанцию о начислениях и оплате, и открывает окно, которое показано на рис 7 приложения 2 стр. 7. После его закрытия появится окно с просьбой выбрать решение распечатки данного документа (рис 8 приложения 2 стр. 8).

Кнопка “Ввод оплаты” - открывает окно, которое показано на рис 4 приложения 2 стр. 4, где возможно вести сумму оплаты для квартиросъемщика, который платит за квартиру.

Следующие кнопки позволяют фильтровать данные для просмотра:

Кнопка “Плательщики” – для просмотра будут доступны жильцы которые платят за квартиру;

Кнопка “Льготники” – для просмотра будут доступны жильцы, которые имеют льготу, независимо от периода ее действия;

Кнопка “Все жильцы” – для просмотра будут доступны все жильцы, кроме помеченных на удаление.

При этом под этими кнопками расположена подсказка, какой фильтр выбран.

Следующая группа кнопок предназначена для перемещения в БД:

Кнопка “Вверх” - позволяет перейти на одну запись вверх;

Кнопка “Вниз” - позволяет перейти на одну запись вниз;

Кнопка “Начало” - позволяет перейти в начало БД;

Кнопка “Вверх” - позволяет перейти в конец БД.

При этом если достигнуто начало (конец) БД, то соответствующие кнопки становятся недоступными, а в правом углу окна появляется предупреждение, что достигнут конец (начало) БД.

Кнопка “Выйти” – позволяет выйти и закрыть окно.

Кнопка “Расчет” – позволяет рассчитать квартплату для текущего жильца, с учетом сделанных изменений, а также расчет происходит, если в окне находится плательщик, иначе кнопка просто игнорируется.

Окно “Квартиросъемщики” (KD)

При выборе пункта меню “КАДРЫ”-“Квартиросъемщики” открывается BROWSE-окно с полями: табельный номер, фамилия и два вычисляемых поля (см. рис 9 приложения 2 стр.9), которые показывают плательщика и льготников. При этом отображаются только те жильцы кто платит за квартиру. На свободной части экрана с правой стороны выводится информация по жильцу, на котором находится курсор, при этом она автоматически обновляется, если при перемещении курсор находится в поле, которое указывает, является ли жилец плательщиком. При нажатии в любом поле, кроме поля со значком (n), появляется Fox-меню, где можно выбрать дальнейшие действия (см. рис 10 приложения 2 стр.10):

“Постоянная часть” – открывает окно “Работа с картотекой”, которое было описано выше

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

“Жильцы” – при выборе этого пункта в BROWSE-окне отображаются только жильцы квартиры того квартиросъемщика, на котором находился курсор.

“Плательщики” – возвращает окно с отображением только тех жильцов, которые платят за квартиру.

“Поиск” – при выборе этого пункта активируется POPUP-меню с просьбой выбора критерия поиска (см. рис 13 приложения 2 стр. 13), это может быть по фамилии, табельному номеру или по адресу. После выбора соответствующего пункта, кроме пункта “Отмена”, предъявляется окно для ввода ключа. При этом если это по фамилии, то возможен поиск и по неполному ключу, например по ключу “ПЕТР” будут удовлетворять поиску фамилии: “ПЕТРОВ”, “ПЕТРОВСКИЙ”, “ПЕТРИК” и т.д., если по адресу то предъявляются три поля для заполнения улицы, дома и квартиры. Здесь также возможен неполный ключ, то есть обязательным заполненным полем, должно быть, поле “улица” которое можно редактировать вручную или выбрать из выпадающего списка всех улиц, когда курсор попадает в это поле, а остальные поля могут быть пустыми. В этом случае указатель записи в БД установится на первого жильца в БД проживающего по этой улице.

Эта система поиска вызывается во всех окнах, где содержится информация о жильцах.

Остальные пункты были рассмотрены выше (окно “Работа с картотекой”).

Окно нормативов (M_ZAR)

При выборе пункта меню “СЕРВИС”-“Нормы оплаты услуг” – открывается окно, где нужно вести ставки стоимости каждой услуги и фамилию того, кто занимается расчетом и эта фамилия будет подставляться в отчеты и квитанцию. Ставки, веденные в этом окне являются базовыми при расчете квартплаты для всех жильцов, кроме тех, для кого ставки определены отдельно (см. рис 11 приложения 2 стр. 11).

 

Окно дополнения льгот (INS)

При выборе пункта меню “СЕРВИС”-“Дополнение льгот” – открывается окно, в котором можно добавлять или изменять информацию по льготам. Первое поле в которое попадает курсор после открытия окна - это код льготы, если вести цифру кода, которая уже описана раннее, то информация в окне автоматически обновится, то есть поля будут заполнены в зависимости от веденного кода и возможно изменить информацию по этому коду. Для того чтобы сохранить веденные изменения или добавить льготу нужно нажать кнопку “Сохранить” (см. рис 17 приложения 2 стр. 17)

 

Окно тарифов

При выборе пункта меню “СЕРВИС”-“Тарифы” – открывается окно с меню для выбора действий.

(см. рис 18 приложения 2 стр. 18). Пункт меню “Добавить” предъявляет в окне поля для занесения данных по тарифу. Для изменения или удаления уже существующего тарифа нужно его выбрать в POPUP-меню, которое раскрывается при выборе пункта “Просмотр” (см. рис 22 приложения 2 стр. 22).

 

Окно дополнения жильцов

При выборе пункта меню “СЕРВИС”-“Дополнение” – открывается окно, в котором нужно занести информацию о жильце (см. рис 19 приложения 2 стр. 19). Работа с этим окном построена следующим образом:

Когда курсор попадает в поле ввода фамилии, то автоматически включается клавиша CAPSLOCK, для ввода фамилии прописными буквами.

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

При выборе кнопки “[ ] Ордер” также проверяется БД и если за данную квартиру уже определен плательщик появляется окно с его фамилией и выбор этой кнопки отменяется.

при выборе кнопки “[ ] Льгота” появляется окно и меню выбора кода. Можно выбрать уже существующий код либо ввести новый, который добавится в базу льгот. Если код не будет выбран (код=0), то выбор льготы автоматически отменяется. После выбора льготы становятся доступны кнопки выбора услуг и верху над ставками льготы, появляется информация о номере льготы и что возможно его изменить нажав клавишу F7.

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

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

 

BROWSE-окна

Следующая группа окон имеет ряд общих характеристик это BROWSE-окна, открывающиеся в окне размером во весь экран, кроме двух последних строк, которые предназначены для вывода дополнительной информации - статус-строка. Все поля недоступны для редактирования, при комбинации клавиш: <Ctrl+T>-выполняется процедура удаления, <Ctrl+N>-процедура дополнения, <F5>-процедура поиска. Различие состоит только в отборе данных и выводимыми полями это:

Пункт меню “КАДРЫ”-“Картотека льготников” - предъявляет только тех жильцов, которые имеют льготу и выводит следующие поля: табельный номер, фамилия, период действия льготы, улица, дом, квартира, телефон, категория, номер удостоверения.

Пункт меню “КАДРЫ”-“База жильцов” – предъявляет всех жильцов и выводит следующие поля: табельный номер, фамилия, улица, дом, квартира, телефон, категория, номер удостоверения, количество проживающих.

Пункт меню “КАДРЫ”-“Ввод данных счетчика” - предъявляет только плательщиков и выводит следующие поля: табельный номер, фамилия, улица, дом, квартира, телефон, старое и новое значение счетчика и вычисляемое поле к оплате, которое автоматически рассчитывается при изменении данных счетчика и прибавляется к общей сумме платы за квартиру.

Пункт меню “КАДРЫ”-“Ввод оплаты” - предъявляет только плательщиков и следующие поля: табельный номер, фамилия, ввод оплаты, начисленную сумму за услуги, сумму по льготе, сумму к оплате, дату оплаты, остаток (задолженность) а также вычисляемое поле льготник (см. рис 12 приложения 2 стр.12).

Пункт меню “РАСЧЕТ”-“Слияние квартплаты с льготами” – предъявляет только плательщиков и выводит следующие поля: табельный номер, фамилия, сумма начислений, сумма по льготе и сумму к оплате (см. рис 16 приложения 2 стр.16).

Пункт меню “РАСЧЕТ”-“Расчет квартплаты” - предъявляет только плательщиков и выводит следующие поля: табельный номер, фамилия и суммы начислений по каждой услуге отдельно (см. рис 14 приложения 2 стр.14).

Пункт меню “РАСЧЕТ”-“Расчет по льготам” - предъявляет только льготников с учетом периода начислений и поля аналогичные описанных выше (см. рис 15 приложения 2 стр.15).

Окно помощи (HELP)

Это окно предназначено для вывода помощи для определенных окон при работе с данными по нажатию клавиши F1, а также при выборе пункта меню “ПОМОЩЬ”-“Помощь”, где дается помощь по пунктам меню и “Справка”, где дается информация для чего предназначена программа и ее краткая характеристика. (см. рис 21 приложения 2 стр. 21).

Краткий обзор Процедурного языка - FoxPro

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

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

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

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

Разберем описание процедуры, функции и процедурного файла.

Подпрограмма начинается с ключевого слова

PROCEDURE <имя процедуры>

И выполняется пока не будет выполнено одно из следующих условий:

Еще раз встретят слово PROCEDURE.

Будет обноружено команда RETURN – возращение в предыдущую программу.

Будет выдана команда CANCEL –прерывание работы программы.

Будет выдана команда QUIT- выход из СУБД.

Встретится новая команда DO для запуска другой программы.

Будет достигнут конец файла.

FoxPro аналогично подпрограмме трактуется понятие пользовательской функции, которая начинается с ключевого слова

FUNCTION <имя функции>

и в отличии от процедуры может вернуть необходимые значения вызываемую программу.

Имеются 4 способа вызвать функцию:

Присвоить возвращаемое значение переменной. Например, следующая строка кода запоминает текущую системную дату в переменой dToday :

dToday=DATE()

Включить вызов функцию в команду. Например, следующая команда устанавливает по умолчанию каталог, имя которого возвращает функция GETDIR():

SET DEFAULT TO GETDIR()

Напечатать возвращаемое значение в активное окно:

? TIME()

Вызвать функцию без запоминания где либо возвращаемого значения:

= SYS(2002)

Для прерывания выполнения программы служит оператор

RETURN [Expression | TO MASTER | TO ProgramName]

Который возвращает управление вызывающую программу, и в ней выполняется следующая команда после вызывающей; если указана опция TO MASTER, то управление возвращается на самый верхний уровень вызывающей программы, а эта же программа с опцией TO ProgramName передает управление в указанную программу. При использовании функции команда автоматически возвращает .Т. (истина), если не указано другое выражение на месте Expression.

RETRY

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

Встречая обращение в процедуре, Fox Pro ищет ее в следующей последовательности:

1.в текущей процедуре;

2.в процедурном файле, если он подключен;

3.снизу вверх в старших процедурах относительно текущей, если они есть;

4.на диске в виде отельной программы.

Обращение к процедуре выполняется команды

DO <имя командного файла> [WITH <список параметров>][IN <файл>]

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

PARAMETERS <список параметров>

Процедурный файл

Множество внешних, обычно “родственных” процедур иногда удобно объединить в один процедурный файл, (также типа PRG), который вызывается (загружается в память) командой

SET PROCEDURE TO <имя процедурного файла>

Только после этого можно командой DO вызывать из него отдельные процедуры (в данной программе имя процедурного файла FUNC.PRG)

В каждый момент может быть открыт только один процедурный файл. Чтобы его закрыть, нужно использовать команду SET PROCEDURE TO без параметров.

Техническое описание работы программы

 

В приложении используются семь внешних процедур. т.е. 7 файлов типа .PRG из них один процедурный. Краткая характеристик каждого из них:

MENU.PRG-главный программный файл (приложение 1.1)

FUNC.PRG-процедурный файл (приложение 1.2)

OPEN.PRG-файл открытия БД (приложение 1.3)

BAZES.PRG-файл BROWSE-окон (приложение 1.4)

ADD_DEL.PRG-файл дополнение и изменения данных (приложение 1.5)

RAS.PRG-файл расчетов квартплаты, льгот и их слияния (приложение 1.6)

OTCHET.PRG-файл формирование отчетов (приложение 1.7)

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

Блок установочных команд SET определяющих параметры конфигурации рабочей среды;

Открытие баз данных и необходимых индексных файлов;

Определение глобальных переменных, массивов и их инициализация;

Определение и описание окон;

Описание и активизация работы главного меню для выбора основных вариантов работы системы и передача управления соответствующим программным файлам или подпрограммам;

Закрытие баз данных и выход из СУБД.

Сейчас рассмотрим работу приложения в той последовательности, как она выполняется по шаговом выполнении каждого кода в окне трассировки. Для чего, при чтении данной главы целеобразно запустить среду FoxPro, открыть в окне трассировки файл MENU.PRG в режиме пошагового выполнения, либо обращаться к приложению 1, где прилагаются распечатки файлов программ

В первых строках файла MENU.PRG с помощью команд SET устанавливается операционная среда:

Отключение макросов

Установление даты

Запрет отображения на экране записей помеченных на удаление

Отключение статус-строки и т.д.

Далее определяются и загружаются в память цветовые схемы, которые используются для раскраски окон и некоторых областей внутри них.(SET COLOR OF SCHEME). Подключается процедурный файл (FUNC.PRG), командой ON ERROR и функцией ERROR() определяется анализ возможных ошибок в программе.

Далее вызывается процедура находящаяся в файле OPEN.PRG (см. прилож. 1.3 стр. 1) для открытия БД. Здесь проверяется наличие баз на диске и если их нет, то они создаются с помощью языка SQL, при этом в БД HELP, которая состоит из одного MEMO-поля, копируются текстовые файлы помощи. Если базы уже созданы ранее, то они открываются в заданных областях вместе со структурными индексами, которые содержат TAG’и для связи БД и систематизированного предъявления данных:

БД <RABOT.DBF> (База жильцов)

TAG-tab – индексирование по полю табельного номера, для связи с БД ставок (TABLE_R.DBF).

TAG-fam – индексирование по полю фамилии, для поиска командой SEEK.

TAG-n_lg – индексирование по полю номера льготы (код), для связи с БД льгот (LGOT.DBF).

TAG-date – индексирование по полям периода действия льготы (dat_c,dat_po), для расчета сумм по льготникам, рассчитываются только те льготники, у кого период входит в текущую дату и кто не имеет периода действия льготы.

TAG-lgt – индексирование по полям адреса, с условием, что предъявляться будут только жильцы, имеющие льготу.

TAG-ord – индексирование по полям адреса, с условием, что предъявляться будут только те жильцы, кто платит за квартиру.

TAG-adrr – индексирование по полям адреса и табельного номера, для связи с БД начислений (OPLATA.DBF), а также это главный TAG при просмотре данных.

БД <OPLATA.DBF (База начислений)

 TAG-tab –индексирование по полю табельного номера.

 TAG-adr – индексирование по адресу, для связи с БД жильцов (RABOT.DBF)

БД <LGOT> (БД льгот)

TAG-n_lg – индексирование по полю номера льготы (код), для связи с БД жильцов (RABOT.DBF).

БД <TABLE_R (БД ставок)

TAG-tab – индексирование по полю табельного номера, для связи с БД жильцов (RABOT.DBF).

 В том случае, если индексных файлов не обнаружено, то они создаются. Здесь также устанавливается связь между базами по ключевым полям. Связь между базами имеет структуру ОДИН КО МНОГИМ, то есть БД жильцов является родительской по отношению к другим.

Далее объявляются глобальные перемены (PUBLIC)

_PAD_OTCH - которое служит для анализа формирования отчета если ее значение .T. то отчет формируется, если ее значение .F., которая присваивается в процедуре дополнения, то при выборе формирования отчета программа просит провести слияние квартплаты со льготами, где данной переменной присваивается значение .Т.

_REC- запоминает номер текущей записи в БД

_FILTR- имеет числовое значение и в зависимости от значения устанавливает фильтр предъявления данных в окне “Работа с картотекой”.

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

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

Команды DEFINE MENU, DEFINE POPUP и DEFINE BAR определяют и описывают расположение на экране и работу основного меню. Командой ON SELECTION PAD (BAR) определяется реакция пунктов меню при их выборе. Здесь нужно сказать, что команда ON SELECTION PAD может использоваться в виде ON PAD в этом случае, при попадании курсора на такой PAD-пункт сразу вызовет действия определенные при описании этих пунктов, а с добавлением слова SELECTION, чтобы выполнилось действие нужно непосредственно его выбрать, то есть на соответствующем пункте нажать клавишу ввода (Enter).

Последней командой в файле MENI.PRG является команда активации меню и вся дальнейшая работа приложения будет зависеть от выбора пунктов меню.

Любая система работы с базами данных предполагает наличия этих данных, поэтому работа с программой нужно начинать с дополнения БД информацией. В программе предусмотрено, что при выборе пункта меню, который предназначен для работы с данными, а база пуста появится окно с предупреждением дополнить. Рассмотрим подробней эту процедуру. (см прилож. 1.6 стр.1).

Здесь функцией RECCOUNT() проверяется наличие записей в БД и если значение равно нулю, то активируется окно VIB в котором при помощи команд ввода-вывода @…SAY…GET выводится поясняющий текст (SAY) и кнопки для выбора дальнейших действий (GET), которые активируются командой READ с опцией CYCLE, которая запрещает выход из окна по достижении курсора последнего GET-объекта . GET–объекты часто используется в программе, поэтому сейчас разберем их подробнее.

В данном случае используются кнопки меню, которые определяются в команде FUNCTION и обработка выбранной кнопки с помощью команды VALID. В процедуре INS2(), которая описана в приложении 1.2 стр. Эти объекты еще называют как средства управления в стиле WINDOWS все переменные, определенные командой GET имеют или числовые значения, тогда переменной присваивается номер объекта в порядке его расположения в команде, или символьные, тогда переменной присваивается символьное описание кнопки, а также для кнопок-переключателей и радио-кнопок возможно логическое значение переменной.

Затем в процедуре с именем определенной командой VALID или WHEN осуществляется в структуре DO CASE выбор дальнейших действий в зависимости от значения переменной. Например, в данном случае в окне определены две кнопки Дополнить и Отмена (FUNCTION ‘ * …’), которые при их выборе присваивают числовое значение переменной ins1 и которая при выборе кнопки анализируется в структуре DO CASE в процедуре INS2. Eсли выбрана кнопка Дополнить, то переменная ins1 принимает значение 1 (потому что эта кнопка описана первой в команде FUNCTION ‘* …’), выполняется условие CASE ins1=1 и следовательно выполняются команды которые следуют после этого условия (DO INS WITH 1). Если выбор не происходит вообще, то и процедура игнорируется.

Теперь еще раз пройдемся по пунктам меню, и разберем его работу с точки зрения языка программирования. Начнем с пункта “СЕРВИС”

“СЕРВИС”-“Дополнение”

 

Итак чтобы начать с дополнения БД нужно выбрать в меню “СЕРВИС”-“Дополнение” или в окне кнопку Дополнить. Выбор пункта меню или кнопки вызывает выполнение процедуры дополнения, которая определяется командой DO INS WITH 1. Здесь параметр 1 определяет что это процедура дополнения. В программе предусмотрена процедура Изменения с помощью выполнения этой же процедуры, но с параметром 2. Разберем эту процедуру. (см. прилож. 1.5 и прилож. 1.2).

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

Далее закрепляются за клавишами "F1" и "F7" действия вызова помощи и изменения кода по льготе, глобальной переменной "_PAD_OTCH" присваивается значение ".F.", определяется POPUP-меню улиц и массив элементы которого в цикле DO WHILE преобразуются в BAR-пункты меню и с помощью переменной "m" массив переопределяется, чтобы в меню не было пустых строк. Определяется окно "hp" для вывода в нем меню кодов и описания льгот их выбора и занесения номера или описания документа льготы.

Далее в структуре DO CASE анализируется номер параметра. Если параметр равен 1, то это дополнение и с помощью команды SCATTER MEMVAR BLANK создается массив, содержащий переменные аналогичные полям БД с пустыми значениями, если параметр равен 2, то это изменение и массив будет содержать переменные с данными текущей записи БД (SCATTER MEMVAR) и здесь также определяются переменные, которым присваиваются значения полей, которые имеют логический формат и отображаются на экране с помощью GET-объектов это кнопки-переключатели для определения начислений услуг, кнопка-переключатель выбора льготы и кнопка-переключатель выбора плательщика. Также здесь в переменных запоминается текущий адрес плательщика (yl_ins=yl, dom_ins=dom, k_ins=kw_ra), для анализа изменения адреса.

После того как параметр определен активируется окно INS в котором располагаются переменные из созданного массива для занесения (изменения) данных (см. рис.19 и рис 20 прилож. 2)

Схема отображения данных реализовано следующим образом: в первой строке после активации окна вызывается функция POS_CH2(), в которой содержатся SAY-объекты комментарии к GET-полям (прилож. 1.2 стр.29). Далее располагаются GET-объекты полей и выбора кнопок для большинства которых предусмотрена проверка при выходе (VALID) и входе (WHEN).

Поле-переменная фамилия – при входе выполняется функция =CAPSLOCK(.T.), для переключения ввода фамилии прописными буквами.

Поле-переменная табельный номер - здесь при выходе из поля выполняется процедура unic(), которая проверяет уникальность введенного номера (прилож. 1.2 стр. 32). То есть в структуре DO CASE определяется параметр если он равен 2 то возвращается значение .Т. и курсор входит в следующее поле, если он равен 1, то с помощью команды поиска проверяется наличие такого номера в БД и если такой номер существует, то функция возвращает значение .F., что означает, что выход из поля невозможен, а также появляется окно vib, в котором с помощью команды SAY выводится фамилия того жильца, который имеет этот табельный номер.

Поле-переменная улица - при входе выполняется функция yliz_s() (см. прилож. 1.2 стр.29), где вначале выключается клавиша CapLock, а затем проверяется условие, что записей в БД больше нуля и параметр равен 1 и если это выполняется то активируется POPUP-меню улиц, для выбора нужной (см. прилож. 1.2 стр. 29), или закрыть меню и вести улицу вручную.

Переменная or1 - имеет числовое значение и соответствует полю OR_R: 1 – если выбрана ([x], 0 – не выбрана ([ ]) и служит для выбора жильца плательщиком. Здесь также предусмотрена проверка при выходе. (см. прилож. 1.2 стр. 31 FUNC O_R()) в структуре DO CASE анализируется выбор кнопки, если она выбрана, то сначала объявляются переменные из полей-переменных с удалением из них пробелов, затем ведется поиск в базе жильцов с таким адресом и имеющих поле OR_R со значением 1. Если поиск удачный и это не текущая запись (например при изменении), то появляется окно-предупреждение с фамилией жильца, который уже определен плательщиком за эту квартиру. Переменной or1 присваивается значение 0 и GET-объект обновляется. Если при выборе кнопки (or1=1) поиск неудачный, то полю-переменной M.OR_R присваивается значение 1 и становятся доступными кнопки выбора услуг.

Переменная lg_ta – имеет логическое значение и соответствует полю LGOT: .F.- если не выбрана ([ ]), .T.- если выбрана [x]. Здесь при выходе, если кнопка выбрана, что проверяется в структуре DO CASE (см. прилож. 2 стр. 30 FUNC VIB_LG), то активируется окно с полями-переменными кода льготы (M.N_LG) и описанием (номером) документа (M.N_YD), при этом курсор попадает в поле с выбором кода, для которого предусмотрено проверка входа, то есть при входе в это поле выполняется функция LG1 (см. прилож 1.2 стр. 29), в которой определяется наличие данных в БД льгот и если они имеются определяется и активируется меню из полей БД льгот. Можно выбрать имеющиеся льготы или добавить новую. Если при выходе поле кода льготы будет иметь нулевое значение, то переменной lg_ta и M.LGOT присваивается значение .F., иначе становятся доступные для редактирования поля с периодом, ставками и описанием льготы, а также становятся доступными кнопки выбора услуг.

Переменные kw, gw, ks, ot, elc, tl, rd – все эти поля имеют логический тип и соответствуют полям базы выбора для начисления по услугам. Если это процедура изменения то они имеют значения этих полей, как описано выше, если дополнение то все имеют значение .F..При этом они доступны для редактирования, только в том случае, если жилец является (выбран) плательщиком или (и) льготником. При выходе выполняется процедура <имя переменной>_INS (см. прилож. 1.2 стр. 30-31), где полю-переменной присваивается значение переменной.

Период льготы, ставки и ее описание – данная группа полей выделена цветом в зависимости от того доступны, (M.LGOT=.T.) или не доступны (M.LGOT=.F.) для редактирования. Здесь контроль данных проверяется только в поле-переменной, по какую дату должна начисляться льгота (M.DAT_PO) то есть она должна быть больше даты начала даты начисления (см. прилож. 1.5 стр. 2), остальные поля – это поля БД льгот.

Следующей командой определяющие кнопки, которые имеют числовое значение, в зависимости их расположения, при описании. 1-“Сохранить\Подтверждаю”, 2-“Выход”, 3-“Удалить”. Обработка выбора этих кнопок осуществляется в процедуре ad_in() (см. прилож. 1.2 стр. 32-35). В первых строках выполняются действия по удалению возможных начальных пробелов (LTRIM()) в полях фамилии и адреса, далее определяется категория жильца и если это не квартиросъемщик, то удаляется не нужная информация (телефон и кв. метры), и наоборот. После этого определяется номер выбранной кнопки (pod) и номер параметра входа в это окно.

Кнопка “Сохранить”, параметр 1 (pod=1, red=1) – добавляется новая запись (APPEND BLANK) и все поля-переменные переносятся в эту запись (GATHER MEMVAR). Далее выполняются действия по заполнению поля с количеством жильцов. Ищется первая запись в БД с адресом нового жильца, в любом случае поиск будет удачным, но это может быть либо добавленная запись, либо другая. Если кроме новой записи больше не обнаружено, то полю количества жильцов (KOL_VO), присваивается значение 1, иначе значение найденной записи, и в этом случае сканируется записи с этим адресом, чтобы увеличить поле-количество на 1. Затем открывается БД, в которой хранятся информация о ставках по услугам для каждого жильца (TABLE_R) и в нее добавляется новая запись с копированием табельного номера новой записи из БД жильцов. Затем ищется в БД жильцов запись с одинаковым адресом и если такая найдена, то копируются в переменные значения полей из БД ставок (TABLE_R), которые затем копируются в поля БД ставок новой записи, иначе они имеют нулевые значения. После этого командой SCATTER MEMVAR BLANK создаются новые переменные полей, переменным для выбора услуг присваиваются значения .F. GET-поля обновляются и можно редактировать следующую новую запись.

Кнопка “Подтверждаю”, параметр 2 (pod=1, red=2) – первой командой переменные переносятся в БД. После этого проверяется изменялся ли адрес, с помощью переменных определенных ранее (см. выше yl_ins ,dom_ins, k_ins). Если адрес не изменился, то процедура заканчивается и возвращается в окно изменения, иначе устанавливается фильтр работы только с жильцами, имеющими текущий (измененный) адрес, и корректируется поле-количество. Затем аналогичная операция происходит с жильцами старого адреса.

Кнопка “Выход” – завершает работу процедуры, и выполняются команды следующие за командой READ, это закрытие окна, переиндексация данных и выход с процедуры.

Кнопка “Удалить” – доступна только в том случае, если это процедура изменения (см. прилож. 1.2 стр. 35) и будет рассмотрена ниже.

Теперь рассмотрим последнюю команду обновления GET-объектов – это команда-опция SHOW red(), входящая в команду READ. Она выполняется всегда если в какой-либо процедуре встретится выражение SHOW GETS, в данном случае в процедурах, вызываемых в окне Дополнения\Изменения данных, если встречается это выражение выполняется процедура red() (см. прилож. 1.5 стр.3). здесь в структуре DO CASE анализируются переменные и в зависимости от их значения выполняются следующие действия:

если параметр равен 1 (red=1), то кнопка описанная для сохранения новых данных будет иметь название “Сохранить”, а кнопка удалить будет не доступна

если параметр равен 2 (red=2), то кнопка “Сохранить” изменит свое название на “Потверждаю”.

Если переменная M.OR_R=0, то кнопки-переключатели выбора услуг будут недоступны. И наоборот M.OR_R=1, то доступны.

Если переменная M.LGOT=.F., то то кнопки-переключатели выбора услуг и поля редактирования по льготе будут недоступны. И наоборот.

“СЕРВИС”-“Дополнение льгот”

при выборе данного пункта запускается процедура INS_LG, которая расположена в файле ADD_DEL.PRG (см. прилож. 1.5 стр. 5) и показана на рис. 17 прилож. 2.

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

После ввода в поле “Код” номера, при его выходе выполняется процедура UNIC_LG (см. прилож. 1.2 стр. 36), в которой в БД льгот ищется код с веденным кодом и если найден то переменные обновляются информацией по этому коду, и доступны для изменения или удаления, если нет то остаются пустыми и готовы к заполнению.

Так как работа происходит с переменными, то для сохранения сделанных изменений или дополнения, нужно подтвердить, нажав на кнопку “Сохранить”.

Работа кнопок осуществляется в процедуре LG_INS, где в структуре DO CASE выполняются действия в зависимости от числового значения переменной LG_INS:

LG_INS=1. Из переменной M.INFO (Категория) удаляются возможные начальные пробелы, затем ищется код-переменная в БД льгот, если найден, то это изменение и поля переносятся в БД. Если не найден то дополнение и здесь сначала добавляется запись в БД, а затем в нее переносятся поля. Так как работа на этом не заканчивается, то создаются новые поля переменные и поля обновляются.

LG_INS=2. Команда CLEAR READ завершает работу с этим окном.

LG_INS=3. Запись помечается на удаление (DELETE) и физически удаляется (PACK), после этого создаются новые поля, поля обновляются и работа продолжается.

“СЕРВИС”-“Тарифы”

при выборе этого пункта выполняется процедура TARIFS_ZAR, расположенная в файле FUNC.PRG (см. прилож. 1.2 стрю 55) и показано окно на рис. 18 прилож. 2.

В первых строках командой HIDE POPUP убирается с экрана меню “СЕРВИС”, затем закрепляется за клавишей Esc процедура выхода по клавише Esc, в переменной _REC запоминается номер записи в БД жильцов. Выбирается активной БД тарифов и определяется окно для работы данной процедуры и горизонтальное меню, которое будет расположено в этом окне и с его помощью будут выполняться действия по обработке данных.

Данное меню имеет три PAD-пункта.:

PAD-пункт “Просмотр” – активируется POPUP-меню, которое состоит из полей БД тарифов, и выбор любого BAR-пункта выполняется в процедуре INS_REC, в которую передаются два параметра это названия тарифа (PROMPT()-mprompt), и номер записи в БД тарифов (RECNO()-mrecno) (см. прилож. 1.2 стр. 56), в которой в зависимости от параметра выполняются следующие действия:

если описание пустое (empty(mprompt)), то эта запись помечается на удаление.

Иначе создаются поля-переменные для изменения данной записи (рис. 22 прилож. 2) так как редактируются переменные, то в окне присутствуют кнопки для сохранения сделанных изменений кнопка-“Сохранить” (процедура del_rec1, ras_on1=1), где сначала, в зависимости от значения переменной M.K_CH (.T.,.F.) заполняется переменная M.INFO и затем переменные переносятся в БД; выхода без изменения кнопка “Отказ” (процедура del_rec1, ras_on1=2), где командой CLEAR READ завершается работа с переменными-полями без перенесения их в БД; и удаления текущей записи (процедура del_rec), текущая запись командой DELETE помечается на удаление.

PAD-пункт “Дополнить” и PAD-пункт “Выйти” - обрабатываются в процедуре INS_ST, в которую передаются параметры, содержащие текст-приглашение данных пунктов.

Если выбран пункт “Дополнить”, то в процедуре INS_ST создаются поля-переменные с пустыми значениями и с помощью кнопок дополняются записи.

Если выбран пункт “Выйти”, то в процедуре INS_ST закрывается окно и деактивируется меню.

“СЕРВИС”-“Нормы оплаты услуг”

Данный пункт открывает окно M_ZAR, где с помощью команд @…SAY…GET (см. прилож. 1.4 стр. 4) выводятся переменные ставок, определенные в начале программы в файле MENI.PRG и после их редактирования они сохраняются в файле M_ZAR.MEM. чтобы их сохранить необходимо выйти из окна по кнопке “Сохранить”, которая запустит процедуру сохранения (см. прилож. 1.2 стр. 20).

 

“СЕРВИС”-“Упаковка данных”

Выбор этого пункта запускает процедуру физического удаления данных, помеченных ранее на удаление (см. прилож. 1.2 стр. 22). В первых строках сканируются записи, помеченные на удаление в БД жильцов и помечаются записи во вспомогательной БД ставок, которая связана с основной БД по полю табельного номера (TAB). Затем снова сканируется БД жильцов с целью проверки недопущения наличия жильцов без плательщика. Здесь перебираются помеченные записи, и в переменные заносятся значения адреса для поиска, и фамилии для возможного предупреждения.

После этого ищется жильцы, проживающие по этому адресу, если такие существуют, то ищется плательщик и если такого нет выводится окно, показанное на рисунке, где нужно выбрать одно из трех действий (см. прилож. 1.2 стр. 23, процедура D_IN).

“Удалить всех” – будут помечены все записи по этому адресу.

“Изменить” – запустится процедура изменения, для найденного жильца.

“Восстановить” - восстановить плательщика, ранее помеченного на удаление, то есть снимет пометку командой RECALL.

“СЕРВИС”-“Переиндексация”

В этой команде я не пользовался командой REINDEX, а просто удалял все индексы и создавал новые. Это и проще и времени уходит меньше (см. прилож. 1.2 стр. 23). В первых строках закрываются все БД и вместе с ними структурные индексы, далее с помощью команды DOS удаляются все файлы, имеющие расширение .CDX то есть структурные индексы, потому что другие индексы в программе не используются, и затем выполняется процедура открытия баз данных (см. прилож. 1.3), где индексы создаются автоматически. Здесь нужно сказать, что при таком подходе FoxPro может выдать ошибку, и требование явно указать на БД, которую нужно открыть. Эта проблема решается с помощью функции ON ERROR DO EROR WITH ERROR(), которая передает код ошибки в процедуру EROR как параметр (см. прилож. 1.2 стр. 53), и в ней в зависимости от области открываются нужные базы данных.

Пункт меню – “КАДРЫ”

После того как в базе жильцов имеются записи, можно работать с процедурами, осуществляющих действия по их обработке. Эти процедуры в основном находятся в первом пункте меню “КАДРЫ”.

“КАДРЫ”-“Работа с картотекой”

При выборе данного пункта открывается окно, представленное как личная карточка жильца, в которой отображается необходимая информация и средства по ее обработке (см. прилож. 1.2 стр. 1-20).

Как уже описывалось в главе 2 с работой в этом окне, вся информация, расположенная в этом окне делится на две части, поэтому каждую часть разберем по отдельности. Но прежде рассмотрим заполнение окна информацией и другими объектами (см. прилож. 1.2 стр. 1-2 и прилож. 2 рис. 2 ).

Итак в первых строках выполняются некоторые технические действия, а именно это проверка наличия данных, которая описывалась выше, определение и присвоение переменным “e” и ”b” логических значений для анализа конца и начала БД, и в зависимости от этого доступность или недоступность кнопок перемещения, клавише F1 назначается процедура открытия соответствующего окна с помощью, клавише F5 процедура поиска. После этого активируется окно INS и в него выводится следующая информация: это поля БД, имеющие символьные и числовые данные с помощью команды GET с опцией, запрещающей редактирование. Это поля фамилии (FAM), табельного номера (TAB), телефона (TEL), адреса (YL,DOM,KW_RA), квадратных метров (KV_M), суммы начисленной квартплаты из БД, в которой хранятся все начисления, и доступные для редактирования GET-поля количества (KOL_VO), код и описание льготы из БД льгот, периода действия льготы (DAT_C,DAT_PO) и поля выбора услуг, имеющие логические значения, представленные с помощью переменных: kw (KW_L)-квартплата, gw (G_W_L)-горячая вода, xw (X_W_L)-холодная вода, ks (K_YS_L)-коммунальные услуги, ot (OTOP_L)-отопление, elc (EL_C_L)-електричество, tl (TEL_L)-телефон, rd (RAD_L)-радио, которые затем выводятся на экран с помощью GET-объектов (кнопки-переключатели). А также другие GET-объекты, которые будут рассмотренны позже.

Далее идут SAY-объекты, это подписи к GET-полям, а также результаты возвращаемые функциями, которые выводятся с помощью выполнения функции POS_CH1 (=POS_CH1( )) (см.прилож. 1.2 стр.3). разберем только выводимые значения, возвращаемые функциями.

Количество жильцов – выполняется функция KOL (прилож. 1.2 стр. 19), где путем сканирования формируется переменная k и возвращается ее значение (RETURN k), так как эта переменная числового типа, а команда SAY выводит только символьный тип данных, то необходимо преобразовать числовой тип в символьный и убрать первые пробелы, что позволяет следующие команды: LTRIM(STR(KOL(0))), где KOL(0) – полученное значение, STR – функция преобразования числовых данных в символьные, LTRIM – удаление ведущих пробелов.

Количество льготников – аналогичная функция, описанная выше только считает жильцов, если поле LGOT имеет значение истины (.Т.).

 Ставки по которым производится расчет для данного жильца. (см. прилож. 1.2 стр 16-17). Здесь сначала проверяется поле ставок БД ставок, так как связь одна ко многим то при перемещении курсора в основной базе он перемещается во всех вспомогательных базах и если поле в БД равно нулю, то параметру, который является результатом работы функции, присваивается значения нормативной ставки, иначе значения этого поля. Затем в команде SAY тип возвращаемого результата преобразуется в символьную форму и после вывода их на экран они накрываются невидимыми кнопками.

Числовые поля из БД начислений. Здесь эти данные просто преобразуются в нужный формат и выводятся на экран.

И в этой же процедуре раскрашиваются области внутри окна, для их более выразительности и выделения. (@ … FILL TO …).

Также необходимость заполнения окна с помощью выполнения функции вызвано тем, что информация по каждому жильцу является не всегда одинаковой, в окне предусмотрено перемещение по БД, а значит и обновление выводимой информации. Это достигается с помощью этой функции и опции обновления GET-объектов SHOW <имя процедуры>, которая входит в команду READ, которая будет рассмотрена ниже.

Вернемся к окну. Как уже описывалось выше (глава 2 стр. 26) вся основная информация о жильце содержится в первой части. Рассмотрим работу доступных GET-объектов в этой части.

Первый GET-объект это поле количества проживающих (@ 5,39 GET kol_vo), при зтом как бы для проверки рядом выводится SAY-объект количества, рассчитанный программным путем (см. выше).

Далее SAY-объект “СОСТАВ СЕМЬИ” накрыт невидимой кнопкой (@ 6,27 GET family FUNCTION ‘*I ‘ VALID FAMILY( ) …).Невидимой она называется потому, что не формируют никаких текстовых сообщений и только выделяются цветом, и при нажатии клавиш Ehter/Space могут вызывать функцию через опцию VALID. Здесь при нажатии этих клавиш происходит процедура FAMILY (прилож. 1.2 стр. 8) в которой в переменные заносятся данные о текущем TAG’e, и адресе, устанавливается фильтр доступа к данным, имеющим этот адрес и активируется меню, из полей БД жильцов, которое определено ранее в файле-процедуре MENI (прилож. 1.1) и пункты которого состоят из фамилии и двух вспомогательных полей, указывающих на категорию жильцов (плательщик, льготник). Выбор пункта этого меню отобразит в окне этого жильца и обновится информация относительно этого жильца, также в зависимости от категории жильца переменной _FILTR присваивается значение 1-если жилец является плательщиком, 2- если льготник и 3- если ни тот ни другой (просто проживающий). Это нужно для того, чтобы при выполнении процедуры обновления (SHOW) в зависимости от значения этой переменной, будет установлен соответствующий TAG, влияющий на предъявление данных.

Следующая группа GET-объектов выводит поля выбора услуг с помощью кнопок-перек-лючателей (@ 10-17,2 GET kw(gw,xw,ks,ot,elc,tl,rd) FUNCTION ‘*C <имя услуги> ‘VALID KW( )(GW(),XW()…)). Здесь переменные и поля имеют один и тот же тип данных, а именно логический и в процедурах, вызываемых при выходе по опции VALID просто полю присваивается значение переменной (см. прилож. 1.2 стр. 17-18).

Чуть иначе обстоит дела с выбором телефона и радио. Это сделано для того, что предполагается, что в квартире установлена одна телефонная и(или) одна радиоточка, поэтому если в квартире живут два или более льготников, которые пользуются льготными ставками на эти услуги, то при расчете им обоим (или более) будет убавляться плата по этим услугам, что в конечном итого телефон и(или) радио будет бесплатно или ЖКХ еще будет доплачивать за пользование этими услугами, что разумеется недопустимо, вот для этого осуществляется контроль выбора услуг. По своему содержанию процедуры одинаковы, поэтому разберем одну из них (см. прилож. 1.2 стр. 18).

Итак при выборе телефона (радио) вызывается процедура TL1(RD1) в которую передаются три параметра: 1-OR_R (OR-в процедуре), 2-LGOT (LG-в процедуре), которые имеют значения полей плательщика (0,1) и льготы (.T.,.F.), относительно жильца которому выбирают услугу, 3-RECNO( ) (R-в процедуре), который имеет значение номера записи в БД этого жильца и 4-ORDER( ) (ORD-в процедуре), который имеет символьное значение активного индекса (TAG’a). Далее в процедуре в переменные заносятся значения адреса, для включения их в SCAN-условие, а также, только для телефона, в условие поиска, где ищется плательщик и у него проверяется поле телефона и если оно пустое, то предполагается, что телефона нет и выбрать эту услугу невозможно.

После этого в структуре DO CASE анализируются переданные параметры:

CASE OR=1.AND.LG=.T. то есть если это плательщик и он также льготник. В первой строке активируется TAG, при котором доступны все записи в БД, затем сканируется БД и у всех жильцов, имеющих этот адрес полю выбора телефона(радио) присваивается значение “Ложь” (.F.) и затем этому жильцу полю выбора телефона(радио) присваивается значение “Истина” (.Т.). то есть по этому условию плательщик имеющий льготу имеет преимущество перед другими жильцами, имеющими льготу, по выбору этих услуг.

CASE OR=1.AND.LG=.F. то есть если это плательщик, не имеющий льготу. Здесь просто полю выбора телефона(радио) присваивается значение “Истина”.

CASE OR=0.AND.LG=.T. то есть если это не плательщик, а льготник. В этом случае сканируются записи, имеющие этот адрес и льготу, и если у кого-либо поле выбора телефона(радио) имеет значение “истины”, то переменной TL(GET-объект) присваивается значение “Ложь” и после завершения сканирования значение переменной присваисвается полю выбора телефона(радио).

Следующие GET-объекты, это группа невидимых кнопок, которые накрывают области, где выводятся значения стоимости услуг (@ 10,28 GET tar_s FUNCTION ‘*I ;;;;;;;’ VALID TARIFS( )…), при выборе которых выполняется процедура TARIFS (см. прилож. 1.2 стр. 11, прилож. 2 рис. 3), где можно выбрать тарифную ставку для услуги на которой был сделан выбор, из имеющихся в БД тарифов или если нет, то добавить. При этом можно установить эту ставку всем жильцам дома, или можно установить норматив по этой услуге жильцу или всему дому. Работа, в окне и с меню во многом схожа с работой описанной ранее, при описании “СЕРВИС”-“Тарифы”. Рассмотрим отличия. В первых строках определяется окно и меню для работы процедуры.

Далее с помощью структуры DO CASE определяется на какой услуге был сделан выбор, и в зависимости от этого устанавливается ограничение на предъявление данных, например если это горячая вода, то появятся тарифы, имеющие значение .Т. поля K_CH, (расчет на одного человека) и наоборот, переменной VIB_STAVOK присваивается имя поля в БД ставок, для того, что в дальнейшем с помощью макроподстановки (&VIB_STAVOK) этим полям будут присвоены соответствующие значения. И после этого активируется окно и меню для выбора ставки по этой услуге, при этом в правом углу появляется системное окно-подсказка, с помощью команды WAIT, с текстом выбранной услугой.

Пункт “Выбрать” предъявляет POPUP-меню с BAR-пунктами, состоящими из полей БД тарифов, и при выборе любого пункта появляется меню с выбором установить всем жильцам дома или квартиры. После этого в процедуре V_ST1 куда передаются параметры номера BAR-пункта (BAR( )) и номера текущей записи в БД (RECNO( )) (см. прилож. 1.2 стр.14-15). Здесь в структуре DO CASE определяется номер выбранного BAR-пункта и для всех жильцов дома (параметр=1(“Установить всем жильцам дома”) или для данных жильцов квартиры (параметр=2 “Установить данному жильцу”), в скан- условии, полям БД ставок этих жильцов по выбранной услуге присваивается значения, которые имеются в поле ST_KA в БД тарифов (REPLACE &VIB_STAVOK WITH ST, где VIB_STAVOK-это имя поля в БД ставок (см. выше) ST-ставка из поля ST_KA в БД тарифов (ST=ST_KA))

Здесь также курсовые - 700 р. Комментарии:

КЛАСНАЯ РАБОТА Мне нужна робота про групу в которей я учусь и не знаю что делать
виталий19:02:18 03 февраля 2012Оценка: 5 - Отлично

Работы, похожие на Реферат: АРМ бухгалтера-расчетчика
Основы работы на ПК
Старостин Вячеслав Олегович 18.10.2010 Устройство компьютеров. Все микрокомпьютеры состоят, по крайней мере, из трех частей: Системный блок - это ...
Создание меню с помощью Commander Нажмите клавишу F2 для вызова диалога Меню пользо-вателя (Главное) или выберите пункт Меню пользователя в меню Команды.
Чтобы открыть диалоговое окно Организатор, выберите команду Макрос в меню Сервис, а затем - команду Макросы и нажмите кнопку Организатор.
Раздел: Рефераты по информатике, программированию
Тип: реферат
Информационные технологии управления
Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования Тульский государственный ...
Создание отчетов для выделенной в окне базы данных или открытой таблицы или запроса выполняется либо с помощью команды меню Вставка/ Отчет, либо кнопки Создать на вкладке Отчет ...
щелкните на странице правой кнопкой мыши и выберите в контекстном меню пункт Свойства страницы (или найдите Свойства в меню Файл); откроется показанное на рис. диалоговое окно ...
Раздел: Рефераты по информатике, программированию
Тип: учебное пособие
Разработка системы оперативно-диспетчерского контроля и управления ...
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к дипломному проекту Тема: Разработка системы оперативно-диспетчерского контроля и управления насосной станции канал им ...
Чтобы добавить драйвер связи, нужно щелкнуть правой кнопкой мыши на компоненте "Tag Management" (Управление тегами) в левой части окна WinCC Explorer, во всплывающем меню щелкнуть ...
Подтвердить введенные данные, нажав на кнопку "OK" и Нажать на кнопку "Apply" для завершения процедуры конфигурирования с помощью "Archive Wizard".
Раздел: Промышленность, производство
Тип: дипломная работа
Билеты, решения и методичка по Информатике (2.0)
КИЕВСКИЙ НАЦИОНАЛЬНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ КРЫМСКИЙ ЭКОНОМИЧЕСКИЙ ИНСТИТУТ по дисциплине: "Информатика и компьютерная техника" Экзаменационный ...
Ввод, редактирование, удаление, поиск, просмотр данных можно выполнить для открытой в View-окне базы данных с помощью команд Record-меню из главного меню:
При этом вырабатываются числовые переменные, фиксирующие выбор из меню, которые анализируются командами DO CASE, требуют использования циклов DO WHILE и т.д. Рассмотрим два типа ...
Раздел: Рефераты по информатике, программированию
Тип: реферат
Проектирование, разработка и внедрение БД ИС в экономическую ...
Дипломная работа Проектирование, разработка и внедрение БД ИС в экономическую деятельность предприятия (на примере ГП "Алушталифт") По специальности ...
Конкретно требование состоит в том, что любой кортеж любого значения-отношения любой переменной отношения должен быть отличим от любого другого кортежа этого значения отношения по ...
По центру окна расположено выпадающие меню в котором выбирается лифт по его уникальному номеру, ниже кнопка добавления нового лифта в базу.
Раздел: Рефераты по информатике, программированию
Тип: дипломная работа

5rik.ru - Материалы для учебы и научной работы