123456 код валюты 048

Сто двадцать три тысячи четыреста пятьдесят шесть DEM


52567478 без параметра

Пятьдесят два миллиона пятьсот шестьдесят семь тысяч четыреста семьдесят восемь руб. 00 коп.

Разработка головного модуля программы Структура функции MAIN

При написании головной функции необходимо описать именно в ней все массивы и переменные, имеющие статус глобальных - «Public». В этом случае к ним можно получить доступ из всех процедур и функций системы, использовать их в качестве объектов для неявной передачи параметров и возврата значений или результатов работы. Кроме того в головном модуле необходимо произвести настройку общих параметров Clipper’а, таких, как формат даты, режим поиска в БД, параметры поиска и сравнения строк и т.п.

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

Функция главного меню системы

Функции меню нижних уровней

Функции ввода данных

Функции вывода данных

Функции запросов

Строка подсказки

Набор переменных цвета должен обеспечить хранение цветовых установок для прорисовки окна, нормального текста, выделенных и невыделенных объектов для каждой группы функций. Цветовые установки будут иметь символьное выражение вида «+GR/B», что позволит производить непосредственную подстановку переменных в функцию SETCOLOR. Хранение переменных необходимо осуществить в специальном файле memo - переменных.


Рис.13 Алгоритм головного модуля (Функция MAIN)


ФУНКЦИИ ВЫЗОВА МЕНЮ НИЖНИХ УРОВНЕЙ

Рис.14 Алгоритм процедуры меню нижних уровней

Данные функции в комплексе с функцией главного меню образуют систему всплывающих меню программы. Для организации взаимодействия между процедурами необходимо обеспечить “стыковку” вызывающих и вызываемых функций. Основной проблемой организации стыка функций является их экранное взаимодействие т.е. каждая процедура или функция после окончания работы должна обеспечить восстановление экрана в том состоянии, в каком он был до вызова функции. Можно поступить несколько по другому: вызывающая функция обеспечивает сохранение состояния экрана на время работы вызываемой функции. Функции меню нижних уровней будут построены по одной схеме (Рис. ). Такой подход позволит при необходимости быстро встроить требуемый вызов в систему меню и, в свою очередь, не требует модулей - заглушек для отсутствующих процедур. ФУНКЦИЯ РЕГИСТРАЦИИ ПОКУПКИ ВАЛЮТЫ

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

Рис.15 Бланк регистрации валютно-обменной операции и фрагмент справочника ценностей

Рис. 16 Алгоритм (укрупненный) функции регистрации сделки

запроса заноситься в БД операций.

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

ФУНКЦИЯ - ОПРЕДЕЛИТЕЛЬ ТЕКУЩЕГО ПОЛЯ ДЛЯ ПОЛУЧЕНИЯ КОДА И НАИМЕНОВАНИЯ ОБЪЕКТА ИЗ СПРАВОЧНИКА

При организации ввода данных с использованием справочников желательно обеспечить выбор данных из того или иного справочника в одной функции. Для обеспечения вывода необходимого на данный момент списка можно применить функцию 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.SBOXspace(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-3=32.and.KL0

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(ORIENT,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=COLMN

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=MC[TT].and.COLMN=COLROW.and.COLMN=MC[TT].and.COLMN1

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 MAIN

#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 ZEROPRINT,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(09,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 TSTPAROL

setcolor("W/N")

clear screen

return

endif

restore screen

// Настройка принтера

if M__EN=2

set printer 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

M2[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


parameters 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


MENU=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

Функция регистрации покупки валюты

Function 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(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 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 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,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_ 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 ConvertCurrency

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_ 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.

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)

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+"Currency") 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

while (!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

lKeyWaiting := .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=savescreen(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

setcursor(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г.


Информация о работе «Программное обеспечение пункта обмена валюты банка»
Раздел: Информатика, программирование
Количество знаков с пробелами: 92559
Количество таблиц: 8
Количество изображений: 0

Похожие работы

Скачать
157347
9
21

... опыт позволяет нам с уверенностью смотреть в будущее, успешно решать практически все, как текущие, так и перспективные, проблемы функционирования национальной банковской системы. 2 ОЦЕНКА ЭФФЕКТИВНОСТИ ОСУЩЕСТВЛЕНИЯ ВАЛЮТНЫХ ОПЕРАЦИЙ НА ПРИМЕРЕ ОТДЕЛЕНИЯ ОАО «БЕЛАГРОПРОМБАНК» В Г.БРАСЛАВЕ 2.1 Анализ валютных операций отделения ОАО «Белагропромбанк» в г.Браславе с участием физических лиц ...

Скачать
133555
12
12

... регламентирует информационные связи и предопределяет состав и содержание всей системы информационного отображения. Применительно к системы «ОБМЕННЫЙ ПУНКТ», входящего в состав автоматизированной банковской системы, первоочередной задачей при его разработке является организация внутримашинной информационной базы (ВИБ), которая представляет собой совокупность специальным образом организованных ...

Скачать
648838
2
0

... могут рассматриваться в локальных нормативных правовых актах банков по кредитованию? В локальных документах коммерческих банков детально могут быть рассмотрены вопросы по организации этапов кредитного процесса. Кредитный процесс включает в себе четыре этапа: - мониторинг финансово-хозяйственной деятельности кредитополучателя; - оформление и выдачу кредита; - контроль банка за использованием ...

Скачать
140896
0
1

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

0 комментариев


Наверх