Автор работы: Пользователь скрыл имя, 23 Апреля 2013 в 18:48, контрольная работа
Предприятие имеет развитую инфраструктуру по обеспечению предприятий и организаций и жилых микрорайонов следующими видами услуг:
установка телефонов и обеспечение телефонной связью
передача электроэнергии через собственную подстанцию
снабжение паром, холодной и горячей водой от собственных источников (ТЭЦ, водозабор)
перевозка нефтепродуктов автотранспортом.
Затем в процедуре с именем определенной командой 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 определяет
что это процедура дополнения.
В программе предусмотрена
В первых строках процедуры определяется имя для параметра, в переменной "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-объекты полей и выбора кнопок
для большинства которых
Поле-переменная фамилия
– при входе выполняется
Поле-переменная табельный номер - здесь при выходе из поля выполняется процедура 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 – не выбрана
([ ]) и служит для выбора жильца плательщиком.
Здесь также предусмотрена
Переменная 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.
В первых строках выбирается
БД, где содержится информация по льготам,
затем определяется окно для работы
процедуры и обращение к
После ввода в поле “Код” номера, при его выходе выполняется процедура 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 создаются поля-переменные с пустыми значениями и с помощью кнопок дополняются записи.
Информация о работе Учет квартплаты (АРМ бухгалтера-расчетчика)