Методические указания для студентов по проведению лабораторных работ по дисциплине "Базы данных"
Автор: Новикова Надежда Владимировна (Преподаватель, ГБПОУ КК "Краснодарский колледж электронного приборостроения")
Тип документа: Другое. Аудитория: Преподаватели ССУЗов. Дата публикации: 27.04.2015
Описание: Методические указания предназначены для проведения лабораторных работ в соответствии с рабочей программой учебной дисциплины "Базы данных" для реализации требований Государственного образовательного стандарта среднего профессионального образования.

Новикова Надежда Владимировна 
ГБПОУ КК "Краснодарский колледж электронного приборостроения"
Преподаватель

МЕТОДИЧЕСКИЕ УКАЗАНИЯ
ПО ПРОВЕДЕНИЮ ЛАБОРАТОРНЫХ РАБОТ
по дисциплине
«БАЗЫ ДАННЫХ»

для студентов специальности
080802 Прикладная информатика
 (базовый уровень обучения)
среднего профессионального образования


ПРЕДИСЛОВИЕ

Методические указания предназначены для проведения лабораторных работ в соответствии с рабочей программой учебной дисциплины «Базы данных» для реализации требовании Государственного образовательного стандарта среднего профессионального образования базового уровня подготовки выпускников по специальности 080802 Прикладная информатика. 
Учебная дисциплина «Базы данных» является общепрофессиональной дисциплиной, формирующей базовый уровень знаний и умений для освоения специальных дисциплин. Преподавание дисциплины имеет  практическую направленность и проводиться в тесной взаимосвязи с другими общепрофессиональными и специальными дисциплинами: «Основы алгоритмизации и программирования», «Дискретная математика». 
В методических указаниях приведены сведения по подготовке и задания для выполнения курса лабораторных работ. Для подготовки к выполнению лабораторных работ к каждой работе даётся краткий теоретический материал по соответствующей теме:
Лабораторная работа №1. Создание табличного файла и ввод исходных данных (2 часа)
Лабораторная работа №2. Открытие, редактирование и добавление записей в таблицы. Модификация структуры таблицы (2 часа)
Лабораторная работа №3. Возможности команды BROWSE. Управление окном BROWSE (2 часа)
Лабораторная работа №4. Индексирование и сортировка табличных файлов (2 часа)
Лабораторная работа №5. Поиск данных в таблице. Установка даты и вывод записей на экран (2 часа)
Лабораторная работа №6. Установление взаимосвязей между таблицами (2 часа)
Лабораторная работа №7. Написание программного файла и работа с несколькими табличными файлами (2 часа) 
Лабораторная работа №8. Работа с переменными и массивами (2 часа)
Лабораторная работа №9. Создание табло ожидания. Функции СУБД. Ввод и вывод данных (2 часа)
Лабораторная работа №10. Создание FOX-меню различных видов (2 часа)
Лабораторная работа №11. Создание dBASE-меню различных типов (2 часа)
Лабораторная работа №12. Создание рабочих окон (4 часа)
Лабораторная работа №13. Создание файла проекта БД (4 часа)
Лабораторная работа №14. Создание интерфейса (входной формы) (4 часа)
Лабораторная работа №15. Создание и печать отчетов (4 часа)
Лабораторная работа №16. Защита отчетов (2 часа)

В результате проведения лабораторных работ студент должен:
 приобрести навыки работы в среде СУБД на примере СУБД  MS FoxPro 9.0;
 изучить назначение, технологию создания и правила использования объектов базы данных на примере работы с объектами БД MS FoxPro 9.0;
-	изучить технологию и соответствующие средства создания БД формата  MS FoxPro 9.0 для  разработки прикладного программного обеспечения.
ПРАВИЛА ВЫПОЛНЕНИЯ ЛАБОРАТОРНЫХ РАБОТ
Студент должен:
- строго выполнять весь объём домашней подготовки, указанный в описаниях соответствующих лабораторных работ;
- знать, что выполнению каждой работы предшествует проверка готовности студента, которая проводится преподавателем;
- при выполнении задания выбирать наиболее оптимальный метод решения поставленной задачи и объяснить преподавателю, по каким критериям выбран тот или иной метод;
- результаты работы сохранять в отдельной папке по дисциплине на персональном диске, отведённом для выполнения лабораторных работ:
- в конце каждого занятия преподавателю предъявить отчет о проделанной работе с обсуждением полученных результатов и выводов;
- защитить лабораторные работы, при этом защита включает оценку выполненного отчёта и оценку ответов на вопросы:
- соблюдать правила поведения и техники безопасности на вычислительном центре (ВЦ) колледжа.
Окончательная оценка по дисциплине выставляется только при условии выполнения студентом всех лабораторных работ.
Отработка пропущенных работ выполняется по согласованию с преподавателем.

ОПИСАНИЕ РАБОЧЕГО МЕСТА СТУДЕНТА
ДЛЯ ВЫПОЛНЕНИЯ ЛАБОРАТОРНЫХ РАБОТ

Лабораторные работы выполняются на вычислительном центре колледжа, оборудованном вычислительной техникой. Каждый студент закреплён за пронумерованным компьютером, номер которого совпадает с номером студента по журналу. Все компьютеры работают в сети, поэтому перед работой студент должен зарегистрироваться. Имя пользователя приведено в журнале регистрации, находящемся у сотрудников ВЦ. Пароль каждый студент выбирает себе сам.
Перед выполнением комплекса лабораторных работ студент должен пройти инструктаж по технике безопасности и расписаться в журнале по технике безопасности.
Перед выполнением каждой лабораторной работы студент должен осмотреть рабочее место и удостовериться, что оно в полном порядке.
Во время проведения лабораторных работ запрещается пересаживаться за другие компьютеры (это можно сделать только по разрешению преподавателя).
После окончания лабораторной работы студент должен:
 выключить компьютер:
 проверить порядок на рабочем месте;
 сдать рабочее место преподавателю.

Лабораторная   работа   № 1

Тема:  Создание табличного файла и ввод исходных данных.

Цель работы: выработать практические навыки в разработке таблиц средствами Visual FoxPro 9.0 , освоить способы добавления записей в таблицу.

Методические указания:

База данных может быть оформлена в виде файла базы данных, при этом каждая таблица является частью базы и называется связанной. Кроме того, база данных может быть представлена в виде отдельных таблиц, хранящихся в одном каталоге. Между таблицами могут быть установлены взаимосвязи. В любой момент времени отдельные таблицы с помощью специальной команды могут быть объединены в файл базы данных.
Сначала создадим отдельные таблицы (табличные файлы), которые будем хранить в одном каталоге, а позднее объединим их в базу данных (файл базы данных).
Создание структуры таблицы.
Табличный файл создается с помощью команды  CREATE. Команду CREATE можно подать из окна Command, или из главного меню.
Для создания новой таблицы выберите в меню File (Файл) команду New (Новый). Появится диалоговое окно, представленное на «рис.1».


Рис.1
В области File type (Тип файла) следует выбрать значение Table (Таблица). Далее есть два варианта действий: выбрать кнопку New file (Новый файл) и задать имена полей и их типы самостоятельно или воспользоваться Мастером для автоматизированного создания таблиц (Wizard). Воспользуемся первым способом, то есть щелкнем по кнопке New file (Новый файл). В результате откроется стандартное окно Create (Создание) для создания файла, представленное на «рис.2».



Рис.2
В поле Enter table name (Введите имя таблицы) следует ввести имя таблицы. Она будет сохранена в указанной вами папке в файле с расширением .dbf. После щелчка мышью по кнопке Сохранить (Save) появится окно Table Designer (Дизайнер таблиц), представленное на «рис.3».



Рис.3

В этом окне, на вкладке Fields (Поля) осуществляется ввод и редактирование полей и их характеристик. Имя нового поля вводится в столбец Name (Имя). Далее из выпадающего списка Type (Тип) выбирают тип поля и, если выбранный тип это предусматривает, устанавливается размерность поля в столбцах Width (Ширина) и Decimal (Десятые), если тип поля числовой. Раскрывающийся список Index (Индекс) позволяет указать, по возрастанию или убыванию упорядочивать записи в случае индексирования по этому полю. При установке флажка Null, поле сможет принимать значение Null (значение поля на данный момент не определено). Для вставки нового поля можно воспользоваться кнопкой Insert (Вставить). Если вы последовательно вводите поля, можно просто ставить курсор в пустой прямоугольник под уже введенными полями в столбце Name (Имя) и набирать имя очередного поля. Если вы хотите удалить поле, щелкните по его имени, а затем по кнопке Delete (Удалить). Порядок расположения полей можно изменить, перетаскивая мышью прямоугольник слева от имени поля. По окончании редактирования щелкните по кнопке OK,; если вы передумали и все внесенные вами изменения не нужны, щелкните по кнопке  Cancel (Отмена).
Таким образом, создается пустая структура таблицы. Для заполнения новой таблицы вначале добавляется пустая запись, а затем вводятся значения ее полей.

Добавление записей в таблицу.
Чтобы добавить пустую запись, следует выбрать в меню Table (Таблица) команду Append New Record  (Добавить новую запись) или нажать комбинацию клавиш Ctrl+Y. Можно также ввести в окне Command  команду APPEND BLANK .

Задание:

Вариант №1: 

Средствами Visual FoxPro 9.0 создать базу данных Библиотека содержащую несколько отдельных таблиц: Книги(название, жанр, автор, год выпуска), Авторы(Фамилия, Имя, Отчество, Дата рождения, Дата смерти), Читатели(Фамилия, Имя, Отчество, Дата рождения, Адрес, Телефон).

Вариант №2.

 Средствами Visual FoxPro 9.0 создать базу данных Магазин содержащую несколько отдельных таблиц: Товары(Наименование, Количество, Цена, Масса), Приход(Наименование товара, Количество, Цена, Дата), Покупатели(Фамилия, Имя, Отчество, Дата рождения, Адрес, Телефон), Продажи(Наименование, Количество, Цена, Дата, ФИО_покупателя).

Вариант №3. 

Средствами Visual FoxPro 9.0 создать базу данных Аптека содержащую несколько отдельных таблиц: Медикаменты(Наименование, Назначение, дата выпуска), Поставщики(Наименование, Адрес, Телефон), Продажа (Наименование, Цена,  Количество, Сумма,  Дата_продажи ).

Вариант №4. 

Средствами Visual FoxPro 9.0 создать базу данных Автомобили содержащую несколько отдельных таблиц: Автомобили(Наименование, тип кузова, двигатель, год выпуска, стоимость), Покупатели(Фамилия, Имя, Отчество, Дата рождения, Дата покупки, наименование автомобиля), Заказы(Наименование авто, тип кузова, двигатель, год выпуска, количество, дата поставки).


Вариант №5. 

Средствами Visual FoxPro 9.0 создать базу данных Школа содержащую несколько отдельных таблиц: Преподаватели (Фамилия, Имя, Отчество, Дата рождения, Специализация), Ученики(Фамилия, Имя, Отчество, Дата рождения, Класс), Предметы(Название, Количество часов).

Вариант №6. 

Средствами Visual FoxPro 9.0 создать базу данных Видеопрокат содержащую несколько отдельных таблиц: Фильмы(название, жанр, режисер, год выпуска), Клиенты(Фамилия, Имя, Отчество, Адрес, Телефон), Аренда(Наименование, ФИО клиента, Срок аренды,).

Вариант №7. 

Средствами Visual FoxPro 9.0 создать базу данных Кинотеатр содержащую несколько отдельных таблиц: Фильмы(название, жанр, режисер, год выпуска), Сеансы(Наименование, Дата, Время, продолжительность), Кинозалы(Номер зала, количество рядов, количество мест).

Вариант №8. 

Средствами Visual FoxPro 9.0 создать базу данных Колледж содержащую несколько отдельных таблиц: Группы(номер, количество студентов, классный руководитель), Студенты(Фамилия, Имя, Отчество, Дата рождения, группа), преподаватели(Фамилия, Имя, Отчество, Дата рождения, Предмет).

Вариант №9. 

Средствами Visual FoxPro 9.0 создать базу данных Техника содержащую несколько отдельных таблиц: Бытовая техника(Наименование, характеристика, Цена, год выпуска), Поставщики(Наименование, адрес, телефон), Расход(Наименование, количество, цена, сумма, дата), Приход(наименование, цена, количество, сумма, дата).

Вариант №10. 

Средствами Visual FoxPro 9.0 создать базу данных Компьютерное оборудование содержащую несколько отдельных таблиц: Оборудование(Наименование, характеристика, Цена, год выпуска), Поставщики(Наименование, адрес, телефон), Расход(Наименование, количество, цена, сумма, дата), Приход(наименование, цена, количество, сумма, дата).
Контрольные вопросы:

1.	Назовите способы создания таблицы.
2.	Назовите характеристики, описывающие поле.
3.	Назовите допустимые типы полей.
4.	Какое количество полей может содержать таблица?
5.	Можно ли сохранить на диске пустую структуру таблицы?
6.	Укажите приемы ввода данных в таблицу.

Содержание отчета:

Номер, тема, цель лабораторной работы;
Задание;
Ход выполнения работы с приведением всех диалоговых окон;
Вывод.

















Лабораторная   работа  № 2

Тема: Открытие, редактирование и добавление записей в таблицы. Модификация структуры таблицы.
Цель работы: освоить команды по управлению данными табличного файла. 

Методические указания:

Команды по управлению данными табличного файла можно подать либо из окна Command, либо из главного меню.

Открытие табличного файла.

Для открытия табличного файла из окна Command  надо подать команду:
USE  <имя табличного файла>
Для открытия табличного файла из главного меню надо подать команду:
File (Файл)→ Open (Открыть) → и в появившейся на экране диалоговой панели «(рис.1)» указать имя нужного файла.



Рис.1
В любом случае содержимое открытого табличного файла на экран не предъявляется.

Предъявление содержимого табличного файла на экран и редактирование данных.

Любая из команд редактирования предъявляет содержимое табличного файла на экран в специальном окне редактора. В зависимости от выбранной команды редактирования внешний вид окна редактора несколько изменяется, хотя приемы редактирования остаются одинаковыми.
Для корректировки данных в окне Command надо подать одну из команд  BROWSE «(рис.2а)»  или  EDIT «(рис.2б)». В первом случае окно редактора имеет табличную форму, то есть выводится несколько записей и редактировать можно любое поле любой записи. Окно редактора снабжено линейками прокрутки: горизонтальной и вертикальной. Во втором случае в окно редактора выводится одна запись, и редактировать можно любое поле записи. В этом случае записи можно пролистывать. Кроме того, для вызова команды BROWSE можно воспользоваться пунктами главного меню View→Browse. Для навигации по полям в режиме Browse нужно щелкнуть в нужном поле мышью, также можно воспользоваться клавишами Enter или Tab.


                                                                     а)                                                                                          б)
Рис.2
Для смены режима BROWSE на EDIT и наоборот служит команда главного меню View «(рис.3.)».

	
Рис.3

Для добавления новой записи в конец табличного файла надо из окна Command  подать команду  APPEND. При этом на экран выводится окно редактора, аналогичное после подачи команды  EDIT.
Добавить новые записи в конец табличного файла можно также с помощью команды главного меню:  Table→ Append New Record. 

Удаление записей производится в два этапа: пометка записи к удалению и физическое удаление записи.
Пометка записей на удаление при работе с таблицей через BROWSE происходит при щелчке мышью в поле слева от полей записи. При установке пометки поле окрасится в другой цвет (обычно черный). Чтобы снять пометку, нужно еще раз щелкнуть в этом поле. Кроме того, пометить поле на удаление можно использовав команду главного меню: Table→ Delete Records.
Другой способ пометки на удаление – команда DELETE, вводима в окне Command. Можно выполнить и обратную операцию и снять пометку на удаление. Для этого существует команда RECALL. 
Для снятия пометки на удаление можно также воспользоваться командами главного меню Table→Recall records или Table→ Toggle Deletion Mark.
Для физического удаления помеченных записей надо либо из окна  Command  подать команду  PACK, либо из главного меню подать команду  Table→Remove Deleted Records.

Модификация структуры таблицы.

При модификации структуры в существующий табличный файл можно добавить новое поле, удалить не нужное поле или изменить характеристики существующего поля. При изменении характеристик существующего поля возможна потеря информации: например, при изменении типа поля или уменьшении размера поля.
Для выполнения модификации надо в окне  Command  подать команду  MODIFY  STRUCTURE. При этом на экран выводится диалоговая панель, аналогичная команде  CREATE  (рис. 2  лабораторная работа №1). Также можно воспользоваться командой главного меню: View→Table Designer.
Необходимо помнить, что для применения указанных команд табличный файл, по отношению к которому они применяются, должен быть открыт командой USE или аналогичным способом.

Задание:

Для таблиц, созданных в Лабораторной работе №1, воспользоваться командами открытия таблиц, предъявления их на экран и редактирования. Кроме того, воспользоваться командами модификации структуры таблицы.

Контрольные вопросы:

Назовите два способа открытия таблицы.
Укажите команды для добавления записи в таблицу.
В Visual FoxPro назовите команды для добавления одной записи и добавления нескольких записей.
Назовите приемы перемещения курсора при редактировании данных в таблице.
Назовите способы  модификации таблицы.
Чем отличается модификация таблицы от редактирования таблицы?
Для какой именно таблицы применяется команда MODIFY  STRUCTURE.

Содержание отчета:

Номер, тема, цель лабораторной работы;
Задание;
Ход выполнения работы с приведением текста используемых команд;
Вывод.









Лабораторная работа №3

Тема: Возможности команды  BROWSE. Управление окном BROWSЕ.
Цель работы: освоить приемы управления окном BROWSE и изучить возможности команды BROWSE.

Методические указания:

Команда BROWSE без опций выводит на экран окно BROWSE, загружая в него текущую таблицу. Окно BROWSE снабжено двумя линейками прокрутки горизонтальной и вертикальной. В правом верхнем углу окна находятся три кнопки:
- сворачивает окно до минимального размера.
- раскрывает окно на весь экран.
-  закрывает окно и удаляет его с экрана.
В левом нижнем углу находится кнопка (в виде черного прямоугольника), с помощью которой можно разделить окно BROWSE на две части левую и правую.
Для двух частей разделенного окна BROWSE можно задать один из режимов просмотра: синхронный и асинхронный. При синхронном режиме просмотра курсор перемещается внутри активной части окна, а пассивная часть окна автоматически прокручивается, отслеживая перемещение курсора в активной части окна. При асинхронном режиме перемещение курсора в активной части разделенного окна BROWSE не приводит к прокрутке пассивной части окна. Задать синхронный или асинхронный режим можно при помощи главного меню View→Browse и View→Edit.
Если команда BROWSE используется с опциями, то при открытии окна BROWSE, оно получает дополнительные свойства. Основные опции команды BROWSE:
-	FIELDS  - задает список имен полей, которые надо отобразить в окне BROWSE. Имена полей разделяются запятыми. После каждого имени поля можно задать один или несколько параметров, которые управляют данными, помещаемыми в поле. Некоторые параметры опции FIELDS:
-	:В = <выр/1> ,<выр.2>  - задаёт интервал допустимых значений, помещаемых в поле;
-	:Н  <выр.С>  -  задаёт на экране имя столбца (поля).
-	NOLINK  - разрывает синхронную связь между половинами окна BROWSE.
-	TITLE  - задаёт заголовок окна BROWSE.
-   FONT –дает возможность задать шрифт, которым будут отображаться данные.
- STYLE – позволяет выбрать стиль шрифта, которым будут отображаться данные. 
- <Размер шрифта> -позволяет задать размер шрифта, которым будут отображаться данные. 
-	NODELETE  - запрещает пометку записей к удалению.
-	NOAPPEND  - запрещает добавление записей.
-	NOEDIT  - запрещает редактирование записей.
-	LPARTITION <выр. N> - задает размер левой части разделённого окна BROWSE.

Задание:

Вариант№1.

Для таблиц, созданных при выполнении Лабораторной работы №1, применить команду BROWSE. При этом использовать приемы управления окном BROWSE и  основные опции команды BROWSE, такие как FIELDS :Н  <выр.С>  , TITLE, STYLE, FONT.

Вариант№2.

Для таблиц, созданных при выполнении Лабораторной работы №1, применить команду BROWSE. При этом использовать приемы управления окном BROWSE и  основные опции команды BROWSE, такие как FIELDS, NOLINK, NODELETE, NOEDIT, LPARTITION <выр. N>.

Вариант№3.

Для таблиц, созданных при выполнении Лабораторной работы №1, применить команду BROWSE. При этом использовать приемы управления окном BROWSE и  основные опции команды BROWSE, такие как FIELDS, LPARTITION <выр. N>, NOAPPEND, <Размер шрифта>, STYLE, NOLINK.

Вариант№4.

Для таблиц, созданных при выполнении Лабораторной работы №1, применить команду BROWSE. При этом использовать приемы управления окном BROWSE и  основные опции команды BROWSE, такие как FIELDS, STYLE, FONT, NOAPPEND, NOLINK.

Вариант№5.

Для таблиц, созданных при выполнении Лабораторной работы №1, применить команду BROWSE. При этом использовать приемы управления окном BROWSE и  основные опции команды BROWSE, такие как FIELDS, NODELETE, NOEDIT, LPARTITION <выр. N>, NOLINK, TITLE.
Вариант№6.

Для таблиц, созданных при выполнении Лабораторной работы №1, применить команду BROWSE. При этом использовать приемы управления окном BROWSE и  основные опции команды BROWSE, такие как FIELDS :В = <выр/1> ,<выр.2>, NOAPPEND, NOLINK, STYLE, NODELETE.

Вариант№7.

Для таблиц, созданных при выполнении Лабораторной работы №1, применить команду BROWSE. При этом использовать приемы управления окном BROWSE и  основные опции команды BROWSE, такие как FIELDS :В = <выр/1> ,<выр.2>, LPARTITION <выр. N>,<Размер шрифта>, 	NOLINK , STYLE, FONT.

Вариант№8.

Для таблиц, созданных при выполнении Лабораторной работы №1, применить команду BROWSE. При этом использовать приемы управления окном BROWSE и  основные опции команды BROWSE, такие как FIELDS :Н  <выр.С>  , TITLE, STYLE, NOAPPEND, NODELETE.

Вариант№9.

Для таблиц, созданных при выполнении Лабораторной работы №1, применить команду BROWSE. При этом использовать приемы управления окном BROWSE и  основные опции команды BROWSE, такие как FIELDS :Н  <выр.С>  , TITLE, FONT , NOLINK, LPARTITION <выр. N>.

Вариант№10.

Для таблиц, созданных при выполнении Лабораторной работы №1, применить команду BROWSE. При этом использовать приемы управления окном BROWSE и  основные опции команды BROWSE, такие как FIELDS, STYLE, <Размер шрифта>, NODELETE, NOAPPEND, NOEDIT.

Контрольные вопросы:

1.	Укажите назначение команды BROWSE без опций.
2.	Поясните назначение опции FIELDS и дополнительных параметров для описания поля.
3.	Что такое синхронный и асинхронный режимы просмотра таблицы и как они задаются?
4.	Каким способом задать заголовок окну BROWSE?
5.	Как запретить редактирование таблицы, пометку записей  к удалению, добавление записей?
6.	Как управлять параметрами шрифта?

Содержание отчета:

Номер, тема, цель лабораторной работы;
Задание;
Ход выполнения работы с приведением текста используемых команд и результата их выполнения;
Вывод.












Лабораторная работа №4

Тема: Индексирование и сортировка табличных файлов.
Цель работы:	освоить команды по созданию, открытию и закрытию мультииндексных  и одноиндексных файлов и изучить способы сортировки табличных файлов.

Методические указания:

Индексирование табличных файлов применяется для объединения нескольких табличных файлов и для ускорения поиска данных. Индексные файлы бывают простые (с расширением .idx) и мультииндексные (с расширением  .cdx). Простой индексный файл содержит один индекс, который может быть построен по одному или нескольким полям. Мультииндексный файл содержит несколько индексов, построенных по одному или нескольким полям. Каждый индекс внутри мультииндексного файла называется тегом и имеет уникальное имя.
Индекс, построенный по значениям одного поля, называется простым индексом. Индекс, построенный по значениям двух и более полей, называется сложным индексом. 
Простые и сложные индексы могут быть уникальными, т.е. значения индекса не повторяются, или регулярными, т.е. значения индекса могут  повторяться.
Для создания индекса используется команда:
INDEX ON <Выражение> TO <имя_ idx _файла> | TAG <имя_тега>
Открыть ранее созданный индексный файл можно одним из способов:
а) при открытии табличного файла с помощью команды  USE  надо указать опцию  INDEX, в которой пишется полное имя индексного файла (USE <Имя_таблицы> INDEX <Имя_индекса>).
б) для ранее открытого табличного файла можно открыть, принадлежащий ему индексный файл, с помощью команды:
SET  INDEX  TO  <полное имя индексного файла>
Для того чтобы закрыть все индексные файлы, надо подать команду CLOSE INDEX или SET  INDEX  TO  без опций.
При индексировании порядок записей исходного табличного файла остаётся прежним и создается новый индексный файл, а указатель перемещается по табличному файлу не в порядке физических записей, а в соответствии с индексом.
Если для сортировки активного табличного файла использовать команду 
 SORT  TO  <имя файла>  ON  <имя поля> [ ASCENDING  |  DESCENDING ]     ,
 то создается новый табличный файл, записи которого расположены возрастания или убывания от значений поля, указанного в <имя поля>. Таким образом, на диске получаются два табличных файла с одинаковой информацией, но расположенной в другом порядке, поэтому команда  SORT используется редко.
На практике создают несколько тегов, затем один из тегов делают текущим (главным) и открывают окно BROWSE. Данные в окне BROWSE получаются отсортированными в соответствии с текущим индексом. Для задания текущего (главного) тега используют команду :
SET  ORDER  TO  TAG  <имя тега>  OF  <имя индексного файла>.

Задание:

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

Контрольные вопросы:

1.	Что такое индекс?
2.	Какие бывают индексы?
3.	Укажите особенности построения сложных индексов?
4.	Чем отличается одноиндексный файл от мультииндексного файла?
5.	Что такое структурный мультииндексный файл и каковы его свойства?
6.	Что такое тег?
7.	Каким способом выполняется сортировка данных?
8.	Укажите способы открытия индексных файлов.
9.	Укажите команду переназначения индекса.

Содержание отчета:

Номер, тема, цель лабораторной работы;
Задание;
Ход выполнения работы с приведением текста используемых команд и результата их выполнения;
Вывод.








Лабораторная   работа   № 5.

Тема: Поиск данных в таблице. Установка даты и вывод записей на экран.
Цель работы: освоить команды поиска данных, изучить команды установки даты и вывода записей на экран.

Методические указания:

Для поиска данных в таблице предназначены две команды.

Команда последовательного поиска.

Команда  LOCATE  FOR  <имя поля>  =  <значение>  осуществляет поиск нужного значения по указанному в <имя поля>  полю. Поиск производится методом полного перебора и, естественно, работает медленно. Поиск осуществляется по любому полю таблицы.
На найденную запись устанавливается курсор, но сама запись на экран не предъявляется. Для того чтобы увидеть найденную запись, надо подать одну из команд  BROWSE или DISPLAY. При использовании команды  BROWSE найденная запись отмечается курсором. Для того, чтобы найти следующую запись с таким же значением, надо в окне Command  подать команду  CONTINUE  и заново предъявить на экран окно BROWSE. Если записей с указанным значением нет или дошли до конца файла, то на экран выводится сообщение  «End  of  Locate  Scope».

Команда ускоренного поиска.

Команда  SEEK  <значение>  производит поиск указанного значения только по полю текущего индекса. Поиск производится методом деления пополам, что увеличивает скорость поиска в несколько раз.

Определить, найдена ли запись указанными командами, можно если после их выполнения оценить значение, возвращаемое функцией FOUND(). Если функция вернула значение True- значит поиск увенчался успехом, если False-искомое значение не найдено.
Если вы просматриваете таблицу по команде BROWSE, то можно осуществить простейший поиск средствами команд главного меню Visual FoxPro. Для такого поиска следует выбрать в меню Edit (Правка) команду Find (Поиск), либо нажав сочетание клавиш Ctrl+F. Появится диалоговое окно, представленное на «рис.1».



Рис.1

В поле Look for (Найти) следует ввести искомое значение. После чего нужно щелкнуть мышью по кнопке Find Next (Найти следующее). Указатель установится на запись, в поле которого встретилось первое упоминание введенного значения. Окно поиска при этом останется на месте. Если нашлась не та запись, то можно продолжить поиск, щелкнув еще раз по кнопке  Find Next (Найти следующее).
Для установки типа даты в FoxPro предусмотрена команда  SET  DATE  <тип даты>
Опция <тип даты> может принимать одно из значений:
AMERICAN  - американский тип даты (по умолчанию). Формат даты  мм\дд\гг
BRITISH        - английский тип даты.  Формат даты        дд\мм\гг
ITALIAN       - итальянский тип даты. Формат даты        дд-мм-гг
GERMAN      - немецкий тип даты.       Формат даты        дд.мм.гг
ANSI               - тип даты  ANSI    Формат даты                   гг.мм.дд
Для того чтобы номер года выводился на экран четырьмя цифрами, надо в окне  Command  подать команду  SET  CENTURY  ON.

Для вывода на экран одной или нескольких записей предусмотрены следующие команды.
DISPLAY  - выводит на экран текущую запись.
DISPLAY  NEXT  <выр. N>  - выводит на экран несколько записей, количество которых указано в  <выр.N>, начиная с текущей записи.
DISPLAY  REST  - выводит на экран все записи, начиная от текущей до конца таблицы.
DISPLAY  RECORD  <выр. N>  - выводит на экран запись с указанным номером, но требует задания физического номера записи, который, как правило, неизвестен.



Задание:

Вариант №1. 

Для таблиц, созданных в Лабораторной работе №1, применить команду последовательного поиска, команду ускоренного поиска, установить английский тип даты. Кроме того, вывести на экран записи, применив команды DISPLAY, DISPLAY  REST  .

Вариант №2. 

Для таблиц, созданных в Лабораторной работе №1, применить команду последовательного поиска, команду ускоренного поиска, установить итальянский тип даты. Кроме того, вывести на экран записи, применив команды DISPLAY, DISPLAY  NEXT  .

Вариант №3. 

Для таблиц, созданных в Лабораторной работе №1, применить команду последовательного поиска, команду ускоренного поиска, установить американский тип даты. Кроме того, вывести на экран записи, применив команды DISPLAY  NEXT  , DISPLAY  REST  .

Вариант №4. 

Для таблиц, созданных в Лабораторной работе №1, применить команду последовательного поиска, команду ускоренного поиска, установить тип даты  ANSI    . Кроме того, вывести на экран записи, применив команды DISPLAY  REST  , DISPLAY  NEXT  .

Вариант №5. 

Для таблиц, созданных в Лабораторной работе №1, применить команду последовательного поиска, команду ускоренного поиска, установить немецкий тип даты. Кроме того, вывести на экран записи, применив команды DISPLAY, DISPLAY  RECORD  .

Вариант №6. 

Для таблиц, созданных в Лабораторной работе №1, применить команду последовательного поиска, команду ускоренного поиска, установить американский тип даты. Кроме того, вывести на экран записи, применив команды DISPLAY  RECORD  , DISPLAY  REST  .

Вариант №7. 

Для таблиц, созданных в Лабораторной работе №1, применить команду последовательного поиска, команду ускоренного поиска, установить английский тип даты. Кроме того, вывести на экран записи, применив команды DISPLAY, DISPLAY  NEXT  .

Вариант №8. 

Для таблиц, созданных в Лабораторной работе №1, применить команду последовательного поиска, команду ускоренного поиска, установить тип даты  ANSI.     Кроме того, вывести на экран записи, применив команды DISPLAY  NEXT  , DISPLAY  RECORD  .

Вариант №9. 

Для таблиц, созданных в Лабораторной работе №1, применить команду последовательного поиска, команду ускоренного поиска, установить немецкий тип даты. Кроме того, вывести на экран записи, применив команды DISPLAY  RECORD  , DISPLAY  REST  .

Вариант №10. 

Для таблиц, созданных в Лабораторной работе №1, применить команду последовательного поиска, команду ускоренного поиска, установить американский тип даты. Кроме того, вывести на экран записи, применив команды DISPLAY, DISPLAY  NEXT  .

Контрольные вопросы:

1.	Назовите две команды поиска данных.
2.	Укажите особенности команды LOCATE.
3.	Укажите особенности команды SEEK.
4.	Какие форматы дат допустимы в FoxPro?
5.	Как установить формат даты?
6.	Какие команды выводят записи на экран?

Содержание отчета:

Номер, тема, цель лабораторной работы;
Задание;
Ход выполнения работы с приведением текста используемых команд и результата их выполнения;
Вывод
Лабораторная   работа  № 6.

Тема: Установление взаимосвязей между таблицами.
Цель работы:	освоить приемы установления взаимосвязи  «один-к-одному» и «один-ко-многим».

Методические указания:

Если две таблицы имеют одно общее поле, то по этому полю можно установить взаимосвязь. Для установления взаимосвязи надо выполнить следующие условия:
-	связываемые таблицы должны иметь хотя бы одно общее поле;
-	связываемые таблицы должны быть открыты каждая в своей рабочей области;
-	дочерняя таблица должна быть открыта в активной рабочей области;
-	в родительской таблице по общему полю должен быть построен индекс.
Общее поле в обеих таблицах должно иметь: одинаковое имя, одинаковый тип и одинаковый размер.
Чтобы сделать рабочую область активной надо из окна  Command  подать команду:
SELECT  <номер раб. области  |  псевдоним>
Для установления взаимосвязи «один-к-одному» используют команду:
SET  RELATION  TO  [<Выражение1>  INTO  <рабочая область 1>]
[, <Выражение2>  INTO  <рабочая область2>]
[ . . .  ] 
[ADDITIVE]
где:
<Выражение 1>  - поле главной таблицы или действие над полями главной таблицы, соответствующее индексному выражению в таблице, с которой связывается главная таблица.
INTO  <рабочая область 1>  -  указание на псевдоним пассивной рабочей области, в которой размещена первая родительская таблица.
Для разрыва всех взаимосвязей «один-к-одному» надо подать команду SET RELATION TO  без опций. Если надо разорвать одну конкретную взаимосвязь, то следует воспользоваться командой  SET  RELATION  OFF  INTO  <псевдоним N>, где указывается псевдоним пассивной рабочей области, с которой надо разорвать взаимосвязь.
Установленные связи таблиц удобно наблюдать в окне Data Session (Сессия работы с данными), вызываемом с помощью последовательности команд Window→ Data Session (Окно→Сессия работы с данными) связь между таблицами отображается в поле Relations (Связи), как это показано на «рис.1».

Рис.1

Для установления взаимосвязи «один-ко-многим» предварительно устанавливается взаимосвязь «один-к-одному», а затем подают команду :
SET  SKIP  TO  [<псевд.1>[, <псевд.2>] . . .]
Чтобы разорвать взаимосвязь «один-ко-многим» надо подать команду  SET  SKIP  TO  без опций. При этом разрываются все взаимосвязи. Для разрыва конкретной взаимосвязи команды не существует. Ясно, что при разрыве всех взаимосвязей «один-к-одному», разрываются все взаимосвязи «один-ко-многим».

Задание:

Для таблиц, созданных в Лабораторной работе №1, установить взаимосвязи один-к-одному» и «один-ко-многим». Пронаблюдайте установленные связи.

Контрольные вопросы:

1.	Какие существуют структуры объединений таблиц?
2.	Какие условия надо предварительно выполнить, чтобы установить взаимосвязь между таблицами?
3.	Какой командой устанавливается взаимосвязь «один-к-одному»?
4.	Какие условия надо выполнить, чтобы установить взаимосвязь «один-ко-многим»?

Содержание отчета:

Номер, тема, цель лабораторной работы;
Задание;
Ход выполнения работы с приведением текста используемых команд и результата их выполнения;
Вывод.









































Лабораторная   работа  № 7.

Тема: Написание программного файла и работа с несколькими табличными файлами.
Цель работы: написать и сохранить на диске программный файл, объединить несколько табличных файлов в одну базу данных.

Методические указания:

Для создания нового программного файла выберите в меню File (Файл) команду New (Новый). Откроется диалоговое окно, представленное на «рис.1».



Рис.1

Выберите пункт Program(Программа), а затем щелкните мышью по кнопке New file (Новый файл). Откроется пустое окно, предназначенное для ввода текста программы.
Файлы с программами являются текстовыми файлами с расширением .prg. Для сохранения файла нужно выбрать в меню File(Файл) команду Save (Сохранить). В результате откроется стандартное окно сохранения документа, где тип файла уже будет указан и потребуется ввести имя и место его хранения. 
Для открытия сохраненного ранее файла программы следует выбрать в меню File (Файл) команду Open (Открыть). При этом появится стандартное диалоговое окно, представленное на «рис.2».



Рис.2

В нем, в раскрывающемся списке Тип файлов (File types) следует выбрать значение Program, а затем папку, в которой находится требуемый файл.
Для запуска программы на выполнение можно выбрать команду DO <Имя_программы> (Выполнить) из меню Program (Программа) или нажать комбинацию клавиш Ctrl+D, или щелкнуть по кнопке [!] на панели инструментов Стандартная. 

При объединении нескольких табличных файлов надо обеспечить выполнение следующих условий ( подробнее см. лабораторную работу №6) :
-	построить индексы по общим ключевым полям;
-	открыть табличные файлы вместе со своими индексными файлами, причем каждый табличный файл в своей рабочей области;
-	объединяемые табличные файлы должны иметь общее поле (хотя бы попарно).



Задание:

Вариант №1: 

Cоздать программный  файл, с помощью которого отображалось бы окно для просмотра записей таблицы. Редактировать данные запрещено. Задать заголовок окна и время, в течение которого окно будет открыто без каких – либо действий пользователя. Воспользоваться командой BROWSE.

Вариант №2:  

Cоздать программный файл, с помощью которого устанавливается тип даты  ITALIAN. Вывести записи таблицы на экран, задав условие на вывод. Выводить номер записи. Воспользоваться командой DISPLAY. Отсортировать выводимые записи при помощи ранее созданного индекса.

Вариант №3:  

Cоздать программный файл, с помощью которого устанавливается тип даты  American. Вывести записи таблицы на экран, задав условие на вывод. Номер записи не выводить. Воспользоваться командой DISPLAY. Отсортировать выводимые записи при помощи ранее созданного индекса.

Вариант №4: 

Cоздать программный  файл, с помощью которого отображалось бы окно для просмотра записей таблицы. Добавлять данные запрещено. Задать заголовок окна. Воспользоваться командой BROWSE.

Вариант №5: 

Cоздать программный  файл, с помощью которого отображалось бы окно для просмотра записей таблицы. Удалять и измеять данные запрещено. Задать заголовок окна. Воспользоваться командой BROWSE .

Вариант №6: 

Cоздать программный  файл, с помощью которого отображалось бы окно для просмотра записей таблицы. Удалять и добавлять данные запрещено. Задать заголовок окна. Воспользоваться командой BROWSE .



Вариант №7:  

Cоздать программный файл, с помощью которого устанавливается тип даты  British. Вывести записи таблицы на экран, задав условие на вывод. Номер записи не выводить. Воспользоваться командой DISPLAY. Отсортировать выводимые записи при помощи ранее созданного индекса.

Вариант №8:  

Cоздать программный файл, с помощью которого устанавливается тип даты  American. Вывести записи таблицы на экран, начиная с текущей записи таблицы. Воспользоваться командой DISPLAY. Отсортировать выводимые записи при помощи ранее созданного индекса.

Вариант №9:  

Cоздать программный файл, с помощью которого устанавливается тип даты  Italian. Вывести все записи таблицы на экран. Номер записи не выводить. Воспользоваться командой DISPLAY. Отсортировать выводимые записи при помощи ранее созданного индекса.

Вариант №10: 

Cоздать программный  файл, с помощью которого отображалось бы окно для просмотра записей таблицы. Редактировать и добавлять данные запрещено. Задать заголовок окна. Воспользоваться командой BROWSE .

Контрольные вопросы:

1.	Укажите назначение программного файла.
2.	Как программный файл поставить на выполнение?
3.	Укажите приемы редактирования программного файла.
4.	Какой командой задается активная рабочая область?
5.	Укажите назначение префикса.

Содержание отчета:

Номер, тема, цель лабораторной работы;
Задание;
Ход выполнения работы с приведением листинга программы и результата ее выполнения;
Вывод.

Лабораторная   работа   № 8.

Тема:	Работа с переменными и массивами.
Цель работы:	научиться приемам работы с переменными, изучить команды и функции для работы с массивами.

Методические указания:

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

Таблица 1 - Перечень типов переменных, используемых в Visual FoxPro.


Специального объявления типа переменной не требуется. Тип переменной определяется при первом присваивании ей какого-либо значения.
В Visual FoxPro существует три области видимости переменных:
LOCAL – переменные можно использовать и изменять их значения только внутри той процедуры или функции, в которой они объявлены. Когда процедура или функция завершает работу, переменные удаляются из памяти.
PRIVATE – скрывает переменные, заданные в программе более высокого уровня, вызывающей текущую программу. Это значит, что если вы объявили в программе переменную pn_RecN=5 и вызвали процедуру, внутри которой объявлена переменная, также имеющая имя pn_RecN и обладающая областью действия  PRIVATE, то внутри процедуры вы можете присваивать ей какие угодно значения, производить над ней какие угодно операции, но переменная вызывающей программы pn_RecN при этом сохранит свое значение и будет по-прежнему  pn_RecN=5.
PUBLIC – позволяет объявить глобальные переменные. Значения этих переменных видны из всех процедур и функций.
Для задания переменным области их видимости укажите соответствующее ключевое слово, а затем через запятую перечислите переменные.
1.	Присвоение значений переменной.
Для присвоения значения одной переменной используется оператор  =  (присвоить).
		<имя переменной>  =  <значение>
Для присваивания одного и того же значения нескольким переменным используется команда:
	STORE  <выражение>  TO  <список имен переменных>
Имена переменных в команде разделяются запятыми. 

2. Сохранение переменных.
В FoxPro переменные можно сохранить в файле или в Memo-поле, с помощью команды :
SAVE TO <имя файла>| TO MEMO <имя Memo-поля>
 [ALL LIKE | ALL EXCEPT <шаблон>]
Опция ALL LIKE сохраняет переменные, имена которых соответствуют <шаблону>
Опция ALL EXCEPT сохраняет переменные, имена которых не соответствуют шаблону.

2. Загрузка переменных в оперативную память.
Ранее сохраненные в файле или Memo-поле переменные в любой момент времени могут быть загружены в оперативную память командой :
RESTORE  FROM <имя файла> | FROM  MEMO <имя Memo-поля>  [ ADDITIVE ]
Если опция ADDITIVE отсутствует, то переменные из файла заменяют в оперативной памяти одноименные переменные. Если опция ADDITIVE указана, то в оперативную память добавляются переменные с отсутствующими именами.

3. Удаление переменных из оперативной памяти.
Из оперативной памяти могут быть удалены либо все, либо указанные переменные с помощью команды :
RELEASE  <список имен перем.> | RELEASE  ALL  [ LIKE | EXCEPT  <шаблон> ]

4. Просмотр переменных.
Для вывода на экран, принтер или в файл как системных, так и пользовательских переменных используют команду:
DISPLAY  MEMORY  [ LIKE <шаблон> ]  [ TO  PRINTER  |  FILE <имя файла> ]

5. Описание массивов.
Для описания массивов используют две команды, формат которых одинаковый.
DECLARE  |  DIMENSION  <имя массива 1>(<размер массива 1>) 
[, <имя массива 2>(<размер массива 2>) ]  . . .

6. Копирование данных из таблицы в одномерный массив.
Текущая запись таблицы копируется в одномерный массив командой:
SCATTER  [ FIELDS <список имен полей>] [ MEMO ]  TO <массив>
 [BLANK] | [MEMVAR] [BLANK]
Команда копирует либо все поля записи, либо поля, имена которых указаны в <списке>. Если заранее массив не был описан, то он создается автоматически. Если указана опция MEMO, то будут копироваться и Memo-поля записи. Если указана опция MEMVAR, то поля записи сохраняются в переменных, имена которым присваиваются автоматически.

7. Копирование из одномерного массива в таблицу.
Данные из одномерного массива замещают данные текущей строки.
   GATHER  FROM  <имя массива>  |  MEMVAR [ FIELDS <список имен полей> ] [MEMO]

8. Копирование данных из таблицы в двумерный массив.
Копирование начинается с текущей записи и берется столько записей, сколько описано строк в двумерном массиве.
COPY  TO  ARRAY  <имя массива> [ FIELDS <список имен полей>] . . .
Команда требует обязательного предварительного описания двумерного массива.

9. Копирование данных из двумерного массива в таблицу.
Данные из двумерного массива помещаются в конец таблицы, причем каждая строка массива становится записью таблицы.
APPEND  FROM  ARRAY  <имя массива>  [ FIELDS  <список имен полей> ]
Задание:

Вариант №1: 

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

Вариант №2: 

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

Вариант №3:

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

Вариант №4:

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

Вариант №5:

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

Вариант №6:

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


Вариант №7:

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

Вариант №8:

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

Вариант №9:

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

Вариант №10:

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

Контрольные вопросы:

1.	Укажите команду для описания массива?
2.	Какие массивы допустимы в FoxPro?
3.	Укажите приемы обращения к элементу массива.
4.	Укажите две команды для работы с одномерными массивами и особенности этих команд.
5.	Укажите две команды для работы с двумерными массивами и особенности этих команд.
6.	Укажите команды для работы с переменными.

Содержание отчета:

Номер, тема, цель лабораторной работы;
Задание;
Ход выполнения работы с приведением листинга программы и результата ее выполнения;
Вывод.































Лабораторная   работа   № 9.


Тема:	Создание табло ожидания. Функции СУБД. Ввод и вывод данных.
Цель работы:	изучить основные функции СУБД, научиться разрабатывать табло ожидания, изучить команды ввода и вывода данных, научиться создавать форматный файл.

Методические указания:


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

Простейшие команды вывода.

Команды ? | ?? [<выр1>]  [PICTURE <вырС1>] [FUNCTION <вырС2>] [AT <вырN1>] [FONT <вырС3>[,<вырN2>]] [STYLE <вырС4>][,<выр2>]…
предназначены для вывода переменных на экран в следующую или текущую строку экрана соответственно. Если для переменной указана опция  АТ, то значение переменной выводится в указанную колонку (столбец) экрана.

Команда форматного вывода.

@  <Y1>, <X1>  [ SAY  <выр. 1>]  . . .  [ GET  <переменная>  . . . ]
Эта команда используется для форматного вывода на экран или принтер. После имени команды  @  указываются координаты вывода значения переменной. После ключевого слова  SAY  могут быть указаны уточняющие опции, указывающие как осуществить вывод значения выражения  <выр. 1>.  После ключевого слова  GET  могут быть указаны уточняющие опции, указывающие как осуществить вывод значения переменной. Если с командой  @  используется одно из ключевых слов, то в указанное место экрана выводится соответственно либо выражение, либо переменная. Если используются оба ключевые слова, то в указанное место экрана сначала выводится выражение, а за ним – переменная.



Задание:

Вариант №1:
 
Создать программный файл, в котором воспользоваться простейшей командой вывода. При этом осуществить вывод значения в текущей строке. Затем воспользоваться командой форматного вывода, задав расположение текста по центру внутри поля.

Вариант №2: 

Создать программный файл, в котором воспользоваться простейшей командой вывода. При этом осуществить вывод значения в следующей строке. Затем воспользоваться командой форматного вывода, задав коды управления выводом.

Вариант №3:

Создать программный файл, в котором воспользоваться простейшей командой вывода. При этом осуществить вывод значения в текущей строке. Затем воспользоваться командой форматного вывода, задав расположение текста по правой границе.

Вариант №4:

Создать программный файл, в котором воспользоваться простейшей командой вывода. При этом осуществить вывод значения в следующей строке. Затем воспользоваться командой форматного вывода, задав расположение текста по центру внутри поля.

Вариант №5:

Создать программный файл, в котором воспользоваться простейшей командой вывода. При этом осуществить вывод значения в следующей строке. Затем воспользоваться командой форматного вывода, задав расположение текста по правой границе.

Вариант №6:

Создать программный файл, в котором воспользоваться простейшей командой вывода. При этом осуществить вывод значения в следующей строке, а номер колонки задать 5. Затем воспользоваться командой форматного вывода, запретив редактирование переменной.


Вариант №7:

Создать программный файл, в котором воспользоваться простейшей командой вывода. При этом осуществить вывод значения в текущей строке а номер колонки задать 10. Затем воспользоваться командой форматного вывода, задав расположение текста по правой границе.

Вариант№8:

Создать программный файл, в котором воспользоваться простейшей командой вывода. При этом осуществить вывод значения в текущей строке, а номер колонки задать 7. Затем воспользоваться командой форматного вывода, задав расположение текста по центру внутри поля.

Вариант№9:

Создать программный файл, в котором воспользоваться простейшей командой вывода. При этом осуществить вывод значения в следующей строке. Затем воспользоваться командой форматного вывода, задав расположение текста по правой границе и запретив редактирование переменной.

Вариант №10:

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

Контрольные вопросы:

1.	Для каких целей используются табло ожидания?
2.	Назовите простейшие команды ввода-вывода.
3.	Назовите команду форматного ввода-вывода.
4.	Укажите назначение опции SAY команды форматного ввода-вывода.
5.	Укажите назначение опции GET команды форматного ввода-вывода.

Содержание отчета:


Номер, тема, цель лабораторной работы;
Задание;
Ход выполнения работы с приведением листинга программы и результата ее выполнения;
Вывод.































Лабораторная   работа  № 10.

Тема:	Создание FOX – меню различных видов.
Цель работы: изучить команды для создания  FOX-меню, свойства различных видов  FOX-меню.

Методические указания:

Световое меню – это перечень элементов меню, один из элементов которых подсвечен (выделен цветом). Выбор элемента пункта меню осуществляется с помощью щелчка левой кнопки мыши или, после установки на него курсора, нажатием клавиши Enter. Световое меню, как правило, накладывается «вторым слоем» на имеющееся изображение. После удаления меню с экрана, восстанавливается первоначальный вид экрана.
Меню типа  FOX  активны только во время работы программы. Меню этого типа всегда вырабатывают числовой код, который фиксирует выбор пользователя. Далее этот числовой код анализируется и выполняется необходимое действие в базе данных. После первого выбора из меню, оно удаляется из оперативной памяти. Поэтому для организации следующего выбора надо программу меню заново загрузить в оперативную память.
Существует три вида  FOX  меню.

Простейшее  LIGHTBAR – меню.

Меню произвольной формы, т.е. любой пункт меню может быть выведен в любое место экрана. Направление обхода пунктов меню произвольное. Команды для создания  LIGHNBAR меню.
а) Описание и использование пункта меню.
		@  <Y, X>  PROMPT  <выр. С1>  [ MESSAGE  <выр. С2> ]
Команда выводит на экран строку с надписью <выр. С1>.  Если указана опция MESSAGE  <выр. С2> , то в последнюю строку экрана выводится комментарий  <выр. С2>  к пункту меню.

б) Фиксация выбора пользователя.
		MENU  TO  <переменная>
Команда запоминает в <переменная> номер выбранного пункта меню.

в) Перенаправление комментария к пункту меню.
		SET  MESSAGE  TO  [ <выр. N>  [ LEFT  |  RIGHT  |  CENTER ] ]
Если эта команда указана перед командой  @  <Y, X>  PROMPT  . . . , то комментарий к пункту меню направляется вместо последней строки экрана в строку с номером  <выр. N> .

2. Вертикальное  POPUP  меню.
POPUP меню представляет собой прямоугольную область, состоящую из строки заголовка и произвольного количества строк пунктов меню. Для создания вертикального меню используются следующие команды.
а) Описание прямоугольной области меню.
	@  <Y, X>  MENU  <имя массива> , <выр. N1> [ , <выр. N2>] [ TITLE <выр. С> ]  где
-	<имя массива> - имя одномерного массива, который содержит названия пунктов меню (до 50-ти символов);
-	<выр. N1>  - число пунктов меню (до 128);
-	<выр. N2>  - число одновременно отображаемых на экране пунктов меню (до 17).
б) Фиксация выбора пользователя.
		READ  MENU  TO  < переменная>  
Команда сохраняет в < переменная> номер выбранного пункта меню.

Двухуровневое  PULLDOWN  меню.

PULLDOWN  меню представляет собой строку, состоящую из пунктов меню. При выборе любого пункта из строки меню, открывается вертикальное меню, где пользователь уточняет свой выбор. Для создания меню используются следующие команды.
а) Описание строки меню.
		MENU  BAR  <имя массива> , <выр. N>             где
-	<имя массива>  - имя двумерного массива, описывающего пункты меню;
-	<выр. N>  - общее число пунктов меню.

б) Описание вертикального (вспомогательного) меню.
		MENU  <выр. N1>, <имя массива>, <выр. N2>  [ , <выр. N3> ]          где
-	<имя массива>  - имя одномерного массива, описывающего пункты меню;
-	<выр. N1>  - номер элемента главного меню, который будет вызывать данное вспомогательное меню;
-	<выр. N2>  - число пунктов вспомогательного меню;
-	<выр. N3>  - число одновременно показываемых пунктов меню.

в) Фиксация выбора пользователя.
		READ  MENU  BAR  TO <пер. 1>, <пер. 2>     где
-	<пер. 1>  - переменная числового типа, содержащая выбор пользователя из главного меню;
-	<пер. 2>  - переменная числового типа, содержащая выбор пользователя из вспомогательного меню.
Задание:

Вариант №1: 

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

Вариант №2: 

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

Вариант №3: 

Написать текст программы, отображающей на экране главное меню, состоящее из четырех пунктов: зарплата, больничные листы, расчеты и выход. Каждый пункт меню должен иметь вспомогательное меню из нескольких пунктов: зарплата (расчет, коэффициенты), больничные листы (ввод, удаление), расчеты (сотрудники, обслуживающий персонал), выход (выход из программы). Организовать выход из меню. Тип меню – PULLDOWN.

Вариант №4:

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

Вариант №5:

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

Вариант №6:

 Написать текст программы, отображающей на экране главное меню, состоящее из четырех пунктов: учет товара, справочники, анализ продаж и выход. Каждый пункт меню должен иметь вспомогательное меню из нескольких пунктов: учет товара (товар, приход, расход), справочники (поставщики, филиалы), анализ продаж (анализ за прошлый период), выход (выход из программы). Организовать выход из меню. Тип меню – PULLDOWN.

Вариант №7:

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

Вариант №8:

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

Вариант №9:

Написать текст программы, отображающей на экране главное меню, состоящее из четырех пунктов: сыр, изготовитель, способ хранения и выход. Каждый пункт меню должен иметь вспомогательное меню из нескольких пунктов: сыр (учет, расчет стоимости, продажи), изготовитель (контакты, сроки), способ хранения (температурный режим), выход (выход из программы). Организовать выход из меню. Тип меню – PULLDOWN.

Вариант №10:

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

Контрольные вопросы:

1.	Укажите особенности меню типа FOX.
2.	Укажите особенности произвольного LIGHTBAR – меню.
3.	Укажите команды создания вертикального меню типа FOX.
4.	Укажите команды создания горизонтального меню типа FOX.
5.	Укажите порядок создания двухуровневого меню типа FOX.

Содержание отчета:

Номер, тема, цель лабораторной работы;
Задание;
Ход выполнения работы с приведением листинга программы и результата ее выполнения;
Вывод.






























Лабораторная   работа   № 11.

Тема:	Создание  dBASE  меню различных типов.
Цель работы: изучить команды по созданию меню типа dBASE и их свойства.

Методические указания:

Меню типа  dBASE  после своего определения остаются независимым объектом, к которому можно обратиться из любого места приложения, и даже из окна  Command, когда закрыта база данных и программный файл закончил свою работу. Это меню вырабатывает не только числовые переменные для анализа выбора пользователя, но и непосредственно вызывает процедуры, подпрограммы и команды для обработки сделанного выбора. Только это меню позволяет в качестве пунктов меню задать имена файлов, имена компонентов базы данных и осуществить множественный отбор пунктов меню.
DBASE меню бывают двух видов – вертикальные (POPUP)  и горизонтальные  (BAR). Для построения меню любого типа надо выполнить четыре этапа.
-	Определение меню.
Описывается содержание меню, «горячие» клавиши быстрого доступа, форма и реакции меню. Определение делается один раз.
-	Активация меню.
Команды (клавиши) активации выводят меню на экран и делают его чувствительным к выбору пользователя.
-	Деактивация меню.
Меню удаляется с экрана, но остается в оперативной памяти, для последующего использования.
-	Удаление меню.
Меню удаляется из оперативной памяти. Для нового использования меню его надо заново определять.
Основные команды, которые используются для создания вертикального меню.
1. Описание меню целиком.
		DEFINE  POPUP  <имя меню>  [ FROM  <Y1, X1> ]  [ TO  <Y2, X2> ]  . . . 
Команда задает размеры и положение меню на экране и имеет дополнительные опции.
2. Описание одного пункта меню.
		DEFINE  BAR  <выр. N1>  OF  <имя меню>  PROMPT  <выр. С1>  . . .     где
-	<выр. N1>  - имя описываемого пункта меню
-	PROMPT  <выр. С1>  - может содержать функцию для создания динамически изменяющегося меню.
Команда содержит дополнительные опции.

3. Определение реакции меню при его активации.
		ON  SELECTION  POPUP  <имя меню> | ALL <команда>
После активации меню выполняется  <команда> .

4. Определение реакции после выбора пункта меню.
		ON  SELECTION  BAR  <выр. N>  OF  <имя меню>  [ <команда> ]
После выбора пункта меню с номером <выр. N> выполняется <команда> . Далее может анализироваться код выбранной клавиши и определяться последующие действия.

5. Назначение пункту меню вспомогательного меню (второго уровня).
		ON  BAR  <выр. N>  OF  <имя меню> 
 [ ACTIVATE POPUP <имя вспомогательного вертикального меню> |
 ACTIVATE  MENU  <имя вспомогательного горизонтального меню> ]
Пункту меню с номером <выр. N> назначается вспомогательное меню, либо вертикальное (ACTIVATE POPUP), либо горизонтальное (ACTIVATE  MENU).

6. Активация меню.
		ACTIVATE  POPUP  <имя меню>  . . .
Команда выводит на экран вертикальное меню <имя меню> .  Команда имеет дополнительные опции.

7. Деактивация меню.
		DEACTIVATE  POPUP
Команда деактивирует и удаляет с экрана все вертикальные меню, но сохраняет их в оперативной памяти.

8. Удаление меню.
		RELEASE  POPUPS [ <> ]  EXTENDED ] ]
Команда удаляет с экрана и из оперативной памяти все вертикальные меню. Если указана опция EXTENDED, то удаляются и все подчинённые меню.

Команды для описания горизонтального меню.
1. Описание горизонтального меню целиком.
		DEFINE  MENU  <имя меню>  . . .
Команда описывает строку меню и имеет дополнительные опции.

2. Описание пункта меню.
		DEFINE  PAD  <имя пункта меню>  OF  <имя меню> 
 PROMPT  <наименование пункта меню>      где
-	<имя пункта меню>  - имя пункта пишется буквами латинского алфавита. По этому имени производится программное обращение к пункту меню.
-	<наименование пункта меню>  - может писаться буквами русского алфавита и выводится на экран.
Команда имеет дополнительные опции.

3. Активация горизонтального меню.
		ACTIVATE  MENU  <имя меню>  . . .
Команда активизирует и выводит на экран горизонтальное меню. Команда имеет дополнительные опции.

4. Определение реакции при активации меню.
		ON  SELECTION  MENU  <имя меню>  [ <команда> ]
Задает <команда>, которая будет выполняться при активации меню.

5. Определение реакции на выбор пункта меню.
		ON  SELECTION  PAD  <имя пункта>  OF  <имя меню>  [ <команда> ]
Определяет <команда>, которая будет выполняться при выборе пункта меню. Далее может производиться анализ числового кода выбранного пункта меню и определяться дальнейшие действия.

6. Назначение пункту меню дополнительного (вспомогательного) меню.
		ON  PAD  <имя пункта>  OF  <имя меню> 
 [ ACTIVATE  POPUP <имя вспомогательного вертикального меню>  |  
ACTIVATE  MENU  <имя вспомогательного горизонтального меню> ]
Команда назначает пункту меню <имя пункта> дополнительное (вспомогательное) либо вертикальное (ACTIVATE POPUP), либо горизонтальное (ACTIVATE  MENU) меню.

7. Деактивация меню.
		DEACTIVATE  MENUS
Команда удаляет с экрана, но оставляет в оперативной памяти, все горизонтальные меню.
8. Удаление меню.
		RELEASE  MENUS  [ <список имен меню>  [ EXTENDED ] ]
Команда удаляет с экрана и из оперативной памяти все (или указанные) горизонтальные меню. Если указана опция  EXTENDED, то удаляются также и все подчиненные меню.

Допускается построение двухуровневых и многоуровневых ( PULLDOWN ) меню. При этом используются все рассмотренные команды.
Порядок создания двухуровневого меню:
- описывается главное горизонтальное меню (DEFINE  MENU    и  DEFINE  PAD  ).
-	Описываются реакции пунктов меню первого уровня  (ON  SELECTION  PAD  ).
-	Устанавливается связь между меню первого уровня и меню второго уровня ( команды  ON  PAD  …).
-	Описываются вспомогательные меню (как правило POPUP).
-	Активизируется вся конструкция меню (команда  ACTIVATE  MENU ).
-	Анализ выбора пользователем пункта меню.

Задание:

Вариант №1: 

Написать текст программы, отображающей на экране вертикальное меню, состоящее из четырех пунктов: учет товара, справочники, анализ продаж и выход. Каждый пункт меню должен иметь вспомогательное меню из нескольких пунктов: учет товара (товар, приход, расход), справочники (поставщики, филиалы), анализ продаж (анализ за прошлый период), выход (выход из программы). Организовать выход из меню. 

Вариант №2: 

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

Вариант №3:

Написать текст программы, отображающей на экране горизонтальное меню, состоящее из четырех пунктов: учет товара, справочники, анализ продаж и выход. Каждый пункт меню должен иметь вспомогательное меню из нескольких пунктов: учет товара (товар, приход, расход), справочники (поставщики, филиалы), анализ продаж (анализ за прошлый период), выход (выход из программы). Организовать выход из меню. 



Вариант №4:

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

Вариант №5:

Написать текст программы, отображающей на экране горизонтальное меню, состоящее из четырех пунктов: сыр, изготовитель, способ хранения и выход. Каждый пункт меню должен иметь вспомогательное меню из нескольких пунктов: сыр (учет, расчет стоимости, продажи), изготовитель (контакты, сроки), способ хранения (температурный режим), выход (выход из программы). Организовать выход из меню. 

Вариант №6:

Написать текст программы, отображающей на экране вертикальное меню, состоящее из четырех пунктов: ученые, премии, труды и выход. Каждый пункт меню должен иметь вспомогательное меню из нескольких пунктов: ученые (математики, физики, химики), премии (Государственная, Нобелевская), труды (специализация, экземпляры), выход (выход из программы). Организовать выход из меню. 

Вариант №7:

Написать текст программы, отображающей на экране вертикальное меню, состоящее из четырех пунктов: сыр, изготовитель, способ хранения и выход. Каждый пункт меню должен иметь вспомогательное меню из нескольких пунктов: сыр (учет, расчет стоимости, продажи), изготовитель (контакты, сроки), способ хранения (температурный режим), выход (выход из программы). Организовать выход из меню. 

Вариант №8:

Написать текст программы, отображающей на экране горизонтальное меню, состоящее из четырех пунктов: ученые, премии, труды и выход. Каждый пункт меню должен иметь вспомогательное меню из нескольких пунктов: ученые (математики, физики, химики), премии (Государственная, Нобелевская), труды (специализация, экземпляры), выход (выход из программы). Организовать выход из меню. 

Вариант №9:

Написать текст программы, отображающей на экране горизонтальное меню, состоящее из четырех пунктов: клиент, заказ, номенклатура и выход. Каждый пункт меню должен иметь вспомогательное меню из нескольких пунктов: клиент (постоянные, обычные, неблагонадежные), заказ (отработанный, в работе), номенклатура (остатки), выход (выход из программы). Организовать выход из меню. 

Вариант №10:

Написать текст программы, отображающей на экране вертикальное меню, состоящее из четырех пунктов: клиент, заказ, номенклатура и выход. Каждый пункт меню должен иметь вспомогательное меню из нескольких пунктов: клиент (постоянные, обычные, неблагонадежные), заказ (отработанный, в работе), номенклатура (остатки), выход (выход из программы). Организовать выход из меню. 

Контрольные вопросы:

1.	Укажите особенности меню типа dBASE.
2.	Укажите команды для создания вертикального меню типа dBASE.
3.	Укажите команды для создания горизонтального меню типа dBASE.
4.	Укажите порядок создания многоуровневого меню типа dBASE.

Содержание отчета:

Номер, тема, цель лабораторной работы;
Задание;
Ход выполнения работы с приведением листинга программы и результата ее выполнения;
Вывод.








Лабораторная   работа   № 12.

Тема:	Создание рабочих окон.
Цель  работы:	 изучить команды по созданию окон и свойства многооконного интерфейса.

Методические указания:

При разработке интерфейса, основанного на использовании вторичных окон (USER DEFINED WINDOWS) предполагают, что вся информация, выдаваемая программой, будет размещаться в одном из окон. Каждое вторичное окно должно быть определено, а затем, по мере необходимости, активизировано.

Для создания рабочих окон используют команды:

1. Определение окна.
DEFINE  WINDOW  <имя окна>  FROM  <Y1, X1>  TO  <Y2, X2>  . . .
Команда задаёт размер и положение окна на экране и имеет дополнительные опции.

2. Активация окна.
     ACTIVATE  WINDOW  <имя окна 1> [ , <имя окна 2> . . . ] | ALL [IN [WINDOW] <имя окна 3> | IN SCREEN [ BOTTOM | TOP |SAME]
Команда активизирует окно (или окна) и предъявляет их на экран. Опции  BOTTOM и TOP  указывают на то, что вновь открываемые окна располагаются под  (над) уже открытыми окнами соответственно.

3. Управление расположением окна.
SHOW WINDOW <Имя окна1> [,<Имя окна2>...] | ALL | SCREEN   [IN [WINDOW]<Имя окна3>   [REFRESH]   [TOP | BOTTOM | SAME]   [SAVE] 
Команда выводит на экран ранее описанные окна в указанном порядке и обновляет информацию в окне (REFRESH).

4. Деактивация окна.
DEACTIVATE WINDOW <имя окна 1> [, <имя окна 2> . . .]  | ALL
Команда удаляет с экрана, но сохраняет в оперативной памяти, указанные окна или все окна.

5. Удаление окон.
RELEASE WINDOWS <список имен окон>
Команда удаляет с экрана и из оперативной памяти указанные окна.

Задание:

Вариант №1: 

Создать окно с координатами 100,300 и 600,800, задать заголовок «Товар» и окно с координатами 50,150 и 300,400 с заголовком «Поставщики», расположить его над уже открытыми окнами. Вывести окна на экран.

Вариант №2:

Создать окно с координатами 200,400 и 700,900, с заголовком «Клиенты» и окно с координатами 100,200 и 350,450 с заголовком «Заказы», расположить его под уже открытыми окнами. Вывести окна на экран.

Вариант №3:

Создать окно с координатами 300,400 и 800,1000, задать заголовок «Клиент и окно с координатами 200,300 и 450,550 с заголовком «Прокат», расположить его над уже открытыми окнами. Вывести окна на экран.

Вариант №4:

Создать окно с координатами 400,600 и 900,1100 с заголовком «Страны» и окно с координатами 200,300 и 450,500 с заголовком «Столицы», расположить его под уже открытыми окнами. Вывести окна на экран.

Вариант №5:

Создать окно с координатами 500,700 и 1000,1200, задать заголовок «Товар» и окно с координатами 250,350 и 500,600 с заголовком «Поставщики», расположить его над уже открытыми окнами. Вывести окна на экран.

Вариант№6:

Создать окно с координатами 100,300 и 600,800 с заголовком «Сыр» и окно с координатами 50,150 и 300,400 с заголовком «Изготовитель», расположить его под уже открытыми окнами. Вывести окна на экран.

Вариант №7:

Создать окно с координатами 200,400 и 700,900, задать заголовок «Спортсмены» и окно с координатами 100,200 и 350,450 с заголовком «Вид спорта», расположить его над уже открытыми окнами. Вывести окна на экран.

Вариант №8:

Создать окно с координатами 300,500 и 800,1000 с заголовком «Режиссер» и окно с координатами 150,250 и 400,500 с заголовком «Фильм», расположить его под уже открытыми окнами. Вывести окна на экран.

Вариант №9:

Создать окно с координатами 400,600 и 900,1100, задать заголовок «Великие математики» и окно с координатами 200,300 и 450,500 с заголовком «Труды», расположить его над уже открытыми окнами. Вывести окна на экран.

Вариант №10:

Создать окно с координатами 500,700 и 1000,1200 с заголовком «Соревнования» и окно с координатами 250,350 и 500,600 с заголовком «Команда», расположить его под уже открытыми окнами. Вывести окна на экран.

Контрольные вопросы:

1.	Что такое рабочее окно?
2.	Сколько окон одновременно может быть открыто?
3.	Какое окно называют текущим?
4.	Как задать текущее окно?
5.	Укажите приёмы управления окном?
6.	Укажите приемы изменения внешнего вида окна.

Содержание отчета:

Номер, тема, цель лабораторной работы;
Задание;
Ход выполнения работы с приведением листинга программы и результата ее выполнения;
Вывод.



Лабораторная   работа  № 13.

Тема:	Создание файла проекта базы данных.
Цель работы:  освоить команды по созданию файла проекта. Копирование. Создание и модификация таблиц. Создание индексов, установление взаимосвязей и ссылочной целостности.

Методические указания:

1. Создание файла проекта базы данных.
Файл проекта базы данных (расширение  .pjx) содержит собственно базу данных, состоящую из отдельных таблиц, с установленными между ними взаимосвязями, и файлы, хранящие процедуры по управлению базой данных. Для создания файла проекта базы данных из главного меню надо подать команду:
File (Файл) →  New (Новый)  в диалоговой панели New надо указать тип файла  Project (Проект)  и нажать кнопку  New File (Новый файл).
Далее на экран выводится диалоговая панель Create, где надо задать имя создаваемому файлу проекта и указать место хранения файла. После нажатия кнопки «Сохранить» на экран выводится диалоговая панель Project Manager «(рис.1)», где надо выбрать вкладку Data (Данные ) и в рабочем окне выбрать команду Databases.




Рис.1
Назначение кнопок:
New  - создание нового файла базы данных.
Add  - помещение существующего файла базы данных в текущий проект.
Если выбрана кнопка New, то в появившейся на экране диалоговой панели надо написать имя файла базы данных (расширение  .dbc), как правило совпадающее с именем файла проекта. После нажатия кнопки «Создать» на экран выводится диалоговая панель Database Designer, на рабочем столе которой будем размещать таблицы. Для помещения в рабочее окно новой таблицы или копирования ранее созданной таблицы можно воспользоваться одним из способов:
-	командой Database  из главного меню (рис. 2);
-	командой контекстного меню (рис. 3);
-	панелью инструментов Конструктора Таблиц (рис.4).


1.Создание новой таблицы
2.Добавление таблицы в БД
3.Создание удаленного представления данных
4.Создание локального представления данных
5.Модификация таблицы
6.Показ таблицы в режиме BROWSE
7.Удаление таблицы из БД
8.Поиск объекта
9.Перестройка индексов
10.Физическое удаление помеченных записей
11.Редактирование взаимосвязей
12.Редактирование условий целостности
13.Редактирование хранимых процедур
14.Соединения
15.Классифицировать
16.Обновление
17.Очистка БД от помеченных объектов
18.Параметры

                 Рис.2












Раскрытие уровней вложенности объектов
Свертка уровней вложенности объектов
8.
1.
2.
3.
4.
12.
13.
14.
Помощь
18.

             Рис.3




Рис.4

2. Создание таблицы.
После выбора команды New Table на экран выводится диалоговая панель New Table «(рис.5)», где определяется способ создания таблицы:
-	Table Wizard  - с помощью Мастера таблиц по одному из шаблонов.
-	New Table  - с помощью Конструктора таблиц.



Рис.5

После выбора команды New Table на экран выводится диалоговая панель Create, где надо указать имя создаваемой таблице и после нажатия кнопки Create на экран выводится диалоговая панель Конструктора таблиц, где и выбирается вкладка Table «(рис. 6)».



Рис.6

Содержимое вкладки Table:
-   Name  - поле содержит имя создаваемой таблицы (при желании можно изменить).
-	Database - поле содержит полный путь к файлу базы данных (информационное поле).
-	Rule  - условие правильности ввода данных на уровне поля.
-	Message  - сообщение, выводимое на экран при неправильном вводе данных в поле.
-	Table Comment  - краткое описание таблицы.
-	Insert trigger  - создание триггера на добавление записей.
-    Update trigger - создание триггера на обновление записей.
-	Delete trigger - создание триггера на удаление записей.
Затем выберем вкладку Fields «(рис.7)».




Рис.7

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

3. Добавление в базу данных ранее созданной таблицы.
После выбора команды «Add Table» на экран выводится диалоговая панель «Open», работа с которой известна.

4. Создание индексов.
Индексы создаются или при создании таблицы, или при модификации таблицы. После вызова на экран диалоговой панели Конструктора таблиц, выбирают вкладку Indexes «(рис. 8)».



Рис.8

Содержимое вкладки Indexes:
-	Name  - имя создаваемого индекса (тега).
-	Type  - тип создаваемого индекса: Primary  - уникальный индекс (первичный ключ) предназначен для связывания таблиц и задания условий целостности данных; Candidate  - уникальный индекс, который обладает свойствами первичного ключа; Regular  - хранит значения индексного выражения для всех записей таблицы.
-	Expression  - поле индексного выражения. Заполняется непосредственно или с помощью кнопки на экран выводится диалоговая панель Конструктора выражений (Expression Builder) для удобства составления индексного выражения.
-	Filter  - логическое условие фильтра для помещения записей в индекс.

5. Определение взаимосвязей между таблицами.
Перед установлением взаимосвязей надо для каждой родительской таблицы создать уникальный индекс (первичный ключ), а для каждой дочерней таблицы – индекс по общему полю. Взаимосвязь устанавливается по уникальному индексу родительской таблицы и соответствующему индексу дочерней таблицы.
Для установления взаимосвязи надо на экран вызвать диалоговую панель Конструктора Базы Данных (Database Designer): из диалоговой панели Диспетчера Проектов (Project Manager) выбрать команду  Databases  (щелкнуть слева от команды на +), затем – на имени файла базы данных, потом – нажать кнопку «Modify».
Курсор мыши устанавливают на имени первичного ключа родительской таблицы и буксируют его в дочернюю таблицу, где устанавливают на имени соответствующего индекса. На экран выводится диалоговая панель Edit Relationship «(рис.9)», где проверяют правильность установленной взаимосвязи (при необходимости можно внести изменения) и нажимают кнопку «Ok».


Рис.9

Для удаления взаимосвязи надо: на линии связи щелкнуть левой кнопкой мыши, а затем правой кнопкой вызвать на экран контекстное меню и выбрать команду Remove Relationship.

6. Определение условий ссылочной целостности.
Для определения условий ссылочной целостности в окне Конструктора Базы Данных (одним из способов) выбирают команду Edit Referential  Integrity и на экран выводится диалоговая панель Конструктора Условий Целостности (Referential Integrity Builder, рис.10), рабочее окно которого содержит перечень всех установленных отношений между таблицами. 



Рис.10

В верхней части диалоговой панели содержатся три вкладки для определения ситуации (редактирование, удаление или добавление) выполнения каскадных воздействий:
-	Rules for Updating  - условия корректировки записей.
-	Rules for Deleting  - условия удаления записей.
-	Rules for Inserting  - условия вставки записей.
В столбце Parent Table перечислены имена родительских таблиц.
В столбце Child Table перечислены имена дочерних таблиц.
В столбцах Parent Tag и Child Tag указаны попарно соответственно первичный и внешний ключи родительской и дочерней таблицы.
Количество строк в нижней части диалоговой панели зависит от количества построенных индексов. Включая одну из кнопок радиогруппы, описанной ниже, устанавливаем нужный тип каскадных воздействий.
На каждой вкладке имеются три радиокнопки (на последней вкладке – две последние радиокнопки), которые определяют характер каскадных воздействий (при заранее определённых ситуациях).
Cascade  - при изменении значений полей первичного ключа или ключа-кандидата в родительской таблице автоматически осуществляется каскадное изменение всех соответствующих значений в дочерних таблицах.
Restrict  - не позволяет изменять значения полей первичного ключа или ключа-кандидата в родительской таблице, если в дочерней таблице имеется хотя бы одна запись, содержащая ссылку на изменяемую запись.
Ignore  - позволяет изменять значения полей первичного ключа или ключа-кандидата в родительской таблице, независимо от существования связанных записей в дочерней таблице. Целостность данных при этом не поддерживается.
После определения условий целостности надо нажать кнопку «Ok».

Задание:

Вариант №1: 

Создать проект, в нем базу данных. Затем в БД создать две таблицы: Товар (код товара, наименование, код поставщика, количество на складе, цена) и Поставщик (код поставщика, наименование, ИНН, КПП). Установить взаимосвязи между таблицами, определить условия ссылочной целостности.

Вариант №2: 

Создать проект, в нем базу данных. Затем в БД создать две таблицы: Контакты ( код контакта, ФИО контакта, телефон, адрес) и Встреча ( код встречи, код контакта, дата встречи, адрес, результат). Установить взаимосвязи между таблицами, определить условия ссылочной целостности.

Вариант №3:

Создать проект, в нем базу данных. Затем в БД создать две таблицы: Клиенты (код клиента, ФИО клиента, контактный телефон) и Заказ (№ квитанции, наименование работ, стоимость, код клиента, дата возврата). Установить взаимосвязи между таблицами, определить условия ссылочной целостности.

Вариант №4:

Создать проект, в нем базу данных. Затем в БД создать две таблицы: Игроки (номер игрока, ФИО игрока, дата рождения) и Соревнования (код соревнования, дата, код игрока, результат). Установить взаимосвязи между таблицами, определить условия ссылочной целостности.

Вариант №5:

Создать проект, в нем базу данных. Затем в БД создать две таблицы: Клиенты (код клиента, ФИО, адрес) и Прокат (код проката, код клиента, название фильма, дата выдачи). Установить взаимосвязи между таблицами, определить условия ссылочной целостности.

Вариант №6:

Создать проект, в нем базу данных. Затем в БД создать две таблицы: Товар (код товара, наименование товара, код поставщика, количество) и Поставщик (код поставщика, наименование, ФИО директора, контактный телефон). Установить взаимосвязи между таблицами, определить условия ссылочной целостности.

Вариант №7:

Создать проект, в нем базу данных. Затем в БД создать две таблицы: Спортсмен (код спортсмена, ФИО, адрес, дата рождения) и Тренер (код тренера, ФИО, вид спорта, код спортсмена). Установить взаимосвязи между таблицами, определить условия ссылочной целостности.

Вариант №8:

Создать проект, в нем базу данных. Затем в БД создать две таблицы:  Режиссеры (код режиссера, ФИО, дата рождения) и Фильм (код фильма, наименование, студия, дата выпуска, код режиссера).  Установить взаимосвязи между таблицами, определить условия ссылочной целостности.

Вариант №9:

Создать проект, в нем базу данных. Затем в БД создать две таблицы:  Математики (код математика, ФИО, дата рождения, дата смерти) и Труды (код труда, наименование, специализация, код математика). Установить взаимосвязи между таблицами, определить условия ссылочной целостности.

Вариант №10:

Создать проект, в нем базу данных. Затем в БД создать две таблицы:  Сыр (код сыра, наименование, категория, способ хранения) и Изготовитель (код изготовителя, наименование, код сыра, ФИО директора). Установить взаимосвязи между таблицами, определить условия ссылочной целостности.



Контрольные вопросы:

1.	Укажите назначение и структуру файла проекта (базы данных).
2.	Укажите команду создания таблицы.
3.	Укажите приемы создания индексов.
4.	Укажите приемы задания условий ссылочной целостности.
5.	Что такое каскадные воздействия и как они задаются в Visual FoxPro?
6.	Укажите приемы установления взаимосвязи между таблицами в Visual FoxPro.
7.	Как определяется тип взаимосвязи в Visual FoxPro.
Содержание отчета:

Номер, тема, цель лабораторной работы;
Задание;
Ход выполнения работы с приведением структуры создаваемых объектов;
Вывод.




























Лабораторная   работа  № 14.

Тема:	Создание интерфейса (входной формы).
Цель работы:	освоить команды для создания входной формы и изучить свойства элементов управления.

Методические указания:

Входные формы создаются для просмотра и редактирования данных как в одной таблице, так и во взаимосвязанных таблицах. Для создания формы можно щелкнуть мышью по папке Form (Форма), а затем по кнопке New (Новый). Появится диалоговое окно, представленное на рис.1.



Рис.1

1.	Создание входной формы с помощью Мастера форм.

Нажмем на кнопку Form Wizard (Мастер форм). Появится диалоговое окно, представленное на рис.2.



Рис.2
Затем надо уточнить какую форму будем создавать: 
- для одной таблицы – команда  Form Wizard;
- для взаимосвязанных таблиц  -  команда  One-to-Many Form Wizard.
После нажатия кнопки «Ok», на экран выводится первая диалоговая панель Мастера форм, где надо:
- В раскрывающемся списке Databases and Tables указать имя нужной базы данных (если табличные файлы объединены в базу данных) или имя нужного табличного файла. 
-	В списке Databases and Tables отображается список имен доступных таблиц. Курсором выделяется имя нужной таблицы.
-	В списке Available Fields отображается список имен полей выбранной таблицы.
-	Во входную форму будут помещены те поля таблицы, имена которых будут указаны в списке Selected Fields. Для переноса имен полей из списка Available Fields  в список Selected Fields надо выделить имя нужного поля курсором и нажать кнопку.
Для переноса всех полей в список Selected Fields следует воспользоваться соответствующей кнопкой. 
Если во входную форму помещены поля ошибочно, то для их удаления из формы используют две нижние кнопки.
Для перехода к следующей диалоговой панели Мастера форм следует нажать кнопку Next.
Во второй диалоговой панели Мастера форм в списке Style надо выбрать один из предложенных стилей исполнения входной формы, а в радиогруппе Button Type выбрать один из стилей командных кнопок:
-	Text Buttons  - кнопки с надписями;
-	Picture Buttons  -  кнопки с рисунками;
-	No Buttons  -  кнопки отсутствуют.
Для перехода к третьей  диалоговой панели Мастера форм надо нажать кнопку Next. Здесь определяется  - по какому полю отсортировать данные во входной форме.
В четвертой диалоговой панели в специальном окне задается имя созданной входной формы. Для предварительного просмотра созданной формы надо воспользоваться кнопкой «Preview». Для создания входной формы следует нажать кнопку «Finish». Далее надо указать место хранения файла входной формы (по стандартным правилам). Созданная входная форма запускается (ставится на выполнение) по стандартным правилам.

2. Создание входной формы с помощью Построителя.
Предварительно открывается файл проекта. Затем из главного меню подают команду:
File  →  New  →  в радиогруппе «File Type» выбирают кнопку «Form» и для запуска  Мастера форм нажимают кнопку «New File».
На экран выводится диалоговая панель «Form Designer». 
Для запуска Построителя надо подать команду Form → Quick Form.
Далее на экран выводится диалоговая панель «Form Builder», состоящая из двух вкладок «Field Selection»  и  «Style», работа с которыми аналогична (см. выше).
При работе с Построителем кнопки управления автоматически не устанавливаются. Кнопки управления устанавливаются вручную и описываются реакции на нажатие каждой кнопки (подробнее см. пункт 3 настоящей лабораторной работы).

3. Построение входной формы с помощью Конструктора форм.
Предварительно открывается файл проекта. Затем из главного меню подают команду:
File  →  New  →  в радиогруппе «File Type» выбирают кнопку «Form» и для запуска  Конструктора форм нажимают кнопку «New File».
На экран выводится диалоговая панель «Form Designer». 
Процесс создания интерфейса состоит из этапов:
-	размещение элемента управления на форме;
-	задание свойств элемента управления;
-	задание обработчиков событий, если это необходимо.
Для размещения элемента управления на форме надо установить курсор мыши на нужный элемент управления на палитре инструментов и щелкнуть левой кнопкой. Затем перевести курсор мыши на форму, зажать левую кнопку и выделить прямоугольную область. После того как кнопка мыши будет отпущена, в выделенной прямоугольной области будет размещен выбранный элемент управления. Затем, размещенный на форме элемент управления, может быть перемещен в другое место формы и изменены его размеры.
Задать значения свойств элемента управления можно либо при создании интерфейса на диалоговой панели «Properties» (вкладка «All»), либо программным способом в обработчиках других элементов управления.
Для написания программного кода обработчика надо вывести на экран окно специального редактора (рис. 3) одним из способов:
-	дважды щелкнуть левой кнопкой мыши на выбранном элементе управления;
-	в диалоговой панели «Properties» выбрать вкладку «Methods», затем справа от нужного имени метода (в светлом поле) дважды щелкнуть левой кнопкой мыши.



Рис.3


Окно редактора содержит рабочее поле, где пишется программный текст обработчика и два раскрывающихся списка:
-	Object  - выбирается имя элемента управления, для которого пишется обработчик события.
-	Procedure  - определяется имя события, для которого пишется обработчик.
Разместим на форме комплексный элемент Grid (Таблица). На диалоговой панели «Properties» (рис. 4) автоматически выводятся свойства выбранного компонента. 



Рис.4
Определим следующие свойства:
-	ColumnCount  -  9 , т.е. количество столбцов в таблице будет 9;
Так как компонент Grid комплексный (состоящий из других компонентов), то опишем свойства каждого из девяти столбцов. Свойства каждого столбца разделены на группы: Column – общие свойства столбца, Header – свойства внешнего вида, Text - текстовые свойства столбца при установке курсора на текущую запись.
На вкладке «Properties» имеется раскрывающийся список «Object», где надо выбрать имя Grid1, а ниже по списку имя первого столбца таблицы Column1. Ниже в таблице свойств выберем вкладку «All» (Общие) и определим свойства:
- Control Source  - определяет источник данных для столбца. 
- Column Order  - определяет порядковый номер столбца в таблице;
- Alignment  - размещает (форматирует) данные внутри поля.
Определим группу свойств Header1 (для столбца 1):
- Caption  - экранное имя (заголовок) столбца. 
- Alignment  - размещает (форматирует) заголовок столбца.
Определим группу свойств Text1 (для столбца 1):
- ForeColor  - задает цвет текста при активации поля. Зададим маску красного цвета:   250, 0, 0


Задание:

Вариант №1:

Задать заголовок формы, на форму поместить элемент Grid, вывести через него записи созданной ранее таблицы, для созданного элемента управления задать фоновый цвет – желтый, установить шрифт Time New Roman.

Вариант №2:

Задать заголовок формы, установить фоновый цвет формы темно-зеленый, поместить элемент Grid, вывести через него записи созданной ранее таблицы.

Вариант №3:

Задать заголовок формы, на форму поместить элемент Grid, вывести через него записи созданной ранее таблицы, добавить метку с надписью «Главная форма», цвет текста метки – темно-синий.

Вариант №4:

Задать заголовок формы, на форму поместить элемент Grid, вывести через него записи созданной ранее таблицы, для данного элемента управления установить свойство «только для чтения».

Вариант №5:

Задать заголовок формы, на форму поместить элемент Grid, вывести через него записи созданной ранее таблицы, добавить элемент Combo Box, записать его значения.

Вариант №6:

Задать заголовок формы, на форму поместить элемент Grid, вывести через него записи созданной ранее таблицы, добавить две кнопки и подписать их (ОК и Отмена).

Вариант №7:

Задать заголовок формы, на форму поместить элемент Grid, вывести через него записи созданной ранее таблицы, задать фон формы – светло-зеленый, добавить две кнопки и подписать их (ОК и отмена).


Вариант №8:

Задать заголовок формы, на форму поместить элемент Grid, вывести через него записи созданной ранее таблицы, задать цвет текста в Grid – синий, добавить кнопку и подписать «Выход».

Вариант №9:

Задать заголовок формы, на форму поместить элемент Grid, вывести через него записи созданной ранее таблицы, задать фоновый цвет формы желтый, добавить метку и подписать «Редактирование данных».

Вариант №10:

Задать заголовок формы, на форму поместить элемент Grid, вывести через него записи созданной ранее таблицы, задать фоновый цвет формы - розовый, добавить элемент Combo Box, записать его значения.

Контрольные вопросы:

1.	Укажите назначение входной формы.
2.	Укажите способы создания входной формы.
3.	Расскажите об особенностях Мастера форм.
4.	Расскажите об особенностях Конструктора форм.
5.	Расскажите о приемах размещения на форме элементов управления.
6.	Расскажите о приемах задания свойств элементов управления.
7.	Расскажите о приемах задания методов элементов управления.

Содержание отчета:

Номер, тема, цель лабораторной работы;
Задание;
Ход выполнения работы с приведением структуры создаваемых объектов;
Вывод.








Лабораторная   работа   № 15.

Тема:   Создание и печать отчетов.
Цель  работы:	 освоить приемы создания отчетов в табличной форме, в произвольной форме,  приемы настройки печати и печати отчета.

Методические указания:

Табличный отчет представляет собой напечатанную таблицу, в которой данные упорядочены по столбцам и строкам. Каждый столбец отчета содержит поле исходной таблицы или вычисляемое поле, а строка представляет собой запись.
Отчеты в свободной форме позволяют размещать поля с данными в любом месте отчета, содержать текстовую информацию в любом объеме, а также размещать графическую информацию. Допускается выделение информации рамками.

Конструктор отчетов.

Любой отчет состоит из пояснительного текста, полей отчета и рамок. Текст носит произвольный характер. Рамки предназначения для выделения и улучшения восприятия информации. При создании и модификации отчета допускается добавление, перемещение и удаление областей вместе с расположенными в них объектами. 
Для запуска Конструктора отчетов надо выполнить одно из действий:
-	из главного меню подать команду: File  →  New  →  выбрать опцию Report и нажать кнопку  New File;
-	в диалоговом окне проекта выбрать группу  Report  и нажать кнопку  New, затем нажать кнопку New Report;
-	в графическом меню нажать кнопку  New и выбрать опцию Report и нажать кнопку  New File.
В любом случае на экран выводится рабочее окно Конструктора отчетов (рис. 1.).



Рис.1

Назначение кнопок панели инструментов:
Select Object  -  указатель выбора объекта отчета.
Label  -  размещает текст.
Field  -  размещает поле.
Line -  рисует линию.
Rectangle -  рисует прямоугольник.
Rounded Rectangle-рисует прямоугольник с закругленными     краями.
Picture/OLE Bound Control - помещает в отчет рисунок.
Button Lock  -  закрепляет выбор кнопки.

Первоначально рабочее окно Конструктора отчетов содержит три полосы: 
-	Page Header  -  Информация, размещенная в этой полосе, распечатывается в начале каждой страницы (верхний колонтитул).
-	Detail  -  размещается содержимое полей таблиц или результат вычислений над полями.
-	Page Footer  - Информация, размещенная в этой полосе, распечатывается в конце каждой страницы (нижний колонтитул).
Дополнительно могут быть добавлены следующие полосы:
-	Title  -  Информация перед основным отчетом. Титулом может быть имя отчета, сопроводительное письмо и т.д.
-	Group Header  -  Информация используемая при группировке. Группы помогают идентифицировать информацию, содержащуюся на каждом уровне группировки.
-	Group Footer  -  Итоговая информация по группе.
-	Summary  -  Информация размещается один раз после основного отчета и содержит общие суммы или текст, подводящий итог содержимого отчета.

Создание табличного отчета с помощью Конструктора.

Процесс создания табличного отчета может содержать как все процедуры, так и некоторые из них:
-	Определение окружения.
-	Размещение текста.
-	Размещение полей.
-	Размещение линий, прямоугольников и рисунков.
-	Перемещение объектов.
-	Сохранение отчета.
а) Задание среды окружения.
Под средой окружения понимают набор таблиц из базы данных, по значениям которых будет построен отчет, определение индексов и установление отношений между таблицами.
Вся информация о среде окружения хранится в файле описания отчета. 
С помощью команды главного меню  View  →  Data Environment  на экран выводится рабочее окно, куда с помощью команды ПКМ → Add  добавляются таблицы. Взаимосвязи устанавливаются буксировкой общих (ключевых) полей.
б) Определение полей таблиц.
Для определения полей надо из главного меню подать команду:
  Report  →  Quick Report
и на экран выводится диалоговая панель «Quick Report» (рис. 2), где надо определить вариант размещения полей по горизонтали или по вертикали. 



Рис.2


Назначение флажков :
-	Titles  -  при включенном флажке имена полей отображаются над полем, при выключенном  -  рядом с полем;
-	Add Alias  -  при включенном флажке к имени поля добавляется псевдоним таблицы в рабочем окне Конструктора;
-	Add Table to Data Environment  -  добавляет таблицу в окружение.
Для помещения полей в отчет надо нажать кнопку «Fields» и на экран выводится диалоговая панель «Field Picker» (рис. 3).



Рис.3


В окне «All fields» курсором выделяется имя нужного поля и нажатием кнопки «Move»  переносится в окно «Selected  fields». Назначение кнопки «Remove»  -  обратное.
В полосу «Page Footer» обычно помещают поле с функции  DATE() – текущая дата и поле с функцией  _PAGENO – номер страницы.
Для задания шрифта сначала выделяют нужный объект, а затем из главного меню подают команду  Format  →  Font  и определяют желаемый шрифт.

в) Размещение текста.
В окне Конструктора текст (слово, строка, несколько строк и т.д.) рассматривается как объект. Для размещения текста надо на панели инструментов выбрать инструмент  Label, затем в любой полосе курсором мыши указать место начала размещения текста. Набрать сам текст. Если набранный текст выделить как объект, то его можно отформатировать и задать требуемый шрифт.

г) Добавление заголовков и итогов.
Для добавления полосы заголовка и полосы итогов надо из главного меню подать команду:  Report  →  Title/Summary  и на экран выводится диалоговая панель «Title/Summary» (рис.4), где надо включить соответствующие флажки.



Рис.4

д) Размещение полей.
Для размещения поля надо на панели инструментов выбрать инструмент  Field, затем в любой полосе курсором мыши выделить прямоугольную область, в которую и будет помещено поле. После чего на экран выводится диалоговая панель «Report Expression» (рис.5), где в окне «Expression» надо либо ввести с клавиатуры, либо составить с помощью построителя, выражение, которое будет определять значение установленного поля. 



Рис.5

Назначение флажков:
-	Float -  позиция поля в отчете может изменяться при изменении размеров окружающих его полей.
-	Fix Relative To Top of Band  - поле сохраняет постоянную позицию относительно верхней границы полосы.
-	Fix Relative To Button of Band  - поле сохраняет постоянную позицию относительно нижней границы полосы.
При формировании выражения поля можно использовать поля открытых таблиц, переменные из списка «Variables», строковые, математические, логические функции, а также функции даты и времени. Для подведения итога по всему документу, после написания выражения в окне «Expression», следует воспользоваться кнопкой «Calculations»  и определить функцию итога.

Создание отчета в свободной форме с помощью Конструктора.

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

Создание отчета с добавлением линий и рисунков.

Отчет создается по правилам, описанным выше, с использованием инструментов Line  и  Picture.

Создание табличного отчета с группировкой.

Отчет создается по описанным выше правилам. Затем добавляются две полосы: Group Header (Верхняя полоса группировки)  и  Group Footer  (нижняя полоса группировки). Для добавления полос надо из главного меню подать команду :
Report  →  Data Grouping
Как правило, в верхней полосе размещают название (заголовок) группы, а в нижней полосе – итоговые суммы по группе.

Создание многоколончатого отчета.

Многоколончатые отчеты применяются для создания однотипных ярлыков, например при рассылке информации потенциальным покупателям.
Создают многоколончатый отчет по образцу отчета в произвольной форме. Затем размечают лист на несколько колонок. Для разметки листа надо из главного меню подать команду: File  →  Page Setup и на экран выводится диалоговая панель «Page Setup» (рис.6).



Рис.6

Поле ввода «Number» предназначено для определения количества колонок на листе
В поле ввода «Width» определяется ширина колонки.
Поле ввода «Spacing» предназначено для задания промежутка между колонками.
Если включен флажок «Printable Page», то устанавливается режим печати с полями страницы, определенными в соответствии с установленным драйвером печати.
Если включен флажок «Whole Page», то устанавливается режим печати с минимальными полями.
Переключатель «Print Order» определяет порядок вывода записей в многостраничных отчетах.
Счетчик «Left Margin» определяет ширину левого поля отчета.

Создание отчета с помощью Мастера отчетов.

Для запуска Мастера отчетов надо выполнить одно из действий:
-	из главного меню подать команду: File  →  New  →  выбрать опцию Report и нажать кнопку  Wizard;
-	в диалоговом окне проекта выбрать группу  Report  и нажать кнопку  New, затем нажать кнопку Report Wizard;
-	в графическом меню нажать кнопку  New и выбрать опцию Report и нажать кнопку  Wizard.


Задание:

Вариант №1:

Создать отчет при помощи Мастера отчетов. Затем создать второй отчет, воспользовавшись Конструктором отчетов.  При этом вариант размещения полей – по горизонтали, имена полей должны располагаться над полем, добавить псевдоним таблицы, добавить заголовок отчета.

Вариант №2:

Создать отчет при помощи Мастера отчетов. Затем создать второй отчет, воспользовавшись Конструктором отчетов. При этом создать отчет по двум взаимосвязанным таблицам,  имена полей выделить курсивом, подчеркнуть, установить размер шрифта равным 12,  задать группировку по полю.

Вариант №3:

Создать отчет при помощи Мастера отчетов. Затем создать второй отчет, воспользовавшись Конструктором отчетов.  При этом отчет должен быть многоколончатым, количество колонок равно 3, задать ширину колонок по содержимому поля и промежуток между колонками, установить режим печати с полями страницы.

Вариант №4:

Создать отчет при помощи Мастера отчетов. Затем создать второй отчет, воспользовавшись Конструктором отчетов.  При этом вариант размещения полей – по вертикали, имена полей должны располагаться рядом с полем, не указывать псевдоним таблицы, задать подсчет итогов.

Вариант №5:

Создать отчет при помощи Мастера отчетов. Затем создать второй отчет, воспользовавшись Конструктором отчетов.  При этом создать отчет по двум взаимосвязанным таблицам, имена полей выделить жирным, установить размер шрифта равным 11, использовать группировку полей.

Вариант №6:

Создать отчет при помощи Мастера отчетов. Затем создать второй отчет, воспользовавшись Конструктором отчетов. При этом вариант размещения полей – по горизонтали, имена полей должны располагаться над полем, не указывать псевдоним таблицы, добавить заголовок отчета.
Вариант №7:

Создать отчет при помощи Мастера отчетов. Затем создать второй отчет, воспользовавшись Конструктором отчетов. При этом создать отчет по двум взаимосвязанным таблицам, имена полей выделить жирным курсивом, установить размер шрифта равным 10, использовать группировку полей.

Вариант №8:

Создать отчет при помощи Мастера отчетов. Затем создать второй отчет, воспользовавшись Конструктором отчетов. При этом отчет должен быть многоколончатым, количество колонок равно 5, задать ширину колонок по содержимому поля и промежуток между колонками, установить режим печати с минимальными полями.

Вариант №9:

Создать отчет при помощи Мастера отчетов. Затем создать второй отчет, воспользовавшись Конструктором отчетов.  При этом вариант размещения полей – по вертикали, имена полей должны располагаться рядом с полем, имена полей выделить жирным курсивом.

Вариант №10:

Создать отчет при помощи Мастера отчетов. Затем создать второй отчет, воспользовавшись Конструктором отчетов.  При этом вариант отчет должен быть многоколончатым, количество колонок равно 2, задать ширину колонок по содержимому поля и промежуток между колонками, имена полей выделить жирным, установить размер шрифта равным 14.

Контрольные вопросы:

Что такое отчет?
Назовите способы создания отчета.
Укажите особенности создания отчета с помощью Мастера отчетов.
Укажите особенности создания отчета с помощью Конструктора  отчетов.
Укажите приемы создания заголовков отчета.
Укажите приемы подсчета промежуточных и общих итогов в отчете.
Укажите приемы создания вычисляемых полей в отчете.
Укажите приемы задания сортировки и группировки данных в отчете.
Что такое многоколончатый отчет и область его применения.
Укажите приемы создания многоколончатого отчета.

Содержание отчета:


Номер, тема, цель лабораторной работы;
Задание;
Ход выполнения работы с приведением листинга программы и результата ее выполнения;
Вывод.




































Лабораторная   работа   № 16

Тема:  Защита отчетов.

Цель работы: подведение итогов семестра по выполнению и защите лабораторных работ.

Методические указания:

Студент обязан предъявить отчеты обо всех проделанных лабораторных работах. Каждая работа должна содержать полученные результаты и вывод, сформулированный студентом согласно цели лабораторной работы.
Защита включает оценку выполненного отчёта и оценку ответов на контрольные вопросы.
Окончательная оценка по дисциплине выставляется только при условии выполнения студентом всех лабораторных работ.

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


Агальцов В.П. Базы данных.-  М.:Мир, 2008 
Омельченко Л.Н., Шевякова Д.А.Самоучитель Visual FoxPro 9.0. - СПб .:БХВ-Петербург, 2006 
Базиян,  Менахем и др. Использование Visual FoxPro 6. Специальное издание.: Пер. с англ.-М.:Издательский дом «Вильяме», 2009 
Сильвия Бемер. FoxPro для Windows: Пер. с нем. - К.: BHV.2005
Когаловский М.Р. Технология Баз данных на персональных ЭВМ. - М.: Финансы и статистика, 2006
Горев А., Ахаян Р., Макашарипов С. Эффективная работа с СУБД-СПб.: Питер, 2007
Система управления базами данных и знаний: Справочник / А.Н.Наумов, А.М.Вендров, В.К.Иванов и др. Под редактированием А.Н.Наумов. - М.: Финансы и статистика. 2006
Кауфельд Дж-FoxPro For Windows для «чайников» - К.: «Диалектика», 2005 Баженова И.Ю. Visual FoxPro 3.0 - М.: «Диалог-МИФИ», 2006.