Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Программное забезпечення пункту обміну валюти банка

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Для спрощення програми загалом покладемо з цього процедуру такі завдання:. Висновок горизонтального, чи вертикального меню, залежно від переданого параметра. Повернення номери вибору користувача, чи 0 при перериванні вибору по клавіші «Escape». Висновок списку виборів у екранних координатах, що передаються у функцію як параметра. Висновок списку виборів у кольорах, переданої до функцій… Читати ще >

Программное забезпечення пункту обміну валюти банка (реферат, курсова, диплом, контрольна)

Введение

5.

Призначення проекту 6.

Основні сервісні і информационно-расчетные можливості проектованої системи 8.

Функциональные можливості системи 8 Взаємодія із банківською системою автоматизації 9 Надійність і резервування 9 Генерація звітів 10.

Анализ потоків і взаємодії даних 10.

Покупка і продаж готівкової іноземної валюти за готівкові рублі. 11 Конверсія готівкової іноземної валюти 13 Форми звітної документації ВП 13.

Технические вимоги до апаратурі. 15.

Середовище виконання програми. 16.

Вибір мови програмування для реалізації проекту. 17.

Розробка структури інформаційних файлів та його зв’язків. 17.

Предварительные міркування 17 Остаточний склад парламенту й структури інформаційних файлів. 20 Взаємодія даних, зв’язку й методи доступу. 22.

Разработка функціональної схеми програми. 26.

Примерный перелік функцій системи. 26.

Разработка структурної схеми програми. 27.

Розробка екранного інтерфейсу програми 29.

Существующие підходи до екранного інтерфейсу 29 Вибір ідеології екранного інтерфейсу 31 Перелік функцій екранного інтерфейсу 32.

Проектирование функціональних модулів. 32.

Разработка интерфейсных функцій 33 Функція виведення меню у координатах 33 Функція виведення вікна у координатах 35 Висновок рядки підказки 36 Висновок повідомлення з очікуванням реакції чи вибору користувача 37 Висновок лінійного індикатора процесу його відновлення 39 Висновок транспаранта очікування 39 Допоміжні функції 40 ФУНКЦІЯ ПЕРЕМИКАННЯ ВИДУ КУРСОРУ 40 ФУНКЦІЯ ПЕРЕКЛАДУ СТРОКИ У ВЕРХНІЙ РЕГІСТР 40 ФУНКЦІЯ КОНТРОЛЮ ВИХОДУ 40 ФУНКЦІЯ ПЕРЕКЛАДУ ЧИСЛОВОЇ ВЕЛИЧИНИ У РЯДОК «СУМА ПРОПИСОМ» 41 Розробка головного модуля програми 41 СТРУКТУРА ФУНКЦІЇ MAIN 41 ФУНКЦІЇ ВИКЛИКУ МЕНЮ НИЖНІХ РІВНІВ 44 ФУНКЦІЯ РЕЄСТРАЦІЇ КУПІВЛІ ВАЛЮТИ 44 ФУНКЦІЯ — ВИЗНАЧНИК ПОТОЧНОГО ПОЛЯ ДЛЯ ОДЕРЖАННЯ КОДА І НАЙМЕНУВАННЯ ОБ'ЄКТИ ІЗ ДОВІДНИКА 46.

Тестирование програмного забезпечення. 46.

Восходящее тестування. 46 Спадне тестування. 47 Метод сэндвича. 47.

Экономическая частина. 48.

Питання техніки безпеки і охорони праці. 52.

Укладання 56.

Додаток 57.

Интерфейсные функції 57 ФУНКЦІЯ ВИВЕДЕННЯ ВІКНА 57 ФУНКЦІЯ ВИВЕДЕННЯ ВІКНА З ЕФЕКТОМ РОЗКРИТТЯ 57 ФУНКЦІЯ ВИВЕДЕННЯ СИСТЕМНИХ ПОВІДОМЛЕНЬ З ОЧІКУВАННЯМ РЕАКЦІЇ КОРИСТУВАЧА 59 ФУНКЦІЯ ВИВЕДЕННЯ ЛІНІЙНОГО ІНДИКАТОРА ПРОЦЕСУ 60 ФУНКЦІЯ ВИВЕДЕННЯ РАМКИ ДЛЯ СПЛИВАЮЧОГО МЕНЮ 61 ФУНКЦІЯ ВИВЕДЕННЯ СТРОКИ ПІДКАЗКИ 61 ФУНКЦІЯ ВИВЕДЕННЯ ТРАНСПАРАНТА ОЧІКУВАННЯ 62 ФУНКЦІЯ ВИБОРУ ОПЦІЇ ІЗ МЕНЮ З ВИКОРИСТАННЯМ МАНІПУЛЯТОРА «МИША «АБО КЛАВІАТУРИ. 62 Допоміжні функції 66 ФУНКЦІЯ ПЕРЕМИКАННЯ ВИДУ КУРСОРУ 66 ФУНКЦІЯ ПЕРЕКЛАДУ СТРОКИ У ВЕРХНІЙ РЕГІСТР 66 ФУНКЦІЯ КОНТРОЛЮ ВИХОДУ 66 ФУНКЦІЯ ПЕРЕКЛАДУ ЧИСЛОВОЇ ВЕЛИЧИНИ У РЯДОК «СУМА ПРОПИСОМ» 67 ФУНКЦІЯ ПОБУДОВИ СТРОКИ «СУМИ ПРОПИСОМ» 68 ФУНКЦІЯ ОДЕРЖАННЯ ПСЕВДОНІМА ВАЛЮТИ 69 Основні функції і складні процедури 69 ГОЛОВНОГО МОДУЛЬ ПРОГРАМИ 69 ФУНКЦІЯ ВИКЛИКУ МЕНЮ «ОПЕРАЦІЇ» 73 ФУНКЦІЯ ВИКЛИКУ МЕНЮ ВЕДЕННЯ ДОВІДНИКІВ 73 ФУНКЦІЯ ВИКЛИКУ МЕНЮ «ЗВІТИ» 74 ФУНКЦІЯ ВИКЛИКУ МЕНЮ «РІЗНЕ» 74 ФУНКЦІЯ ВИКЛИКУ МЕНЮ «УСТАНОВКИ» 75 ФУНКЦІЯ ВИКЛИКУ МЕНЮ «КОПІЯ ДАНИХ» 76 ФУНКЦІЯ — СЕЛЕКТОР ОПЕРАЦІЙ 77 ФУНКЦІЯ РЕЄСТРАЦІЇ КУПІВЛІ ВАЛЮТИ 77 ФУНКЦІЯ РЕЄСТРАЦІЇ ПРОДАЖУ ВАЛЮТИ 79 ФУНКЦІЯ РЕЄСТРАЦІЇ КОНВЕРСИИ ВАЛЮТИ 81 ФУНКЦІЯ — ВИЗНАЧНИК ПОТОЧНОГО ПОЛЯ ДЛЯ ОДЕРЖАННЯ КОДА І НАЙМЕНУВАННЯ ОБ'ЄКТИ ІЗ ДОВІДНИКА 82 ФУНКЦІЯ ВИВЕДЕННЯ СУМИ КУПІВЛІ ПРОПИСОМ 83 ФУНКЦІЯ ВИВЕДЕННЯ СУМИ ПРОДАЖУ ПРОПИСОМ 83 ФУНКЦІЯ ОБЧИСЛЕННЯ СУМИ ОПЕРАЦІЇ КУПІВЛІ 83 ФУНКЦІЯ ОБЧИСЛЕННЯ СУМИ ОПЕРАЦІЇ ПРОДАЖУ 84 ФУНКЦІЯ ВИВЕДЕННЯ СПИСКУ ДОКУМЕНТІВ ДНЯ 84 ФУНКЦІЯ ЗАКРИТТЯ ОПЕРАЦІЙНОГО ДНЯ 86.

Литература

87.

На початку 1980;х років нашого століття фірма IBM розробила та випустила продаж свій «перший персонального комп’ютера (IBM PC, який швидко завоював ринок обчислювальної техніки завдяки їхній невисокою вартості, універсальності сфер застосування, простоті експлуатації і саме головне, принципу відкритої архітектури, закладеному в конструкцію. Отримавши назва «персональний» він і дійсності виявився таковым.

РС добре зарекомендувало себе у сфері ділового застосування. Дешевий і надійний комп’ютер став швидко «обростати» програмним забезпеченням, багато фірми стали випускати клони IBM-сумісних персональних комп’ютерів. За РС пішли XT, AT з урахуванням i286, i386, i486 і, нарешті, Pentium. Обчислювальна техніка крокує у майбутнє гігантськими кроками, не залишаючи в боці нікого. Важко уявити область інтенсивної діяльності людини, яка б уникнути обчислювальної техніки без шкоди собі. У нашій країні протягом останніх 5−6 років парк персональних комп’ютерів зріс у в сотні разів. Особливого значення такій ситуації має наявність програмного забезпечення для персональних ЕОМ як загального призначення, і суто прикладних програм, вирішальних спеціалізовані завдання тієї чи іншої підприємства. Особливо гостро постала проблема спеціалізованого ПО для фінансових організацій корисною і, зокрема банків, кількість яких протягом останніх п’яти — років перевищила кілька тисячами гектарів тільки у Києві. Відсутність автоматизованих банківських систем були не стимулювати багато фірм — виробники програмного забезпечення заповнити зчинений вакуум. У протягом 90−93 рр. такі фірми як «Асофт», «Диасофт», «Р-Стайл» та інші випустили ринку кілька АБС, орієнтованих російську банківську систему. Досвід був і більшість комерційних банків володіє цей час досить пристойними системами, реалізованими на основі мережевих менеджерів запитів до баз даних, чи мовами програмування Oracle, Gupta та інших. Біда всіх АБС в нестабільності законодавства держави, що викликає численні коригування технології бухгалтерського обліку, і, отже коригування ПО. З іншого боку, перші версії АБС не покривали всіх потреб банків автоматизації. Максимально потім міг розраховувати користувач, це операційний день банку рублях і системи звітів. Розширення видів банківську діяльність, роботу з валютами інших держав, вклади громадян і організації, розвиток ринку цінних паперів зажадали розробки нових підсистем для існуючих АБС. Крім того, що не фірми виробники прислухаються до вимог користувачів, вартість нових розробок досить великий. Як прикладу можна сказати, що тільки збільшення документообігу банківської системи з 500 до 2000 документів мають у день обходиться користувачеві, має АБС фірми «Р-Стайл» приблизно 11 500 Доларів США. Такі ціни, природно можуть змусити будь-якого користувача поповнювати склад програмного забезпечення власними силами.

Назначение проекта.

Обмінний пункт — підрозділ банку і є місцем скоєння банком валютно-обмінних операцій. Правила і норми скоєння валютних операцій на обмінному пункті регламентуються інструкцією за Центральний банк Російської федерації № 27 від 27 лютого 1995 року. Комплекс розроблюваних програмних засобів призначений під час першого чергу для автоматизації роботи касирів пунктів обміну валют, що є як у самому банку, і поза нею території. Використання програми має значно спростити і прискорити роботу касира з допомогою автоматизації учетно-расчетных операцій під час обміну валюти. Автоматичне формування всієї зведеної звітності контроль фінансового становища обмінного пункту з будь-який час також має збільшити ефективність роботи касира. Технологічний процес роботи пункту обміну валюти банку У процесі роботи касира обмінного пункту з допомогою автоматизованої системи бажано реалізувати як стандартні процедури, щоб забезпечити підтримку операцій обмінного пункту з протягом дня, і специфічні можливості, що б продуктивності праці касира і які полегшують обліково-розрахункові операції, і зв’язок обмінного пункту з банківської системою автоматизації. Обмінний пункт банку під час роботи з клієнтурою робить следуюшие основні операції:. Продаж валюти іноземної держави клієнту за національну валюту;. Купівля у клієнта валюти іноземної держави за національну валюту;. Коверсия (обмін) валюти однієї держави на валюту іншої держави. Отож кожну з перелічених операцій касир обмінного пункту зобов’язаний зафіксувати документально і оформити довідку про клієнтом валютно-обмінної операції у бланку суворої звітності ф.406 007, із видачею копії довідки клієнту. Робота ВП, банк забезпечує його початку робочого дня авансом у грошовій іноземній валюті і рублях. Цей аванс необхідно враховувати в документах ВП на подальше відображення в звітних документах при завершенні операційного дня. Після закінчення робочого дня (чи зміни за цілодобового режимі роботи ВП) касир зобов’язаний заповнити приходно-расходную ведомость (реестр угод) перспективами кожного із валют, підрахувати підсумки за всі реєстрам і звірити суму отриманого авансу з сумою підсумків по реєстрам і фактичним залишком цінностей за кожним видом. У відповідність до результатами звіряння складається довідка про щоденних залишках ценностей.

Основные сервісні і информационно-расчетные можливості проектованої системы.

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

Функциональные можливості системы.

У проектованої системі необхідно закласти можливості, щоб забезпечити нижче перелічені сервісні і информационно-расчетные функції:. автоматичний розрахунок сум за операціями обміну іноземної валюти;. можливість установки автоматичного нарахування комісійних винагород (за вибором — комісія з приходу, витрати й різниці курсів) при обмінних операціях;. автоматичний контроль наявності у обмінному пункті грошових знаків національної та іноземної валюти різних номіналів;. видача рекомендацій касирові по оптимальному набору готівкових грошових знаків різних номіналів у складі наявних у касі за будь-якої обмінній операції;. облік операцій обміну валют, заснований на віданні подвійному записі і забезпечує високий рівень контролю обмінних операцій;. контроль та своєчасне відновлення логічного цілісності бази даних навіть у разі некоректною роботи устаткування з допомогою виконання процедур ревізій стану рахунків на поточну дату чи поставлене період будь-якої миті роботи обмінного пункту;. архивирование всіх даних, опрацьованих системою в її функціонування на дату операційного дня чи інтервал дат;. підставі даних клієнта, впроваджуються під час здійснення обмінній операції, повинна перевірятися автоматична печатку довідки про обмін валюти, і фіксація у системі інформації клієнта з прив’язкою до конкретної операции.

Взаимодействие із банківською системою автоматизации.

Взаємодія підсистеми і системи автоматизації банку має задовольняти наступним вимогам:. Незалежність від застосованої системи автоматизації банківську діяльність;. Обмін інформацією із банківською системою з допомогою загальноприйнятих носителей.

(магнітні диски, електронна пошта тощо.);. Формат переданих даних має забезпечити достовірний прийом інформації та її обробку у системі автоматизації банку. Проблема сумісності з різними банківськими системами дозволяється шляхом застосування стандартного формату переданих даних як текстового файла з роздільниками інформаційних полів. Послідовність полів фіксована, довжина даних — змінна. Використання даних фіксованою довжини, звісно спрощує їх обробка, однак за великих обсягах постає проблема величини переданого файла. Такий спосіб обміну то, можливо реалізований практично переважають у всіх відомих тепер системах автоматизації банківської деятельности.

Надежность і резервирование.

Усі дані, які відбуваються через підсистему, підлягають обов’язкової фіксації в базах даних чи інших інформаційних структурах. Система мала зберегти дані у спеціальних архівних файлах починаючи з запуску в експлуатацію. При закритті операційного дня усі наші поточні дані повинні переноситься архів, а файли підготовлятися для нової зміни (очищення, обнуління тощо.). Працюючи ВП в локальному режимі бажано забезпечити можливість створення резервних копій баз даних на магнітних носіях по бажанню користувача. Для варіанта ВП працював у складі ЛВС банку, дана можливість то, можливо факультативною під час розміщення інформаційних файлів на мережевих дисках і щоденному виконанні процедур резервування мережним оборудованием.

Генерация отчетов.

Найбільш відповідальної і трудомісткою з функцій касира ВП є щоденне впорядкування і заповнення звітних документів за підсумками роботи пункту за зміну. Проектируемая система має надати користувачеві можливість у будь-який час отримати документи дня (реєстри угод, довідки про залишках готівки тощо.) у межах будь-який валюти. Це дозволить оперативно мати картину фінансового становища ВП загалом і зробити оперативний контроль діяльності касира. До складу обов’язкових звітів необхідно включити:. Реєстри купівлі і продаж іноземної валюти за готівкові рублі;. Довідку про залишках готівкової іноземній і національній валюти;. Акт передачі (для ВП що працюють у режимі змінній роботи);. Препроводительные відомості до инкассаторским сумкам. Форми звітів повинні відповідати запропонованим в інструкції ЦБ РФ № 27 «Про порядок роботи обмінних пунктов…».

Анализ потоків і взаємодії данных.

Мета реалізації проекту полягає у першу черга у реєстрацію ЗМІ й зберіганні всіх даних із операцій із готівкової іноземною валютою й іншими платіжними документами, даних про клієнтів і генерації форм звітності. Розгляд інформаційних складових розпочнемо з операції оформлення угоди купівлі-продажу готівкової іноземної валюти клиенту.

Покупка і продаж готівкової іноземної валюти за готівкові рубли.

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

СУММА_В_РУБЛЯХ_ПОКУПКИ =СУММА_ВАЛЮТЫ*КУРС_ПОКУПКИ або за продажу валюты.

СУММА_В_ВАЛЮТЕ=СУММА_РУБЛЕЙ_КЛИЕНТА/КУРС_ПРОДАЖИ.

Бо за купівлі валюти клієнт, зазвичай має своєю метою купити певну суму валюти, обчислення суми яку купує валюти можна замінити розрахунком рублевого еквівалента зазначеної клієнтом суми валюти аналогічно операції купівлі валюти у клієнта. Заповнення довідки ф. 406 007 і видача клієнту копии.

Уся інформацію про угоді і клієнта міститься у даних, наданих клієнтом касирові ВП заповнення довідки. Проаналізувавши неї давав можна зробити початковий висновок про форматі і структурі даних, необхідні реєстрації угоди. Загальний вид довідки ф.406 007 наведено на мал.1. Дані довідки можна розділити ми такі інформаційні одиниці:. Прізвище. Ім'я. По батькові. Вигляд документа (паспорт, посвідчення особи тощо.). Серія документа. Номер документа. Ознака резидент/нерезидент [pic] Рис. 1 Довідка про валютно-обмінної операції 1-день, 2-месяц, 3-год, 4-фамилия ,ім'я і по батькові клієнта, 5-вид документа, 6-номер документа, 7-серия документа, 8-отметка резидент/нерезидент, 9,13- код цінності, 10,14-код валюти, 11,15-Сумма, 12,16-сумма прописом. Код цінності отриманої клієнтом. Код валюти отриманої клієнтом. Сума валюти отриманої клієнтом. Код цінності прийнятої від клієнта. Код валюти прийнятої від клієнта. Сума валюти прийнятої від клієнта. Серія довідки. Номер довідки. Дата скоєння обмінній операции Конверсия готівкової іноземної валюты.

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

СУММА_ВАЛЮТЫ1=СУММА_ВАЛЮТЫ2*КРОСС_КУРС Приклад: Клієнт обмінює 100 доларів німецькі марки по кросс-курсу USDDEM 1,51 Клієнт отримає 100*1,51=151DEM Оскільки крос-курс зазвичай оголошується для односторонньої операції, тобто. до прикладу для конверсії USD-DEM, то тут для зворотної операції необхідно застосовувати іншу формулу расчета:

СУММА_ВАЛЮТЫ2=СУММА_ВАЛЮТЫ1*(1/КРОСС_КУРС) Приклад: Клієнт обмінює 100 німецьких марок на долари США по кросс-курсу USDDEM 1,51 Клієнт отримає 100*(1/1,51)=66,2USD Документальне оформлення операції конверсії у плані клієнтських документів аналогічно описаного выше.

Формы звітної документації ОП.

Усі операції, зроблених у протягом операційного дня обмінним пунктом, після закінчення зміни обробляються для видачі підсумкових документів роботи ВП. До таких належить:. Реєстр готівкової іноземної валюти, купленої за готівкові рублі;. Реєстр готівкової іноземної валюти, проданої за готівкові рублі;. Реєстр з обміну (конверсії) готівкової іноземної валюти; Нижче приведено форма реєстру купівлі й правила її заповнення |найменування | |(код ОКПО уповноваженого| |уповноваженого | | | |банку (філії) | |банку (філії) | | | | | |(адресу обмінного пункту) | |(реєстраційний номер | | | |обмінного пункту, якщо | | | |обмінний пункт вже | | | |зареєстрований ГУ ЦБ РФ)| | | | | | | | | |(дата заповнення реєстру)| |(обліковий номер реєстру) |.

РЕЄСТР ГОТІВКОВОЇ ІНОЗЕМНОЇ ВАЛЮТИ, КУПЛЕНОЇ ЗА ГОТІВКУ РУБЛИ.

Курс закупки в поточну дату ___________________________________________________________.

(вказується час у годиннику і хвилинах, від якого діє встановлений банком курс купівлі) Курс Банку Росії на поточну дату ______________________________________________________.

| | | | | | | | |1 |2 |3 |4 |5 |6 |7 |.

Разом по реєстру (цифрами):

Касир обмінного пункту ____________________________________________(прізвище і инициалы).

(подпись).

Порядок заповнення реєстру готівкової іноземної валюти, купленої за готівкові рубли.

. У колонці 1 вказується код купленої готівкової іноземної валюти за готівкові рубли.

. У колонці 2 вказується сума цифрами купленої готівкової іноземної валюти за готівкові рубли.

. У колонці 3 вказується код готівкових рублей.

. У колонці 4 вказується сума цифрами виплачених касиром обмінного пункту готівкових рублів за куплену готівкову іноземну валюту.

. У колонці 5 вказується номер виданої клієнту «Довідки ф. N 406 007 » .

. У колонці 6 вказується код з сумою готівкової іноземної валюти чи готівкових рублів, прийнятих касиром обмінного пункту з вигляді комісійної винагороди по досконалої операции.

. У колонці 7 вказується запис «Резидент «чи «Нерезидент «з кожної досконалої операції. Кожна вид готівкової іноземної валюти ведеться окремий реєстр. Що стосується зміни банком протягом операційного дня курсу купівлі готівкової іноземної валюти за готівкові рублі касир обмінного пункту закриває реєстр, який ведуть за попереднім курсу, підбиває підсумки і відкриває новий реєстр, який ведуть за новим курсом. Реєстри продаж і конверсії заповнюються аналогично.

Технические вимоги до аппаратуре.

Робота проектованого програмного комплексу повинна забезпечуватися найпоширенішої нині персональної ЕОМ. Це міркування передбачає вибір комп’ютера побудованого на платформі 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. Такий спосіб доступу до даних дозволяє дуже й надійно знаходити значення ключового висловлювання на пов’язаної БД і відданість забезпечує автоматичне сканування дочірньою бази даних при переміщенні покажчика запис у основний базі. Задля більшої надійного телефонного зв’язку даних необхідно у процедурі поповнення довідників автоматичне створення ключового висловлювання. Він повинен задовольняти наступним вимогам:. Унікальність ключа;. Невеликий розмір ключового висловлювання зменшення розмірів індексного файла і прискорення пошуку при велику кількість записів. Під час створення ключа не бажано у його ролі використовувати номер записи. За такої способі унікальність ключа може бути збережене лише якщо заборонено фізичне видалення записів з файла довідника, хоча це спосіб найбільш просто реалізуємо. У нашому випадку є сенс зупинитися на ній, оскільки фізичне видалення записів з довідників призведе до втрати логічного зв’язку архівних документів. Отже, за необхідності видалення, запис буде просто позначена, як віддалена і вдальнейшем нічого очікувати виводитися до списків. Однією з важливими моментами в проектуванні інформаційно-довідкових систем є організація введення даних користувачем та його подальша обробка. При введення даних, зазвичай, використовуються дві форми введення: табличная і бланк. У проектованої системі введення даних із обмінній операції бажано організувати у вигляді бланка під час оформлення операції, і в таблиці при коригуванні і поповненні довідників. При введення курсів валют можна застосувати комбіновану форму введення: пошук валюти за списком табличній форми, а введення курсу у вигляді бланка. Основним режимом роботи користувача буде введення даних із операціям обміну, тому бланк введення необхідно спроектувати в такий спосіб, щоб форма відповідала стандартної довідці. Введення даних із довідників можна оформити те щоб виклик довідника забезпечувався натисканням функціональної клавіші, відповідність довідника поточному полю введення також має забезпечуватися автоматично під назвою поля введення. Запис даних до бази повинна здійснюватися після підтвердження користувачем правильності всіх запроваджених числових і символьних даних, і розрахункових величин. Після введення даних треба дати користувачеві можливість роздруківки бланка довідки і копії клієнта. дана операція має бути виконане в обов’язковому порядку. Печатка можна здійснити на два типу принтерів: ударного дії (матричні) і струменеві. Печатка довідки на лазерних принтерах неможлива через підвищених вимог до якості папери. При друку довідки на матричному принтері можна здійснити печатку двох примірників (справка+копия) за прохід із застосуванням копіювальної папери. На струминному принтері необхідно друкувати кожен примірник окремо. Такі м чином слід передбачити изменяемый користувачем лічильник числа копій чи спеціальну функцію настройки на той тип принтера. [pic]Рис.2 Схема взаємодії і сязей данных.

Розробка функціональної схеми программы.

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

Примерный перелік функцій системы.

1. Реєстрація обмінній операции.

2. Введення даних із купівлі валюты.

3. Введення даних із продажу валюты.

4. Введення даних із конверсії валюты.

5. Печатка довідки клиента.

6. Перегляд документов.

7. Перегляд списку документів дня.

8. Перегляд списку архівних документов.

9. Ведення справочников.

10. Введення даних із кодам ценностей.

11. Введення даних із видам документов.

12. Введення даних із кодам валют.

13. Введення курсів валют дат 14. Генерація звітних документов.

. Печатка реєстру готівкової іноземної валюти, купленої за готівкові рубли;

. Печатка реєстру готівкової іноземної валюти, проданої за готівкові рубли;

17. Печатка реєстру з обміну (конверсії) готівкової іноземної валюти; 18. Інші функции.

19. Введення даних на полі введення з справочника.

20. Переклад числа з цифровий форми в строчную (сума прописью).

21. Зміна виду курсора.

22. Збереження даних в архівних файлах Наведений перелік охоплює все процедури, достойні розділі технологічного процесу ВП і доповнено деякими функціями, які необхідні у процесі введення даних, і їх корректировки.

Разработка структурної схеми программы.

Структурна схема програмного комплексу визначає основних рисах і зовнішній вигляд проектованої системи та принципи взаємодії з користувачем. Схема проектованої системи являтиме ієрархічну деревоподібну структуру, описує процедури введення, обробки та виведення даних. Побудова програм інформаційно-довідкового класу по такому принципу дозволяє досить легко виробляти модифікацію системи в цілому і полегшує сприйняття й розуміння принципу роботи програми. Для побудови структурної схеми необхідно визначити ієрархію і зв’язок перелічених вище процедур обробки даних. Природно встановити ієрархію процедур у вигляді, у якому вони були описані у попередньої главі, оскільки така схема відповідає схемі «важливості» і «употребимости» процедур. Структурна схема програми, з урахуванням усього вищевикладеного, представлена на рис 2. [pic].

Разработка екранного інтерфейсу программы.

Існуючі підходи до екранного интерфейса.

Екранний інтерфейс програми багато чому визначає зручність роботи користувача і одна із важливих чинників, які впливають ефективність його. Програма, виконує все покладені її у функції, що має високим швидкодією можна повністю непридатною роботи через неприйнятного інтерфейсу з користувачем. Ще буквально кілька років як розв’язано існував текстовий редактор, чудово який ілюструє такий до програмного забезпечення. Навряд чи комусь буде до душі редактор тексту, у якому для вставки символу в рядок потрібно набрати однобуквенный код команди вставки, номер оброблюваної рядки (на щастя не двоїчний), номер символу, після якого «буде вставлено новий символ та власне цей символ. Звісно такий абсолютно неприйнятний. [pic].

Рис. 4 Система меню операційній оболонки Norton Comander.

Найбільш практичними і зручними з погляду користувача вважатимуться системи, мають екранний інтерфейс, побудований з урахуванням системи спливаючих меню. Найпоширенішими нині є дві ідеології (маю на увазі DOS-приложения), які включають у себе та певну форму екранних вікон та колірну гаму й посвідку що спливають списків. Це інструментальні Середовища фірми Borland, і операційна оболонка Norton, фірми Symantec. Обидві ідеології передбачають певне розбивка екранного простору на області чи зони, призначені для конкретних інформаційних об'єктів і безкомпромісність дій. Зони можна певної міри переконфигурированы за бажання користувача: змінені розміри і становище на екрані. Команди обробки даних викликаються із системи меню, присутнього на екрані постійно (Borland), чи викликаний по функціональної клавіші (Symantec). І те в іншому цьому випадку всі команди системи розподілені по функціональному ознакою на групи й у головному меню присутні [pic].

Рис 5. Система меню компілятора Borland C++.

собственно найменування груп команд. Вибравши групу, користувач отримує доступом до списку команд групи, куди можуть бути включені також команди, об'єднані у групи другого рівня життя та т.д. Отже, створюється система багаторівневого спливаючого меню. Застосування такий ідеології забезпечує зручність орієнтування у системі, що має досить складне, багаторівневе меню з безліччю виборів. Природно, що передвиборне збільшення вкладеності і середніх розмірів списків вибору, має мати розумні кордону, що до щастю є у вигляді обмеженості екранного простору монітора. У багатьох систем закладено також можливість настройки колірної палітри за бажання користувача. У операційній оболонці Norton пропонується вибір гами з кількох стандартних варіантів, в системах фірми Borland можна створити свою власну колірну гаму, до найменших подробиць. Приблизний їх вид деяких екранних об'єктів наведено на рис. 4,5.

Выбор ідеології екранного интерфейса.

У нашій системі приймемо в основі екранного інтерфейсу, ідеологію фірми Borland. У цьому ідеології витримана більшість автоматизованих банківських систем, тому нашу програму органічно впишеться у тому ряд. Система проектування CA-Clipper надає розробникові досить велику гаму функцій, дозволяють здійснювати розробку екранного інтерфейсу, проте програми, у яких задіяні лише штатні кошти системи виявляються дуже завантажені другорядними операторами, забезпечують висновок на монітор екранних об'єктів, рамок, установку кольору та т.п. Доцільно розробити комплекс функцій екранного інтерфейсу, виконують макрооперации, таких, приміром, і висновок в заданих координатах рамки з заголовком і тінню у зазначеній кольорах і збереження області виведення в буфері на подальше відновлення зовнішнього вигляду екрана. Усі функції екранного інтерфейсу можна поєднати в бібліотеку, про те, щоб у наступної роботі не завантажувати вихідний код їхні програми описанием.

Перечень функцій екранного интерфейса.

Щоб сформувати бібліотеки екранних функцій, наведемо перелік процедур, які стосуються створенню зовнішності програми розвитку й зв’язку програми з кінцевим користувачем:. створення горизонтального меню у координатах. створення вертикального меню у координатах. висновок вікна з рамкою і тінню чи ні таких у зазначених координатах і кольорі. висновок вікна з рамкою і тінню чи ні таких у зазначених координатах і кольорі з ефектом розкриття. висновок рядки підказки. висновок повідомлення з очікуванням реакції користувача. висновок повідомлення й очікування вибору користувача. висновок лінійного індикатора процесу його відновлення. висновок транспаранта ожидания.

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

Проектирование функціональних модулей.

Існує безліч методів побудови програм, тож кожен розробник вибирає з усього різноманіття найприйнятніший собі чи взагалі керується своїми особистими міркуваннями. Під час проектування нашої системи може бути розбитий весь процес сталася на кілька частин:. Створення функцій екранного інтерфейсу. Проектування системи меню програми. Розробка функціональних модулів та під'єднання їх до основну програму. Комплексна налагодження і тестування програми у процесі досвідченої експлуатації. Остаточна доведення програмного продукту і складання їх у експлуатацію. Створення насамперед процедур і державних функцій екранного інтерфейсу пояснюється лише тим, що це функції становитимуть «скелет» програми до котрого подальшому підключатимуться робочі процедури, в такий спосіб ми вести розробку методом «Згори донизу». Цей метод дозволяє в короткі строки одержати працюючу систему з обмеженою (і під час роботи повнішим) набором функціональних возможностей.

Разработка интерфейсных функций.

Функція виведення меню у координатах.

Для спрощення програми загалом покладемо з цього процедуру такі завдання:. Висновок горизонтального, чи вертикального меню, залежно від переданого параметра. Повернення номери вибору користувача, чи 0 при перериванні вибору по клавіші «Escape». Висновок списку виборів у екранних координатах, що передаються у функцію як параметра. Висновок списку виборів у кольорах, переданої до функцій як параметра. Виділення «гарячих» клавіш у списку виборів і навіть їх обробка. Можливість пересування списку виборів із допомогою маніпулятора «Миша». Визначимося з параметрами функції. 1. Прапор виведення меню в горизонтальному чи вертикальному вигляді (Logic) 2. Список виборів (Array) 3. Список координат (Array) 4. Список рядків підказок (Array) 5. Додаткова координата (Numeric) 6. Колір активного вибору (String) 7. Колір неактивного вибору (String) 8. Колір «гарячої» клавіші Додаткова координата і масив координат виборів виконуватимуть подвійну роль: при виведення горизонтального меню масив містить номери колонок кожному за вибору, а додаткова координата визначає рядок виведення, при виведення вертикального меню в масиві матимемо номери рядків кожному за вибору, а додаткова координата визначить стовпець виведення. Для відображення «гарячої» клавіші необхідно накинути у рядку вибору будь-якої маркер, символ, наступний його, використовуватиметься в ролі «гарячої» клавіші й відображатись із (рис.6).

[pic].

Див. Мал.6 Фрагмент меню [pic] Рис 7. Алгоритм функції вибрати з меню Функция виведення вікна у координатах.

Ця функція має бути універсальною, отже, треба мати можливість, при виклик функції, визначати параметри майбутнього [pic] Див. Мал.8 Параметри віконного объекта оконного об'єкта. До таких параметрами ставляться:. екранні координати вікна (стандартно це рядок і стовпець лівого верхнього і правого нижнього кутів вікна). колір віконною області. символи обрамлення і заповнення вікна. колір символів обрамлення і заповнення Екранні координати передаються як числових величин гаразд, прийнятому для команд BOX, CLEAR тощо. YL, XL — лівий верхній, YR, XR — правий нижній кут. Символи заповнення передаються як строковой перемінної, що містить послідовно символи обрамлення, починаючи з верхнього лівого кута по годинниковий стрілці. Останнім в послідовності є символ заповнення внутрішньої області вікна. Колірна гама встановлюється за умовчанням по поточним настановам. Висновок віконного об'єкта з ефектом розкриття здійснюється шляхом циклічного виклику попередньої функції із і зміною координат на одиницю від Х1=(ХR-XL)/2, Y1=(YR-YL)/2 до переданих ролі параметра.

Висновок рядки подсказки.

Особливістю даної функції необхідно виведення підказки в вигляді етикеток до функціональним клавішах в нижню рядок екрану й фіксація цих даних тимчасово роботи будь-якої процедури, та був відновлення області екрана, зайнятою рядком підказки. З іншого боку, необхідно виводити етикетки лише клавіш, задіяних у цій процедурі. [pic].

Див. Мал.9 Рядок підказки Доцільно у головному модулі програми визначити масив з етикетками кожної функціональної клавіші, а функцію передавати лише номери або позиції які підлягають відображенню етикеток. Як параметра зручно використовувати символьне вираз битовой рядки виду «1 000 001 001», що показує, що необхідно вивести в рядок підказки елементи масиву з номерами 1, 7 і десяти, а інших позиціях вивести блоки прогалин. Бо у рядок необхідно виводити десять елементів масиву з позначенням номери функціональної клавіші й роздільниками, легко підрахувати, що довжина одного елемента становитиме 6 символів. Приблизний їх вид фрагмента рядки наведено на рис.

Вывод повідомлення з очікуванням реакції чи вибору пользователя.

Оскільки дані функції, написані, як самостійні модулі у що свідчить будуть схожі, є сенс об'єднати в одну універсальну процедуру. Домовимося обробляти максимально три рядки повідомлення й до трьох варіантів вибору. За відсутності в переданих параметрах варіантів вибору, передбачається очікування натискання кожну клавишу.

Отже, список параметрів функції буде такою:. Координати виведення вікна об'єкта. Рядок повідомлення 1. Рядок повідомлення 2. Рядок повідомлення 3. Рядок вибору 1 [pic] а). Рядок вибору 2. Рядок вибору 3.

[pic] б) [pic] в) Рис. 10 Приклади роботи функції під час передачі різного кількості параметрів. а — один рядок повідомлення б — два рядки повідомлення й два рядки вибору, в — Одна рядок повідомлення й три рядки выбора.

При виклик функції умовимося відсутні параметри передавати їх у вигляді порожній рядки -««, в такий спосіб спроститься аналіз переданих параметрів в функції. Вигляд виведеного повідомлення під час передачі до функцій різного кількості параметрів наведено на рис. Алгоритм функції і вихідний текст приведено у приложении.

Вывод лінійного індикатора процесу його обновление.

Вигляд лінійного індикатора наведено на рис. Використання індикатора дозволяє візуально оцінити відсоток виконання будь-якої операції в процесі роботи. Для відображення шкали необхідно мати такі дані:. Кількість вычисляемых одиниць на 100% шкали індикатора [pic].

Рис. 11 Лінійний індикатор процесу. Довжина шкали в екранних одиницях. Кількість вычисляемых одиниць на активної зоні шкали Алгоритм функції і вихідний текст приведено у приложении.

Вывод транспаранта ожидания.

Транспарант очікування повинен виводитися у координатах тимчасово роботи процедури плюс обов’язкову рядок «Очікуйте закінчення операції…», ще, можна використовувати як параметра передати додаткову інформацію. Область екрана, зайняту повідомленням, і його координати необхідно зберегти в змінних на подальше відновлення. Загальний вид транспаранта наведено на рис.

[pic].

Рис. 12 Транспарант ожидания Вспомогательные функции.

ФУНКЦІЯ ПЕРЕМИКАННЯ ВИДУ КУРСОРА.

Ця функція мають забезпечувати відображення курсору входження у вигляді лінії часів режиму «ЗАМІНА» і у вигляді блоку як «ВСТАВКА». Для відстежування стану курсору необхідна глобальна змінна, яка значення 1 чи 2. Функція мусить бути приписана до клавіші «Insert» командою SET KEY.

ФУНКЦИЯ ПЕРЕКЛАДУ СТРОКИ У ВЕРХНІЙ РЕГИСТР.

Бо у складі Clipper 5.02 немає функції Upper, яка з символами кирилиці, необхідно забезпечити програму еквівалентній процедурою. Найпростіше реалізувати функцію шляхом оголошення двох масивів — вихідних символів і символів перетворення з однозначним відповідністю. Пошук вихідного символу на першому масиві дає індекс символу перетворення з другого. За відсутності еквівалента, символ транслюється без изменения.

ФУНКЦІЯ КОНТРОЛЮ ВЫХОДА.

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

ФУНКЦІЯ ПЕРЕКЛАДУ ЧИСЛОВОЇ ВЕЛИЧИНИ У РЯДОК «СУМА ПРОПИСЬЮ».

Функція небходима щоб одержати рядки, що містить символьне вираз числа. Перетворення має здійснюватися з повним дотриманням правил граматики, відмінків і відмінювань. Перша літера рядки прописна. Дробная частина не перетвориться. При перекладі валюти до функцій має бути переданий в ролі параметра код валюти, і рядок доповнена псевдонімом валюти. Псевдонім, чи стисле найменування вилучають із БД валют за кодом валюти, переданою до функцій як параметра. За умовчанням передбачається валюта — Російський карбованець (код 000 чи 002) Приклад: 123 456 код валюти 048 Сто двадцять 3 тисячі чотириста п’ятдесят шість DEM.

52 567 478 без параметра П’ятдесят 2 мільйони п’ятсот шістдесят сім тисяч чотириста сімдесят вісім крб. 00 коп.

Разработка головного модуля программы.

Структура функції MAIN.

Під час написання головний функції необхідно описати саме у ній усі масиви і які змінюються, мають статус глобальних — «Public». І тут до них можна отримати доступ із усіх процедур та зняття функцій системи, використовувати їх як об'єктів для неявній передачі параметрів і повернення значень чи результатів роботи. Крім того головному модулі необхідно зробити настроювання загальних параметрів Clipper’а, як-от формат дати, режим пошуку в БД, параметри пошуку це й порівняння рядків тощо. Задля більшої можливості коригування користувачем колірної палітри системи слід визначити комплекс змінних, у яких зберігатися колірні установки. Кількість змінних визначиться кількістю груп процедур, і кількістю змінюваних квітів у кожної їх. Розподілити функції на групи можна за наступному принципу:. Функція головного меню системи. Функції меню нижніх рівнів. Функції введення даних. Функції виведення даних. Функції запитів. Рядок підказки Набір змінних кольору має забезпечити зберігання колірних установок для промальовування вікна, нормального тексту, виділених і невыделенных об'єктів для кожної групи функцій. Колірні установки матимуть символьне вираз виду «+GR/B», що дозволить виробляти безпосередню підстановку змінних до функцій SETCOLOR. Збереження змінних потрібно здійснити в спеціальному файлі memo — переменных.

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

ФУНКЦИИ ВИКЛИКУ МЕНЮ НИЖНІХ УРОВНЕЙ.

[pic].

Рис. 14 Алгоритм процедури меню нижніх рівнів Дані функції комплексно з функцією головного меню утворюють систему спливаючих меню програми. Для організації взаємодії між процедурами необхідно забезпечити «стикування» викликають і що викликаються функцій. Основною проблемою організації стику функцій був частиною їхнього екранне взаємодія тобто. кожна процедура чи функція по закінченні роботи має забезпечити відновлення екрана у цьому стані, як він був до виклику функції. Можна вступити трохи за іншому: що викликає функція гарантує збереження стану екрана тимчасово роботи спричиненої функції. Функції меню нижніх рівнів побудують за схемою (Рис.). Такий підхід дозволятиме за необхідності швидко вбудувати необхідний виклик до системи меню й у своє чергу, не вимагає модулів — заглушек для відсутніх процедур.

ФУНКЦИЯ РЕЄСТРАЦІЇ КУПІВЛІ ВАЛЮТЫ Процедуры реєстрації валютно-обмінних операцій використовуватимуть один, і таку ж форму введення даних (див. Рис). Редагування даних буде здійснюватися у змінних відповідних типів і після контрольного [pic] Рис. 15 Бланк реєстрації валютно-обмінної операції, і фрагмент довідника ценностей.

[pic] Рис. 16 Алгоритм (укрупнений) функції реєстрації угоди запиту заноситися в БД операцій. Коди довідкових даних вводяться двома шляхами: у полі введення чи через список довідника, викликаний по клавіші F3. Для полегшення роботи касира можна передбачити автоматичний розрахунок суми після введення суми основний валюти. Укрупнений алгоритм функції наведено на рис. 15 .

ФУНКЦИЯ — ВИЗНАЧНИК ПОТОЧНОГО ПОЛЯ ДЛЯ ОДЕРЖАННЯ КОДА І НАЙМЕНУВАННЯ ОБ'ЄКТИ ІЗ СПРАВОЧНИКА При організації введення даних із використанням довідників бажано забезпечити вибір даних із тієї чи іншої довідника лише у функції. Для забезпечення виведення необхідного нині списку можна застосувати функцію GETACTIVE, яка повертає ім'я поточного GET-объекта. Аналізуючи це то можна організувати примітивний селектор, який формувати запити до тій чи іншій БД довідників. Подальший вибір організується в вигляді списку з її пошуком по набору.

Тестирование програмного обеспечения.

Тестування (найвідповідальніший етап створення програмного забезпечення і є він у виконанні програми з метою виявлення помилок. Серед існуючих способів тестування можна назвати три найбільш часто применяемых:

. висхідний тестирование;

. спадне тестирование;

. метод сэндвича.

Восходящее тестирование.

При висхідному підході програма збираються і тестується знизу вгору. Тільки модулі найнижчого рівня (модулі, які викликають інших модулів) тестуються незалежно, автономно. Коли тестування цих модулів завершено, виклик повинен бути як і надійний, як виклик вбудованої функції мови чи оператор присвоювання. Потім тестуються модулі, безпосередньо викликають вже перевірені. Ці модулі вищого рівня тестуються не автономно, а разом із вже перевіреними модулями більш низького рівня. Процес повторюється до того часу, поки що не досягнуто вершина. Тут завершуються і тестування модулів, і тестування сполучень програми. До кожного модуля необхідно написати невелику провідну программу.

Нисходящее тестирование.

Спадне тестування перестав бути повної протилежністю висхідному, але у першому наближенні може розглядатися як таке. При низхідному підході програма збираються і тестується згори донизу. Ізольовано тестується лише головний модуль. Коли тестування цього модуля завершено, з нею з'єднуються одна одною, модулі, безпосередньо викликані їм, й тестується отримана комбінація. Процес повторюється до того часу, коли будуть зібрано й перевірені все модулі. Для імітації функцій саме ті модулів програмуються модулі - «заглушки», які моделюють функції відсутніх модулей.

Метод сэндвича.

Тестування методом сэндвича є компроміс між висхідним і спадним підходами. З використанням цього одночасно починають висхідний і спадне тестування, збираючи програму як знизу і зверху і зустрічаючись зрештою разів у середині. Крапка зустрічі залежить від конкретної тестируемой програми розвитку й мусить бути заздалегідь визначено щодо її структури. Якщо розробник може надати свою систему як рівня прикладних модулів, потім рівня модулів обробки запитів, потім рівня примітивних функцій, він може вирішити застосовувати спадний метод лише на рівні прикладних модулів, але в інших рівнях застосувати висхідний метод. У нашому випадку застосуємо метод сэндвича, оскільки перед проектуванням програми необхідно створити комплекс интерфейсных і допоміжних функцій, які, природно би мало бути перевірені до створення основного тіла программы.

Экономическая часть.

Найчастіше впровадження обчислювальної техніки не приносить прямого економічного ефекту. Це наступним: зменшення кількості зайнятих роботою, автоматизувати яку покликана обчислювальної техніки, відбувається рідко (обчислювальної техніки автоматизує працю, а чи не підміняє собою людини; впровадження обчислювальної техніки вимагає солідних капіталовкладень не лише з її придбання, а й у навчання персоналу роботі з нею, і навіть прийому працювати фахівця обслуговування обчислювальної техніки, або підписання договору на обслуговування; потрібно придбати, або ж створити власне програмне забезпечення; збільшення споживання; обладнання робочих місць, установка охоронної сигнализации.

Проте, не дивлячись на перелічені вище причини, дедалі більше організацій використовують обчислювальну техніку у роботі. Це можна пояснити непрямим ефектом від запровадження обчислювальної техніки, який найчастіше значно перевищує власне затрати для закупівлі і змістом обчислювальної техніки. Застосування обчислювальної техніки значно підвищує достовірність і актуальність інформації, тобто зменшується можливість виникнення помилки у розрахунках, неминуча при ручному рахунку. З’являється можливість дістати з потрібної ступенем деталізації з мінімальними тимчасовими витратами, що неможливо при ручний обробці. Швидкість прийняття рішень пов’язана з наявністю інформації та її достовірністю і вже позначається на результатах діяльності будь-який организации.

Усе вище повною мірою належить до аналізованої програмі. Вона не варта заміни особи на одне його робоче місце, але здатна полегшити й тимчасово підвищити продуктивність його. У десятки і в сотні разів скорочується час отримання, підвищується якість обслуговування клієнтів. Для розрахунку економічну ефективність можна умовно прийняти, завдяки придбання програми, організація отримує самі можливості, що й за прийомі працювати додатково двох чоловік. [pic][pic] Показники економічної характеристики розробки. [pic].

Вопросы техніки безпеки і охорони труда.

Персональні ЕОМ є виробами складної обчислювальної техніки і, як і будь-який прилад вимагають під час роботи з нею дотримання певних методів безпечної праці та техніки електробезпеки, незнання, чи зневага якими може заподіяти чимало неприятностей.

Типовими відчуттями, котрі мають до кінця робочого дня люди, хто з персональними комп’ютерами, є біль голови, різь в очах, тягнуть біль у м’язах шиї, рук і спини, сверблячка шкіри в очах тощо. Перенесені щодень можуть призвести до мигреням, часткову втрату зору, сколиозу, тремору, шкірним запаленням та інших заболеваниям.

Швидше за все людині вже не вдасться убереже від згубного впливу передових технологій, але, як та у багатьох інших випадках, самі користувачі персональних комп’ютерів, по крайнього заходу, можуть звести його до мінімуму. Більшість проблем вирішуються самі собою за правильної організації робочого місця, дотриманні правил техніки безпеки і розумному розподілі робочого времени.

Основним джерелом біомеханічних проблем, що з охороною здоров’я людей, використовують у роботі автоматизовані інформаційні системи з урахуванням персональних комп’ютерів, є дисплеї (монітори), особливо дисплеї з электронно-лучевыми трубками. Вони уявляють собою джерела найшкідливіших випромінювань, несприятливо які впливають здоров’я операторов.

Результати, отримані під час досліджень, носять поки що переважно статистичний характері і немає адекватного пояснення. Частотний спектр випромінювання монітора характеризується наявністю рентгенівських, ультрафіолетових, інфрачервоних та інших електромагнітних коливань. Небезпека рентгенівського й окремі частини інших випромінювань більшістю учених визнається пренебрежимо малої, оскільки з їхньою рівень невеликий й у основному поглинається покриттям екрана. Найбільш скрутно пов’язана, очевидно, з полями випромінювань низьких частот, які, як з’ясувалося, можуть викликати біологічні ефекти при вплив на живі організми. Було виявлено, що електромагнітні половіючі жита із частотою порядку 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 («[pic]», 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__SERD SK, 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 («1 010 000 001 ») 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 «999 999 999 999 «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 «9 999 999 «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 «9 999 999 999 «.

@ 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 «999 999 999 999 »; 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 («1 010 000 001 ») 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 «999 999 999 999 «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 «9 999 999 «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 «9 999 999 999 «.

@ 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 «999 999 999 999 «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 («1 010 000 001 ») 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 «999 999 999 999 «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 «9 999 999 «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 «9 999 999 999 «.

@ 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 «999 999 999 999 «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.

P.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© @ 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 «999 999 999 999 «setcolor (CL) return .T.

Функція виведення суми продажу прописью.

Function SAYS parameters NUM, Y, X, L, C, S, CC local CL S=numstring (NUM, CC) CL=setcolor© @ 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 «999 999 999 999 «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©.

@ 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©.

@ 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 («1 000 001 001 »).

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 і := 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.

1. CA-Clipper 5.02 «Users Guide» — Посібник із програмування мовою Clipper 2. А. А. Попов «Програмування серед FoxPro. Побудова систем обробки даних. («Радіо і Зв’язок» М. 1993 р.) 3. «RS-Club» №№ 1−7 1996 р. (Miktor Ky. Union Publisher Inc. 1996 р.) 4. П. Нортон, П. Иао «Програмування на З++ серед Windows».

(«Діалектика» Київ 1993 р.) 5. Інструкція ЦБ РФ «Про порядок роботи обмінних пунктів біля Російської Федерації, здійснення релігійної і обліку валютно — обмінних операцій уповноваженими банками» № 27 від 27.02.1995 г. ———————————;

Активна опция.

Неактивна опция.

«Гаряча» клавиша.

Показати весь текст
Заповнити форму поточною роботою