Диплом: Программное обеспечение пункта по обмену валюты - текст диплома. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Диплом

Программное обеспечение пункта по обмену валюты

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Дипломная работа
Язык диплома: Русский
Дата добавления:   
 
Скачать
Архив Zip, 82 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникальной дипломной работы

Узнайте стоимость написания уникальной работы

Программное обеспечение пункта обмена вал юты банка. Введение В начале восьмидесятых годов нашего столетия фирма IBM разработала и вып устила в продажу свой первый персональный компьютер IBM PC , котор ый быстро завоевал рынок вычислительной техни ки благодаря своей невысокой стоимости , униве рсальности сфер применения , простоте эксплуатации и самое главное , принципу открытой архите ктуры , заложенному в конструкцию . Получив назв ание “персон альный” он и в действител ьности оказался таковым. РС хорошо зарекомендовал себя в об ласти делового применения . Дешевый и надежный компьютер стал быстро “обрастать” программны м обеспечением , многие фирмы стали выпускать клоны IBM-совместимых персональных к омпьюте ров . За РС последовали XT, AT на базе i286, i386, i486 и , наконец , Pentium. Вычислительная техника шагает в будущее гигантскими шагами , не оставляя в стороне никого . Невозможно представить область интен сивной деятельности человека , которая могла б ы обойтись без вычислительной техники б ез ущерба для себя . В нашей стране за последние 5-6 лет парк персональных компьютеров увеличился в сотни раз . Особое значение в такой ситуации имеет наличие программн ого обеспечения для персональных ЭВМ как общего назн а чения , так и чисто прикладных программ , решающих специализированные задачи того , или иного предприятия. Особенно остро встала проблема специализи рованного ПО для финансовых организаций и , в частности банков , количество которых за последние пять - шесть лет превысило несколько тысяч только в столице . Отсутстви е автоматизированных банковских систем не мог ло не стимулировать многие фирмы - производите ли программного обеспечения заполнить образовавш ийся вакуум . В течение 90-93 г.г . такие фирмы как “ А софт ” , “ Диа со фт ” , “ Р-Стайл ” и другие выпустили на рынок несколько АБС , ориентиро ванных на российскую банковскую систему . Перв ый опыт оказался удачным и большинство ко ммерческих банков обладает на текущий момент довольно приличными системами , реализованными на основе сетевых менеджеров запросов к базам д анных , или языках программирования Oracle, Gupta и им подобных . Беда всех АБС в нестабильности законодательства государства , которое вызывает многочисленные корректировки технологии бухгалтерско го учета и , следовательн о корректиро вки ПО . Кроме того , первые версии АБС не покрывали всех потребностей банков в автоматизации . М аксимально на что мог рассчитывать пользовате ль , это операционный день банка в рублях и система отчетов . Расширение видов банко вской деятельности , рабо та с валютами иностранных государств , вклады граждан и орга низаций , развитие рынка ценных бумаг потребов али разработки новых подсистем для существующ их АБС. Наряду с тем , что не все фирмы производители прислушиваются к требованиям пол ьзователей , стоимость новых разработок доста точно велика . В качестве примера можно ска зать , что только увеличение документооборота банковской системы с 500 до 2000 документов в де нь обходится пользователю , имеющему АБС фирмы “Р-Стайл” примерно в 11500 Долларов США . Такие цены, естественно могут заставить любого пользователя пополнять состав программног о обеспечения собственными силами. Назначение проекта Обменный пункт - подразделение банка и является местом совершения банком валютно-обменны х операций . Правила и нормы совершения вал ютных операций в обменном пункте регламенти руются инструкцией Центрального банка Рос сийской федерации № 27 от 27 февраля 1995 года. Комплекс разрабатываемых программных средств предназначен в первую очередь для автоматизации работы касси ров пунктов обмена валют , находящихся как в самом банке , так и вне его тер ритории . Использование программы должно значитель но упростить и ускорить работу кассира за счет автоматизации учетно-расчетных операций при обмене валюты . Автоматическое формирование всей сводной отчетности и контроль финансо вого состояния обме н ного пункта в любой момент времени также должны повыси ть эффективность работы кассира. Технологический процесс работы пункта обм ена валюты банка В процессе работы кассира обменного п ункта с использованием автоматизированной систем ы желательно реализовать как стандартные проц едуры , обеспечивающие поддержку операций обменног о пункта в течение дня , так и специфич еские возможности , п овышающие производительно сть труда кассира и облегчающие учетно-расчет ные операции и связь обменного пункта с банковской системой автоматизации . Обменный пун кт банка при работе с клиентурой совершае т следуюшие основные операции : Продажа валюты иностранного государства клиенту за национальную валюту ; Покупка у клиента валюты иностранного государства за национальную валюту ; Коверсия (обмен ) валюты одного иностранног о государства на валюту другого иностранного государства. Каждую из перечисленных операций касс ир обменного пункта обязан зафиксировать документально и оформить справку о совер шении клиентом валютно-обменной операции на б ланке строгой отчетности ф .0406007, с выдачей ко пии справки клиенту . Для работы ОП , банк обеспечивает его до начала рабочего дня а вансом в наличной иностранной ва люте и рублях . Данный аванс необходимо учи тывать в документах ОП для последующего о тражения в отчетных документах при завершении операционного дня . По завершении рабочего дня (или смены при круглосуточном режиме работы ОП ) к ассир обязан заполнит ь приходно-расходную ведомость (реестр сделок ) по каждой из валют , подсчитать итоги по всем реестрам и сверить сумму полученного аванса с суммой итогов по реестрам и фактическим остатком ценностей по каждому виду . В соответствии с резу л ьта тами сверки составляется справка о ежедневных остатках ценностей . Основные сервисные и информационно-расчетные возм ожности проектируемой системы Перед началом проектирования какой-либо с истемы необходимо в первую очередь определить состав тех операций , которые будут заложе ны в проектируемый комплек с программных средств и проанализировать необходимость и возможность реализации функций средствами ко нкретной системы проектирования . Система автомати зации работы пункта обмена валюты предназначе на , как уже было сказано выше , в первую очередь для повышени я эффективност и и скорости работы кассира . Поэтому функц иональные возможности программного комплекса дол жны быть направлены на решение конкретных задач ОП возникающих в процессе работы . Функциональные возможности системы В проектируемой системе необходимо заложить возможности , обеспечивающие ниже перечисленные сервисные и информационно-ра счетные функции : автоматический расчет сумм по операциям обмена иностранной валют ы ; возможность установки автоматического начисл ения комиссионных вознаграждений (по выбору - к омиссия с прихода , расхода и разницы курсо в ) при обменных операциях ; автоматический контроль нали чия в обменном пункте денежных знаков национальной и иностранной валюты различного достоинства ; выдача рекомендаций кассиру по оптимально му набору наличных денежных знаков различного достоинства из числа имеющихся в кассе при каждой обменной операции ; учет операций обмена валют , основанн ый на ведении двойной записи и обеспечива ющий высокий уровень контроля обменных операц ий ; контроль и восстановление логической цело стности базы данных даже в случаях некорр ектной работы оборудования за счет выполнения процед ур ревизий состояния счетов на текущую дату или за заданный период в любой момент работы обменного пункта ; архивирование всех данных , обработанных с истемой с начала ее функционирования на д ату операционного дня или интервал дат ; на основании данных о клиен те , вводимых при осуществлении обменной операции , должна производиться автоматическая печать справки об обмене валюты и фиксация в системе информации о клиенте с привязкой к конкретной операции. Взаимодействие с банковской системой автоматизац ии Взаимодействие подсистемы с системой авто матизации банка д олжно удовлетворять след ующим требованиям : Независимость от примененной системы авто матизации банковской деятельности ; Обмен информацией с банковской системой при помощи общепринятых носителей (магнитные диски , электронная почта и т.п .); Формат передаваемы х данных должен обеспечивать достоверный прием информации и ее обработку в системе автоматизации банка. Проблема совместимости с различными банко вскими системами разрешается путем применения стандартного формата передаваемых данных в виде текстового файла с разделителями информационных полей . Последовательность полей фиксирована , длина данных - переменная . Использован ие данных фиксированной длины , конечно упроща ет их обработку , однако при больших объема х встает проблема величины передаваемого файл а . Такой с пособ обмена может быт ь реализован практически во всех известных на данное время системах автоматизации бан ковской деятельности. Надежность и резервиров ание Все данные , проходящие через подсистему , подлежат обязательной фиксации в базах дан ных или иных информационных структурах . Систе ма должна хранить д анные в специальны х архивных файлах начиная с момента запус ка в эксплуатацию . При закрытии операционного дня все текущие данные должны переноситс я в архив , а файлы подготавливаться для новой смены (очистка , обнуление и т.п .). Пр и работе ОП в локальном реж и м е желательно обеспечить возможность создания резервных копий баз данных на магнитных н осителях по желанию пользователя . Для вариант а ОП работающего в составе ЛВС банка , данная возможность может быть факультативной при размещении информационных файлов на с етевых дисках и ежедневном выпол нении процедур резервирования сетевым оборудован ием. Генерация отчетов Наиболее ответственной и трудоемкой из функций кассира ОП являетс я ежедневное составление и заполнение отчетны х документов по итогам работы пункта за смену . Проектируемая система должна предоставит ь по льзователю возможность в любой мо мент времени получить документы дня (реестры сделок , справки об остатках наличности и пр .) в разрезе любой валюты . Это позво лит оперативно иметь картину финансового сост ояния ОП в целом и осуществить оперативны й контроль д е ятельности кассира . В состав обязательных отчетов необходимо включ ить : Реестры по покупке и продаже иностран ной валюты за наличные рубли ; Справку об остатках наличной иностранной и национальной валюты ; Акт передачи (для ОП работающих в режиме сменной работ ы ); Препроводительные ведомости к инкассаторским сумкам. Формы отчетов должны соответствовать пред ложенным в инструкции ЦБ РФ № 27 “О поря дке организации работы обменных пунктов...” Анализ потоков и взаимодействия данных Цель реализации данного проекта состоит в первую очередь в регистрации и хра нении вс ех данных по операциям с наличной иностранной валютой и иными платежны ми документами , данных о клиентах и генера ции форм отчетности . Рассмотрение информационных составляющих начнем с операции оформления сделки купли-продажи наличной иностранной валют ы кли е нту. Покупка и продажа наличной иностранной валюты за наличные рубли. При совершении операции кассир ОП дол жен выполнить ряд расчетных операций и пр оцедур оформления сделки , к которым относятся : Вычисление клиентской суммы по текущему курсу покупки (продажи ) данной валюты. СУММА _В _РУБЛЯХ _ПОКУПК И =СУММА _ВАЛЮТЫ *КУРС _ПОКУПКИ или при продаже валюты СУММА _В _ВАЛЮТЕ =СУММА _РУБЛЕЙ _КЛИЕНТА /КУРС _ПРОДАЖИ Так как при покупке валюты клиент , как правило имеет целью купить определенну ю сумму валюты , вычисление суммы покупаемой валюты можно заменить расчетом рублевого эквивалента указанной клиентом суммы валю ты аналогично операции покупки валюты у к лиента Заполнение справки ф . 0406007 и выдача клиен ту копии. Вся информация о сделк е и клиенте содержится в данных , предостав ляемых клиентом кассиру ОП для заполнения справки . Проанализировав ее содержание мо жно сделать первоначальный вывод о формате и структуре данных , необходимых для регистр ации сделки. Данные справки можно разделить на сле дующие информационные единицы : Фамилия Имя Отчество Вид документа (паспорт , удостовере ние личности и т.п .) Серия документа Номер документа Признак резидент /нерезиден т Код ценности полученной клиентом Код валюты полученной клиентом Сумма валюты полученной клиентом Код ценности принятой от клиента Код валюты принятой от клиента Сумма валюты п риня той от клиента Серия справки Номер справки Дата совершения обменной операции Конверсия наличной иностран ной валюты Операция конверсии (обмена ) наличной иност ранной валюты одного государства в наличную иностранную валюту другого государства практ ически аналогична описанным выше операциям ку пли /продаж и валюты . Отличие состоит в том , что кассиру требуется вычислить сумм у валюты , выдаваемую клиенту на основании суммы валюты клиента и кросс-курса . Кросс-курс , или курс пересчета валюты является число вой величиной , определяющей коэффициент пересчета одной в алюты в другую. СУММА _ВАЛЮТЫ _1=СУММА _ВАЛЮТЫ _2*КРОСС _КУР С Пример : Клиент обменивает 100 долларо в США на немецкие марки по кросс-курсу USD-DEM 1,51 Клиент получит 100*1,51=151DEM Так как кросс-курс обычно объявляется для односторонней операции , т.е . к приме ру для конверсии USD-DEM, то для обратной операции необходимо применять иную формулу расчета : СУММА _ВАЛЮТЫ _2=СУММА _ВАЛЮТЫ _1*(1/КРОСС _КУ РС ) Пример : Клиент обменивает 100 немецки х марок на доллары США по кросс-курсу USD-DEM 1,51 Клиент получит 100*(1/1,51)= 66,2USD Документальное оформление операции конверсии в плане клиентских документов аналогично описанному выше. Формы отчетной документации ОП Все операции , совершенные в течение оп ерационного дня обменным пунктом , по окончани и смены обрабатываются для выдачи итоговых документов работы ОП . К таковым отно сятся : Реестр наличной иностранной валюты , купле нной за наличные рубли ; Реестр наличной иностранно й валюты , проданной за наличные рубли ; Реестр по обмену (конве рсии ) наличной иностранной валюты ; В случае изменения банком в течение операционного дня курса п окупки наличн ой иностранной валюты за наличные рубли к ассир обменного пункта закрывает реестр , веду щийся по предыдущему курсу , подводит итоги и открывает новый реестр , ведущийся по новому курсу. Реестры продажи и конверсии заполняются аналогично. Технические требования к аппаратуре. Работа проектируемог о программного ко мплекса должна обеспечиваться наиболее распростр аненной в настоящее время персональной ЭВМ . Это соображение подразумевает выбор компьютера построенного на платформе INTEL. К таким ПЭВМ относятся различные модификации PC/AT с процессо рами о т 386 до Pentium различных фирм из готовителей . Поскольку в настоящее время маши ны класса PC/ХТ практически не применяются , выдвигать какие-либо особые требования к аппа ратуре не имеет смысла , так-как стандартный компьютер на текущий момент имеет достаточ н у ю вычислительную мощность и объ ем оперативной памяти для работы практически любого программного обеспечения . Занимаемое программой дисковое пространство должно быть относительно невелико . Конечно , в процессе раб оты программы объем данных будет возрастать, но с этой проблемой можно спр авиться , применяя различные средства сжатия и архивации данных на магнитных носителях к примеру ленточного типа (стриммеры и т.п .) или иных со сменными носителями. Среда выполнения программы. При выборе среды выполнения программы необходимо учитывать несколько факторов , а им енно : сложность и трудоемкость процесса проекти рования программного обеспечения для конкретной среды ; наличие инструментальных с редств разработки программного обеспечения ; возможность внесения корре ктив в программу в процессе эксплуатации ; наличие средств прое ктирования пользовательского интерфейса ; скорость выполнения програ ммы ; надежность работы программ ы и защищенность от программных сбоев. Выбор среды ограничим двумя вариантами - среда DOS и Windows. При рассмотрении преимуществ и недостатко в той и друг ой платформ мы видим , что и в той и в другой средах имеется большое количество систем разработки программного обеспечения , таких , как Delphi, Dbase 5, VisualBasic 4 (Windows) и Clipper, Fox Pro, Clarion (DOS). С точки зрения трудоемкости процес са проектир о вания предпочтение можно отдать среде Windows, поскольку наличие систем визуального проектирования значительно облегчает работу программиста , в то же время надежн ость работы и защита от программных сбоев с среде DOS значительно выше , как в одно задачной ср е де . Скорость обработки данных и собственно скорость выполнения программ также выше у DOS-приложений . Модификация программ , написанных для среды Windows, достаточно сложная задача , т.к . внесение изменений в сложную систему вза имодействия объектов и событий влечет з а собой большое количество исправлений связан ных между собой . Переустановка программного о беспечения в среде Windows также не всегда свод ится к простому копированию измененных файлов . Кроме всего выше изложенного нужно учиты вать возможность того, что DOS-приложения могут быть запущены и в среде Windows без каких-либо затруднений. Выбор языка программировани я для реализации проекта. Таким образом , исходя из вышеизложенного , оптимальным вариантом для проектируемой сис темы будет выбор системы разработки работающе й в среде DOS. Из имеющихся инструме нталь ных систем наиболее распространенными являются системы проектирования Fox Pro и Clipper. При сравнении этих двух систем видно , что по формату поддерживаемых баз данных набору операторов и функций для обработк и данных они практически ничем друг отдру га не отличаются : и та и другая система поддерживают формат баз данных Dbase IV с комбинированными индексными файлами формата CDX. Н аличие большого количества библиотек функций и возможность их создания , пополнения и бы строго подключения к программе делает с истему Clipper более приемлемой для реализации данного проекта . Из имеющихся на данное время компиляторов наиболее функциональным я вляется CA-Clipper 5.02 фирмы Computer Associates International, Inc. Разработка структуры информ ационных файлов и их связей. Предварительные соображения Из проведенного выше а нализа входных и выходных данных можно сд елат ь предварительные соображения о струк туре базы данных для хранения информации в нашей системе . В табл .1 приведена первона чальный вариант структуры базы с наименования ми полей и их типами , а также описание м назначения каждого из полей БД . Таблица 1 Предва рительная стру ктура базы “Операции” Имя поля Тип поля Длина Дробь Назначение FAM Char 15 Фамили я NAME Char 15 Имя SNAME Char 15 Отчество CDOC Char 10 Вид документа DSER Char 7 Серия документа DNOM Num 6 0 Номер докумен та REZIDENT Logical 1 При знак р езидент /нерезидент BCODC Num 3 0 Код ценности полученной клиентом BNAMEC Char 20 0 Наименование ценности полученной клиентом BCODCUR Num 3 0 Код валюты полученной клиентом BNAMECUR Char 20 0 Наименование валюты полученной клиентом BSUM Num 15 2 Сумма валюты полученной клиентом SCODC Num 3 0 Код ценности принятой от клиента SNAMEC Char 20 0 Наименование ценности принятой от клиента SCODCUR Num 3 0 Код валюты принятой от клиента SNAMECUR Char 20 0 Наименование валюты принятой от клиента SSUM Num 15 2 Сумма валюты принятой от клиента SSER Num 2 0 Серия справки SNOM Num 6 0 Номер справк и DATA Date 8 Дата совершения обменной операции Анализируя приведенную структуру можно вн ести некоторые коррективы , как в саму стру ктуру , так и в состав инф ормационных файлов программы в целом. Нет необходимости хранить Фамилию Имя и Отчество клиента в отдельных полях Б Д , целесообразно объединить их в одно поле , приняв для него приемлемую длину. Для кодов ценностей и валют необходим о предусмотреть специальные базы данных (справочники ), в которых должны храниться ко ды и их расшифровка , поскольку список кодо в валют и ценностей , приведенный на оборот е справки не включает в себя все возм ожные коды , а хранение кодов и наименовани й в основной базе является неоправд а нным с точки зрения размера записи в БД.Кроме того заполнение граф документа с помощью справочников значительно облегчит и ускорит работу кассира . В системе нео бходимо предусмотреть специальную процедуру внес ения в справочники изменений и дополнений. Хране ние в основной БД наименован ия документа клиента в символьном виде та кже нецелесообразно.Желательно хранить в базе код предъявленного документа из специального справочника , аналогично описанному выше. Таким образом определился первоначальный состав информ ационных файлов . В него в ойдут : Основная БД “Операции” ; Справочник кодов ценностей “Ценности” ; Справочник кодов валют “Валюты” ; Справочник видов документов “Документы”. Для выполнения всех расчетных операций необходимо также иметь еще одну БД , в которой будут храниться числовые величин ы обменных курсов валют за каждый день . Описать курс валюты можно следующими инфор мационными единицами : Код валюты ; Наименование валюты ; Краткое наименование валют ы ; Дата установки курса ; Время установки курса ; Курс покупки валюты банком за наличные рубли ; Курс продажи валюты ба нком за наличные рубли ; Масштаб ; Понятие масштаб используется в том случае , когда курс описываемой ва люты относительно базовой меньше единицы . Обы чно задают сумму в базовой валюте , которая содержится в единице описываемой валют ы , например , 5500 рублей на 1 доллар США . Число МАСШТАБ можно использовать , как количество единиц описываемой валюты , относительно которых пользователь задаст валютный курс в виде суммы в базовой валюте . Например , для украинског о карбованца курс будет р авен 1 рубль на 20 карбованцев , если МАСШТАБ принять за 20. Для удобства работы и повышения скоро сти обработки данных есть смысл в базе данных “Валюты” хранить кроме кода и н аименования валюты , также и некоторве текушие данные , необ ходимые при расчетных опе рациях - краткое наименование , текущий курс пок упки и продажи , курс ЦБ России. Окончательный состав и структуры информационных файлов. Таким образом мы можем определиться п о составу БД проектируемой программы : основна я база данных предназначена для хранения данных о совершенных в течение операцио нного дня (смены ) обменных операциях и дан ных о клиентах , дополнительные БД справочнико в , в которых содержится информация о кодах и наименованиях ценностей , валют и видах документов и база данных курсов валют на каждую дату . Структуры БД сис темы приведены в табл . 2-6. Таблица 2. Структура базы данных “Операции” Имя поля Тип поля Длина Дробь Назначение FIO Char 35 Фамилия , Имя , Отчество CDOC Num 3 Код вида документа DSER Char 7 Серия документа DNOM Num 6 0 Номер документа REZIDENT Logical 1 Признак резидент /нерезидент BCODC Num 3 0 Код ценности полученной клие нтом BCODCUR Num 3 0 Код валюты полученной клиентом BSUM Num 15 2 Сумма валюты полученной клиентом SCODC Num 3 0 Код ценности принятой от клиента SCODCUR Num 3 0 Код валю ты принятой от клиента SSUM Num 15 2 Сумма валюты принятой от клиента SSER Num 2 0 Серия справки SNOM Num 6 0 Номер справки DATA Date 8 Дата Таблица 3 Структура базы данных “Ценности” Имя поля Тип поля Длина Дробь Назначение COD Num 3 0 Код ценнос ти NAME Char 25 Наименование ценности Таблица 4 Структура базы данных “Валюты” Имя пол я Тип поля Длина Дробь Назн ачение COD Num 3 0 Код валюты NAME Char 25 Наименование валюты BKURS Num 10 2 Курс покупки SKURS Num 10 2 Курс продажи CKURS Num 10 2 Курс ЦБ РФ SHORT_NAME Char 3 Краткое наименование валюты SCALE Num 4 0 Мас штаб Таблица 5 Структура базы данных “Документы” Имя пол я Тип поля Длина Дробь Назначение COD Num 3 0 Код документа NAME Char 25 Наименование документа Таблица 6 Структура базы данных “Курсы валют по датам” Имя поля Тип поля Длина Дробь Назначение COD Num 3 0 Код валюты NAME Char 25 Наименование валюты BKURS Num 10 2 Курс покуп ки SKURS Num 10 2 Курс продажи CKURS Num 10 2 Курс ЦБ РФ SHORT_NAME Char 3 Краткое наименование валюты SCALE Num 4 0 Масштаб DATA Date 8 Дата установки курса TIME Char 5 Время установки курса Взаимодействие данных , связи и методы дост упа. Надежность и скорость обработки информаци и программой во многом определяются качеством проектирования методов доступа к данным системы и связей между отдельными инфор мационными единицами . В нашем случае просматр ивается один тип связей КОД-НАИМЕНОВАНИЕ для справочников кодов и валют . Такой тип связи реализуется штатными средствами Clipper ’ а , такими , как установка реляционной связи ме жду двумя базами данных (двумя рабочими областями ) по значению ключа или номеру записи при помощи команды SET RELATION. SET RELATION является командой обработки баз дан ных , которая связывает родительскую рабочую о бласть с одной или более дочерними област ями путем использования ключевог о выражен ия , номера записи или числового выражения . Каждая родительская рабочая область может бы ть связана не более , чем с восемью доч ерними рабочими областями . Отношение связи за ставляет указатель записи перемещаться в доче рней рабочей области в соответс т в ии с перемещением указателя записи в роди тельской рабочей области . Если в дочерней рабочей области не обнаруживается соответствия , то дочерний указатель записи помещается в позицию “за конец файла” , и результат поиска принимает значение "ложь " (.F.). Спос об связывания родительской и дочерней рабочих областей зависит от типа выражения ключа и присутствия активного ве дущего индекса в дочерней рабочей области . Если дочерняя рабочая область имеет активн ый индекс , поиск осуществляется с помощью стандартной ком а нды SEEK. Если же доч ерняя рабочая область не имеет активного индекса , а тип выражения ключа числовой , т о вместо этого в дочерней рабочей области выполняется команда GOTO. Такой способ доступа к данным позволя ет очень быстро и надежно находить значен ие клю чевого выражения в связанной БД и обеспечивает автоматическое сканирование д очерней базы данных при перемещении указателя записи в основной базе . Для обеспечения надежной связи данных необходимо предусмотреть в процедуре пополнени я справочников автоматиче ское создание кл ючевого выражения . Оно должно удовлетворять с ледующим требованиям : Уникальность ключа ; Небольшой размер ключевого выражения для уменьшения размеров индексного файла и у скорения поиска при большом количестве записе й. При создании ключа не же лательно в его качестве использовать номер записи . При таком способе уникальность ключа мож ет быть сохранена только если запрещено ф изическое удаление записей из файла справочни ка , хотя этот способ наиболее просто реали зуем . В нашем случае есть смысл оста н овиться именно на нем , поскольку физическое удаление записей из справочников приведет к потере логической связи архив ных документов . Таким образом при необходимос ти удаления , запись будет просто помечена , как удаленная и вдальнейшем не будет выв одиться в с писках . Одним из важных моментов в проектиров ании информационно-справочных систем является орг анизация ввода данных пользователем и их дальнейшая обработка . При вводе данных , как правило , используются две формы ввода : табли чная и бланк . В проектируемой си стеме ввод данных по обменной операции желател ьно организовать в форме бланка при оформ лении операции и в таблице при корректиро вке и пополнении справочников . При вводе к урсов валют можно применить комбинированную ф орму ввода : поиск валюты по списку табли ч ной формы , а ввод курса в форме бланка . Основным режимом работы польз ователя будет являться ввод данных по опе рациям обмена , поэтому бланк ввода необходимо спроектировать таким образом , чтобы форма соответствовала стандартной справке . Ввод данны х из справ о чников можно оформить так , чтобы вызов справочника обеспечивался нажатием функциональной клавиши , соответствие с правочника текущему полю ввода также должно обеспечиваться автоматически по имени поля ввода . Запись данных в базу должна пр оизводиться после п о дтверждения польз ователем правильности всех введенных числовых и символьных данных и расчетных величин . После ввода данных необходимо дать по льзователю возможность распечатки бланка справки и копии клиента . данная операция должна быть выполнена в обязател ьном порядк е . Печать может быть осуществлена на два типа принтеров : ударного действия (матричные ) и струйные . Печать справки на лазерных принтерах невозможна из-за повышенных требовани й к качеству бумаги . При печати справки на матричном принтере можно осу щ ествить печать двух экземпляров (справка +копия ) за один проход с применением к опировальной бумаги . На струйном принтере нео бходимо печатать каждый экземпляр отдельно . Т аки м образом нужно предусмотреть изменяемый пользователем счетчик числа копий или сп ец и альную функцию настройки на ти п принтера. Разработка функциональной с хемы программы. Функциональный состав программы должен максимально обеспечивать необходимый набор возможностей для выполнения кассиром ОП его должностных обязанностей , связанных с вводом данных , регистрацией сделок и оформл ением отчетн ых документов . Для этого с оставим примерный перечень функций , которые д олжны быть реализованы в нашей системе. Примерн ый перечень функций системы. Регистрация обменной операции Ввод данных по покупке валюты Ввод данных по продаже валюты Ввод данных по конверсии валюты Печать справки клиента Просмотр документов Просмотр списка д окументов дня Просмотр списка архивных документов Ведение справочников Ввод данных по кодам ценностей Ввод данных по видам документов Ввод данных по кодам валют Ввод курсов валют по датам Генерация отчетных документов Печать реестра наличной иностранной ва люты , купленной за наличн ые рубли ; Печать реестра наличной иностранной валюты , проданной за наличные р убли ; Печать реестра по обме ну (конверсии ) наличной иностранной валюты ; Прочие функции Ввод данных в поле ввода из справочника Перевод числа из цифро вой ф ормы в строчную (сумма прописью ) Изменение вида курсора Сохранение данных в ар хивных файлах Приведенный перечень охватывает все проце дуры , описанные в разделе технологического пр оцесса ОП и дополнен некоторыми функциями , которые будут необходимы в процессе ввода данных и их корр ектировки . Разработка структурной схем ы программы. Структурная схема программного комплекса определяет в основных чертах и внешний вид проектируемой системы и принци пы взаимодействия с пользователем . Схема прое ктируемой системы будет представлять собой ие рархическую древовидную с труктуру , описывающу ю процедуры ввода , обработки и вывода данн ых . Построение программ информационно-справочного класса по такому принципу позволяет довольно легко производить модификацию системы в целом и облегчает восприятие и понимание принципа работы п р ограммы . Для пос троения структурной схемы необходимо определить иерархию и связь перечисленных выше проц едур обработки данных . Естественно установить иерархию процедур в том виде , в каком они были описаны в предыдущей главе, поскольку таковая схема соотв ет ствует схеме “важности” и “употребимост и” процедур . Разработка экранного интерф ейса программы Существующие подх оды к проектированию экранного интерфейса Экранный интерфейс программы во многом определ яет удобство работы пользователя и является одним из важных факторов , вл ияющих на эффективность его труда . Программа , выполняющая все возложенные на нее функц ии , обладающая высоким быстродействием может быть полностью непригодной для работы из-за неприемл е мого интерфейса с пользов ателем . Еще буквально несколько лет назад существовал текстовый редактор , прекрасно иллюстр ирующий такой подход к проектированию програм много обеспечения . Вряд ли кому-то придется по душе редактор текста , в котором для вставки сим в ола в строку нуж но набрать однобуквенный код команды вставки , номер обрабатываемой строки (к счастью н е двоичный ), номер символа , после которого будет вставлен новый символ и собственно этот символ . Конечно такой подход абсолютно неприемлем. Наиболее практ ичными и удобными с точки зрения пользователя можно считать системы , имеющие экранный интерфейс , построенный на основе системы всплывающих меню . Наиболе е распространенными в настоящее время являютс я две идеологии (имеются в виду DOS-приложени я ), включающи е в себя и определен ную форму экранных окон и цветовую гамму и вид всплывающих списков . Это инструмент альные Среды фирмы Borland, и операционная оболочка Norton, фирмы Symantec. Обе идеологии предусматривают опр еделенное разбиение экранного пространства на области или зоны , предназначенные для конкретных информационных объектов и дей ствий . Зоны могут быть в некоторой степени переконфигурированы по желанию пользователя : изменены размеры и положение на экране . К оманды обработки данных вызываются из системы ме н ю , присутствующего на экране постоянно (Borland), или вызываемого по функциональн ой клавише (Symantec). И в том и в другом случае все команды системы распределены по функциональному признаку на г руппы и в главном меню присутствуют соб ственно наименования групп команд . Выбрав группу , пользователь получает доступ к сп иску команд группы , в который могут быть включены также команды , объединенные в гр уппы второго уровня и т.д . Таким образом , создается система многоуровневого всплываю щего м еню . Применение такой идеологии обеспечивает удобство ориентировки в системе , имеющей достаточно сложное , многоуровневое меню с множеством выборов . Естественно , что ув еличение вложенности и размеров списков выбор а , должно иметь разумные границы , которые к счастью имеются в виде ограничен ности экранного пространства монитора . В боль шинстве систем заложена также возможность нас тройки цветовой палитры по желанию пользовате ля . В операционной оболочке Norton предлагается выб ор гаммы из нескольких стандартных ва р иантов , в системах фирмы Borland можно созд ать свою собственную цветовую гамму , вплоть до мельчайших деталей . Выбор идеологии экранного интерфейса В нашей системе примем за основу экранного интерфейса , идеологию фирмы Borland. В это й идеологии выдержано большинство автоматизирова нных банковских систем , поэтому наша программ а органично впишется в их ряд . Система проектирования C A-Clipper предоставляет разработчику достаточно об ширную гамму функций , позволяющих осуществлять разработку экранного интерфейса , однако програм мы , в которых используются только штатные средства системы оказываются довольно сильно загруженными второстепен н ыми операторами , обеспечивающими вывод на монитор экранных объектов , рамок , установку цвета и т.п . Ц елесообразно разработать комплекс функций экранн ого интерфейса , выполняющих макрооперации , таких , к примеру , как вывод в заданных координ атах рамки с загол о вком и тен ью в указанной цветовой гамме и сохранени е области вывода в буфере для последующег о восстановления внешнего вида экрана . Все функции экранного интерфейса можно объединить в библиотеку , с тем , чтобы в последующ ей работе не загружать исходный код п рограммы их описанием. Переч ень функций экранного интерфейса Для формирования библиотеки экранных функ ций , приведем перечень п роцедур , относящих ся к созданию внешнего облика программы и связи программы с конечным пользователем : создание горизонтального меню в указанных координатах создание вертикального меню в указанных координатах вывод окна с рамкой и тенью или без таковых в ук азанных координатах и цвете вывод окна с рамкой и тенью или без таковых в указанных координатах и цвете с эффектом раскрытия вывод строки подсказки вывод сообщения с ожиданием реакции п ользователя вывод сообщения и ожидание выбора пол ьзователя вывод линейн ого индикатора процесса и его обновление вывод транспаранта ожидания Наиболее сложными и важными функциями из перечисленных , являются функции создания меню , а самыми употребительными функции выв ода окон . Таким образом , необходимо в первую очередь с проекти ровать именно эти функции. Проектирование функциональных модулей. Существует множество методов построения программ и каждый разработчик выби рает из всего многообразия наиболее приемлемы й для себя или вообще руководствуется сво ими личными соображениями . При проектировании нашей системы можно разбить весь процес с на несколько частей : Создание функций экранного интерфейса Проектирование системы меню программы Разработка функциональных модулей и подкл ючение их к основной программе Комплексная отладка и тестирование програ ммы в процессе опытной эксплуатации О кончательная доводка программного пр одукта и сдача его в эксплуатацию. Создание в первую очередь процедур и функций экранного интерфейса объясняется тем , что эти функции составят “скелет” програ ммы к которому в дальнейшем будут подключ аться рабочие процеду ры , таким образом мы будем вести разработку методом “Сверху вниз” . Этот метод позволяет в короткие сроки получить работающую систему с ограни ченным (и в процессе работы все более полным ) набором функциональных возможностей. Разработка интерфейсных функций Функция вывода меню в указанных координатах Для упрощения программы в целом возложим на эту процедуру следующие задачи : Вывод горизонтального , или вертикального меню , в зависимости от передаваемого параметр а Возврат номера выбора пользователя , или 0 при прерывании выбора по клавише “ Escape” Вывод списка выборов в экранных координатах , передаваемых в функцию в качеств е параметра Вывод списка выборов в цветовой гамме , передаваемой в функцию в качестве параме тра Выделение “горячих” клавиш в списке в ыборов и их обработка Возможность перемещения по списку выб оров с помощью манипулятора “Мышь”. Определимся с параметрами функции . Флаг вывода меню в горизонтальном или вертикальном виде (Logic) Список выборов (Array) Список координат (Array) Список строк подсказок (Array) Дополнительная координата (Numeric) Цвет активного выбора (String) Цвет неактивного выбора (String) Цвет “горячей” клавиши Дополнительная координата и массив коорди нат выборов будут выполнять двойную роль : при выводе горизонтального меню массив содерж ит номера колонок для каждого выбора , а дополн ительная координата определяет строк у вывода , при выводе вертикального меню в массиве будем иметь номера строк для каждого выбора , а дополнительная координата определит столбец вывода . Для отображения “ горячей” клавиши необходимо определить в стро ке выбор а какой-либо маркер , символ , следующий за ним , будет использоваться в качестве “горячей” клавиши и отображаться с выделением . Функция вывода окна в указанных координатах Данная функция должна быть универсальной , следовательно , нужно иметь возможность , при вызове функции , определя ть параметры будущего оконного объекта . К таким параметрам относятся : экранные координаты окна (стандартно это строка и столбец левого верхнего и правого нижнего углов окна ) цвет оконной области символы обрамления и заполнения окна цвет символов обрамления и заполнения Экранные координаты передаются в виде числовых величин в порядке , принятом для команд BOX, CLEAR и т.п . YL,XL - л евый верхний , YR,XR - п равый нижний угол . Символы заполнения передаю тся в виде строковой переменной , содержащей последовательно символы обрамления , начиная с верхнего левого угла по часовой стрелке . Последним в последовательности является сим вол заполнени я внутренней области о кна . Цветовая гамма устанавливается по умолча нию по текущим установкам. Вывод оконного объекта с эффектом раскрытия осуществляется путем цикличес кого вызова предыдущей функции с задержкой и изменением координат на единицу от Х 1=(Х R-XL) /2, Y1=(YR-YL)/2 до переданных в качестве параметра. Вывод строки подсказ ки Особенностью данной функции является необ ходимость вывода подсказки в виде этике ток к функциональным клавишам в нижнюю ст року экрана и фиксация этих данных на время работы какой-либо процедуры , а затем восстановление области экрана , занятой строк ой подсказки . Кроме того , необходимо выводить этикетки только для клавиш , задействов а нных в данной процедуре. Целесообразно в главном модуле программы определить массив с этикетками для каждо й функциональной клавиши , а в функцию пере давать только номера или позиции подлежащих отображению этикеток . В качестве параметра удобно использовать с имвольное выражение битовой строки вида “ 1000001001” , показывающее , что необходимо вывести в строку подсказки элементы массива с номерами 1, 7 и 10, а в остальных позициях вывести блоки пробелов . Поскольку в строку необходимо выводить дес ять элементов мас с ива с обозначен ием номера функциональной клавиши и разделите лями , легко подсчитать , что длина одного э лемента составит 6 символов. Примерный вид фрагмента строки приведен на рис. Вывод со общения с ожидани ем реакции или выбор а пользователя Поскольку данные функции , написанные , как самостоятельные модули во многом будут п охожи , есть смысл объединить их в одну универсальную процедуру . Условимся обрабатывать максимально три строки сообщения и до трех вариантов выбора . При отсутствии в передаваемых параметрах вариантов выбора , пр едполагается ожидание нажатия на любую клавиш у. Таким образом , список параметров функции будет следующим : Координаты вывода окна объе кта Строка сообщения 1 Строка сообщения 2 При вызове функции усл овимся отсутствующие параметры передавать в в иде пустой строки -“” , таким образом упрос тится анализ переданных параметров в функции . Вид выводимого сообщения при передаче в функцию различного количества параметр ов приведен на рис. Алгоритм функции и исходный текст при веден в приложении. Вывод ли нейного индикатора процесса и его обновление Ви д линейного индикатора приведен на рис . Использование индикатора позволяет визуально оценить процент выполнения какой-либо операции в процессе работы . Для отображения шкалы необходимо иметь следующие данные : Количество вычисляемых единиц в 100% шкалы индик атора Длина шкалы в экранных единицах Количество вычисляемых единиц в активной зоне шкалы Алгоритм функции и исходный текст приведен в приложении. Вывод транспара нта ожидания Транспарант ожидания должен выводиться в указанных координатах на время работы пр оцедуры и иметь обязательную строку “Ожидайте окончания операции...” , кроме того , можно в качестве параметра передать дополнительную информацию . Область экрана , занятую сообщением , и ее координаты необходимо сохранить в переменн ых для последующего восстановления. Общий вид транспаранта привед ен на рис. Вспомогательные функции ФУНКЦИЯ ПЕРЕКЛЮЧЕНИЯ ВИДА КУРСОРА Данная функция должна обеспечивать отобра жение курсора ввода в виде линии при режиме “ЗАМЕНА” и в виде блока в режи ме “ВСТАВКА” . Для отслеживания состояния курсора необходима глобальная переменная , котор ая принимает значения 1 или 2. Функция должна быть приписана к клавише “ Insert” командой SET KEY. ФУНКЦИЯ ПЕРЕВОДА СТРОКИ В ВЕРХНИЙ РЕГИСТР Поскольку в составе Clipper 5.02 не имеется фун кции Upper, работающей с символами кириллицы , необх одимо обеспечить программу эквивалентной процеду рой . Наиболее просто реализовать функцию путе м объявления двух массивов - исходных сим волов и символов преобразования с однозначным соответствием . Поиск исходного символа в первом массиве дает нам индекс символа пр еобразования из второго . При отсутствии эквив алента , символ транслируется без изменения. ФУНКЦИЯ КОНТРОЛЯ ВЫХОДА Для корректного закрытия БД и заверше ния работы необходимо проконтролировать запросом попытку пользователя выйти из программы . Данная функция будет содержать обычный запрос на подтверждение выхода , и при поло жительном ответе осуществит закрытие всех акт ивных файлов БД и возврат в ДОС. ФУНКЦИЯ ПЕРЕВОДА ЧИСЛОВОЙ ВЕЛИЧИНЫ В СТРОКУ “СУММА ПРОПИСЬЮ” Функция небходима д ля получения с троки , содержащей символьное выражение числа . Преобразование должно осуществляться с соблюдени ем правил грамматики , падежей и склонений . Первая буква строки прописная . Дробная часть не преобразуется . При переводе валюты в функцию должен быть передан в качестве параметра код валюты и строка дополнена псевдонимом валюты . Псевдоним , или к раткое наименование извлекается из БД валют по коду валюты , переданному в функцию в качестве параметра . По умолчанию предпола гается валюта - Российский рубль (к о д 000 или 002) Пример : 123456 код валюты 048 Сто двадцать три тысячи четыреста пят ьдесят шесть DEM 52567478 без параметра Пятьдесят два миллиона пятьсот шестьдесят семь тысяч четыреста семьдесят восемь ру б . 00 коп. Р азработка головного модуля программы Структура функции MAIN При написании головной функции необходимо описать именно в ней все массивы и пе ременные , имеющие с татус глобальных - “ Public” . В этом случае к ним можно получить доступ из всех п роцедур и функций системы , использовать их в качестве объектов для неявной передачи параметров и возврата значений или результ атов работы . Кроме того в голо в ном модуле необходимо произвести настройк у общих параметров Clipper ’ а , таких , как формат даты , режим поиска в БД , параметры пои ска и сравнения строк и т.п. Для обеспечения возможности корректировки пользователем цветовой палитры системы следует определить комплекс переменных , в котор ых будут храниться цветовые установки . Количе ство переменных определится количеством групп процедур , и числом изменяемых цветов в каждой из них . Распределить функции на гру ппы можно по следующему принципу : Функция главного меню системы Функции меню нижних ур овней Функции ввода данных Функции вывода данных Функции запросов Строка подсказки Набор переменных цвета должен обеспечить хранение цветовых установок для прорисовки окна , нормального текста , выделенных и невыделенных объекто в для каждой группы функций . Цветовые установки б удут иметь символьное выражение вида “ +GR/B” , что позволит производить непосредственную п одстановку переменных в функцию SETCOLOR. Хранение п еременных необходимо осуществить в специальном файле memo - перем е нных. ФУНКЦИИ ВЫЗОВА МЕНЮ НИЖ НИХ УРОВНЕЙ Данные функции в комплексе с функцией главного меню образуют систему всплывающих меню программы . Для организации взаимодействия между п роцедурами необход имо обеспечить “стыковку” вызывающих и вызыва емых функций . Основной проблемой организации стыка функций является их экранное взаимодейс твие т.е . каждая процедура или функция пос ле окончания работы должна обеспечить восстан овление экрана в том состоянии , в каком он был до вызова функции . Можно поступить несколько по другому : вызывающая функция обеспечивает сохранение состояния экра на на время работы вызываемой функции . Фун кции меню нижних уровней будут построены по одной схеме (Рис . ). Так о й под ход позволит при необходимости быстро встроит ь требуемый вызов в систему меню и , в свою очередь , не требует модулей - заглуше к для отсутствующих процедур. ФУНКЦИЯ РЕГИСТРАЦИИ ПОКУПКИ ВАЛЮТЫ Процедуры регистрации валютно-обмен ных операций будут использовать одну и ту же форму ввода данных (см . Рис ). Редакт ирование данных будет осуществляться в переме нных соответствующих типов и после контрол ьного з апроса заноситься в БД операций. Коды справочных данных вводятся двумя способами : непосредственно в поле ввода и ли через список справочника , вызываемого по клавише F3. Для облегчения работы кассира мож но предусмотреть автоматический расчет суммы по сле ввода суммы основной валюты. ФУНКЦИЯ - ОПРЕДЕЛИТЕЛЬ ТЕКУЩЕГО ПОЛЯ ДЛЯ ПОЛУЧЕНИЯ КОДА И НАИМЕНОВАНИЯ ОБЪЕКТА ИЗ СПРАВОЧНИКА При организации ввода данных с исполь зованием справочников желательно обеспечить выбо р данных из того и ли иного справо чника в одной функции . Для обеспечения выв ода необходимого на данный момент списка можно применить функцию GETACTIVE, которая возвращает имя текущего GET-объекта . Анализируя это имя можно организовать примитивный селектор , которы й будет фор м ировать запросы к той или иной БД справочников . Дальнейший выбор организуется в виде списка с пои ском по набору. Тестирование программного обеспечения. Тестирование наиболее ответственный этап созда ния программного обеспе чения и заключаетс я он в выполнении программы с целью о бнаружения ошибок. Среди существующих способов тестирования можно выделить три наиболее часто применяемых : восходящее тестирование ; нисходящее тестирование ; метод сэндвича. Во сходящее тестирование. При восходящем подходе программа собирает ся и тестируется снизу вверх . Только модул и самого нижнего уровня (модули , не вызыва ющие других модулей ) тестируются независимо , а втономно . После того как тестировани е этих модулей завершено , вызов их должен бы ть так же надежен , как вызов встроенной функции языка или оператор присваивания . За тем тестируются модули , непосредственно вызывающи е уже проверенные . Эти модули более высоко го уровня тестируются не автономно , а вместе с уже проверенными модулями бо лее низкого уровня . Процесс повторяется до тех пор , пока не будет достигнута верши на . Здесь завершаются и тестирование модулей , и тестирование сопряжений программы . Для каждого модуля необходимо написать небольшую веду щ ую программу. Нисходящее тестирование. Нисходящее тестирование не является полно й противоположностью восходящему , но в первом приближении может рассматриваться как таково е . При нисходящем подходе программ а со бирается и тестируется сверху вниз . Изолирова нно тестируется только головной модуль . После того как тестирование этого модуля завер шено , с ним соединяются один за другим , модули , непосредственно вызываемые им , и те стируется полученная комбинация . Проц е сс повторяется до тех пор , пока не будут собраны и проверены все модули . Для имитации функций недостающих модулей п рограммируются модули - ”заглушки” , которые моделируют функции отсутствую щих модулей. Метод сэндвича. Тестирование методом сэндвича представляет собой компромисс между восходящим и нисход ящим подходами . При использовании этого метод а одновременно начинают восходящее и нисходящ ее тестирование , собирая программу как снизу так и сверху и встречая сь в конце концов где-то в середине . Точка встр ечи зависит от конкретной тестируемой програм мы и должна быть заранее определена при изучении ее структуры . Если разработчик мож ет представить свою систему в виде уровня прикладных модулей , затем уровня модул е й обработки запросов , затем уровн я примитивных функций , то он может решить применять нисходящий метод на уровне при кладных модулей , а на остальных уровнях пр именить восходящий метод. В нашем случае применим метод сэндвич а , поскольку перед проектированием о сновн ой программы необходимо создать комплекс инте рфейсных и вспомогательных функций , которые , е стественно должны быть проверены до создания основного тела программы. Экономическа я часть. В большинстве случаев внедрение вычислите льной техники не приносит прямого экономическ ого эффекта . Это объясняется следующим : сокращение числа занятых работой , автомат изировать которую призвана вычислительная техник а , происходит редко вычислительная техника автомати зирует труд , а не подменяет собой человека ; внедр ение вычислительной техники треб ует солидных капиталовложений не только на ее приобретение , но и на обучение персо нала работе с ней , а также приема на работу специалиста для обслуживания вычислител ьной техники , либо заключения договора на такое обслуживан и е ; требуется приобрести , либо же создать собственное программное обеспечение ; увеличение потребления электроэнергии ; оборудование рабочих мест , установка охра нной сигнализации. Однако , не смотря на выше перечисленны е причины , все больше и больше организац ий используют вычислительную технику в своей работе . Это можно объяснить косвенным эффектом от внедрения вычислительной техники , который зачастую значительно превышает затр аты на приобретение и содержание вычислительн ой техники. Применение вычислительной т ехники зна чительно повышает достоверность и актуальность информации , то есть уменьшается возможность возникновения ошибки в расчетах , неминуемая при ручном счете . Появляется возможность по лучить информацию с нужной степенью детализац ии с минимальными врем е нными затр атами , что практически невозможно при ручной обработке . Скорость принятия решения напряму ю связана с наличием информации и ее достоверностью и сказывается на результатах д еятельности любой организации. Все сказанное выше в полной мере относится к рассматриваемой программе . Она не предназначена для замены человека на его рабочем месте , но способна облегчить и повысить производительность его труда . В десятки и сотни раз сокращается время получения информации , повышается качество обслу живания клиен т ов . Для расчета экон омической эффективности можно условно принять , что благодаря приобретению программы , организа ция получает те же возможности , что и при приеме на работу дополнительно двух ч еловек. Показатели экономической характ еристики разработки. Персональные ЭВМ являются изделиями сложной вычислительной техники и , как любой прибор требуют при работе с ним собл юдения определенных методов безопасной работы и техники электробезопасности , незнание , или пренебрежение которыми может причинить н емало неприятностей. Типичными ощущениями , которые испытывают к концу рабочего дня люди , работающие с персональными компьютерами , являются головная б оль , резь в глазах , тянущие боли в мышц ах шеи , рук и спины , зуд кожи на ли це и т.д . Испытываемые день за днем они могут привести к мигреням , частичной потере зрения , сколиозу , тремору , кожным вос палениям и другим заболеваниям. Вероятнее всего человеку уже никогда не удастся полностью избежать пагубного влиян ия передовых технологий , но , как и во м ногих других случаях , сами пользователи персональных компьютеров , по крайней мере , мог ут свести его к минимуму . Большинство проб лем решаются сами собой при правильной ор ганизации рабочего места , соблюдении правил т ехники безопасности и разумном распределении рабочего в ремени. Основным источником эргономических проблем , связанных с охраной здоровья людей , использ ующих в своей работе автоматизированные инфор мационные системы на основе персональных комп ьютеров , являются дисплеи (мониторы ), особенно д исплеи с электронно-луч евыми трубками . Они представляют собой источники наиболее вредны х излучений , неблагоприятно влияющих на здоро вье операторов. Результаты , полученные в ходе исследовани й , носят пока еще преимущественно статистичес кий характер и не имеют адекватного объяс нени я . Частотный спектр излучения монитор а характеризуется наличием рентгеновских , ультраф иолетовых , инфракрасных и других электромагнитных колебаний . Опасность рентгеновского и части других излучений большинством ученых признае тся пренебрежимо малой , посколь к у их уровень достаточно невелик и в основно м поглощается покрытием экрана . Наиболее тяже лая ситуация связана , по-видимому , с полями излучений очень низких частот , которые , как выяснилось , способны вызывать биологические эффекты при воздействии на живые ор г анизмы . Было обнаружено , что электромагнит ные поля с частотой порядка 60 Гц могут инициировать изменения в клетках животных (вп лоть до нарушения синтеза ДНК ). Особенно п оразительным для исследователей оказался тот факт , что , в отличие , например , от рентге н овского излучения , электромагнитные волны обладают необычным свойством - опасность их воздействия при снижении интенсивности излучения не уменьшается , мало того , некоторые поля действуют на клетки тела только при малых интенсивностях или на конкретных час т отах . Согласно одному из объяснений , сформулированных американскими учеными , переменное электромагнитное поле , совершающее колебания с частотой порядка 60 Гц , вовлекает в аналогичные колебания молекулы любого ти па , независимо от того , находятся они в мозг е человека или в его теле . Результатом этого является изменение активн ости ферментов и клеточного иммунитета , приче м сходные процессы наблюдаются в организмах и при возникновении опухолей . Специальные измерения показали , что мониторы действительно излучают магнитные волны , по инте нсивности не уступающие уровням магнитных пол ей , способных обуславливать возникновение опухоле й у людей . Более серьезные результаты были получены при обследовании беременных женщин . Оказалос ь , что для тех женщин , которые проводили за дисплеем компьютеров не менее 20 час ов в неделю , вероятность патологии на 80% выш е , чем для выполняющих аналогичные работы без применения компьютера . При исследованиях , связанных с изучением глазных заболеваний , вы яснилось , что служащие , работающие за д исплеем по 7 и более часов в день , страдают воспалениями и другими заболевания ми глаз на 70% чаще тех , кто проводит за дисплеем меньше времени. Технические характеристики дисплеев (разрешаю щая способность , яркость , контрастность , частота кадровой развертки ) в том случае , если на них не обращают внимания при выбо ре устройства или неправильно устанавливают , могут крайне отрицательно сказаться на зрении . Что касается других функциональных наруше ний , то те из них , которые связаны со скелетом человека , обусловле ны длительны ми статическими нагрузками , вызванными плохой организацией рабочего места пользователя : неудобн ой или неподходящей по размерам мебелью , н еудобным взаимным расположением компонентов сист емы персонального компьютера или отсутствием достаточного д ля свободных движений и смены позы места . Неудачная организация клавиатуры , либо неудобная конструкция мыши способны вызвать “накапливание” заболеваний су хожилий , мышц и нервных окончаний . Кроме т ого , возникновение болезней спины , шеи и р ук специалисты об ъ ясняют тем , что при работе с клавиатурой компьютера поль зователи с высокой скоростью повторяют одни и те же движения (типа быстрых нажати й клавиш , перемещения мыши , наклонов и пов оротов головы и т.п .). Каждое нажатие на клавишу , естественно , сопряжено с м н ожественным сокращением мышц , перемещением сухожилий вдоль костей и соприкосновениями их с внутренними тканями . В итоге из-за чрезмерной напряженности работы или увлеченн ости ею могут развиваться болезненные и в оспалительные процессы. Кожные заболевания (л ица ) связаны в основном с тем , что наэлектризованный эк ран дисплея притягивает частицы взвешенной в воздухе пыли , так что вблизи него “ка чество” воздуха ухудшается и оператор вынужде н работать в более запыленной атмосфере. На основе сказанного можно сформу лировать определенные рекомендации для пользоват елей персональных компьютеров с точки зрения охраны их труда . В принципе , основной подход к решению проблем такого рода свод ится к установлению строгого контроля за соответствием аппаратных и программных сре д ств , а также условий их экспл уатации эргономическим требованиям . Приведем неко торые из них : соблюдение ограничений по медицинским пок азаниям ; внимательное отношение к характеристикам дисплеев ; правильная организация рабочего места опе ратора ; правильная орг анизация рабочего време ни оператора. Рассматривая подробно каждую из них , м ожно привести рекомендации частного характера : необходимо соблюдать ограничения на работ у с персональными компьютерами для служащих , страдающих заболеваниями опорно-двигательного ап парата , глаз , кожи , а также для бер еменных женщин ; предпочтительнее использовать дисплеи с в ысокой разрешающей способностью и размером эк рана не менее 14” (Hi-Resolution, Non-Interlaced, Low-Radiation); лучше выбирать видеоадаптеры с высоким разрешением и частотой кадровой развертк и не менее 70-72Гц ; обязательно ставить на дисплеи экранные фильтры с антистатическим покрытием , в не сколько раз снижающие утомляемость глаз и концентрацию пылевых частиц в близи экрана монитора ; сидеть не ближе 70 см от дисплея ; экран дисплея должен быть ориентирован таким образом , чтобы исключить блики от источников света ; не следует располагать дисплей непосредст венно под источником освещения или вплотную с ним ; желательно , чтобы освещенность рабочего м еста оператора не превышал а 2/3 нормальной освещенности помещения ; стена позади дисплея должна быть осве щена примерно так же , как его экран ; при размещении в одной комнате нескол ьких персональных компьютеров расстояние от р абочего места каждого оператора до задних и боковых стенок соседних персональных компьютеров должно составлять не менее 1.2м ; рабочее место должно быть оборудовано так , чтобы исключить неудобные позы и д лительные статические напряжения тела ; общее время работы с дисплеем не должно превышать 50% всего рабочего врем ени оператора ; не следует превышать темп работы поря дка 10 тысяч нажатий клавиш в час (примерно 1500 слов ); при обычной работе с компьютером необ ходимо делать 15-минутные перерывы через каждые 2 часа , а при интенсивной работе через кажды й час. Помимо безопасности пользователя , необходимо сказать несколько слов и о безопасности компьютера и , что особенно важно , безопас ности данных , хранящихся в нем . ПК , использ уемые для хранения особо важной информации необходимо оборудовать ус тройствами беспер ебойного питания , поддерживающими питающее напряж ение в течение некоторого времени при ава рийных ситуациях в электрической сети. Нельзя загораживать заднюю стенку системн ого блока или ставить персональный компьютер вплотную к стене это приводит к “тяжелому” режиму охлаждения системного блока и его перегреву . То же самое относится к дисп лею нельзя класть на него бумаги , книги и вообще все , что может закрыть его вентиляц ионные отве рстия . Пыль и электроника п лохо совместимы друг с другом , поэтому нео бходимо поддерживать в помещении приемлемый п ылевой режим. Заключение В процессе работы над дипломным проек том был создан комплекс программных средств для обеспе чения работы пункта обмена валюты банка . Кроме того была разработана концепция проектирования информационно - справочн ых систем с применением функций экранного интерфейса , разработанных в рамках дипломного проекта . Применение специализированных функций по з волило сократить время разработ ки основного модуля программы и обеспечило высвобождение времени на создание процедур обработки данных . В дипломном проекте предс тавлен один из множества подходов к проек тированию программного обеспечения информационного пла н а , дающий возможность на ра нних этапах разработки учесть все нюансы будущей программы , необходимый набор функций , состав и структуру баз данных , что в д альнейшем исключает необходимость переработки уж е написанных компонентов программы . Кроме того в процес се работы были подготовлены рекомендации по оборудованию рабочего места оператора ЭВМ , соблюдению но рм и правил ТБ при работе на персонал ьных ЭВМ , подсчитаны экономические характеристики разработки. Данное программное обеспечение находится в стадии внедрен ия в технологический процесс работы одного из финансовых учреждени й города. Приложение Интерфейсные функции Функция вывода окна Параметры : координаты левого верхнего и правого нижнего угла окна, [строка символов обрамления ] Function _OPEN_T parameters Y1,X1,Y2,X2,SBOX private XT1,XT2 ,XK2,SBOX SBOX=iif(empty(SBOX).and.SBOX<>space(9)," ",SBOX) XT1=iif(X1+2>79,79,X1+2) XT2=iif(X2+2>79,79,X2+2) XK2=iif(X2+1>79,79,X2+1) @ Y1,X1,Y2,X2 BOX SBOX shadow(Y2+1,XT1,Y2+1,XT2, 0 ) shadow(Y1+1,XK2,Y2+1,XT2, 0 ) return 0 Функция вывода окна с эффектом раскрытия Параметры : координаты левого верхнего и правого нижнего угла окна, [строка символов обрамления ],[строка уста новки цвета ] Function _OPEN_N parameters Y1,X1,Y2,X2, S1,COLOR local CL,XT,YT,XC,YC if pcount()=4 COLOR=setcolor() S1="" elseif pcount()=5 COLOR=setcolor() endif YC=Y1+int((Y2-Y1)/2) XC=X1+int((X2-X1)/2) CL=setcolor() if Y2-Y1 >= 2 YC1=YC YC2=YC XT=XC setcolor(COLOR) do while .T. _open_t(YC1,XT,YC2,2 *XC-XT,S1) YC1=iif(YC1-2Y2,Y2,YC2+2) if XT=X1 exit endif XT=iif(XT-3Y1 YT=YC1 do while .T. _open_t(YT,X1,2*YC-YT,X2,S1) if YT=Y1 exit endif YT=iif(YT-20.or.STAT<>0 exit endif enddo L_hidecurs() restore screen csetall(STATS) setcolor(CLR) return 0 elseif empty(M3).and..not.empty(M2) decl are MM1[2],MM2[2] MM1[1]=M1 MM1[2]=M2 XX=X1+int((X2-X1-len(M1+M2)-1)/2) MM2[1]=XX MM2[2]=XX+len(M1)+1 do while .T. MM=1 MM=selopt(MM,MM1,MM2,"",Y2-2,.F.,.F.,At_E_S,At_E_U,At_E_F) if MM<>0 restore screen csetall(STATS) setcolor(CLR) return MM endif enddo elseif .not.empty(M1).and..not.empty(M2).and..not.empty(M3) declare MM1[3],MM2[3] MM1[1]=M1 MM1[2]=M2 MM1[3]=M3 XX=X1+int((X2-X1-len(M1+M2+M3)-2)/2) MM2[1]=XX MM2[2]=XX+len(M1)+1 MM2[3]=XX+len(M1+M2)+2 do while .T. MM=1 MM=selopt(M M,MM1,MM2,"",Y2-2,.F.,.F.,At_E_S,At_E_U,At_E_F) if MM<>0 restore screen csetall(STATS) setcolor(CLR) return MM endif enddo endif csetall(STATS) setcolor(CLR) return 0 Функция вывода линей ного индикатор а проц е сса Function _LIN parameters YCOR,XCOR,LENG,LMAX,LUSE private YCOR,XCOR,LENG,LMAX,LUSE,STATS,RW,CL STATS=csetall() RW=row() CL=col() LMAX=iif(LMAX<=0,1,LMAX) XUSE=int((LENG/LMAX)*LUSE)+XCOR CLR=setcolor(AT_S_U) @ Y COR,XCOR,YCOR,XUSE BOX "---------" setcolor(AT_S_S) if XUSE0 setcolor(COLORN) @ iif(ORIENT,MC[IN],COLROW),iif(ORIENT,COLROW+POS-1,MC[IN]+POS-1) ; SAY substr(MO[IN],POS+1,1) setcolor(CL) endif if SHD setcolor (CSD) @ iif(ORIENT,MC[IN]+1,COLROW+1),iif(ORIENT,COLROW+1,MC[IN]+1) ; SAY repl("-",len(strtran(MO[IN],"~",""))) @ i if(O RIENT,MC[IN],COLROW),iif(ORIENT,COLROW+ ; len(strtran(MO[IN],"~","")),MC[IN]+ ; len(strtran(MO[IN],"~",""))) SAY "-" setcolor(CL) endif NEXT COLMO=L_getxposn()/8 ROWMO=L_getyposn()/8 setcolor(CLRS) L_hidecurs() @ iif(ORIENT,MC[NOPT],COLROW),iif(ORIENT,COLR OW,MC[NOPT]) ; SAY strtran(MO[NOPT],"~","") if (POS:=at("~",MO[NOPT]))>0 CL= setcolor(COLORS) @ iif(ORIENT,MC[NOPT],COLROW),iif(ORIENT,COLROW+POS-1,MC[NOPT]+POS-1) ; SAY substr(MO[NOPT],POS+1,1) setcolor(CL) endif if SAYHELP setcolor(At_M0_N) @ 24,(80-len(ME[INDN]))/2 SAY ME[INDN] endif L_showcurs() KEYPRESSED=.F. do while .T. COLMN=L_getxposn()/8 ROWMN=L_getyposn()/8 STAT=L_getmstat() KL=inkey() if KL>0 KEYPRESSED=.T. else KEYPRESSED=.F. endif if KL=13 L_hidecurs() return INDN en dif if STAT=2.or.KL=27 if KL<>27 for TT=1 to COUN if iif(ORIENT,COLMN>=COLROW.and.COLMN<=COLROW+; len(strtran(MO[TT],"~","")).and.ascan(MC,ROWMN)<>0,; ROWMN=COLROW.and.COLMN>=MC[TT].and.COLMN<=MC[TT]+; len(strtran(MO[TT],"~",""))) L_hidecurs() return 0 endif next else L_hidecurs() return 0 endif endif if iif(ORIENT,(COLMN>=COLROW.AND.COLMN<=COLROW + ; len(strtran( MO[INDN],"~","")) .AND. ; ROWMN<>ROWMO).or.KEYPRESSED,(ROWMN=COLROW.AND.; COLMN<>COLMO).or.KEYPRESSED) T1=.F. if ORIENT .and.KL=0 TEST=ascan(MC,ROWMN) if TEST<>0 T1=.T. endif elseif .not.ORIENT.and.KL=0 TEST=INDO for TT=1 to COUN if COLMN>=MC[TT].and.COLMN<=MC[TT]+len(strtran(MO[TT],"~","")) TEST=TT T1=.T. exit endif next elseif KL>0 T1=.T. endif if T1 do case case KL=5.or.KL=19 INDN=iif(INDN=1,COUN,INDN-1) case KL=24.or.KL=4 INDN=iif(INDN=COUN,1,INDN+1) case KL>=32.and.KL<=255 STROKE="~"+chr(KL)+"~" for II=1 to COUN if at(STROKE,MO[II])<>0 INDN=II keyboard chr(13) exit endif next otherwis e INDN=TEST endcase setcolor(CLRN) L_hidecurs() @ iif(ORIENT,MC[INDO],COLROW),iif(ORIENT,COLROW,MC[INDO]) ; SAY strtran(MO[INDO],"~","") if (POS:=at("~",MO[INDO]))>0 CL=setcolor(COLORN) @ iif(ORIENT,MC[INDO],COLROW),iif(ORIENT,COLROW+POS-1,MC[INDO]+ ; POS-1) SAY substr(MO[INDO],POS+1,1) setcolor(CL) endif if SAYHELP setcolor(At_M0_N) @ 24,(80-len(ME[INDN]))/2 SAY ME[INDN] endif setcolor(CLRS) @ iif(ORIENT,MC[INDN],COLROW),iif(ORI ENT,COLROW,MC[INDN]) ; SAY strtran(MO[INDN],"~","") if (POS:=at("~",MO[INDN]))>0 setcolor(COLORS) @ iif(ORIENT,MC[INDN],COLROW),iif(ORIENT,COLROW+POS-1,MC[INDN]+POS-1) SAY substr(MO[INDN],POS+1,1) endif L_showcurs() INDO=INDN ROWMO=ROWMN COLMO=CO LMN if STAT=0 loop endif endif elseif COLMN>=COLROW do case case STAT=1 for TT=1 to COUN if iif(ORIENT,COLMN>=COLROW.and.COLMN<=COLROW+; len(strtran(MO[TT],"~","")).and.ascan(MC,ROWMN)<>0,; ROWMN=COLROW.and.COLMN>=MC[TT].and.COLMN<=MC[TT]+; len(strtran(MO[TT],"~",""))) L_hidecurs() return INDN endif next case STAT=2 for TT=1 to COUN if iif(ORIENT,COLMN>=COLROW.and.COLMN<=COLROW+; len(strtran(MO[TT],"~","")).and.ascan(MC,ROWMN)<>0,; ROWMN=COLROW.and.COLMN>=MC[TT].and.COLMN<=MC[TT]+; len(strtran(MO[TT],"~",""))) L_hidecurs() return 0 endif next endcase endif enddo return 0 Вспомогатель ные функции Функция пер еключе ния вида кур сора Function FINS FINSERT=.not.FINSERT readinsert(FINSERT) if setcursor()<>0 CUR_STYLE=iif(FINSERT,2,1) setcursor(CUR_STYLE) endif clear type return 0 Ф ункция п ерево д а стр оки в верхний регистр Function UpperR(String) local SRC:= "а ","б ","в ","г ","д ","е ","ё ","ж "," з ","и ","й ","к ","л ","м ","н ","о ","п ","р ","с ","т ","у ","ф ","х ","ц ","ч ","ш ","щ ","ь ","ы ","ъ ","э ","ю ","я "," " ,; DST:= "А ","Б ","В ","Г ","Д ","Е ","Ё "," Ж ","З ","И ","Й ","К ","Л ","М ","Н ","О ","П ","Р ","С ","Т ","У ","Ф ","Х ","Ц ","Ч ","Ш ","Щ ","Ь ","Ы ","Ъ ","Э ","Ю ","Я "," " ,; STR:="",KEY:="",INDEXKEY,I for I=1 to len(STRING) KEY=substr(STRING,I,1) if (INDEXKEY:=ascan(SRC,KEY))<>0 STR=STR +DST[INDEXKEY] else STR=STR+KEY endif next return STR Функция контроля выхода Function DOORS private CLR,ME CLR=setcolor() clear type ME=1 ME=_err(07,02,"Вы желаете завершит ь работу ?","","",; " ~Y~es "," ~N~o ","") if ME=1.or.ME=-1 close databases set color to clear set printer to setcursor(1) showtime() keyboard chr(0) L_showcurs() return .T. else setcolor(CLR) return .F. endif return .T. Функция перевода числовой величины в строку “Сумма прописью” Function NUMSTRING parameters NUM1,CODE_CUR local MR:= .T.,.T.,.F.,.T. ,CL,; MG:= "" ,"" ,"" ,"" ,; "миллиард " ,"миллион " ,"тысяча ","" ,; "миллиарда " ,"миллиона " ,"тысячи ","" ,; "миллиардов ","миллионов ","тысяч " ,"" ,; SO:=0,DE:=0,ED:=0,TX,NUM,OBL OBL=select() if pcount()<2 CODE_CUR=0 endif use (DATROAD+"Currency") index (DATROAD+"Currency") alias CUR new seek CODE_CUR if found() /*MG[1,4]=alltrim(LONG_NAME0) MG[2,4]=alltrim(LONG_NAME0) MG[3,4]=alltrim(LONG_NAME1) MG[4,4]=alltrim(LONG_NAME2)*/ /*if upperR(substr(trim(LONG_NAME0),len(trim(LONG_NAME0)),1))="А "*/ MR:= .T.,.T.,.F.,.T. /*endif*/ endif Man_Woman=.F. ST ROK="" GSTROK="" for I=12 to 3 step -3 NUM=val(substr(str(NUM1,12),I-2,3)) Man_Woman=MR[I/3] SO=int(NUM/100) DE=int((NUM-SO*100)/10) ED=NUM-SO*100-DE*10 TX=4 do case case ED=1 TX=2 case ED>1.and.ED<=4 TX=3 otherwise TX=4 endcase if (DE*10+ED>4.and.DE*10+ED<21) TX=4 endif TITLE=GetShort_Name(CODE_CUR) SUBTITLE=MG[TX,I/3] STROK=num2str(NUM,Man_Woman,SO,DE,ED) GSTROK=iif(!empty(STROK).or.I=12,STROK+" "+SUBTITLE,"")+ ; " "+GSTROK next GSTROK=alltrim(strtran(GSTROK," "," ")) GST ROK=upperR(substr(GSTROK,1,1))+substr(GSTROK,2) use select(OBL) return GSTROK+" "+TITLE Функция построения строки “Суммы прописью” Function NUM2STR PARAMETERS in_num,Man_Woman, SO,DE,ED local UNITS[37] UNITS[ 1] = "" UNITS[ 2] = iif(Man_Woman,"один ","одна ") UNITS[ 3] = iif(Man_Woman,"два ","две ") UNITS[ 4] = "три " UNITS[ 5] = "четыре " UNITS[ 6] = "пять " UNITS[ 7] = "шесть " UNITS[ 8] = "семь " UNITS[ 9] = "восемь " UNITS[10] = "девят ь " UNITS[11] = "десять " UNITS[12] = "одиннадцать " UNITS[13] = "двенадцать " UNITS[14] = "тринадцать " UNITS[15] = "четырнадцать " UNITS[16] = "пятнадцать " UNITS[17] = "шестнадцать " UNITS[18] = "семнадцать " UNITS[19] = "восемнадцать " UNITS[20] = "девятнадцать " UNITS[21] = "двадцать " UNITS[22] = "тридцать " UNITS[23] = "сорок " UNITS[24] = "пятьдесят " UNITS[25] = "шестьдесят " UNITS[26] = "семьдесят " UNITS[27] = "восемьдесят " UNITS[28] = "девяносто " UNITS[29] = "сто " UNITS[30] = "двести " UNITS[31] = "триста " UNIT S[32] = "четыреста " UNITS[33] = "пятьсот " UNITS[34] = "шестьсот " UNITS[35] = "семьсот " UNITS[36] = "восемьсот " UNITS[37] = "девятьсот " STRING = "" IN_NUM = int(IN_NUM) SOT=int(In_NUM/100) DES=int((In_NUM-SOT*100)/10) EDN=In_NUM-SOT*100-DES*10 IN_STRING = ltrim(str(IN_NUM)) SCAN_ED=.T. if SOT>0 STRING=STRING+UNITS[SOT+28]+" " endif if DES>1 STRING=STRING+UNITS[DES+19]+" " elseif DES=1 STRING=STRING+UNITS[DES*10+EDN+1]+" " SCAN_ED=.F. endif if SCAN_ED STRING=STRING+UNITS[EDN+1] endif return STRING Функция получения псевдонима валюты Function GetShort_Name(CODE) local OBL,MR,ST:=" " OBL=select() select CUR MR=recno() seek CODE if found() ST=SHORT_NAME endif goto MR select(OBL) return ST Основные функции и процедуры Головной модуль программы Function MAI N #Include "Box.ch" setcursor(0) if .not.file("V.mem").or..not.file("C.mem") set curs on return 0 // Аварийный выход при отсутствии файлов глобальных переменных else // Объявление глобальных переменных и считывание их из файла public AT_M0_F,AT_M0_N,AT _M0_S,AT_M0_U,AT_M1_F,AT_M1_N,AT_M1_S public AT_M1_U,AT_M2_F,AT_M2_N,AT_M2_S,AT_M2_U,AT_E_F,AT_E_N,AT_E_S public AT_E_U,AT_G_F,AT_G_N,AT_G_S,AT_G_U,AT_S_F,AT_S_N,AT_S_S,AT_S_U public AT_N_I,AT_N_S CLFON="N" clear restore from c.mem addi endif // Гл обальные устан овки setcursor(0) set date german set century on set wrap on set dele off set bell off set confirm on set scoreboard off set message to 24 center restore from v.mem addi public PAROL,DATROAD,USERDSK,PAGELEN,ETLF,UKZGL,UKTXT,ARCROAD public ZE ROPRINT,FPREOBR,PAGESIZ,DUBLDSK,KEYCR,C_H public FM,FINSERT,CUR_STYLE,M__EN,MDATE,SETNUM restore from D addi store 0 to CROW,CCOL KEYCR="#4_Ж ;V*" PAROL = uncrpt(KEYCR,P__AROL) DATROAD = D__ATROAD ARCROAD = A__RCROAD DUBLDSK = D__UBLDSK USERDSK = U__SERDSK PAGELEN = P__AGELEN PAGESIZ = P__AGESIZ ETLF = E__TLF UKZGL = U__KZGL UKTXT = U__KTXT SETNUM = S__ETNUM FPREOBR = .F. release P__AROL,D__ATROAD,U__SERDSK,S__ETNUM,; P__AGELEN,P__AGESIZ,E__TLF,U__KZGL,U__KTXT,D__UBLDSK,A__RCROAD MEN=1 MEN1=1 FINSERT=.F. CUR_STYLE=1 set key 22 to fins() declare MMS[ 6],MOP[ 6],MCO[ 6],MNT[12],MHP[10] // Массив этикеток строк и подсказки MHP[ 1]="Помощь " MHP[ 2]="Добав ." MHP[ 3]="Список " MHP[ 4]="Поиск " MHP[ 5]="Фильтр " MHP[ 6]="Сумма " MHP[ 7]="Печать " MHP[ 8]="Удал . " MHP[ 9]="Запись " MHP[10]="Выход " // Массив опций главного меню системы MOP[ 1]=" ~О ~перации " MOP[ 2]=" ~С ~правочники " MOP[ 3]=" о ~Т ~четы " MOP[ 4]=" ~А ~рхив " MOP[ 5]=" ~Р ~азное " MOP[ 6]=" ~В ~ыход " // Массив координат глав ного мен ю системы MCO[ 1]=2 MCO[ 2]=12 MCO[ 3]=25 MCO[ 4]=33 MCO[ 5]=40 MCO[ 6]=48 // Массив строк помощи MMS[ 1]="Оформление покупки /продажи валюты " MMS[ 2]=" Ввод справочных данных " MMS[ 3]=" Вывод отчетов " MMS[ 4]=" Работа с архивом " MMS[ 5]=" Настройки си стемы " MMS[ 6]=" Выход в MS DOS " // Массив названий месяц ев MNT[ 1]="Января " MNT[ 2]="Февраля " MNT[ 3]="Марта " MNT[ 4]="Апреля " MNT[ 5]="Мая " MNT[ 6]="Июня " MNT[ 7]="Июля " MNT[ 8]="Августа " MNT[ 9]="Сентября " MNT[10]="Октября " MNT[11]="Ноября " MNT[12]=" Декабря " setcolor(At_M0_F) @ 00,00,24,79 BOX " - --" setcolor(At_M0_N) @ 00,01 SAY "Обменный пункт банка " // Проверка пароля пользователя (3 попытки ) for II=1 to 3 setcursor(CUR_STYLE) setcolor(AT_E_F) _open_n(07,22,11,57) setcolor(AT_E_N) _saystr(0 9,24,"Введите Ваш пароль :") KL=0 TST="" do while .T. KL=inkey(0) do case case KL=8 TST=substr(TST,1,len(TST)-1) case KL=13 exit otherwise TST=TST+chr(KL) endcase @ 09,45 SAY repl(" ",len(TST)+1) @ 09,45 SAY repl("_” ,len(TST)) if len(TST)=10 exit endif enddo if TST=PAROL @ 09,24 SAY “ OK “ exit else @ 09,24 SAY “ Пароль неправил ьный “ tone(1500,2) tone(1700,2) endif next if TST<>PAROL setcolor("W/N") clear screen return endif restore screen // Настройка принтера if M__EN=2 set p rinter to BUFFER.PRN else M__EN=1 set printer to endif setcursor(0) FM=.F. setcolor(At_M0_F) @ 00,01 SAY space(80) do while .T. // Главное меню системы if FM setcolor(At_M0_F) @ 00,00,24,79 BOX " - --" @ 00,01 SAY space(80) FM=.F. endif setcolor("+W/B,+GR/R,,,+BG/B") MEN=selopt(MEN,MOP,MCO,MMS,0,.F.,.T.,At_M0_S,At_M0_U) if lastkey()=27.or.MEN=0 if doors() exit else loop endif endif MSCR=savescreen(0,0,24,79) do case case MEN=1 operation() case MEN=2 dictonary() case MEN=3 report() case MEN=4 arch() case MEN=5 system() case MEN=6 if doors() exit endif endcase restscreen(0,0,24,79,MSCR) enddo setcolor() release all return 0 Функция вызова меню “Операции” Function OPERATION local M1[5],M2[5],M3[5],MENU M1[1]=" ~П ~окупка валюты " M1[2]=" п ~Р ~одажа валюты " M1[3]=" ~ К ~онверсия валют ы " M2[1]=2 M2[2]=3 M2[3]=4 MENU=1 _open_n(1,0,7,23,B_SINGLE+" ",AT_M1_F) do while .T. MENU=selopt(MENU,M1,M2,M3,2,.T.,.F.,AT_M1_S,AT_M1_U) if MENU=0.or.lastkey()=27 clear type exit endif operCurrency(MENU) enddo return 0 Функция вызова меню ведения справочников Function DICTONARY local M1[4],M2[4],M3[4],MENU,CL M1[1]=" ~С ~писок валют " M1[2]=" ~ К ~ урсоы валют " M1[3]=" к оды ~Ц ~ енностей " M1[4]=" Коды ~Д ~окументов " M2[1]=2 M2[2]=3 M2[3]=4 M2[4]=5 MENU=1 _open_n(1,10,6,32,B_SINGLE+" ",AT_M1_F) do while .T. MENU=selopt(MENU,M1,M2,M3,12,.T.,.F.,AT_M1_S,AT_M1_U) if MENU=0.or.lastkey()=27 clear type exit endif dictonEdit(MENU) enddo clear type return 0 Функция вызова меню “Отчеты” Function REPORT local M1[4],M2[4],M3[4],MENU,CL M1[1]=" Реестр по по ~К ~ упке валюты " M1[2]=" Реестр по ~П ~ родаже валюты " M1[3]=" Реестр по ~К ~ онверсии валюты " M1[4]=" справка об ~О ~статках наличной ва люты " M2[1]=2 M2[2]=3 M2[3]=4 M2[4]= 5 MENU=1 _open_n(1,23,7,64,B_SINGLE+" ",AT_M1_F) do while .T. MENU=selopt(MENU,M1,M2,M3,25,.T.,.F.,AT_M1_S,AT_M1_U) if MENU=0.or.lastkey()=27 clear type exit endif reportOut(MENU) enddo clear type return 0 Функ ция вызова меню “Разное” Function SYSTEM private M1,M2,M3,MENU declare M1[4],M2[4],M3[4] M1[1]=" ~У ~становки " M1[2]=" ~К ~опия данных " M1[3]=" ~И ~ндексные файлы " M1[4]=" ~С ~чета банка " M2[1]=2 M2[2]=3 M2[3]=4 M 2[4]=5 MENU=1 SCRS=savescreen(0,0,24,79) _open_n(1,38,6,58,B_SINGLE+" ",AT_M1_F) do while .T. MENU=selopt(MENU,M1,M2,M3,40,.T.,.F.,AT_M1_S,AT_M1_U) if MENU=0.or.lastkey()=27 clear type exit endif do case case MENU=1 setupm(M1[MENU]) case MENU=2 dublicat(M1[MENU]) case MENU=3 case MENU=4 GetAccount() endcase enddo restscreen(0,0,24,79,SCRS) clear type return 0 Функция вызова меню “Установки” Function SETUPM par ameters OPT private SCR,M1[4],M2[4],M3[4],MENU,OPT,A__RCROAD,P__AROL,D__ATROAD,D__UBLDSK,U__SERDSK,P__AGELEN,P__AGESIZ,E__TLF,U__KZGL,U__KTXT,S__ETNUM,FMOD ROW=row() M1[1]=" ~П ~ароль " M1[2]=" пути к ~Д ~анным " M1[3]=" ~У ~становки принтера " M1[4]=" ~Ц ~ве та " M2[1]=ROW+2 M2[2]=ROW+3 M2[3]=ROW+4 M2[4]=ROW+5 MENU=1 FMOD=0 SCR=savescreen(0,0,24,79) do while .T. _open_n(ROW+1,38,ROW+6,61,B_SINGLE+" ",AT_M2_F) MENU=selopt(MENU,M1,M2,M3,40,.T.,.F.,AT_M2_S,AT_M2_U) if MENU=0.or.lastkey()=27 clear type exit endif if MENU=4 FM=.T. endif save screen to SESCR FMOD=setup(MENU) restore screen from SESCR enddo restscreen(0,0,24,79,SCR) if FMOD=1 P__AROL = crpt(KEYCR,trim(P__AROL)) D__ATROAD = trim(D__ATROAD) A__RCROAD = trim(A__RCROAD) U__KZGL = trim(U__KZGL) U__KTXT = trim(U__KTXT) if M__EN=2 set Printer to BUFFER.PRN else M__EN=1 set Printer to endif if Z__PR=2 ZEROPRINT=.F. else Z__PR=1 ZEROPRINT=.T. endif save all like ?__* to v PAROL =uncrpt(KEYCR,P__AROL) DATROAD =D__ATROAD ARCROAD =A__RCROAD DUBLDSK =D__UBLDSK USERDSK =U__SERDSK PAGELEN =P__AGELEN PAGESIZ =P__AGESIZ ETLF =E__TLF UKZGL =U__KZGL SETNUM =S__ETNUM UKTXT =U__KTXT endif clear type return 0 Функция вызова меню “Копия данных” Function DUBLICAT parameters OPT private M1,M2,M3,MENU,OPT,DSCR,ROW ROW=row() declare M1[2],M2[2],M3[2] M1[1]=" ~С ~охранение данных " M1[2]=" ~В ~осстановление данных " M2[1]=ROW+2 M2[2]=ROW+3 M ENU=1 popmenu(ROW,38,ROW+5,64,OPT,2,AT_M2_F) do while .T. MENU=selopt(MENU,M1,M2,M3,40,.T.,.F.,AT_M2_S,AT_M2_U) if MENU=0.or.lastkey()=27 clear type exit endif save screen to DSCR do case case MENU=1 OPT=M1[MENU] savedata(OPT) case MENU=2 OPT=M1[MENU] restdata(OPT) endcase restore screen from DSCR enddo clear type return 0 Функция - селектор операций Function OPERCURRENCY #Include "Inkey.ch" #Include "Box.ch" parameters N_OPER do case case N_OPER=1 ByeCurrency() case N_OPER=2 SaleCurrency() case N_OPER=3 ConvertCurrency () endcase return 0 Функция регистрации покупки валюты Fun ction ByeCurrency local SCR use (DATROAD+"Document") index (DATROAD+"Document") alias DOC new SCR=savescreen(1,0,23,61) CLR=setcolor(AT_G_F) _open_n(1,0,20,59,B_SINGLE+" ",AT_G_F) @ 08,0 say "+----------------------------------------------------------+" @ 14,0 say "+----------------------------------------------------------+" setcolor(AT_G_N+","+AT_G_S+",,,"+AT_G_U) set key K_F3 to getcode() _nort("1010000001") FINIT=.T. do while .T. if FINIT SER =space(2) NUM =0 FIO =space(35) DOC =space(10) CDOC =0 DSER =space(10) DNUM =0 REZ =space(1) NREZ =space(1) BCODC =10 BCODCUR=2 BSUM =0 SCODC =0 SCODCUR=0 SSUM =0 SSUMS="" BSUMS="" @ 12,2 say space(57) @ 13,2 say space(57) @ 18,2 say space(57) @ 19,2 say space(57) setcolor(AT_G_U) @ 11,8 say 0 picture "999999999999" endif setcolor(AT_G_N+","+AT_G_S+",,,"+AT_G_U) @ 02,17 say "СПРАВКА " get SER picture "XX" valid !empty(SER) @ 02,28 say "№ " get NUM picture "9999999" valid !empty(NUM) @ 03,15 say str(day(date()),2)+" "+MNT[month(d ate())]+ ; " "+str(year(date()),4) @ 04,02 say "Выдана " get FIO picture "@S30" valid !empty(FIO) @ 05,02 say "Предъявлен " get CDOC picture "9999" @ 05,29 say "серия " get DSER picture "XXXXXXXXXX" @ 05,46 say "№ " get DNUM picture "9999999999" @ 06,02 say "Резидент [ ]" @ 06,12 get REZ Picture "L" @ 08,02 say "ПОЛУЧЕНО КЛИЕНТОМ :" @ 09,02 say "Код ценности " get BCODC picture "9999" @ 10,02 say "Код валюты " get BCODCUR picture "9999" @ 11,02 say "Сумма " @ 14,02 say "ПРИНЯТО ОТ КЛИЕНТА :" @ 15,02 say "Код ценности " get SCODC picture "9999" @ 16,02 say "Код валюты " get SCODCUR picture "9999" @ 17,02 say "Сумма " get SSUM picture "999999999999" ; valid saysale(SSUM,18,2,52,AT_G_U,@SSUMS,SCODCUR) setcursor(CUR_STYLE) read setcursor(0) if lastkey()=K_ESC exit endif if _err(06,40,"Данные введены правильно ?","",""," ~Д ~а "," ~Н ~ет ","")=1 append blank replace field->SER_ with SER ,; field->NUM_ with NUM ,; field->FIO_ with FIO ,; field->DOC_ with DOC ,; field->DSER_ with DSER ,; field->DNUM_ with DNUM ,; field->REZ_ with !empty(REZ),; field->BCODC_ with BCODC ,; field->BCODCUR_ with BCODCUR,; field->BSUM_ with BSUM ,; field->SCODC_ with SCODC ,; field->SCODCUR_ with SCODCUR,; field->SSUM_ with SSUM,; field->DATE_ with dat e(),; field->OPERATION_ with 1 commit if _err(06,40,"Печатать справку ?","",""," ~Д ~а "," ~Н ~ет ","")=1 // printspr() endif FINIT=.T. loop else FINIT=.F. endif enddo _nort() set key K_F3 to restscreen(1,0,23,61,SCR) dbcloseall() return 0 Функция регистрации продажи валюты Function SaleCurrency local SCR use (DATROAD+"Document") index (DATROAD+"Document") alias DOC new SCR=savescreen(1,0,23,61) CLR=setcolor(AT_G_ F) _open_n(1,0,20,59,B_SINGLE+" ",AT_G_F) @ 08,0 say "+----------------------------------------------------------+" @ 14,0 say "+----------------------------------------------------------+" setcolor(AT_G_N+","+AT_G_S+",,,"+AT_G_U) set key K_F3 to getcode() _nort("1010000001") FINIT=.T. do while .T. if FINIT SER =space(2) NUM =0 FIO =space(35) DOC =space(10) DSER =space(10) DNUM =0 REZ =space(1) NREZ =space(1) CDOC =0 BCODC =0 BCODCUR=0 BSUM =0 SCODC =0 SCODCUR=0 SSUM =0 SSUMS="" BSUMS="" @ 12,2 say space(57) @ 13,2 say space(57) @ 18,2 say space(57) @ 19,2 say space(57) setcolor(AT_G_U) @ 11,8 say 0 picture "999999999999" endif setcolor(AT_G_N+","+AT_G_S+",,,"+AT_G_U) @ 02,17 say "СПРАВКА " get SER picture "XX" valid !empty(SER) @ 02,28 say "№ " get NUM picture "9999999" valid !empty(NUM) @ 03,15 say str(day(date()),2)+" "+MNT[month(date())]+" "+str(year(date()),4) @ 04,02 say "Выдана " get FIO picture "@S30" valid !empty(FIO) @ 05,02 say "Предъявлен " get CDOC picture "9999" @ 05 ,29 say "серия " get DSER picture "XXXXXXXXXX" @ 05,46 say "№ " get DNUM picture "9999999999" @ 06,02 say "Резидент [ ]" @ 06,12 get REZ Picture "L" @ 08,02 say "ПРИНЯТО ОТ КЛИЕНТА :" @ 09,02 say "Код ценности " get SCODC picture "9999" @ 10,02 say "Код валюты " get SCODCUR picture "9999" @ 11,02 say "Сумма " @ 14,02 say "ПОЛУЧЕНО КЛИЕНТОМ :" @ 15,02 say "Код ценности " get BCODC picture "9999" @ 16,02 say "Код валюты " get BCODCUR picture "9999" @ 17,02 say "Сумма " get BSUM picture "999999999999" valid saybye(BSUM,17,2,52,AT_G_U,@BSUMS,BCODCUR) setcursor(CUR_STYLE) read setcursor(0) if lastkey()=K_ESC exit endif if _err(06,40,"Данные введены правильно ?","",""," ~Д ~а "," ~Н ~ет ","")=1 append blank replace field->SER_ with SER ,; field->NUM_ wi th NUM ,; field->FIO_ with FIO ,; field->DOC_ with DOC ,; field->DSER_ with DSER ,; field->DNUM_ with DNUM ,; field->REZ_ with !empty(REZ),; field->BCODC_ with BCODC ,; field->BCODCUR_ with BCODCUR,; field->BSUM_ with BSUM ,; field->SCODC_ with SC ODC ,; field->SCODCUR_ with SCODCUR,; field->SSUM_ with SSUM,; field->DATE_ with date(),; field->OPERATION_ with 1 commit if _err(06,40,"Печатать справку ?","",""," ~Д ~а "," ~Н ~ет ","")=1 // printspr() endif FINIT=.T. loop else FINIT=.F. endif enddo _nort() set key K_F3 to restscreen(1,0,23,56,SCR) dbcloseall() return 0 Функция регист рации конверсии валюты Function Convert Currency local SCR use (DATROAD+"Document") ind ex (DATROAD+"Document") alias DOC new SCR=savescreen(1,0,23,61) CLR=setcolor(AT_G_F) _open_n(1,0,20,59,B_SINGLE+" ",AT_G_F) @ 08,0 say "+----------------------------------------------------------+" @ 14,0 say "+--------------------------------------------- -------------+" setcolor(AT_G_N+","+AT_G_S+",,,"+AT_G_U) set key K_F3 to getcode() _nort("1010000001") FINIT=.T. do while .T. if FINIT SER =space(2) NUM =0 FIO =space(35) DOC =space(10) DSER =space(10) DNUM =0 REZ =space(1) NREZ =space(1) CDOC =0 BCODC =0 BCODCUR=0 BSUM =0 SCODC =0 SCODCUR=0 SSUM =0 SSUMS="" BSUMS="" @ 12,2 say space(57) @ 13,2 say space(57) @ 18,2 say space(57) @ 19,2 say space(57) setcolor(AT_G_U) @ 11,8 say 0 picture "999999999999" endif setcolor(AT_G_N+","+AT_G_S+",,,"+AT_G_U) @ 02,17 say "СПРАВКА " get SER picture "XX" valid !empty(SER) @ 02,28 say "№ " get NUM picture "9999999" valid !empty(NUM) @ 03,15 say str(day(date()),2)+" "+MNT[month(date())]+" "+str(year(date()),4) @ 04,02 say "Выдана " get FIO picture "@S30" valid !empty(FIO) @ 05,02 say "Предъявлен " get CDOC picture "9999" @ 05,29 say "серия " get DSER picture "XXXXXXXXXX" @ 05,46 say "№ " get DNUM picture "9999999999" @ 06,02 say "Резидент [ ]" @ 06,12 get REZ Picture "L" @ 08,02 say "ПРИНЯТО ОТ КЛИЕНТА :" @ 09,02 say "Код ценности " get SCODC picture "9999" @ 10,02 say "Код валюты " get SCODCUR picture "9999" @ 11,02 say "Сумма " @ 14,02 say "ПОЛУЧЕНО КЛИЕНТОМ :" @ 15,02 say "Код ценности " get BCODC picture "9999" @ 16, 02 say "Код валюты " get BCODCUR picture "9999" @ 17,02 say "Сумма " get BSUM picture "999999999999" valid saybye(BSUM,17,2,52,AT_G_U,@BSUMS,BCODCUR) setcursor(CUR_STYLE) read setcursor(0) if lastkey()=K_ESC exit endif if _err(06,40,"Данные введены правильно ?","",""," ~Д ~а "," ~Н ~ет ","")=1 append blank replace field->SER_ with SER ,; field->NUM_ with NUM ,; field->FIO_ with FIO ,; field->DOC_ with DOC ,; field->DSER_ with DSER ,; field->DNUM_ with DNUM ,; field->REZ_ with !empty(REZ),; field->BCODC_ with BCODC ,; field->BCODCUR_ with BCODCUR,; field->BSUM_ with BSUM ,; field->SCODC_ with SCODC ,; field->SCODCUR_ with SCODCUR,; field->SSUM_ with SSUM,; field->DATE_ with date(),; field->OPERATION_ with 1 commit if _err(06,40,"Печ атать справку ?","",""," ~Д ~а "," ~Н ~ет ","")=1 // printspr() endif FINIT=.T. loop else FINIT=.F. endif enddo _nort() set key K_F3 to restscreen(1,0,23,56,SCR) dbcloseall() return 0 Функция - опреде литель текущег о поля для получения ко да и наименования объекта из справочника Function GETCODE local CL AKTIV=getactive() RS=row() CS=col()+5 do case case AKTIV:name="BCODCUR" S=incod(1,@BCODCUR) case AKTIV:name="BCODC" S=incod(3,@BCODC) case AKTIV:name="SCODCUR" S=incod(1,@SCODCUR) case AKTIV:name="SCODC" S=incod(3,@SCODC) case AKTIV:name="CDOC" S=incod(4,@CDOC) otherwise S="" endcase CL=setcolor(AT_G_N) @ RS,CS say substr(S,1,30) if !empty(S) keyboard chr(13) endif setcolor(CL) return .T. Функция вывода суммы покупки прописью Function SAYB parameters NUM,Y,X,L,C,S,CC local CL S=numstring(NUM,CC) CL=setcolor(C) @ Y,X say padr(substr(S,1,L),L) @ Y+1,2 say padr(substr(S,L+1,57),57) setcolor(AT_G_U) @ Y-1,8 say NUM picture "999999999999" setcolor(CL) return .T. Функция вывода суммы пр одажи прописью Function SAYS parameters NUM,Y,X,L,C,S,CC local CL S=numstring(NUM,CC) CL=setcolor(C) @ Y,X say padr(substr(S,1,L),L) @ Y+1,2 say padr(substr(S,L+1,57),57) setcolor(AT_G_U) @ Y-1,8 say NUM picture "999999999999" setcolor(CL) return .T. Функция вычисления суммы операции покупки Function SAYBYE parameters NUM,Y,X,L,C,S,CC local CL,OBL,RESULT RESULT=.F. OBl=select() use (DATROAD+"currency") index (DATROAD+"currency") new seek CC if found() BSUM=KURS*NUM use S=numstring(NUM,CC) CL=setcolor(C) @ Y,X say padr(substr(S,1,L),L) @ Y+1,2 say padr(substr(S,L+1,57),57) says(SSUM,12,2,57,AT_G_U,@SSUMS,SCODCUR) RESULT=.T. else use endif setcolor(CL) select(OBL) return RESULT Функция вычисления суммы операции продажи Function SAYSALE parameters NUM,Y,X,L,C,S,CC local CL,OBL,RESULT RESULT=.F. OB l=select() use (DATROAD+"currency") index (DATROAD+"currency") new seek CC if found() BSUM=KURS*NUM use S=numstring(NUM,CC) CL=setcolor(C) @ Y,X say padr(substr(S,1,L),L) @ Y+1,2 say padr(substr(S,L+1,57),57) sayb(BSUM,12,2,57,AT_G_U,@BSUMS,BCODCUR) RESULT=.T. else use endif setcolor(CL) select(OBL) return RESULT ФУНКЦИЯ ВЫВОДА списка документов дня Function Docrep local SCR use (DATROAD+"Currency") index (DATROAD+"Curre ncy") alias CUR new use (DATROAD+"Document") index (DATROAD+"Document") alias DOC new set relation to BCODCUR_ into CUR SCR=savescreen(1,0,23,79) _open_n(1,0,22,77,B_SINGLE+" ",AT_S_F) _nort("1000001001") declare MF[5],MZ[5] MF[1]= || SER_+str(NUM_,9) MF[2]= || FIO_ MF[3]= || iif(REZ_,"Р ","Н ") MF[4]= || CUR->SHORT_NAME+" "+str(BSUM_) MF[5]= || getShort_Name(SCODCUR_)+" "+str(SSUM_) MZ[1]="Справка " MZ[2]="Фамилия Имя Отчество " MZ[3]="Р /Н " MZ[4]="Выдано " MZ[5]="Принято " TERM=" Проведенные документы д ня " setcolor(AT_M1_S) @ 01,(70-len(TERM))/2 SAY TERM setcolor(AT_S_N+","+AT_S_S+",,,"+AT_S_U) clear type oBrow := TBrowseDB(2,1,21,76) oBrow:headSep := "=T=" oBrow:colSep := " ¦ " for i := 1 TO len(MF) oBrow:addColumn(TBColumnNew(MZ[i], MF[i])) next whi le (!oBrow:stabilize()) ; end lKeyWaiting := .F. lBrowse := .T. do while (lBrowse) if (!lKeyWaiting) do while (!oBrow:stabilize()) // Прервать стабилизацию , если нажата кла виша if ((nKey := Inkey()) != 0) lKeyWaiting := .T. exit endif enddo endif // Если нет нажатия , то ждать его if (!lKeyWaiting) nKey := Inkey(0) endif do case case (nKey == K_DOWN) oBrow:down() case (nKey == K_UP) oBrow:up() case (nKey == K_PGDN) oBrow:pageDown() case (nKey == K_PGUP) oBrow:pageUp() case (nKey == K_ CTRL_PGUP) oBrow:goTop() case (nKey == K_CTRL_PGDN) oBrow:goBottom() case (nKey == K_RIGHT) oBrow:right() case (nKey == K_LEFT) oBrow:left() case (nKey == K_HOME) oBrow:home() case (nKey == K_END) oBrow:end() case (nKey == K_CTRL_LEFT) oBrow:panLeft() case (nKey == K_CTRL_RIGHT) oBrow:panRight() case (nKey == K_CTRL_HOME) oBrow:panHome() case (nKey == K_CTRL_END) oBrow:panEnd() case (nKey == K_F7) // printspr() case (nKey == K_ESC).or.(nKey == K_F10) lBrowse := .F. endcase l KeyWaiting := .F. enddo restscreen(1,0,23,79,SCR) dbcloseall() _nort() return 0 ФУНКЦИЯ ЗАКРЫТИЯ ОПЕРАЦИОННОГО ДНЯ Function CloseDay() if _err(07,05,"Вы действительно желаете з акрыт ь ","операционный день ?",""," Да "," Нет ","")<>1 return 0 endif ArBase=strtran(str(day(MDATE),2)+str(month(MDATE),2)+substr(str(year(MDATE),4),3,2)," ","0") use (DATROAD+"Operatio") copy to (ARCROAD+"Op"+ArBase) delete all pack use (DATROAD+"Document") copy to (ARCROAD+"Do"+ArBase) delete all pack use (DATROAD+"Currency") copy to (ARCROAD+"Cu"+ArBase) use (DATROAD+"Kurses") copy to (ARCROAD+"Ku"+ArBase) use (DATROAD+"Codes") copy to (ARCROAD+"Co"+ArBase) ODATE=MDATE SCR=savescre en(07,05,12,47) _open_n(07,05,10,45,B_SINGLE+" ",AT_G_F) CL=setcolor(AT_G_U) @ 08,22 say ODATE do while(.T.) setcolor(AT_G_N+","+AT_G_S+",,,"+AT_G_U) @ 08,07 say " Текущая дата :" @ 09,07 say " Новая дата :" get MDATE setcursor(CUR_STYLE) read setcurs or(0) if _err(10,15,"Дата введена правил ьно ?","",""," Да "," Нет ","")=1 save all like MDATE to d exit endif enddo dbcloseall() restscreen(07,05,12,47,SCR) setcolor(CL) return 0 Литература CA-Clipper 5.02 “ Users Guide” - Руков одство по прогр аммированию на языке Clipper А.А.Попов “Программирование в среде FoxPro. Построение систем обработки данн ых . (“Радио и Связь” М . 1993г .) “ RS-Club” №№ 1-7 1996 г . (Miktor Ky. Union Publisher Inc. 1996г .) П.Нортон , П.Иао “Программиро вание на С + + в среде Windows” (“Диалектик а” Киев 1993г .) Инструкция ЦБ РФ “О порядке организации работы обменных пунктов на территории Российской федерации , совершения и учета валютно - обменных операций уполн омоченными банками” № 27 от 27.02.1995г.
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Первый закон кота: случайно проснулся - поешь!
Второй закон кота: спи чутко!
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, диплом по программированию "Программное обеспечение пункта по обмену валюты", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru