DIPLOM1 (664360), страница 5
Текст из файла (страница 5)
Вид выводимого сообщения при передаче в функцию различного количества параметров приведен на рис.
Алгоритм функции и исходный текст приведен в приложении.
Вывод линейного индикатора процесса и его обновление
Вид линейного индикатора приведен на рис. Использование индикатора позволяет визуально оценить процент выполнения какой-либо операции в процессе работы. Для отображения шкалы необходимо иметь следующие данные:
-
Количество вычисляемых единиц в 100% шкалы индикатора
-
Рис.11 Линейный индикатор процесса
Длина шкалы в экранных единицах -
Количество вычисляемых единиц в активной зоне шкалы
Алгоритм функции и исходный текст приведен в приложении.
Вывод транспаранта ожидания
Транспарант ожидания должен выводиться в указанных координатах на время работы процедуры и иметь обязательную строку “Ожидайте окончания операции...”, кроме того, можно в качестве параметра передать дополнительную информацию. Область экрана, занятую сообщением, и ее координаты необходимо сохранить в переменных для последующего восстановления. Общий вид транспаранта приведен на рис.
Рис.12 Транспарант ожидания
Âñïîìîãàòåëüíûå ôóíêöèèÔÓÍÊÖÈß ÏÅÐÅÊËÞ×ÅÍÈß ÂÈÄÀ ÊÓÐÑÎÐÀ
Данная функция должна обеспечивать отображение курсора ввода в виде линии при режиме «ЗАМЕНА» и в виде блока в режиме «ВСТАВКА». Для отслеживания состояния курсора необходима глобальная переменная, которая принимает значения 1 или 2. Функция должна быть приписана к клавише «Insert» командой SET KEY.
ÔÓÍÊÖÈß ÏÅÐÅÂÎÄÀ ÑÒÐÎÊÈ Â ÂÅÐÕÍÈÉ ÐÅÃÈÑÒÐ
Поскольку в составе Clipper 5.02 не имеется функции Upper, работающей с символами кириллицы, необходимо обеспечить программу эквивалентной процедурой. Наиболее просто реализовать функцию путем объявления двух массивов - исходных символов и символов преобразования с однозначным соответствием. Поиск исходного символа в первом массиве дает нам индекс символа преобразования из второго. При отсутствии эквивалента, символ транслируется без изменения.
ÔÓÍÊÖÈß ÊÎÍÒÐÎËß ÂÛÕÎÄÀ
Для корректного закрытия БД и завершения работы необходимо проконтролировать запросом попытку пользователя выйти из программы. Данная функция будет содержать обычный запрос на подтверждение выхода, и при положительном ответе осуществит закрытие всех активных файлов БД и возврат в ДОС.
ÔÓÍÊÖÈß ÏÅÐÅÂÎÄÀ ×ÈÑËÎÂÎÉ ÂÅËÈ×ÈÍÛ Â ÑÒÐÎÊÓ «ÑÓÌÌÀ ÏÐÎÏÈÑÜÞ»
Функция небходима для получения строки, содержащей символьное выражение числа. Преобразование должно осуществляться с соблюдением правил грамматики, падежей и склонений. Первая буква строки прописная. Дробная часть не преобразуется. При переводе валюты в функцию должен быть передан в качестве параметра код валюты и строка дополнена псевдонимом валюты. Псевдоним, или краткое наименование извлекается из БД валют по коду валюты, переданному в функцию в качестве параметра. По умолчанию предполагается валюта - Российский рубль (код 000 или 002)
Пример:
123456 код валюты 048
Сто двадцать три тысячи четыреста пятьдесят шесть DEM
52567478 без параметра
Пятьдесят два миллиона пятьсот шестьдесят семь тысяч четыреста семьдесят восемь руб. 00 коп.
Ðàçðàáîòêà ãîëîâíîãî ìîäóëÿ ïðîãðàììû
Ñòðóêòóðà ôóíêöèè MAIN
При написании головной функции необходимо описать именно в ней все массивы и переменные, имеющие статус глобальных - «Public». В этом случае к ним можно получить доступ из всех процедур и функций системы, использовать их в качестве объектов для неявной передачи параметров и возврата значений или результатов работы. Кроме того в головном модуле необходимо произвести настройку общих параметров Clipper’а, таких, как формат даты, режим поиска в БД, параметры поиска и сравнения строк и т.п.
Для обеспечения возможности корректировки пользователем цветовой палитры системы следует определить комплекс переменных, в которых будут храниться цветовые установки. Количество переменных определится количеством групп процедур, и числом изменяемых цветов в каждой из них. Распределить функции на группы можно по следующему принципу:
-
Функция главного меню системы
-
Функции меню нижних уровней
-
Функции ввода данных
-
Функции вывода данных
-
Функции запросов
-
Строка подсказки
Набор переменных цвета должен обеспечить хранение цветовых установок для прорисовки окна, нормального текста, выделенных и невыделенных объектов для каждой группы функций. Цветовые установки будут иметь символьное выражение вида «+GR/B», что позволит производить непосредственную подстановку переменных в функцию SETCOLOR. Хранение переменных необходимо осуществить в специальном файле memo - переменных.
Рис.13 Алгоритм головного модуля (Функция MAIN)
ÔÓÍÊÖÈÈ ÂÛÇÎÂÀ ÌÅÍÞ ÍÈÆÍÈÕ ÓÐÎÂÍÅÉ
Рис.14 Алгоритм процедуры меню нижних уровней
Данные функции в комплексе с функцией главного меню образуют систему всплывающих меню программы. Для организации взаимодействия между процедурами необходимо обеспечить “стыковку” вызывающих и вызываемых функций. Основной проблемой организации стыка функций является их экранное взаимодействие т.е. каждая процедура или функция после окончания работы должна обеспечить восстановление экрана в том состоянии, в каком он был до вызова функции. Можно поступить несколько по другому: вызывающая функция обеспечивает сохранение состояния экрана на время работы вызываемой функции. Функции меню нижних уровней будут построены по одной схеме (Рис. ). Такой подход позволит при необходимости быстро встроить требуемый вызов в систему меню и, в свою очередь, не требует модулей - заглушек для отсутствующих процедур.ÔÓÍÊÖÈß ÐÅÃÈÑÒÐÀÖÈÈ ÏÎÊÓÏÊÈ ÂÀËÞÒÛ
Процедуры регистрации валютно-обменных операций будут использовать одну и ту же форму ввода данных (см. Рис). Редактирование данных будет осуществляться в переменных соответствующих типов и после контрольного
Рис.15 Бланк регистрации валютно-обменной операции и фрагмент справочника ценностей
Рис. 16 Алгоритм (укрупненный) функции регистрации сделки
запроса заноситься в БД операций.Коды справочных данных вводятся двумя способами: непосредственно в поле ввода или через список справочника, вызываемого по клавише F3. Для облегчения работы кассира можно предусмотреть автоматический расчет суммы после ввода суммы основной валюты. Укрупненный алгоритм функции приведен на рис.15 .
ÔÓÍÊÖÈß - ÎÏÐÅÄÅËÈÒÅËÜ ÒÅÊÓÙÅÃÎ ÏÎËß ÄËß ÏÎËÓ×ÅÍÈß ÊÎÄÀ È ÍÀÈÌÅÍÎÂÀÍÈß ÎÁÚÅÊÒÀ ÈÇ ÑÏÐÀÂÎ×ÍÈÊÀ
При организации ввода данных с использованием справочников желательно обеспечить выбор данных из того или иного справочника в одной функции. Для обеспечения вывода необходимого на данный момент списка можно применить функцию GETACTIVE, которая возвращает имя текущего GET-объекта. Анализируя это имя можно организовать примитивный селектор, который будет формировать запросы к той или иной БД справочников. Дальнейший выбор организуется в виде списка с поиском по набору.
Тестирование программного обеспечения.
Тестирование - наиболее ответственный этап создания программного обеспечения и заключается он в выполнении программы с целью обнаружения ошибок.
Среди существующих способов тестирования можно выделить три наиболее часто применяемых:
-
восходящее тестирование;
-
нисходящее тестирование;
-
метод сэндвича.
Восходящее тестирование.
При восходящем подходе программа собирается и тестируется снизу вверх. Только модули самого нижнего уровня (модули, не вызывающие других модулей) тестируются независимо, автономно. После того как тестирование этих модулей завершено, вызов их должен быть так же надежен, как вызов встроенной функции языка или оператор присваивания. Затем тестируются модули, непосредственно вызывающие уже проверенные. Эти модули более высокого уровня тестируются не автономно, а вместе с уже проверенными модулями более низкого уровня. Процесс повторяется до тех пор, пока не будет достигнута вершина. Здесь завершаются и тестирование модулей, и тестирование сопряжений программы. Для каждого модуля необходимо написать небольшую ведущую программу.
Нисходящее тестирование.
Нисходящее тестирование не является полной противоположностью восходящему, но в первом приближении может рассматриваться как таковое. При нисходящем подходе программа собирается и тестируется сверху вниз. Изолированно тестируется только головной модуль. После того как тестирование этого модуля завершено, с ним соединяются один за другим, модули, непосредственно вызываемые им, и тестируется полученная комбинация. Процесс повторяется до тех пор, пока не будут собраны и проверены все модули. Для имитации функций недостающих модулей программируются модули - ”заглушки”, которые моделируют функции отсутствующих модулей.
Метод сэндвича.
Тестирование методом сэндвича представляет собой компромисс между восходящим и нисходящим подходами. При использовании этого метода одновременно начинают восходящее и нисходящее тестирование, собирая программу как снизу так и сверху и встречаясь в конце концов где-то в середине. Точка встречи зависит от конкретной тестируемой программы и должна быть заранее определена при изучении ее структуры. Если разработчик может представить свою систему в виде уровня прикладных модулей, затем уровня модулей обработки запросов, затем уровня примитивных функций, то он может решить применять нисходящий метод на уровне прикладных модулей, а на остальных уровнях применить восходящий метод.
В нашем случае применим метод сэндвича, поскольку перед проектированием основной программы необходимо создать комплекс интерфейсных и вспомогательных функций, которые, естественно должны быть проверены до создания основного тела программы.
Экономическая часть.
В большинстве случаев внедрение вычислительной техники не приносит прямого экономического эффекта. Это объясняется следующим:
сокращение числа занятых работой, автоматизировать которую призвана вычислительная техника, происходит редко - вычислительная техника автоматизирует труд, а не подменяет собой человека;
внедрение вычислительной техники требует солидных капиталовложений не только на ее приобретение, но и на обучение персонала работе с ней, а также приема на работу специалиста для обслуживания вычислительной техники, либо заключения договора на такое обслуживание;
требуется приобрести, либо же создать собственное программное обеспечение;
увеличение потребления электроэнергии;
оборудование рабочих мест, установка охранной сигнализации.















