Главная Рефераты по рекламе Рефераты по физике Рефераты по философии Рефераты по финансам Рефераты по химии Рефераты по хозяйственному праву Рефераты по цифровым устройствам Рефераты по экологическому праву Рефераты по экономико-математическому моделированию Рефераты по экономической географии Рефераты по экономической теории Рефераты по этике Рефераты по юриспруденции Рефераты по языковедению Рефераты по юридическим наукам Рефераты по истории Рефераты по компьютерным наукам Рефераты по медицинским наукам Рефераты по финансовым наукам Рефераты по управленческим наукам Психология и педагогика Промышленность производство Биология и химия Языкознание филология Издательское дело и полиграфия Рефераты по краеведению и этнографии Рефераты по религии и мифологии Рефераты по медицине Рефераты по сексологии Рефераты по информатике программированию Краткое содержание произведений |
Реферат: Билеты, решения и методичка по Информатике (2.0)Реферат: Билеты, решения и методичка по Информатике (2.0)
КИЕВСКИЙ НАЦИОНАЛЬНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ КРЫМСКИЙ ЭКОНОМИЧЕСКИЙ ИНСТИТУТ по дисциплине: «Информатика и компьютерная техника» Экзаменационный билет № 261. Работа с несколькими БД. Понятие рабочей области. Использование псевдонимов. Составное имя поля. 2. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
3. Задача Зав. кафедрой Преподаватель КИЕВСКИЙ НАЦИОНАЛЬНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ КРЫМСКИЙ ЭКОНОМИЧЕСКИЙ ИНСТИТУТ по дисциплине: «Информатика и компьютерная техника» Экзаменационный билет №271. Типы бинарных связей. Привести примеры. 2. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
3. Задача Зав. кафедрой Преподаватель КИЕВСКИЙ НАЦИОНАЛЬНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ КРЫМСКИЙ ЭКОНОМИЧЕСКИЙ ИНСТИТУТ по дисциплине: «Информатика и компьютерная техника» Экзаменационный билет № 281. Пример программы работы с двумя БД (с использованием окон). 2. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
3. Задача Зав. кафедрой Преподаватель КИЕВСКИЙ НАЦИОНАЛЬНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ КРЫМСКИЙ ЭКОНОМИЧЕСКИЙ ИНСТИТУТ по дисциплине: «Информатика и компьютерная техника» Экзаменационный билет № 291. Работа с фильтрами. 2. Дана база данных (БД) о кадровом составе фирмы, которая содержит следующие данные: Название поля Тип Пояснение TAB numeric табельный номер FIO character ФИО POL character пол DATA date дата рождения OBR logical наличие высшего образования LANG numeric кол-во ин. языков, кот-ми влад. работник STAG numeric стаж работы на фирме DETI numeric количество детей SRZAR numeric среднемесячная зарплата COMP logical знание ПК Определить, каков процент работников фирмы имеет детей. 3. Задача Зав. кафедрой Преподаватель КИЕВСКИЙ НАЦИОНАЛЬНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ КРЫМСКИЙ ЭКОНОМИЧЕСКИЙ ИНСТИТУТ по дисциплине: «Информатика и компьютерная техника» Экзаменационный билет № 301. Установление связей 1:1 и 1:N в FoxPro. 2. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
3. Задача Зав. кафедрой Преподаватель
КИЕВСКИЙ НАЦИОНАЛЬНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ КРЫМСКИЙ ЭКОНОМИЧЕСКИЙ ИНСТИТУТ по дисциплине: «Информатика и компьютерная техника» Экзаменационный билет № 181. Средства разработки меню (POPUP – меню). 2. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
3. Задача Зав. кафедрой Преподаватель
2 2. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
2. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
2. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
2. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
2. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
2. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
2. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
2. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
2. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
2. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
2
2. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
1. СУБД FOXPRO: ОЗНАКОМЛЕНИЕ С СИСТЕМОЙ РАБОТА В МЕНЮ-ОРИЕНТИРОВАННОМ РЕЖИМЕ 2 3. СОЗДАНИЕ КОМАНДНЫХ ФАЙЛОВ 7 6.СРЕДСТВА ПРОГРАММИРОВАНИЯ 11 10. РАБОТА С НЕСКОЛЬКИМИ БАЗАМИ ДАННЫХ 16 12.1. СТАНДАРТНЫЕ ФУНКЦИИ FOXPRO 19 ВВЕДЕНИЕ Методические указания предназначены для проведения практических и лабораторных занятий по дисциплине «Информатика и компьютерная техника» для всех форм обучения. В них кратко изложены технологии реляционных СУБД, реализация их средствами СУБД FoxPro, а также даны практические приемы их реализации. Основное внимание уделено изложению команд языка программирования среды FoxPro с пояснениями на конкретных примерах и заданиях по основным темам. РЕЛЯЦИОННАЯ МОДЕЛЬ По способу установления связей между данными различают реляционную, иерархическую и сетевую модели. Реляционная модель является удобной и наиболее привычной формой представления данных в виде таблицы. В математических дисциплинах таблице соответствует термин отношение (relation). Отсюда и произошло название модели – реляционная. Одним из основных преимуществ реляционной модели является ее однородность. Все данные рассматриваются как хранимые в таблицах, в которых каждая строка имеет один и тот же формат. Каждая строка в таблице представляет некоторый объект реального мира или соотношение между объектами. Пользователь модели сам должен для себя решить вопрос, обладают ли соответствующие сущности реального мира однородностью. Этим самым решается проблема пригодности модели для предполагаемого применения. Реляционная модель имеет два главных свойства:
Соотношение – это математическая концепция, описывающая, как соотносятся между собой элементы двух множеств. Модель предъявляет к таблицам следующие требования:
Два фундаментальных правила: правило целостности объектов (entity integrity rule) и правило ссылочной целостности (referential integrity rule). Первичный ключ – это столбец или некоторое подмножество столбцов, которые уникально, т.е. единственным образом определяет строки. Первичный ключ, который включает более одного столбца, называется множественным или комбинированным или составным. Остальные ключи, которые можно также использовать в качестве первичных, называются потенциальными или альтернативными ключами. Внешний ключ – это столбец или подмножество одной таблицы, который может служит в качестве первичного ключа для другой таблицы. Внешний ключ таблицы является ссылкой на первичный ключ другой таблицы. Правило целостности объектов утверждает, что первичный ключ не может быть полностью или частично пустым, т.е. иметь значение null. Правило ссылочной целостности гласит, что внешний ключ может быть либо пустым, либо соответствовать значению первичного ключа, на который он ссылается. Формальное определение следующее: Схемой отношения R называется конечное множество имен атрибутов {A,A,…,A}. Каждому имени атрибута A ставится в соответствие множество D, называемое доменом атрибута A, 1 обозначается также dom(A). Имена атрибутов иногда называются символами атрибутов или просто атрибутами. Домены являются произвольными непустыми конечными или счетными множествами. Пусть D=DD…D. Отношение r со схемой R – это конечное множество отображений {t,t,…,t} из R в D; причем каждое отображение tr должно удовлетворять следующему ограничению: t(A) принадлежит D, 1кортежами. Семейство систем управления базами данных FoxPro, является продуктом известной фирмы Fox Software и имеет широкую популярность во всем мире. В настоящем пособии рассматривается версия FoxPro2.6 (нерусифицированная), работающая под управлением Windows. ТИПЫ ДАННЫХ Visual FoxPro 6.0 типы данных
В среде FoxPro установлены следующие стандартные типы файлов (всего свыше 60, приводятся лишь некоторые): .dbf - файл базы данных; .fpt - файл для хранения текстов memo- полей; .idx - индексный файл; .cdx - мультииндексный файл; .prg - командный, программный файл; .mem - файл для хранения временных переменных; .fxp - откомпилированный комадный prg- файл; .pjx - файл проекта. 1. СУБД FOXPRO: ОЗНАКОМЛЕНИЕ С СИСТЕМОЙ РАБОТА В МЕНЮ-ОРИЕНТИРОВАННОМ РЕЖИМЕРабота в среде FoxPro выполняется в одном из следующих режимов: - непосредственная интерпретация команд; - меню - ориентированный режим;
При работе в первом режиме пользователь вводит текст команды в командном окне. Среда осуществляет синтаксический контроль и выполняет команду. Некоторые команды в процессе выполнения проводят собственный диалог с пользователем, другие могут выдавать лишь краткие сообщения об итогах работы. Второй режим предназначен для начинающего пользователя, который не освоил еще языка команд. Наконец, режим выполнения программ подразумевает, что пользователь будет писать программы, используя язык команд xBase, дополненный специальными командами программирования. Весь цикл по написанию, отладке и выполнению программ можно осуществлять в среде системы. МЕНЮ - ОРИЕНТИРОВАННЫЙ РЕЖИМ. Рабочее пространство FoxPro представлено окном, верхняя строка которого является строкой главного меню системы. Под ней - рабочая зона пользователя. В рабочем пространстве открыто также командное окно, размер и положение которого можно изменять либо удалить. Активизация строки меню F10 Выбор заголовка меню клавиши управления курсором Вход в меню следующего уровня Enter Отмена Esc За клавишами F1-F10 закреплены стандартные директивы, назначение клавиш можно переопределить. Горячие клавиши (например, CTRL+F2 - активизация командного окна, CTRL+D - выполнение программ) Главное меню состоит из заголовков групп операций и команд: Для FoxPro 2.6 системное меню выглядит следующим образом SYSTEM FILE EDIT DATABASE RECORD PROGRAM WINDOWКаждой группе соответствует меню второго уровня - меню операций и директив, некоторые из них открывают свои диалоговые окна. Перемещения внутри окон – клавишами управления курсором, по полям окон - Tab. В диалогах используются командные "кнопки", изображенные на экране. К ним относятся, например. Ok (подтверждение установок). Cancel (отмена установок). Save (сохранение) и многие другие. Недоступные пункты главного меню и директивы имеют пониженную яркость. Рассмотрим некоторые пункты главного меню. System-меню – вспомогательные средства FoxPro, в том числе: About FoxPro - предъявление фирменного знака. Help - помощь. Просмотр и выбор варианта помощи – клавиши управления курсором. Вход в следующее меню - Enter. Перемещение – клавиши управления курсором. Контекстная помощь вызывается из любого режима - F1. Macros - закрепление макрокоманд за клавишами F1 - F10. Filer - менеджер файлов - выполняет функции управления файлами. Выбор полей - Tab. Левое поле - просмотр файлов (скроллинг). Правое поле - выбор накопителя, каталога, маркировка. Нижнее поле -манипуляция файлами. Calculator - вызов калькулятора. Calendar-Diary - вызов календаря для внесения записей. Левое поле – выбор дня (по стрелкам), месяца (PgUp, PgDn), года (Shift +PgUp, Shift+PgDn), текущая дата - Т. Правое поле - для записей (Вход - Tab, Выход -Shift Tab). Special Characters - таблица символов псевдографики. ASCII Chart - таблица ASCII-кодов. Capture - взятие в буфер заданной области экрана. Puzzle - игра File-меню: New - создание Open - открытие Close - закрытие Save - сохранение Save as - сохранение с новым именем Revert - возврат предыдущей версии файла Printer Setup - установки принтера Print - печать файла Quit - выход При создании нового файла (New) пользователю предлагается выбрать тип создаваемого файла: базы данных, программный, текстовый, индексный, генератора отчетов или др. Выбранный тип получает пометку (•) . Edit – меню – встроенный текстовый редактор системы. Undo - отмена последнего действия, Redo - повторение отмененного действия, Cut - вырезка части текста в буфер, Сoру - копирование части текста в буфер, Paste - вывод содержимого буфера в текст, Clear - очистка части текста, Select All - выделение всего текста окна, Goto Line - переход к строке, Find - поиск заданного фрагмента текста, Find Again - поиск следующего вхождения, Replace and Find Again - последовательный поиск с заменой, Replace All - полная замена всех вхождений, Preference - настройка редактора. Database – меню – работа с данными, хранимыми в БД Setup - модификация баз данных, индексов, фильтров, Browse - вызов команды полноэкранного редактирования, Append From - добавление записей из других БД или файлов, Copy То - копирование в другие БД или файлы, Sort - сортировка записей, Total - создание БД с суммами по заданному признаку, Average - среднее арифметическое числовых полей, Count - подсчет записей с указанным признаком, Sum - суммирование числовых полей, Calculate - вычисления в БД, Report - подключение ранее созданной формы отчета, Pack - физическое удаление помеченных полей, Reindex - переиндексирование базы. Record-меню – работа с записями файлов БД Append - вызов окна дополнения БД новыми записями,Change - вызов окна редактирования записей,Goto - переход к указанной записи,Locate - последовательный поиск записи по ключу,Continue - продолжение поиска,Seek - ускоренный индексный поиск по ключу,Replace - изменения (вычисления) в БД,Delete - пометка записей для удаления, Recall - снятие пометок для удаления. Program – меню – средства работы с программами Do - выбор командного файла и исполнение, Cancel - прерывание программы, Resume - продолжение программы, Compile - переход в окно компиляции, Generate - вызов генератора приложений, FoxDoc - вызов документатора программ, FoxGraph - вызов графического пакета. Window-меню – работа с окнами Hide - удаление командного окна с экрана, Clear - очистка рабочего поля, Move - перемещение командного окна, Size, Zoom - изменение размера командного окна, Cycle - циклическое переключение активных окон, Color - выбор цветовой схемы, Command - активизация командного окна, Debug - вызов отладочного окна, Trace - трассировка программ, View - переход в View Подробную информацию о работе в меню - ориентированном режиме можно получить из контекстной помощи (Help - F1). Ввод, редактирование, удаление, поиск, просмотр данных можно выполнить для открытой в View-окне базы данных с помощью команд Record-меню из главного меню: - добавление, ввод данных; - изменение, корректировка полей записей; - пометка записей к удалению; - отмена пометки к удалению; - замена значений полей; - переход к записи, положение которой указывается в диалоговом окне с помощью селекторных кнопок: - к первой записи, - к последней записи - по указанию номера записи, - смещение от активной записи по указанию шага - поиск данных путем указания в окне критериев поиска: - область поиска выбирается из альтернатив: - все записи файла; - следующая за активной записью; - по указанию номера записи; - оставшиеся, начиная с активной; - указание логических условий отбора по значениям полей в окне редактора выражений; - отбор данных, пока истинно логическое условие ; - быстрый поиск для индексированного файла данных Команды Record-меню не затрагивают физической структуры базы данных. Замечание: В открытом Browse-окне удобно использовать комбинации клавиш: ^ N - дополнение, ^Т - пометка к удалению, ^W- выход с сохранением изменений. Команды Database-меню дают следующие возможности: - аналоги одноименных команд из меню Window/View;
- сжатие данных, удаление помеченных записей. - сортировка записей по заданному ключу с перезаписью в другой файл данных. Дополнительные возможности работы с данными в меню — ориентированном режиме можно освоить с помощью Help-меню. Более широкий круг возможностей работы с созданной базой данных, удовлетворяющих всем информационным потребностям пользователя, обеспечивает покомандный режим работы (набор команд в Command-окне) либо программный режим (создание командных prg-файлов). 2.ОСНОВНЫЕ КОМАНДЫ FOXPROВ настоящем разделе приводится краткое описание основных команд языка программирования среды FoxPro, которые можно задавать непосредственно в Command- окне либо использовать в тексте программ. Получение командные файлы выполняются в режиме интерпретации. Продуктивное освоение языка возможно только при практической проработке материала на компьютере. Формат команды FOXPRO: ИМЯ_КОМАНДЫ [] [ [ FОR] [WHILE< условие>] Здесь < зона действия > - границы действия команды: ALL - все записи; REST - все записи от текущей до конца; NEXT - следующие N записей; RECORD - запись с номером N; FОR - выполнение команды только для записей, удовлетворяющих условию; WHILE< условие > - выполнение команды только до тех пор, пока не перестанет выполняться условие. Пример: LIST ALL FIELDS num, name FOR name = 'A' Для длинных записей команд используется символ переноса на следующую строку - ";". КОМАНДЫ УСТАНОВКИ Кроме приведенных выше команд в FOXPRO имеется большой класс команд, называемых командами установки. Они не выполняют каких-либо действий, но влияют на работу других команд. Имеется два типа команд установки: SET < параметр > ON|OFF SET < параметр1 > TO < параметр2 > ON|OFF – означает, что установка либо включена, т.е. работает, либо выключена. Примеры: SET TALK OFF – погашения вывода служебных сообщений о работе команд на экран; SET PROCEDURE TO a:\proc1 – назначение процедурного файла. Перечень наиболее часто используемых команд установки приведена в Приложении 2. Перейдем к рассмотрению конкретных команд. ДИАЛОГОВЫЕ КОМАНДЫСоздание и изменение структуры файла базы данных. СRЕАТЕ - создание структуры БД в диалоге. Пример Название поля Тип Пояснение TAB numeric табельный номер FIO character ФИО POL character пол DATA date дата рождения OBR logical наличие высшего образования LANG numeric кол-во ин. языков, кот-ми влад. Работник STAG numeric стаж работы на фирме DETI numeric количество детей SRZAR numeric среднемесячная зарплата COMP logical знание ПК MODIFY STRUCTURE - изменение структуры открытой БД. При вызове этих команд среда открывает диалог, предоставляя экран-форму для ввода данных о структуре создаваемого файла базы данных. КОМАНДЫ РЕДАКТИРОВАНИЯAPPEND [BLANK] - добавление записи в конец открытой БД ([BLANK] -пустая запись). INSERT [BLANK] [BEFORE] - вставка записи до [BEFORE] или после текущей записи. CHANGE [] [FIELDS] [WHILE ] [ FOR < условие >] - редактирование значений полей. DELETE [зона действия] [WHILE ][FОR] пометка записей признаком удаления. BROWSE... - команда доступа пользователя к данным. При вызове этих команд и наличии открытой базы данных среда развертывает для пользователя окно редактирования. Команда BROWSE будет рассмотрена несколько позже. ПРОСМОТР ДАННЫХ. Команды DISPLAY и LIST DISPLAY [][]FOR[]WHILE[] [OFF] [TO PRINT / TO FILE] Команда LIST с похожими функциями не делает остановок при выдаче данных и по умолчанию область ее действия - весь файл, а команды DISPLAY- одна текущая запись. Примеры: DISPLAY REST FOF fio= ’И’ LIST 'фамилия', fio FOR dolg = "инженер" Удаление данных ERASE - удаление закрытого файла; ZAP - удаление всех записей с сохранением структуры; DELETE [] [WHILE< условие >] [FOR< условие >] - пометка к удалению или логическое удаление записей; PACK - физическое удаление, помеченных к удалению записей; RECALL [] [WHILE< условие >] [FOR< условие >] - снятие пометок к удалению; Замечание. помеченные к удалению записи остаются в БД, однако они могут не обрабатываться другими командами, если была выполнена установка SET DELETE ON. Выполнение команды PACK приводит к физическому уничтожению записей, БД при этом сжимается. Фильтрация данных SET FILTER ТО [] - установка FOR-условия для всех команд обработки данных (остальные данные недоступны). SET FILTER TO без параметра - отменяет ограничения. Пример: Изменение данных REPLACE [] [WHILE] [FОR] WITH[, WITH …] [ADDITIVE] - множественное изменение полей в соответствии с выражениями. Пример: REPLACE zarp with zarp* 1.25 for dolg=”инженер” Последовательный поиск LOCATE FОR [] [WHILE] - поиск первой удовлетворяющей FOR-условию записи, При успешном поиске указатель записей устанавливается на найденную запись. CONTINUE - продолжение поиска Пример: USE KADR LOCATE FOR stag > 12 DO WHILE ! EOF() && пока не достигнут конец файла данных ? FIO CONTINUE ENDDO Перечисленные команды могут быть выполнены путем выбора из в системном меню или непосредственным набором в Command-окне. Наряду с другими командами и средствами программирования, приводимыми далее, они могут использоваться также в текстах программ. 3. СОЗДАНИЕ КОМАНДНЫХ ФАЙЛОВКомандные файлы представляют собой исходные тексты программ и имеют тип .prg. Они создаются с помощью встроенного редактора FoxPro , вызываемого командой MODIFY COMMAND По команде MODI COMM (допустимое сокращение) без указания имени по умолчанию создается prg-файл без имени. Присвоить имя следует при первом сохранении текста программы. Удобно использовать комбинацию клавиш ^W для сохранения текста программы. Для редактирования ранее созданной программы используют команду MODI СОММ . Для запуска программ используется команда DO Созданная программа выполняется в режиме интерпретации . При обнаружении ошибки выполнение прерывается и комментируется сообщением. Пример. Приводится текст программы, предназначенной для отображения всех записей БД, содержащих информацию о сотрудниках, получающих зарплату меньше 200. SET TALK OFF SET DATE BRITISH USE KADR LOCATE FOR Zarp < 200 DO WHILE !EOF() && пока не достигнут конец файла данных DISPL CONTINUE ENDDO 4.Команда полноэкранного редактирования BROWSE Команда BROWSE представляет собой целую среду редактирования. Она имеет более 20 различных параметров. Рассмотрим наиболее часто используемые из них. Формат команды. BROWSE [FIELDS] [FОR] [FORMAT] [FREEZE] [КЕУ,[,]] [LAST] [LEDIT / REDIT] [LOCK] [LPARTITION] [NOAPPEND] [NOCLEAR] [NODELETE] [NOEDIT/NOMODIFY] [NOLGROD / NORGRIG] [NOLINK] [NOMENU] [NOOPTIMIZE] [NORMAL] [NOWAIT] [PARTITION] [REST] [PREFERENCE] [TIMEOUT] [ТITLЕ] [NOOPTIMIZE] [WHEN< ycловие3>] [window] [NOWAIT] [VALID[F:] [ERROR] [COLOR SCHEME / COLOR] Действие некоторых опции команды. 1. Выбор полей FIELDS< список полей> - перечень полей (по умолчанию - все). Ключи: :R - разрешен только просмотр поля; : - видимый размер поля; :У= - контроль выхода из поля; :F - проверка вводимых и существующих данных; :Е= - выдача собственного сообщения; :Р= - задание формата отображения данных по шаблону; :Н= - указание собственного заголовка поля; :В=,[:Е] - указание границ чисел или дат; :W= - контроль входа в поле. В список полей могут включаться так называемые вычисляемые поля, которые являются функциями других полей или переменных. 2. Отбор данных FОR - устанавливает фильтр для записей; выводятся только записи, удовлетворяющие ; REST - предотвращает повторный поиск сначала; КЕУ[,] - ограничение действия команды диапазоном ключевого выражения активного индексного файла З. Разделение окна LOCK BROWSE - окно делится на две части, где первые полей дублируются в левой части окна (переход ^Н); PARTITION - то же, но граница проходит по полю LEDIT/REDIT - действуют только в разделенном окне и задают форму представления данных (формуляр); LPARTITION - курсор устанавливается в левой половине окна; NOLINK - несинхронное перемещение видимых записей; NOLGRID/NORGRID - удаляет вертикальные линии разделители полей. 4. Контроль редактирования записей VALID[ERROR] - анализирует условия для текущей записи; WHEN - определяет возможность доступа к записи; NOAPPEND - дополнение по Ctrl-N невозможно; NOEDIT/NOMODIFY - редактирование невозможно; NODELETE - редактирование невозможно; FREEZE - единственное доступное поле. 5. Конфигурирование BROWSE-окна LAST - сохранение конфигурации; PREFERENCE FORMAT - использование форматного файла; NOCLEAR - после выхода окно не удаляется; NOMENU - подавляет вывод системного меню; TIMEOUT - время работы с окном; TITLE - заголовок окна; WINDOW - позволяет открыть другое окно. Пример: Set talk off set date British use kadr.dbf browse ; title '^t-удаление ^n-добавление ^w-выход'; fields ; fio :h='ФИО' :20, ; dolg :h='должность', ; zarp :h='зарплата ' ,; birth :h='день рождения' ,; pol :h='рол' ,; adress :h='адрес' ,; godzarp = zarp*12 :h='год.зарплата' :p='#####,##' pack close all 5.КОМАНДЫ ВВОДА-ВЫВОДАСредства неформатированного ввода/вывода Команда вывода ? / ?? ? / ?? [] [АТ][,...] Команда ? выводит выражения [] …[,] с новой строки, ?? - в текущей строке; AT -номер столбца в строке вывода. Команда вывода TEXT TEXT
ENDTEXT Эта команда удобна для вывода больших объемов текста, текст выводится в том виде, как он выглядит в команде. Команды вывода \ и \\ \ - вывод строки и перевод курсора в начало следующей строки. \\ - вывод без перевода курсора. Другие команды ввода-вывода INPUT ТО ACCEPT ТО WAIT [] [ТО] [TIMEOUT] [WINDOW] [CLEAR] Подробные комментарии и примеры можно найти в соответствующем разделе HELP среды FoxPro. СРЕДСТВА ФОРМАТНОГО ВВОДА/ВЫВОДА Команда @ ... SAY ... GET Формат команды : @ [SAY [PICTURE] [COLOR SCHEME / COLOR]] [GET [PICTURE] [DEFAULT] [ENABLE / DISABLE] [MESSAGE] [[OPEN] WINDOW ] [RANGE [][]] [SIZE,] [VALID/[ERROR]] [WHEN] [COLOR SCHEME/COLOR]] Здесь Y,X - пара чисел или переменных, определяющих номер строки и столбца. Команда @ без других параметров устанавливает курсор в заданную позицию и очищает строку Y вправо от X. Параметры команды @ Y,X SAY - выдает с заданной позиции любого типа (поля БД, переменные и пр.); в сложном выражении элементы соединяются знаком "+"; @ Y,X GET - с заданной позиции выдается переменная или поле записи с возможностью редактирования (переменная уже должна существовать); DEFAULT - действует только при работе с переменными; задает выражение по умолчанию и предъявляет к редактированию; ENABLE/DISABLE - разрешает/запрещает доступ к get-полю; MESSAGE - для данного поля выдает пояснение в строке вывода сообщений; RANGE - контролирует диапазон значений; SIZE - определяет область, отводимую под редактирование; VALID... - логический контроль ввода; WHEN - вход в редактируемое поле допускается только при истинности выражения; [OPEN] WINDOW - используется с memo-полями; COLOR SCHEME /COLOR- определяет раскраску полей ввода-вывода. Возможно соединение фраз SAY и GET в одной команде. При этом GET осуществляет предъявление и возможность редактирования. После команды или группы команд GET должна обязательно следовать команда READ. Эта команда приостанавливает выполнение программы до заполнения всех GET -полей и присваивает соответствующие значения переменным или полям базы данных. Примеры: 1) В 10 строке, 15 колонке вывести текст 'ЗАРПЛАТА - ', в этой же строке обеспечить поле ввода для переменной и контроль за правильностью ввода (введенное значение должно находится в интервале [100.00,1778.00] ). X = 100.00 @ 10,15 SAY 'ЗАРПЛАТА - ' GET X RANGE 100.00,1778.00 READ 2) Обеспечить ввод значений зарплат только кратным 10 @ 10,15 SAY 'ЗАРПЛАТА - ' GET X VALID MOD(X/10) = 0 READ Шаблон PICTURE разрешает ввод только определенных символов данных: А - ввод только букв; L - ввод только логических данных T / F; N - ввод только букв и цифр; Х - ввод любых символов; Y - ввод только логических данных Y/N; 9 - ввод только цифр в символьных данных, цифр и знаков "+","-" - в числовых данных; # - ввод цифр, пробелов и знаков "+","-"; ! - преобразует строчные буквы в прописные; * - перед числами; . - задает позицию десятичной точки. Пример: @ 10,8 SAY 'ЗАРПЛАТА - ' PICTURE ###.##' 3) Пример создания форматного файла CADR.FMT, для редактирования данных в отношении CADR.DBF. Вид экранной формы: ДАННЫЕ О СОТРУДНИКЕ Текст файла CARD.FMT @ 4, 30 SAY 'ДАННЫЕ О СОТРУДНИКЕ' @ 5, 9 ТО 11, 70 DOUBLE @ 5, 41 SAY ‘Сегодня '+DТОС(DАТЕ( )) + ' ' @ 6, 18 SAY 'Фамилия, инициалы: ' GET fio @ 7, 18 SAY ‘Табельный номер: ' GET tab @ 7, 40 SAY Должность: ' GET Dolg @ 10, 12 SAY 'Выход с сохранением изменений - ^End, без - Esc' Созданный форматный файл может быть использован в программе с помощью команды SET FORMAT ТО . Фрагмент программы: SET FORMAT TO CARD.FMT CHANGE SET FORMAT TO 6.СРЕДСТВА ПРОГРАММИРОВАНИЯПриведенные выше команды относятся к языковым средствам определения данных и манипулирования данными. Наряду с ними язык программирования среды FoxPro обладает присущими языкам высокого уровня возможностями, такими как использование переменных и массивов, организация ветвлений и циклов, создание процедур и другими. ПЕРЕМЕННЫЕ В FoxPro разрешается иметь переменные тех же типов, что и поля таблиц БД (кроме мемо). Тип переменной определяется типом последнего присваиваемого ей выражения. Команда присваивания: = или STORE ТО Примеры: a = b^2 + 2*c – 3*a STORE 0 ТО a,b,c – присвоение нулевого значения переменным a,b,c МАССИВЫ ПЕРЕМЕННЫХ Разрешена работа с одномерными и двумерными массивами переменных. Описание массивов выполняет команда: DECLARE / DIMENSION < переменная >([,]) . Пример: DIMENSION а(3,4), b(4) Максимальное количество и максимальная размерность массивов 3600. Значения элементов массива формируются присваиванием им значений выражений либо в результате обмена с БД посредством следующих команд: Команды управления Команда IF : Команда DO CASE: IF DO CASE CASE [ELSE ] CASE ENDIF [OTHERWIZE ] ENDCASE Кроме этих команд имеется очень полезная функция IIF ( ) (см. приложение) Примеры: 1. Найти максимальное значение из двух величин. CLEAR INPUT “ Введите X” TO X INPUT “ Введите Y” TO Y IF X > Y max = X ELSE max = Y ENDIF ? “ Максимальное значение равно: ”, max WAIT
2 CLEAR INPUT “Введите X” TO X DO CASE CASE X < 0 Y = -2*X^2 +5*X CASE X>=0 AND X < 5 Y = 15 – 2*X^2 CASE X>=5 Y = ABS(12*X – SIN(12)) ENDCASE ? "Y = " ,Y CLOSE ALL ОРГАНИЗАЦИЯ ЦИКЛОВ Цикл с условием DO WHILE Выход из цикла - EXIT Возврат к началу цикла - LOOP ENDDO Цикл вида DO WHILE .T. ENDDO применяется как операторные скобки. Цикл с параметром FOR = ТО [STEP ] ENDFOR ЦИКЛ СКАНИРОВАНИЯ SCAN [] [FOR] [WHILE] ENDSCAN - применяется для перемещения в базе данных и выполнения команд для каждой записи, отвечающей условиям. Примеры: Приводятся фрагменты программ поиска в БД Kadr всех записей с фамилией на букву 'И'. 1) USE Kadr 2) USE Kadr LOCATE FOR fio = 'И' SCAN FOR fio= 'И' DO WHILE ! EOF( ) ENDSCAN CONTINUE ENDDO ПРОЦЕДУРЫ В FoxPro используются процедуры как внутренние так и внешние, а также процедуры-функции. Внутренняя процедура должна начинаться командой PROCEDURE и заканчиваться командой RETURN. Внешние процедуры могут быть объединены в prg-файл и подключаются командой SET PROCEDURE TO . Обращение к процедуре : DO [WITH ] [IN FILE ], где - список фактических параметров. Все входные фактические параметры перед вызовом процедуры должны быть определены. Формальные параметры описываются в процедуре командой PARAMETERS. Процедура-функция начинается командой FUNCTION , вырабатывает в результате своей работы единственное значение и может непосредственно использоваться в других командах. Процедура-функция завершается командой RETURN , где выражение есть результат функции. Процедуры В FoxPro используются процедуры как внутренние так и внешние, а также процедуры - функции. Внутренняя процедура должна начинаться командой PROCEDURE и заканчиваться командой RETURN. Внешние процедуры могут быть объединены в prg-файл и подключаются командой SET PROCEDURE TO . Обращение к процедуре : DO [WITH ] [IN FILE ] Параметры описываются в процедуре командой PARAMETERS. Процедура-функция начинается командой FUNCTION, вырабатывает в результате единственное значение и может непосредственно использоваться в других командах. Завершается командой RETURN, где выражение есть результат функции. Параметры процедур и функций могут изменяться внутри них, но для передачи этих изменений в вызывающую программу требуется использовать команду Использование процедур рассмотрим далее в разделе организации меню. ЗАДАНИЕ 1. Приведенную выше Программу 1, представьте в виде ряда процедур: р21 - просмотр данных по штатному расписанию (отношение STATE) р22 - поиск данных по штатному расписанию р31 - просмотр данных по списку сотрудников (отношение SOTR) р32 - поиск данных по списку сотрудников р4 - совместный просмотр двух таблиц (состояние) info - заставка с краткой информацией (дополнительная процедура). Пример 1. *********** поиск в таблице Kadr *********** PROCEDURE p21 SELECT a CLEAR с = 0 @ 5, 10 SAY 'Введите табельный номер: ' GET с PICTURE '###' READ @ 6, 2 SAY 'Результат поиска ' LOCATE ALL FOR tab = c DO WHILE ! EOF( ) ? 'должность - ', dolg, ' оклад - ', zarp CONTINUE ENDDO WAIT 'Продолжение – Enter ' WINDOW CLEAR RETURN Пример 2. ********* заставка ************** PROCEDURE info CLEAR @ 8, 15 ТО 20, 60 DOUBLE && изображение рамки @ 9, 25 SAY 'ШТАТНОЕ РАСПИСАНИЕ' && вывод текста @ 12, 20 SAY 'Модель информационной системы' WAIT 'Продолжение – Enter ' WINDOW && пауза CLEAR RETURN 7.ОРГАНИЗАЦИЯ МЕНЮМеню являются основной формой поддержания диалога в информационных системах. Среда FoxPro обладает большим набором средств организации световых и клавишных меню. Выделим две основных технологии построения меню, которые порождают «меню - программы» и «меню - объекты». Меню-программа является частью программы, где оно создается, используется и удаляется. При этом вырабатываются числовые переменные, фиксирующие выбор из меню, которые анализируются командами DO CASE, требуют использования циклов DO WHILE и т.д. Рассмотрим два типа таких меню. Будем использовать приведенную выше программу, которую предварительно разобьем на ряд процедур. LIGHTBAR - меню строится с использованием команд: @ Y, X PROMPT [MESSAGE] - выдает в позиции Y,X строку меню и дополнительное сообщение, если указано MESSAGE, в строке заданной командой SET MESSAGE . MENU TO - запоминает цифру, соответствующую выбору. PULLDOWN - меню (двухуровневое меню) использует команды MENU BAR , - определяет пункты горизонтального BAR-меню, задавая их как элементы первого столбца двумерного , во второй столбец заносятся сообщения, N- общее число пунктов меню. MENU , , - определяет содержание вспомогательного вертикального меню (POPUP-меню) READ MENU BAR TO , - активирует меню. Пример 1) ********** LIGHTBAR МЕНЮ ******* SET TALK OFF SET DATE BRITISH USE KADR.DBF DO WHILE .T. CLEAR P=1 @5,20 PROMPT “Редактирование данных ” @7,20 PROMPT “Поиск данных ” @9,20 PROMPT “Средняя заработная плата ” @11,20 PROMPT “Конец работы ” MENU TO P DO CASE CASE P=1 BROWSE CASE P=2 CLEAR F=SPACE(20) @ 10,15 SAY “ Введите ФИО “ GET F READ LOCATE FOR FIO = F IF !FOUND( ) @ 12,15 SAY “Запись нe найдена” WAIT EXIT ELSE DISPL ENDIF CASE P=3 CALCULATE SUM(SRZAR) TO SUMM SUMM = SUMM/RECCOUNT( ) @ 12,15 SAY STR(SUMM) WAIT CASE P=4 EXIT ENDDO CLOSE ALL 2) ********** PULLDOWN МЕНЮ ******* SET MESSAGE ТО 15 DIMENSION a(5, 3) && задание массива, содержащего а(1, 1) = 'Информация' && тексты пунктов горизонтального меню а(2, 1) = 'Штатное расписание' а(3, 1) = 'Список сотрудников' а(4, 1) = 'Состояние' а(5, 1) = 'Выход' а(1, 2) = ' ' && тексты сообщений а(2, 2) = 'Работа с таблицей должностей' а(3, 2) = 'Работа с данными о сотрудниках' а(4, 2) = 'Совместный просмотр штатного расписания и списка сотрудников' а(5, 2) = '3авершение работы' DIMENSION b(2) && задание массивов для вложенных меню b(1) = 'просмотр' b(2) = 'поиск' DIMENSION c(2) с(1) = 'просмотр' с(2) = 'поиск' ** образ меню** && определение меню MENU BAR a, 5 MENU 2, b, 2 MENU 3, c, 2 g = 1 && номер пункта горизонтального меню v = 1 && номер пункта вложенного меню DO WHILE .T. CLEAR READ MENU BAR TO g, v && активация меню DO CASE && обработка выбора CASE g = 1 DO info CASE g = 2 .AND. v = 1 DO p21 CASE g = 2 .AND. v = 2 DO p22 CASE g = 3 .AND. v = 1 DO p31 CASE g = 3 .AND. v = 2 DO p32 CASE g = 4 DO p4 CASE g = 5 CANCEL ENDCASE ENDDO Меню - объекты являются независимыми объектами и могут вызываться из любого места прикладной системы. Обработка выбора из меню не требует введения переменных и организации циклов, дает возможность создавать меню из имен файлов и обладает другими преимуществами. Рассмотрим один из вариантов меню такого типа. Вертикальное POPUP - меню создается с помощью следующих команд. DEFINE РОРUР - определение меню, ON SELECTION POPUP - реакция на выбор, ACTIVATE POPUP - активация меню. 3) ********** POPUP - меню **************** CLEAR DEFINE POPUP mmenu MARGIN && определение главного меню DEFINE BAR 1 OF mmenu PROMPT 'Информация' && определение пунктов DEFINE BAR 2 OF mmenu PROMPT 'Штатное расписание' DEFINE BAR 3 OF mmenu PROMPT 'Список сотрудников' DEFINE BAR 4 OF mmenu PROMPT 'Состояние' DEFINE BAR 5 OF mmenu PROMPT 'Выход' ON SELECTION BAR 5 OF mmenu DEACTIVATE POPUP && обработка выбора ON SELECTION BAR 1 OF mmenu DO info ON SELECTION BAR 4 OF mmenu DO p4 ON BAR 2 OF mmenu ACTIVATE POPUP ww && выбор вложенных меню ON BAR 3 OF mmenu ACTIVATE POPUP ss DEFINE POPUP ww && определение вложенных меню DEFINE BAR 1 OF ww PROMPT 'Просмотр' DEFINE BAR 2 OF ww PROMPT 'Поиск' ON SELECTION BAR 1 OF ww DO p21 ON SELECTION BAR 2 OF ww DO p22 ON SELECTION POPUP ww DO ww DEFINE POPUP ss DEFINE BAR 1 OF ss PROMPT 'Просмотр' DEFINE BAR 2 OF ss PROMPT 'Поиск' ON SELECTION BAR 1 OF ss DO p21 ON SELECTION BAR 2 OF ss DO p22 ON SELECTION POPUP ss DO ss ACTIVATE POPUP mmenu && активация меню ЗАДАНИЕ Программу 1, представленную в виде ряда процедур, дополните организацией МЕНЮ одного из предложенных типов. В приложении дан полный текст программы с использованием POPUP-меню для выбора процедур. 8.ИЗОБРАЗИТЕЛЬНЫЕ СРЕДСТВАИз большого списка возможностей рассмотрим лишь некоторые 1. Построение рамки @ ТО [DOUBLE / PANEL COLOR / COLOR SCHEME В указанных координатах строится рамка, ограниченная двойной линией (DOUBLE), с сплошным заполнением (PANEL) и желаемого цвета. 2. Управление цветом Обозначения цветов:
Команда SET COLOR TO [[,] [,] [,]] - устанавливает цвета для основного текста, для вывода сообщений, рамки за пределами используемой области и фона для основных и дополнительных сообщений. Цвет текста и цвет фона под ним образуют цветовую пару (например, W/B или R+/ GR). Цветовую схему можно определить в диалоге и сохранить в специальном файле и командой SET COLOR OF SCHEME TO []/[SCHEME]. Можно задать мерцание изображения: SET BLINK ON/OFF. 10. РАБОТА С НЕСКОЛЬКИМИ БАЗАМИ ДАННЫХВ FoxPro допускается работа сразу со многими базами данных, и при этом можно устанавливать между ними разнообразные связи, которые позволяют синхронно перемещать указатели записей в таких связанных базах. База, в которой указатель движется произвольно, считается старшей, а база (базы), в которой указатель следует за указателем старшей базы, - младший. В старшей и младших базах должны быть совпадающие поля. Допускается сцепление одной базы с несколькими другими. Младшие базы, в свою очередь, могут быть связаны с базами следующего уровня и т.д. Возможно установление двух типов связей между записями двух сцепленных баз данных. Связь типа одна_запись-к-одной перемещает указатель в младшей базе таким образом, что он всегда устанавливается на первую встреченную им запись с совпадающим признаком. Остальные такие записи (если есть) остаются «не замеченными». Эта связь устанавливается командой SET RELATION. Связь типа одна_запись-ко-многим позволяет обратиться ко всем записям младшей базы с совпадающим признаком (команды SET RELATION и SET SKIP TO). ПОНЯТИЕ О РАБОЧИХ ОБЛАСТЯХ В FoxPro обрабатывать сразу несколько файлов баз данных (до 25). Каждый такой файл типа DBF и все вспомогательные файлы (например, индексные) открываются в своей отдельной рабочей области. Переход из области в область осуществляется командой: SELECT Первые десять рабочих областей идентифицируются номерами 1-10 или буквами A – J. Области с 11-й по 25-ю обозначаются номерами или буквенно-цифровыми именами W11 – W25. Если в качестве параметра указать цифру 0, произойдет переход в первую свободную рабочую область. Кроме того, рабочие области и файлы базы данных могут идентифицироваться так называемыми псевдонимами. Псевдонимом области по умолчанию является само имя находящегося в ней файла базы данных. Область, в которой в данный момент работает пользователь, называется активной рабочей областью, и в ней можно работать с находящейся здесь базой данных. В одной команде можно работать с полями других баз (открытых в других областях). В этом случае имя поля из неактивной базы – составное: имени поля предшествует имя рабочей области или псевдоним, разделенные знаком «точка»: рабочая область / псевдоним > .имя поля> Рабочая область в составном имени указывается любым разрешенным образом (буквой, именем ее базы данных, псевдонимом), но не номером. Номер может быть указан в команде SELECT и в функциях. При входе в СУБД активизируется область 1 (или А), и, если пользователь работает только с одной базой, заботиться об открытии областей не нужно. В команде USE можно одновременно указывать и область, в которой открывается база. Пример: USE delivery IN b. Однако переход в указанную область с помощью такой команды не происходит (для перехода необходимо воспользоваться командой SELECT). ПРИМЕР РАБОТЫ С НЕСКОЛЬКИМИ БАЗАМИ ДАННЫХ В НЕСКОЛЬКИХ ОБЛАСТЯХ В приведенной ниже программе приводится пример работы с двумя базами данных, базой Поставщик (Delivery) и базой Поставка (Supply). Структура баз и назначение полей приводится в Приложении № 3. Данная программа позволяет по введенному коду товара найти всех поставщиков, поставляющих данный товар. CLEAR SET TALK OFF SET EXACT OFF SELE A USE Supply KOD=0 @ 1,2 SAY 'Введите код товара' GET KOD PICTURE'#####' READ LOCATE FOR indgoods = kod IF !FOUND() WAIT 'Такого кода нет' RETURN ENDIF ind = inddel SELE B USE Delivery LOCATE FOR inddel=ind IF !FOUND () WAIT 'Такого поставщика нет' RETURN ENDIF DISPL namedel, count, tel, A.namgoods, A.pricegds CLOSE ALL Связь вида одна_запись-к-одной Команда SET RELATION TO ключ> INTO область> [,ключ > INTO область >…] [ADDITIVE] связывает указатель записей в активной рабочей области с указателем записей из других рабочих областей, которых указаны после слова INTO, по заданному общему полю (ключу). Единственное условие – файл базы данных, с которым устанавливается связь, должен быть проиндексирован по этому полю. Пример Связать базы данных SUPPLY.DBF и DELIVERY.DBF по полю INDDEL. По коду поставщика вывести список поставщиков и их реквизиты. SET TALK OFF CLEAR SELE A IF FILE ('Inddelivery.ind') USE Delivery INDEX Inddelivery ELSE USE delivery INDEX ON inddel TO Inddelivery ENDIF SELE B USE Supply SET RELATION TO inddel INTO A DO WHILE .T. kod=0 CLEAR @ 12,23 TO 14,50 DOUBLE @ 13,25 SAY 'Введите код товара' GET kod PICTURE '#####' READ LOCATE FOR indgoods = kod IF !FOUND() WAIT 'Такого товара нет' LOOP ENDIF name=namgoods IF kod <>0 SET FILTER TO indgoods = kod BROWSE ; TITLE ' Список поставщиков, поставляющих ' + name ; FIELDS ; INDDEL :H = ' Код поставщика ' ,; A.NAMEDEL :H = 'Название поставщика ' ,; A.ADRDEL :H = 'Адрес ' ,; A.TEL :H = 'Телефон ' SET FILTER TO ENDIF IF LASTKEY()=27 EXIT ENDIF ENDDO PACK CLOSE ALL В этой программе выводятся записи, в которых для каждого кода поставщика inddel из текущей базы данных Supply.dbf (открытой в области В) выводятся поля A.namedel (Название поставщика), A.adrdel (Адрес) и A.TEL (Телефон) из базы данных Delivery.dbf (открытой в области A). В FoxPro имеется возможность устанавливать связи с несколькими базами одновременно. Если со старшим файлом, который уже связан с другим, необходимо связать некоторый третий (четвертый и т.д.), следует во все последующие команды SET RELATION включать слово ADDITIVE, которое обеспечит сохранение связей, установленных ранее. Связь между всеми файлами разрывается командой SET RELATION TO без параметров. Связь с отдельным файлом в заданной - командой SET RELATION OF INTO . Связь вида одна_запись-ко-многим Команда SET SKIP TO [ область1 > [, область2 >] … ] устанавливает связь типа одна_запись-ко-многим между двумя или несколькими базами данных. С каждой записью из старшей базы могут быть сцеплены несколько записей из младшей базы. Связь может быть установлена сразу с несколькими младшими базами, находящимися в указанных . Прежде чем использовать команду SET SKIP TO, необходимо выполнить начальное сцепление вида одна_запись-к-одной командой SET RELATION. Удаление связи одна_запись-ко-многим осуществляется командой SET SKIP TO без параметров. Пример Установить связь между тремя базами данных. В программе используется третья база Товаров (Goods.dbf), получаемая из БД Supply.dbf SET TALK OFF IF FILE ('Goods.dbf') ERASE Goods.dbf ENDIF IF FILE ('Indnum.idx') ERASE Indnum.idx ENDIF SELE A USE Supply IF FILE ('Indg.idx') SET INDEX TO Indg.idx ELSE INDEX ON indgoods TO Indg UNIQUE ENDIF COPY TO Goods FIELDS indgoods, namgoods, measure SELE C USE Smdeliv IF FILE ('Indexdel.idx') SET INDEX TO Indexdel.idx ELSE INDEX ON indgoods TO Indexdel UNIQUE ENDIF SELECT SUPPLY SET RELATION TO inddel INTO Delivery ADDITIVE SELE B USE Goods INDEX ON namgoods TO Indnum SET RELATION TO indgoods INTO Supply ADDITIVE SET SKIP TO Supply BROWSE TITLE "Товары" ; FIELDS ; Goods.Namgoods :H = "Имя Товара" ,; Delivery.Namdel :H = "Имя Поставщика" ,; Delivery.Adrdel :H = "Имя Поставщика" ,; Delivery.Count :H = "Счет", ; Goods.Measure :H = "Ед.Измерения" ,; Supply.Pricegds :H = "Цена Единицы" ,; Supply.Quant :H = "Кол-Во Единиц" ,; Totalamount=Supply.Quant * Supply.Pricegds :H = "Общая Сумма" CLOSE ALL 11. РАБОТА С ОКНАМИИспользование окон - очень удобное и эффектное средство создания пользовательского интерфейса в прикладной программе. Определение окна DEFINE WINDOW FROM, TO , [FOOTER] [TITLE] [SYSTEM/DOUBLE/PANEL/NONE] [CLOSE][FLOAT][GROW][SHADOW][ZOOM][FILL][MINIMIZE] FOOTER, TITLE - нижний и верхний заголовки; форма границ окна: SYSTEM - стандартная, DOUBLE - двойная линия, PANEL - сплошная полоса, NONE - не определяется, CLOSE - допускает закрытие окна мышью, FLOAT - перемещение с помощью ^F7 или мышью, GROW - изменение размера (^F8 или мышью), ZOOM / MINIMIZE - распахивание и свертывание окна; SHADOW - теневая рамка, FILL - символ заполнения окна. Активация уже определенного окна ACTIVATE WINDOW [[][,< окно2>]] [,...]] ALL [BOTTOM / TOP]] Здесь указаны имена открываемых или всех (ALL) окон. BOTTOM / TOP - размещение нового окна под/перед уже имеющимся. Удаление с экрана DEACTIVATE WINDOW [,][,...] /ALL Удаление с экрана и из памяти CLEAR WINDOW - Удаление с экрана и из памяти ВСЕХ окон RELEASE WINDOW - Перечисленных окон. Восстановление окна RESTORE WINDOW Сохранение в файле SAVE WINDOW /ALL TO 12.ПРИЛОЖЕНИЯ12.1. СТАНДАРТНЫЕ ФУНКЦИИ FOXPROАрифметические функции ABS() - абсолютное значение числа BETWEEN(,,) - истинно (.Т.), если , иначе ложно (.F.) (для чисел, строк, дат) CEILING() - округление числас избытком FLOOR() - округление числа с недостатком INТ() - целая часть числа МАХ(,[,...]) - максимальное значение из списка аргументов (числа, строки, даты) MIN,[,...]) - минимальное значение из списка аргументов MOD(,) - целочисленный остаток от деления на ROUND(,) - округление числа до знаков после запятой RAND(]) - псевдослучайное число в диапазоне 0...1 SIGN() - знак числа Степенные, тригонометрические и другие функции ЕХР() - экспонента LOG() - натуральный логарифм LOG10() - десятичный логарифм SQRT() - квадратный корень числа SIN() - синус от угла в радианах COS() - косинус TAN() - тангенс ASIN() - арксинус (результат в радианах) ATAN() - арктангенс PI ( ) - число DTOR() - преобразование градусной меры угла в радианы RTOD() - преобразование радианной меры угла в градусы Строковые функции $ - вхождение в (результат .Т. или .F.) AT / ATC(,[,N>) - поиск слева направо в строке позиции вхождения подстроки , начиная с позиции строки RАТ(,[,) - то же справа налево INLIST(,[,…]) - вхождение в последующий список (результат .Т. или .F.) LEN() - длина строки LIKE(,) - вхождение в (результат .Т. или .F.) с использованием символов маски * и ? OCCURS(,) - число вхождений в LEFT() - вырезка слева из строки символов в колич. RIGHT() - то же справа SUBSTR(,,[]) - вырезка из строки подстроки символов от в количестве символов> LTRIM() - удаление начальных пробелов TRIM / RTRM() - удаление завершающих пробелов ALLTRIM() - удаление начальных и завершающих пробелов REPLICATE(,) - повтор раз строки SPACE() - формирование строки пробелов длины Функции преобразования АSС () - выдает ASCII код первого символа CHR () - преобразует число в символ в соответствии с кодом STR (,[,[]]) - преобразует число в строку длиной с указанным числом VAL () - преобразует символьную запись числа в число Функции обработки мемо-полей ATLINE(,) - первое вхождение строки в ATCLINE (,) - то же без различения строчных и прописных букв RATLINE(,< мемо поле >) - последнее вхождение строки в MLINE(,) - возвращает строку из
MEMLINES() - число строк в мемо поле Функции работы с датами СТОD() - преобразование даты из строки символов в формат даты DATE( ) - системная дата DAY() - число месяца из даты DMY() - представление даты в виде ДД МЕСЯЦ ГГ (или ГГГТ) DOW () - номер дня недели DTOC () - преобразование выражения типа даты в строку символов GOMONTH(,) -возвращает дату, которая отстоит от на ± месяцев MONTH() - числовое значение номера месяца по дате YEAR() - числовое значение года по дате Функция анализа условий BOF(,,) - выдает значение, если условие истинно, и если ложно. Функции проверки файлов и дисков ВОF([]) - достижение начала файла (результат .Т. или .F.) ЕОF[(]) - достижение конца файла (результат .Т. или .F.) DBF([]) - выдает полное имя файла БД в текущей области DISCSPACE ( ) - число свободных байт на активном диске DELETED([]) - наличие пометки записи к удалению (результат .Т. или .F.) FILE() - проверка наличия файла FIELD([,]) - выдает имя поля по его номеру в активной БД FOUND([]) - успешное завершение поиска (результат .Т. или .F.) FCOUNT([]) - число полей в открытом файле БД LOOKUP(,,) - ищет первое вхождение выражения в и выдает LUPDATE([]) - дата последнего изменения БД ORDER([]) - имя главного индексного файла RECNO([]) - номер текущей записи активного файла БД RECCOUNT([]) - общее количество записей RECSIZE([]) - размер записи в байтах HEADER([) - размер заголовка БД в байтах SЕЕK([,]) - поиск записи с в индексном файле ЕМРТY() - наличие данных в объекте (результат .Т. или .F.) ТYРЕ() - выдает букву имени типа Функции позиционирования COL ( ) - номер текущей колонки экрана или окна ROW ( ) - номер текущей строки экрана или окна РСОL ( ) - номер текущей колонки на принтере PROW ( ) - номер текущего столбца на принтер 12.2. SET - КОМАНДЫЭти команды служат дня задания флажков состояний, параметров среды и т.п., которые обычно задаются в начале текста программы и в случае необходимости переопределяются или отменяются. В среде FoxPro имеется свыше 100 таких команд. Приведем некоторые из них. За дополнительными разъяснениями можно обратиться к HELP. SET ALTERNATE ON/OFF - установить флаг вывода данных с экрана в файл SET BELL ON/OFF - установить флаг звукового сигнала SET BLINK ON/OFF - установить флаг мигания символов SET SENTURY ON/OFF - установить флаг отображения столетия в датах SET CLOCK ON/OFF - установить флаг вывода времени SET COLOR TO - задать цвета меню и окон пользователя SET COLOR OF SCHEME - задать цвета схемы SET CURRENCY TO - задать денежный знак SET DATE TO... - определить формат даты SET DECIMALS TO… - установить число цифр в дробной части числа SET DEFAULT TO... - задать диск и каталог по умолчанию SET DELETED ON/OFF - установить флаг доступа к записям с пометкой удаления SET ECHO ON/OFF - установить флаг активизации окна отладки SET ESCAPE ON/OFF - установить флаг прерывания по клавише ESC SET FILTER TO… - задать фильтр доступа к записям SET FUNCTION...TO... - связать команду с функциональной клавишей SET HELP ON/OFF - установить режим доступа к помощи SET INDEX TO… - открыть индекс SET KEY TO - задать предельное значение ключевого индекса SET MESSAGE TO... - задать местоположение сообщений SET ORDER TO... - задать основной индекс SET PATH TO… - задать список каталогов для поиска файлов SET PRINTER ON... - установить флаг вывода на принтер SET PROCEDURE TO... - открыть заданный процедурный файл SET RELATION TO… - установить связь 1:1 с другой БД SET RELATION OFF - разорвать связь с другой БД SET SHADOWS ON/OFF - установить флаг наличия тени SET SKIP TO… - установить связь 1:N с другой БД SET SPACE ON/OFF - установить флаг вставки пробелов SET TALK ON/OFF - установить флаг вывода результатов выполнения команд SET WINDOW OF MEMO TO... - задать имя окна редактирования мемо-полей 12.3. ТЕКСТЫ ПРОГРАММСтруктура для базы данных: DELIVERY.DBF Field Field Name Type Width Dec Index 1 INDDEL Numeric 2 2 NUMDEL Character 10 3 ADRDEL Character 20 4 COUNT Character 8 5 TEL Numeric 6 Структура для базы данных: SUPLY.DBF Field Field Name Type Width Dec Index 1 INDSUP Numeric 5 2 INDDEL Numeric 2 3 DATE Date 8 4 NAMGOODS Character 15 5 QUANT Numeric 5 6 PRICEGOODS Numeric 5 2 7 MEASURE Character 3 8 INDGOODS Numeric 5 *********************** Работа с несколькими БД ***** USE Suply ERASE Goods.dbf INDEX ON indgoods TO Indg UNIQUE COPY TO Goods FIELDS indgoods; ,namgoods,measure SELECT 2 USE Goods BROWSE CLOSE ALL SET TALK OFF DEFINE WINDOW vvod FROM 2, 2 TO 7, 35 DOUBLE FLOAT SHADOW DEFINE WINDOW vivod FROM 8, 2 TO 20,70 SYSTEM ; COLOR SCHEME 10 CLEAR SELECT A IF FILE ('Inddeliv.idx') USE Delivery INDEX Inddeliv ELSE USE Delivery INDEX ON inddel TO Inddeliv ENDIF SELECT B USE Suply SET RELATION TO inddel INTO Delivery DO WHILE .T. ACTIVATE WINDOW vvod CLEAR A=0 @ 2,5 SAY 'Введите код товара' GET A PICTURE '#####' READ LOCATE FOR indgoods=A IF !FOUND() WAIT 'Такого кода нет' LOOP ENDIF name=namgoods IF A<>0 SET FILTER TO indgoods=A ACTIVATE WINDOW vivod BROWSE ; TITLE 'Список поставщиков, поставляющих '+name ; FIELDS ; A.inddel :H = 'Код поставщика', ; A.namdel :H = 'Имя поставщика', ; A.adrdel :H = 'Адрес поставщика', ; A.tel :H = 'Телефон поставщика', ; A.count :H = 'Счет поставщика' DEACTIVATE WINDOW vivod SET FILTER TO ENDIF DEACTIVATE WINDOW vvod IF LASTKEY()=27 EXIT ENDIF ENDDO PACK CLOSE ALL CLEAR SET TALK OFF SELECT B USE Goods SELECT A USE Suply INDEX ON indgoods TO Indg SELECT C USE Delivery INDEX ON inddel TO Indexdel SELECT Suply SET RELATION TO inddel INTO Delivery SELECT Goods INDEX ON namgoods TO Indnum SET RELATION TO indgoods INTO Suply SET SKIP TO Suply BROWSE TITLE 'Товары' ; FIELDS ; Goods.namgoods :H = 'Имя товара' ,; Delivery.numdel :H = 'Имя поставщика',; Delivery.adrdel :H = 'Его адрес',; Delivery.count :H = 'Счет' ,; Goods.measure :H = 'Единица измерения' ,; Suply.pricegoods :H = 'Цена единицы' ,; Suply.quant :H = 'Количество единиц' ,; Totalamount=Suply.quant * Suply.pricegoods ; :H = 'Общая сумма' CLOSE ALL 3.1. Линейная программа ********** установки *********** CLEAR SET TALK OFF CLOSE ALL USE state IN a && открыть в зоне а файл STATE USE sotr IN b && открыть в зоне b файл CADR *********** работа с таблицей state ************** SELECT a BROWSE ; TITLE 'Штаты ^Т – удал ^N - добав ^W – coxp ' ; FIELDS cod :H = ‘Код’ ,; dolg :H = 'Должность' ,; zarp :H = 'Оклад' ,; kol :H = 'Количество' *********** поиск данных в таблице STATE *********** CLEAR с = 0 @ 5, 10 SAY 'Задайте код должности:' GET с PICTURE '###' READ @ 6, 2 SAY 'Результат поиска' LOCATE ALL FOR cod = C DO WHILE ! EOF ( ) ? 'Должность - ', dolg, ' Оклад - ', zarp CONTINUE ENDDO WAIT 'Продолжение – ENTER ' WINDOW ******** работа с таблицей sotr **************** SELECT b BROWSE ; TITLE 'Список - ^ T-удал ^ N - добав ^W - сохр' ; FIELDS cod :Н = 'Код' ,; fio :H = 'Фамилия И.О.' ,; tab :H = 'Табельный номер' **** поиск данных в таблице SOTR **** CLEAR с = 0 @ 5, 10 SAY 'задайте код должности:' ; GET с PICTURE '###' READ @ 6, 2 SAY 'Результат поиска' LIST 'Фамилия - ', fio, 'Табельный номер - ', tab; WHILE cod = c WAIT 'Продолжение – ENTER ' WINDOW **** работа с форматом **** SET FORMAT TO cadr.fmt CHANGE SET FORMAT TO ******** установление связи******************** SELECT b SET ORDER TO cod SELECT a SET ORDER TO cod SET RELATION TO cod INTO b SET SKIP TO b BROWSE ; TITLE 'Информация' ; FIELDS A.dolg :H = ‘должность' ,; B.fio :H = 'Ф.И.О.' ,; A.zarp :H = 'оклад' ,; nal = A.zarp * 0.2 :H = 'налог' SET RELATION TO ********* конец программы********** 3.2 Программа, состоящая из процедур, вызываемых из меню CLEAR ALL SET TALK OFF CLOSE ALL SET SHADOWS ON USE state IN a USE cadr IN b ************** МЕНЮ **************** DEFINE POPUP mmenu DEFINE BAR1 OF mmenu PROMPT 'Информация' DEFINE BAR2 OF mmenu PROMPT 'Штатное расписание предприятия' DEFINE BAR3 OF mmenu PROMPT 'Список сотрудников' DEFINE BAR4 OF mmenu PROMPT 'Состояние' DEFINE BAR5 OF mmenu PROMPT 'Запрос' DEFINE BAR6 OF mmenu PROMPT 'Выход' ON SELECTION BAR6 OF mmenu DEACTIVATE POPUP ON SELECTION BAR1 OF mmenu DO about ON SELECTION BAR4 OF mmenu DO p2table ON SELECTION BAR5 OF mmenu DO pspr ON BAR2 OF mmenu ACTIVATE POPUP wow ON BAR3 OF mmenu ACTUVATE POPUP sos DEFINE POPUP wow DEFINE BAR1 OF wow PROMPT ‘Просмотр' DEFINE BAR2 OF wow PROMPT 'Поиск' ON SELECTION BAR1 OF wow DO pstate ON SELECTION BAR2 OF wow DO psearch ON SELECTION POPUP wow DO wow DEFINE POPUP sos DEFINE BAR1 OF sos PROMPT 'Просмотр' DEFINE BAR2 OF sos PROMPT 'Поиск' ON SELECTION BAR1 OF sos DO pstate ON SELECTION BAR2 OF sos DO psearch ON SELECTION POPUP sos DO sos ACTIVATE POPUP mmenu ************ работа с таблицей state ************** PROCEDURE pstate SELECT a BROWSE ; TITLE 'Штаты ^T - удал ^N - добав ^W - coxp' ; FIELDS cod :Н = 'Код' ,; dolg :H = 'Должность' ,; zarp :H = 'Оклад' ,; kol :H = 'Количество' RETURN ******** поиск данных в таблице STATE ************ PROCEDURE psearch CLEAR c = 0 @ 10, 15 SAY 'Задайте код должности:' ; GET с PICTURE '###' READ @ 12, 10 SAY 'Результат поиска' LOCATE ALL FOR cod = c DO WHILE ! EOF ( ) ? 'Должность - ', dolg, 'Оклад - ', zarp CONTINUE ENDDO WAIT 'Продолжение – ENTER ' WINDOW CLEAR RETURN ******** работа с таблицей cadr *************** PROCEDURE pcadr SELECT b BROWSE ; TITLE 'Список ^T - удал ^N - добав ^W - сохр' ; FIELDS cod :H = 'Код' ,; fio :H = 'Фамилия И.О.' ,; tab :H = 'Табельный номер' RETURN ******** поиск данных в таблице SOTR ******* PROCEDURE рcadrsr CLEAR с = 0 @ 5, 10 SAY ‘Задайте код должности:' ; GET с PICTURE '###' READ @ 6, 2 SAY 'Результат поиска' LIST 'Фио - ', fio, ' Табельный номер - ', tab; WHILE cod = c WAIT 'Продолжение – ENTER ' WINDOW CLEAR RETURN ******** установление связи ****************** PROCEDURE p2table SELECT b SET ORDER TO cod SELECT a SET ORDER TO cod SET RELATION TO cod INTO b SET SKIP TO b BROWSE ; TITLE 'Информация' ; FIELDS A.dolg :H = 'Должность' ,; B.fio :H = 'Ф.И.О.' ,; A.zarp :H = 'Оклад' ,; nal = a.zarp*0.2 :H = 'Налог' SET RELATION TO RETURN ********* заставка ************ PROCEDURE about CLEAR @ 8, 15 TO 20, 60 double @ 9, 25 SAY ‘Штатное расписание' @ 12, 20 SAY 'Модель информационной системы' WAIT 'Продолжение – ENTER ' WINDOW CLEAR RETURN ********* запрос ************ PROCEDURE pspr CLEAR DEFINE WINDOW spr FROM 10, 10 TO 18, 40 ; TITLE 'Справка' SHADOW ACTIVATE WINDOW spr @ 1, 1 SAY 'Запрос о занятых должностях и общем' @ 2, 1 SAY 'Количестве ставок по ним' WAIT 'Продолжение – ENTER ' WINDIW DEACTIVATE WINDOW spr SELECT B SET ORDER TO cod SELECT A SET ORDER TO cod SET RELATION TO cod INTO b SET SKIP TO B SELECT A.dolg, A.kol, COUNT(B.fio) AS cnt, SUM(A.zarp) AS ssum ; FROM state A, cadr B INTO CURSOR qq ; WHERE B.cod = A.cod ; GROUP by A.dolg BROWSE TITLE 'Занятые должности' ; FIELDS dolg :Н = 'Должность' ,; kol :Н = 'По штату' ,; cnt :Н = 'Занято' ,; ssum :Н = 'Суммарный оклад' CLEAR SET RELATION TO RETURN 11. Задания.1. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
2
3. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
4
5. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
6
7. Обеспечить форматный ввод переменной x и форматный вывод значения функции y, используя оператор ветвления case. Функция имеет вид:
8. Обеспечить форматный ввод переменной x и форматный вывод значения функции yзуя оператор ветвления case. Функция имеет вид:
РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА1. Дейт К. Введение в системы баз данных. - М.: Наука-1980.- 463 с. 2. Мидоу Ч. Анализ информационных систем. - М.: Прогресс. - 1977.- 400 с. 3. Цикритзис Д., Лоховски Ф. Модели данных.- М.: Финансы и статистика. -1985.-344 с. 4. Мейер Д. Теория реляционных баз данных. - М.: Мир. -1987.-608 с. 5. Бойко В.В., Савинков В.Ф. Проектирование баз данных информационных систем.- М.: Финансы и статистика. -1982 .- 382 с. 6. Джексон Г. Проектирование реляционных баз данных для использования с микро-ЭВМ. - М.: Мир. - 1991. - 252 с. 7. Попов А.А. Программирование в среде FoxPro2.0. - М.: Финансы и статистика. - 1993. - 350 с.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|