Смекни!
smekni.com

Курсовик по FoxPro (стр. 2 из 4)

Таблица 3.1 – Поля таблицы “Table_Goods”

Значение поля Имя поля Тип Длина
Наименование Name_unit Character 20
Цена за единицу товара Price_unit Currency
Количество Amount Integer
Единица измерения Unit_measure Character 5
Дата поступления Date_recep Date
Качество товара Quality_goods Character 7
Поставщик Supplier Character 20
Общая сумма ( вы- числяемое поле) Sum=Amount*Price_unit Numeric

Составление программных запросов к базе данных

Приступим к программной реализации базы данных. Вообще следует отметить, что в Visual FoxPro существуют 2 пути реализации почти любой задачи: визуальный и программный. В первом случае необходимые действия выполняются с помощью команд меню самого FoxPro и специализированных мастеров. Во втором – с помощью встроенного языка программирования, унаследованного еще от ранних версий. Во всех случаях мы будем пользоваться вторым способом, кроме самого создания базы данных. Дело в том, что на первом этапе необходимо создать так называемый проект Visual FoxPro, в состав которого в дальнейшем будут входить все без исключения используемые нами компоненты. Для большей наглядности желательно создавать проект “вручную”. Кроме того, существуют 2 вида таблиц FoxPro: свободные и связанные, т.е. входящие в состав баз данных. Наша таблица относится ко второму типу, в то время как команда CREATE TABLE создает свободную таблицу. С учетом этого, создание базы данных проведем визуально, а все остальные манипуляции – программно.

Создание базы данных

База данных создается с помощью Диспетчера проектов Visual FoxPro. Сначала создадим новый проект. Назовем его Kurs и разместим его в папке MyProject.

Рисунок 4.1.1 – Окно диспетчера проектов

Все компоненты, которые мы сможем создать, можно связать с проектом, при этоим они будут храниться в “родном” каталоге проекта.

Теперь можно создавать базу данных. Щелкнув правой кнопкой мыши на подраздел “Базы данных” раздела “Данные”. Необходимо ввести имя будущей базы данных. Новую базу данных сохраняем в папке проекта. После этого появляется окно Дизайнера баз данных. С его помощью можно добавлять в базу данных новые компоненты: таблицы, запросы, локальные и удаленные представления, соединения и внедренные процедуры.

Рисунок 4.1.2 – Окно Дизайнера баз данных

С помощью Дизайнера баз добавим в проект таблицу.

После присвоения имени новой таблице создаем ее структуру в соответствии с заданием. Структура таблицы представляет собой список полей и их характеристику: тип данных, размер, длину символьного представления (для типа Character) и др. В поле “Caption” можно указать надпись-заголовок столбца для каждого поля, которая будет высвечиваться при отображении таблицы.

Рисунок 4.1.5 – Создание структуры таблицы

После завершения ввода можно просмотреть полученную структуру пустой таблицы, выбрав в меню команду Browse.

Заполнить таблицу можно при помощи той же команды, если выбрать в меню “Edit” пункт “Append mode” (“Режим добавления”). Результат заполнения таблицы данными показан на рисунке 4.1.6.

Рисунок 4.1.6 – Записи таблицы Table_Goods.

Выполнение фильтрации, индексации, поиск записей

В FoxPro есть команда

SET FILTER TO <условие>,

которая позволяет установить FOR-условие для всех без исключения команд обработки данных. Здесь <условие> указывает на то, какие именно записи могут быть доступны для обработки.

Выполним фильтрацию по полю “Поставщик”. Если после этого, например, написать команду BROWSE, то это будет эквивалентно BROWSE FOR supplier=’Россия’.

Рисунок 4.2.1 – Результат фильтрации по полю supplier.

Создание индексных файлов в базах данных преследует цель ускорения поиска записей и для упорядочения записей в таблицах. Вообще в FoxPro существуют 2 типа индексных файлов: *.idx (обычный индексный файл) и *.cdx (составной индексный файл, содержащий несколько индексов). В нашем случае требуется произвести индексацию по одному полю – полю “Количество товара”, поэтому создаем обычный индексный файл indtab.idx в папке проекта с помощью команды:

INDEX on amount to C:&bsol;MY_WORKS&bsol;TRANSF~1&bsol;MYPROJ~1&bsol;indtab

Следует отметить, что такое индексирование проводится только по возрастанию. Отобразим полученный результат с помощью команды LIST

LIST amount, name_unit, price_unit

Полученный результат отображен на рисунке 4.2.1

Рисунок 4.2.1 – Результат индексирования.

Отобразим все записи о товарах низкого качества

BROWSE FOR quality_goods='низкое'

Рисунок 4.2.2 – Записи о товарах низкого качества.

Найдем номер первой из записей о товаре в количестве 10.

LOCATE FOR amount=10

Найдя запись, FoxPro установит внутренний указатель на требуемую запись, не выводя никаких сообщений. То, что запись была найдена, можно увидеть в строке состояния главного окна FoxPro.

Рисунок 4.2.3 – Строка состояния FoxPro.

Полный текст программы приведен в приложении А.

Поиск записей с помощью циклов WHILE и SCAN

Для последовательного поиска самой первой записи базы данных, удовлетворяющей заданному FOR-условию и до тех пор, пока соблюдается WHILE-условие (если есть), применяется команда LOCATE. Для продолжения поиска, начатого командой LOCATE, применяется команда CONTINUE.

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

DO WHILE <условие>

<команды>

ENDDO

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

SCAN[<границы>] [FOR <условие>]

<команды>

ENDSCAN

По заданию необходимо найти все товары, поставленные из России, а также общую стоимость всех товаров, поступивших на склад в период с 15.01.2001 по 15.03.2001. Каждый из этих запросов, в свою очередь, реализован в 2-х вариантах: с использованием цикла WHILE и с использованием цикла SCAN. Полный текст программы приведен в приложении Б, а результат работы – на рисунке 4.3.1.

Рисунок 4.3.1 – Результаты работы программы.

Построение меню и выдача сообщений

Для организации в программах POPUP-меню необходимо сначала определить параметры будущего меню с помощью команды

DEFINE POPUP <POPUP- меню>,

куда входит еще довольно много параметров. Выдача меню производится по команде

ACTIVATE POPUP <POPUP-меню>.

Для выполнения какого-либо действия при нажатии клавиши или сочетания клавиш, используется следующая команда:

ON KEY [LABEL< имя клавиши>] [команда].

По заданию требуется вывести POPUP-меню с полями Name_unit, Quality_goods, Supplier, если в таблице БД есть товары с ценой < 100 р. Кроме того, при нажатии Alt+ F1 необходимо вывести сообщение ‘Ошибка памяти’. Полный текст программы приведен в приложении В, а результат работы – на рисунках 4.4.1 и 4.4.2.

Рисунок 4.4.1 – POPUP-меню.

Рисунок 4.4.2 – Сообщение, выдаваемое по Alt+F1.

Изучение графических возможностей

FOX PRO содержит средства создания изображений из элементов псевдографики:

@ <Y1,Х1,Y2, Х2> BOX <вырC>.

Команда формирует в заданных координатах рамку фон прямоугольника из любых символов, которые включены в <вырC>. Это символьное выражение может содержать до 9 символов (по 4 символа для углов и сторон прямоугольника, начиная с левого верхнего угла по часовой стрелке).

@ <Y1,Х1> TO <Y2,X2>[DOUBLE/PANEL/<окантовка>] –

команда формирует рамку с координатами X1, Y1 и X2, Y2.

@ <Y,Х> SAY <текст> –

команда выводит текст, начиная с координат X,Y.

Для задания цвета во всех вышеприведенных командах используется опция COLOR с указанием необходимой цветовой схемы. Причем при описании цвета необходимо указать не только цвет элемента, которого мы хотим нарисовать, но и цвет фона, на котором производится рисование (в нашем случае – белый).

В задании необходимо построить диаграмму количества товаров. Из-за недостатка места выведены не названия, а номера товаров. При этом столбец, относящийся к самому дорогому товару, нарисован красным цветом, а к самому дешевому – зеленым, о чем сказано в легенде.

Полный текст программы приведен в приложении Г, а результат работы – на рисунке 4.5.1.

Рисунок 4.5.1 – Диаграмма количества товаров.

Использование модулей (подпрограмм)

В языке FoxPro могут использоваться внешние и внутренние процедуры.

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

Обращение к процедуре выполняется командой DO:

DO <имя командного файла>

[WITH <список параметров>][IN <файл>]

В процедуру могут быть переданы и из нее получены некоторые величины, указанные в списке параметров после слова WITH. Этими величинами могут быть не только переменные и константы, но любые разрешенные выражения. В таком случае первой командой в вызываемой процедуре должна быть команда, воспринимающая их: