ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 27.07.2020
Просмотров: 596
Скачиваний: 5
Практикум Visual FoxPro
Основные понятия.
Информационные системы – системы обработки данных о какой – либо предметной области со средствами накопления, хранения, обновления, поиска и выдачи данных.
Данные – информация (факты, идеи), представленные в форматизированном виде, позволяющие передавать или обрабатывать ее при помощи соответствующих технических средств.
К информационным структурам (моделям) относятся: реляционная, иерархическая, сетевая.
База данных (БД) – реализованная с помощью компьютера информационная структура (модель), отражающая состояние объектов и их отношения.
Система управления базами данных - совокупность языковых и программных средств, предназначенных для создания, ведения и конкурентного использования базы данных многими пользователями.
Модель ER (Entity-Relationship model) - модель «сущность – связь», разработана в 1976 г. с целью упрощения концептуального проектирования баз данных. Основными элементами модели являются сущности, атрибуты, связи (отношения).
Сущность – различимое множество объектов (экземпляров сущности) реального мира с одинаковым набором атрибутов. Примеры сущностей: студент, факультет.
Атрибут - неотъемлемое свойство сущности, по его значению идентифицируется экземпляр сущности. Примеры атрибутов: фамилия, имя, номер группы, специальность.
Ключ - минимальный набор атрибутов, по значениям которых можно идентифицировать экземпляр сущности. Пример ключа: номер зачетной книжки.
Поле - наименьший поименованный элемент информации, хранящийся в БД
Запись – совокупность полей, соответствующих одному объекту.
Отношение один – к – одному означает, что каждая запись одной таблицы соответствует только одной записи другой таблицы.
Отношение один – ко – многим означает, что каждая запись одной таблицы связана более, чем с одной записи другой таблицы.
Нормализация баз данных – процесс уменьшения избыточности информации.
Первая нормальная форма (1НФ). Таблица находится в 1НФ, если 1) таблица не имеет повторяющихся записей 2) отсутствуют повторяющиеся группы полей 3) выполняется условие атомарности (неделимости) атрибутов.
Вторая нормальная форма (2НФ). Таблица находится в 2НФ, если 1) таблица находится в 1НФ 2) любое неключевое поле однозначно идентифицируется ключевым полем.
Третья нормальная форма (3НФ). Таблица находится в 3НФ, если 1) таблица находится в 2НФ 2) не одно из неключевых полей таблицы не идентифицируется с помощью другого неключевого поля.
Индекс – выражение (поле, поля в составном индексе, структура) позволяющее упорядочить базу данных и обеспечить прямой доступ к записи.
Регулярный (Regular) индекс – хранятся значения индексного выражения для всех записей. Несколько записей могут иметь одинаковое значение индексного выражения.
Уникальный (Unique) индекс – хранятся только неповторяющиеся значения индексного выражения. Если две записи имеют одинаковый индекс, хранится только 1 запись. Таблица может иметь несколько уникальных индексов.
Кандидат(Candidate) индекс – уникальный индекс, не содержит полей с пустыми значениями.
Первичный (Primary) индекс – уникальный индекс, используемый в качестве ключа. Не содержит полей с пустыми значениями, используется для связи таблиц. Таблица может иметь только один первичный ключ
Проектирование баз данных.
Проектирование БД включает следующие основные этапы:
-
Выбор предметной области и выбор математической модели БД, наиболее адекватно отражающей связи сущностей данной области.
-
Концептуальная разработка модели, представление инфологической модели БД на ER-диаграмме.
-
Физический этап проектирования — выбор рациональной структуры хранения данных и методов доступа к ним, исходя из арсенала методов и средств, который предоставляется разработчику конкретной СУБД.
-
Использование механизма СУБД для формирования запросов, отчетов и других форм представления данных.
В данном пособии основное внимание уделено 3 и 4 этапам проектирования. При подходе к 3 этапу вы должны четко представлять модель создаваемой БД и составляющих ее таблиц. Ваша БД должна быть нормализована.
-
Описание таблиц проекта. Допустим, в БД представляет две таблицы КЛИЕНТЫ (Client) с полями(атрибутами): код клиента (icdcl), фамилия (cfamcl), Имя (сnamecl), город (cnamecity), N товара (ntovar) и ТОВАРЫ (Tovar) c полями Код товара (icdtovar), Наименование (cnametovar), Цена (nprice), Скидка (nskidka) (Пример: см. таблицу 1).
Таблица 1
Таблица “Client”
Код клиента |
Фамилия |
Имя |
Город |
N товара |
1 |
Петров |
Илья |
Новодвинск |
3 |
Таблица “Tovar”
Код товара |
Наименование |
Цена |
Скидка |
3 |
Телевизор LG |
8000 |
0.05 |
-
Создание проекта в оболочке FoxPro. Файл(File) – Создать(New) – Проект (Project).Вам будет предложено назвать файл “proj1.pjx”. Вы можете оставить это название или дать другое. Примечание: каждая структура VFP, представленная в виде файла, имеет свое расширение. Типы файлов и их расширения указаны в Приложении 1.
-
Создание таблиц. Закладку «Данные» (Data). Выберете «Базы данных» (Data Bases) и «Создать» (New –New DataBase). Запускается конструктор таблиц (рис.1).
Рис. 1. Конструктор таблиц.
В данном конструкторе вы должны обязательно указать: имена полей (Name)-одним словом, их тип (Type), ширину (Width), количество десятичных знаков у числовых полей (Decimal),.индексированное поле или нет (Index), а у индексированных - тип индекса. Тип индекса указывается на закладке «Индексы». Код клиента ( Код товара в таблица Tovar)– ключевое поле и индекс Primary. Номер товара – обычный (Regular) индекс (т.к. номера товаров могут повторяться).
Допустимые виды полей приведены в Приложении 2.
Для удобства использования таблиц, желательно указать название поля по-русски (можно в несколько слов) и значение поля по умолчанию (Default value).
ПРИМЕР 2.1: У ключевых полей в Default value записывается функция RECNO() и тем самым организуется автоматический счетчик записей.
ПРИМЕР 2.2: У полей типа DATE (хронологической даты) в Default value можно записать функцию DATE() –текущая дата.
Возможен также ввод формата и маски ввода.
-
Связь таблиц. Для того, чтобы связать таблицы заходим в меню View – DATABASE DESINGER. Нажимаем правую кнопку мыши и добавляем (Add table) таблицы client.dbf и tovar.dbf. Затем встаем на поле icdtovar и перетаскиваем его на поле ntovar таблицы client. Получаем связь один-ко-многим.
Рис.2. Связь между таблицами Client и Tovar.
4. Команда BROWSE. Данная команда является самым доступным и мощным средством быстрого доступа к записям таблицы, их просмотра, редактирования и дополнения. Примеры применения команды BROWSE (команды можно сочетать, записав их через «пробел»):
-
Дополнение таблицы новой записью: нажать Ctrl+Y (^Y)
-
Пометить запись к удалению: мышкой кликнуть по крайнему чистому прямоугольнику слева от записи (или ^T). Для физического удаления с диска набрать команду PACK.
-
Запретить изменения в таблице: BROWSE NOEDIT
-
Запретить дополнения таблицы: BROWSE NOAPPEND
-
Вывести только записи, отвечающие условию: BROWSE FOR <условие>
-
Вывести записи только определенных полей: BROWSE поле1, поле2, …
-
Команды управления записями. Данные команды приведены в таблице 1.
Команды и функции управления записями.
Таблица 1
Команда |
Описание |
Append blank |
Добавляет в таблицу новую чистую запись |
Blank |
Стирает информацию во всех полях текущей записи |
GOTO n |
Идти в таблице к записи n |
Go Top |
Идти на 1-ю запись в таблице |
Go Bottom |
Идти на последнюю запись в таблице |
Repl <поле> With <выр.> |
Заполняет <поле> таблицы <выражением> |
RecCount() |
Определяет число записей в открытой таблице |
Recno() |
Номер текущей записи в открытой области |
Set filter to <выр.> |
Устанавливает фильтр на записи, согласно <выражению> |
Select <имя таблицы> |
Открывает таблицу в текущей области |
Skip |
Передвигает указатель в таблице на запись вперед (назад skip –1) |
Примечание: Снимается фильтр просто командой SET FILTER TO
Примеры использования данных команд и функций:
ПРИМЕР:
1) Пусть имеется поле Цена (Numeric) и Количество (Numeric). Требуется вычислить произведение Цена*Количество и занести результат в поле Стоимость(Numeric) для одной записи:
REPL Стоимость WITH Цена*Количество
2) Тоже самое для ВСЕХ записей в которых Количество >10:
REPL ALL Стоимость WITH Цена*Количество FOR Количество>10
Управляющие конструкции языка FoxPro
1. Конструкция IF …ENDIF
IF условие
Команды (операторы)
ELSE
Команды (операторы)
ENDIF
2. Конструкция IIF (непосредственно выполняемый оператор IF, имеющий вид функции)
IIF(условие,значение для .T., значение для .F.)
Пример: y=IIF(x>0,1,-1) –если x>0 то y=1 иначе y=-1
3. Конструкция DO CASE … ENDCASE
Конструкция последовательно проверяет условия, расположенные за словом CASE. Если условие выполняется, выполняются команды, расположенные ниже (до следующего слова CASE). Затем управление передается на конец конструкции (endcase)
Конструкция |
Пример |
DO CASE CASE условие1 Команды (операторы) CASE условие1 Команды (операторы) ENDCASE |
DO CASE CASE x>=pi( ) Y=cos(x) (выполняется при x>=) CASE x>0 Y=Sin(x) (выполняется при >x>0) ENDCASE |
4. Цикл FOR … NEXT
Шаг цикла может быть отрицательным или опущен (по умолчанию шаг равен 1). Пример:
FOR i=10 to 1 step -0.5
? i
NEXT
-
Цикл DO WHILE … ENDDO
Условие, стоящее за словом While (пока) проверяется на истинность при входе в цикл и с каждым проходом цикла. Возможен досрочный выход из цикла (Exit). Пример:
DO WHILE условие Команды (операторы) [EXIT] ENDDO |
X=1 DO WHILE X<10 (пока X<10) S=S+X IF S>8 (если S>8 то досрочный выход) EXIT ENDIF X=X+1 (изменение параметра цикла) ENDDO |
-
Цикл SCAN … ENDSCAN
Цикл предназначен для непосредственной работы с записями таблицы. В примере на все телевизоры (из таблицы “Tovar” назначена скидка 0.1 (10%)
SCAN [FOR условие] операторы [EXIT] ENDSCAN |
Select Tovar (выбираем таблицу) Scan FOR cnametovar=”телевизор” REPL skidka WITH 0.1 EndScan |
-
Процедуры.
Вы можете хранить каждую процедуру в отдельном программном файле (типа *.prg) или выполнить несколько процедур в одном файле. В последнем случае вам перед обращение к процедурам нужно задать имя процедурного файла: SET PROCEDURE TO имя_файла.
Синтаксис процедуры |
Вызов процедуры |
PROCEDURE имя_процедуры PARAMETERS список_параметров <Тело процедуры> RETURN |
DO имя_процедуры WITH список_параметров |
Пример: Преобразовать в строке каждую букву в словах в прописную и удалить «пробелы» в начале и в конце строки. Назовем нашу процедуру FIO:
S=" петров иван петрович "
DO fio WITH s (вызов процедуры и передача в нее значения переменной S)
? S (получим на экране результат: Петров Иван Петрович)
PROCEDURE FIO
PARAMETERS st
st=alltrim(proper(st))
RETURN
Объектно-ориентированное программирование
VFP является объектно-ориентированным, визуально программируемым языком, управляемым по событиям.
Последовательность выполнения действий в VFP:
-
Событие (нажатие клавиши, клик)
-
Определяется связанный с этим событием объект (кнопка, поле, форма и т.д.)
-
Вызывается метод, содержащий действия по обработке данного события.
Базовые понятия в VFP – объект и класс.
Класс содержит информацию о том, как должен выглядеть объект и определяет выполняемые им действия.
Объект является экземпляром класса, который наследует характеристики класса и имеет определенные свойства и методы.
Свойства объекта находятся в окне PROPERTIES. Данное окно имеет 5 закладок:
ALL – все свойства и методы
DATA - данные Пример:ControlSource
Metods - методы (Click, DblClick, KeyPress)
Layout - планировка (размер шрифта и т.д)
Over - другие (класс и т.д.)
Идентификация объекта :
по имени: Form1.command1.caption=”Выход”
по ссылке: ThisForm.BackColor=RGB(128,128,255)
Характеристики ООП :
1)ИНКАПСУЛЯЦИЯ (Свойства и методы существуют только вместе с объектом).
2)НАСЛЕДОВАНИЕ (Объект наследует свойства класса).
3)ПОЛИМОРФИЗМ (Использование имен одних и тех же методов для выполнения различных действий)