Информатика. Основы проектирования баз данных

  • Лабораторные работы
  • docx
  • 21.03.2026
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Данные методические указания предназначены для проведения практических занятий при изучении СУБД. Систематизировано рассматриваются различные варианты решения практических задач для создания приложений. Методические указания к практическим занятиям предназначены для учеников средней школы и студентов специальности СПО 09.02.07 «Информационные системы и программирование».
Иконка файла материала Марунич Методические указания.docx

 

 

 

 

 

 

Информатика. Основы проектирования баз данных

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

к практическим занятиям

г.  Санкт-Петербург, 2026 г.

 

Составитель:

Н.А. Марунич, к.г.н., доцент

Методические указания к практическим занятиям по дисциплине «Информатика. Основы проектирования баз данных». Составитель: Марунич Н.А. – Санкт-Петербург, 2026 г. - 33 стр.

Данные методические указания предназначены для проведения практических занятий при изучении СУБД. Систематизировано рассматриваются различные варианты решения практических задач для создания приложений.

Методические указания к практическим занятиям предназначены для учеников средней школы и студентов специальности СПО 09.02.07 «Информационные системы и программирование».

© Марунич Н.А., составление, 2026

 

 

 

 

 

 

 

 

 

 

 

 

Оглавление

Стр.

1.     Практическая работа №1....................................................... 3

Создание файла базы данных

2.      Практическая работа №2....................................................... 7

Перемещение по базе, просмотр, редактирование полей и записей. Фильтрация данных

3.      Практическая работа № 3....................................................... 9

Окна редактирования BROWSE / CHANGE

4.                                                                                                                                                                                                                  Практическая работа № 4       13 Индексирование баз данных

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

Работа с несколькими базами

6.      Лабораторная работа №6....................................................... 23

Создание командных файлов

7.      Практическая работа № 7...................................................... 25

Создание программного файла экранного редактирования базы данных

8.      Практическая работа № 8...................................................... 30

Создание вертикального меню

9.      Практическая работа № 9...................................................... 33

Создание горизонтального меню

Литература.................................................................................... 35


Практическая работа №1
Тема: «СОЗДАНИЕ ФАЙЛА БАЗЫ ДАННЫХ»

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

1.    Создание структуры файла

Действие команды рассмотрим на примере. Создадим простой файл базы данных, который содержит сведения о кадровом составе предприятия, включающие следующие данные (названия полей указаны в скобках):

1.      Фамилия и инициалы работника (FAM);

2.      Дата рождения (DTR);

3.      Табельный номер (TAB);

4.      Пол (POL);

5.      Семейное положение (SEM);

6.      Средняя зарплата (SZAR);

7.      Подразделение, место работы - отдел, цех (PODR);

8.      Адрес проживания (ADRES);

9.      Сведения о перемещениях по службе (PER).

В поле «Перемещения» (PER) будем заносить информацию о местах работы и должностях сотрудника внутри предприятия.

Назовем файл базы данных KADR.DBF. Выберем для его полей типы и размеры:

1.      FAM - символьный тип (Character) длиной 25 символов;

2.      DTR - тип дата (Date) со стандартной длиной 8;

3.      TAB - числовой (Numeric) тип длиной 3 разряда целых;

4.                  POL - символьный тип длиной 1 символ (М или Ж);

5.SEM - символьный тип длиной 1 символ (допускаются значения: Б - в браке, X - холост, Р - разведен);

7.SZAR - числовой тип общей длиной 7 из них 2 десятичных разряда (максимальная зарплата 9 999 руб.);

8.      PODR - символьный тип длиной 15;

9.      PER - ввиду непредсказуемости длины этой информации возьмем для нее поле примечаний (тип Memo-поле). Сохраните структуру на диске D:\36_K с именем KADR.

2.       ЗАДАНИЕ

1.      Установите на экране статус-строку. Поясните информацию на ней.

2.      Просмотрите структуру. Закройте базу данных.

3.      Откройте базу данных KADR. Измените структуру, вставив на место 4 поля поле:

Количество детей (DET) числовой тип длиной 1 разряд, целое.

4.      Удалите поле ADRES.

5.      Выйдите из режима модификации структуры.

6.      Просмотрите структуру.

7.      Установите германский формат ввода даты с отображением четырех цифр года.

8.        Задайте альтернативный путь поиска файлов, указав директорию 36_K.

9.      Введите в базу не менее 25 записей, с фамилиями студентов вашей группы.

10.     Просмотрите содержимое всей базы.

11.     Просмотрите содержимое полей FAM, DET, SZAR.

12.        Просмотрите содержимое записей, удовлетворяющих условию «средняя зарплата более 400 рублей.

13.      Просмотрите содержимое записей, удовлетворяющих

условию :женщины, имеющие не менее 2 детей.

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

15.Контроль преподавателя.


Практическая работа № 2.

Тема: «Перемещение по базе, просмотр, редактирование полей и
записей. Фильтрация данных»

Откройте созданную вами БД Kadr.

1.      Введите три новых записи о сотрудниках, имя которых начинается на «П».

2.          Перейдите к первой записи. Выведите её номер.

3.          Перейдите к третьей записи. Выведете её номер ,используя функцию.

4.          Перейдите на 2 записи вперед.

5.          Перейдите на 3 записи назад.

6.          Перейдите к последней записи файла.

7.          Пометьте на удаление записи с номерами 2, 3, 4.

8.          Выведите на экран записи с первой по десятую.

9.          Смените пометку на удаление со всех записей.

10.            Выведете на экран всю БД и убедитесь, что пометки сняты.

11. Пометить на удаление записи, касающиеся мужчин - холостяков. Просмотрите результат.

12. Снимите пометки на удаление. Просмотрите результат, убедитесь, что первая запись помечена на удаление.

13.            Пометьте на удаление седьмую запись. Просмотрите седьмую запись.

14.            Произвести физическое удаление помеченных записей.

15. Увеличьте средний заработок работников на 10%, но только тем, у которых больше двух детей и средний заработок менее 400 рублей. Просмотрите результат.

16.            Выведите на экран записи с седьмой по двенадцатую.

17. Выведите на экран содержание полей FAM и SZAR для многодетных сотрудников (более 2 детей ).

18. Выведете на экран фамилии женщин, у которых зарплата более 400 рублей.

19. Используя функцию LOORUP, найти первую фамилию, начинающуюся на «М» и вывести на экран соответствующий ей табельный номер и семейное положение, а также номер записи.

20. Установите фильтр так, чтобы стали доступны только те записи, в которых фамилия сотрудников начинается на « В ». Просмотрите результат, используя известные Вам команды редактирования и вывода. Отмените фильтр.

21. Используя команду последовательного поиска, выведите на экран поочередно записи, касающиеся женщин с зарплатой более 400 рублей. На экране отразите значение полей FAM,POL,SZAR и номера записи.

22.            Контроль преподавателя.


Практическая работа № 3.

Тема: «ОКНА РЕДАКТИРОВАНИЯ BROWSE / CHANGE»

Пример. 1. Настроим окно редактирования таким образом, чтобы оно имело собственные заголовки колонок FAM, DTR, POL, DET, SEM, SZAR, заголовок окна - КАДРЫ, указания на возможные действия в окне (Ctrl-T, Ctrl-N, Ctrl-W), и вычисляемое поле РОМ (Помощь).

USE kadr

SET DATE GERMAN

BROWSE ;

TITLE 'ЛТ - удал. AN - доп.     л W - выход ' ;

FIELDS fam : Н='Фамилия' :12 , ;

dtp :I I 'Родился ', ;

pol :Н='Пол' , ;

det : Н='Детей' , ;

sem : Н='Сем. пол. ', ;

szar :I='Cp. эар.', ;

pom=IIF(szar>400,0,MIN(INT(0.5*szar), 170)), ;

Н='Помощь' :Р='###' LEDIT

2.      Поменяйте в предыдущей команде BROWSE на CIANGE, запустите ее на выполнение и объясните результат.

3.      Вернитесь к команде BROWSE.

Поскольку из-за заголовков колонок Ширина большинства полей увеличилась, видимая часть поля FAM здесь уменьшена до 12 колонок с возможностью прокрутки этого поля с помощью клавиш управления курсором. Кроме того, для вычисляемого поля РОМ принят шаблон "###" (три разряда целых). Иначе результат в этом поле будет отображаться разрядностью по умолчанию.

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

ЛТ-удал.

.л\-доп. КАДРЫ AW-ebixog

Фамилия

Фамилия

СИДОРОВП.С.

СИДОРОВ П.С.

Детей

1

ПОТАПОВД.П.

Ср. зар.

635

ПОПОВ А.Я.

Помощь

0

РОМАНОВАП.С.

Сем. пол.

х

МИРОНОВ Р.И

Родился

м

ЯКОВЛЕВ Я.И.

 

12,10,68

КУЛИКОВА П.И.

Фамилия

ПОТАПОВ

 

Детей

3

 

 

Он состоит из двух частей. В левой половине представлены вертикально (в режиме CHANGE) все перечисленные поля базы данных, но в иной последовательности - сначала идут более значащие для нас в данном случае поля, содержащие сведения о числе детей, средней зарплате и материальной помощи. В правой половине отображено одно только поле фамилий, но во всю свою длину. Такое представление информации здесь гораздо удобнее для пользователя. В правой части окна он как бы имеет только оглавление базы (фамилии работников), а в левой - полное ее раскрытие. Перемещение курсора из одной половины в другую можно осуществлять мышью или клавишами Ctrl-H. Как получен такой экран? Сначала в исходном BROWSE-окне удаляются ненужные поля (все поля, кроме поля фамилий). Для этого маркер мыши устанавливается на соответствующий вертикальный разделитель, нажимается кнопка мыши, и разделитель буксируется влево до полного скрытия ненужного поля.

Вертикальные линии у правой границы окна это видимые остатки скрытых полей. Наоборот, поле фамилий точно таким же образом расширяется до желаемой ширины. В самой команде BROWSE ему для экономии места на экране отведено 12 символов, но фактическая длина поля 25 символов. Теперь маркер мыши устанавливаем на специальный значок в левом нижнем углу окна (на рисунке не показан) и буксируем его вправо. При этом открывается левая половина окна, где поля расположены вертикально. Такую возможность предоставляет включение в команду BROWSE опции LEDIT. Далее изменяем порядок следования полей. Для этого также мышью буксируем имя соответствующего поля на нужное место.

Естественно, что переконфигурация окна может быть выполнена и в другом порядке. Все сделанные настройки при желании могут быть сохранены, если в команду BROWSE включены' опции LAST или PREFERENCE.

Как видим, мышь предоставляет нам огромные удобства. Эти же действия в принципе возможно осуществить и с клавиатуры, но для этого необходимо обратиться к системному меню BROWSE. Хотя это меню может быть доступно и в прикладных протраммах, отечественный пользователь, скорее всего, не захочет работать с ним в его оригинальной форме на английском языке. Вместе с тем в BROWSE- меню есть одна возможность, которая мышью не реализуется - это переключение режима сихронного/асинхронного перемещения записей в обеих половинах разделенного окна. По умолчанию перемещение курсора в одной половине влечет синхронное же движение записей в другой. Режим асинхронного движения может быть установлен опцией NOLINK непосредственно в команде BROWSE.

Замечание к примерам. Все тексты примеров изображаются так, как будто они являются фрагментами программ, и при этом длинные команды разбиваются на части приемлемого размера с помощью знака ";". Поскольку еще не рассматривались средства создания и исполнения командных файлов, эти команды следует вводить в командном окне, можно в одну строку, опуская ":". Кроме того, не следует повторно вводить команды, если нужный результат уже ранее достигнут. Так, нет необходимости снова открывать файл базы данных, если он уже открыт. Убедиться в этом можно, например, по виду статус-строки.

Задание: Выдать на редактирование все записи, относящиеся к мужчинам (FOR pol='M'), а в них поля FAM, DTR, POL, SEM. При вводе в поле POL установить входной контроль данных, допускающий ввод только символов "М" и "Ж". При ошибочном вводе предусмотреть вывод предупреждения "Только М или Ж". Аналогичный контроль ввести и в поле SEM, где разрешены только символы "Б", "X", "Р".


Практическая работа № 4.

Тема: «Индексирование баз данных»

1.                     Установите директорией по умолчанию Вашу личную папку.

2.                     Откройте базу данных KADR из текущей папки.

3.                     Проиндексируйте открытую БД по полю FAM, дав одноиндексному файлу имя FAMKADR.

4.                     Выведите содержимое нового файла на экран и убедитесь в правильности выполнения п.3.

5.                     Повторите п.20 лабораторной работы №4 . Найдите отличия в результатах. Объясните их.

6.                     Проиндексируйте таблицу по табельному номеру и дайте файлу имя TABKADR.

7.                     Используя ускоренный поиск в индексном файле , перейдите к записи с табельным номером 4 и выведите по ней фамилию, табельный номер, номер записи.

8.                     Используя функцию приблизительного поиска, отыщите запись с табельным номером равным 14 (и 32) и просмотрите ее по полям FAM, TAB, SZAR.

9.                     Выполните п.20 лабораторной работы №4 , используя функцию SEEK(<ebip>) и объясните результат.

10.                Вернитесь к созданному в п.3 файлу, открыв базу с ключом «только для просмотра». Выведите на экран значения полей FAM и SZAR по любой команде редактирования и попробуйте их изменить.

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

12.                 Измените порядок индексирования на «индексирование по убыванию».

13.                 Закройте все индексные файлы. Внесите изменения по полю SZAR в любых двух рядом стоящих записях.

14.                 Откройте любой, созданный Вами индексный файл, и просмотрите измененные записи на наличие новых значений. Поясните результат.

15.                 Закройте все индексные файлы. Выполните команду обновления индексов.

16.                 Выполните п.14 еще раз и сравните результаты.

17.                 Выведите на экран имена всех одноиндексных файлов текущей директории.

18.                 Создайте мультииндексный структурный файл с тегом PODR. Просмотрите его.

19.                 Скопируйте, предварительно открыв файл FAMKADR в созданный в п.18 структурный файл.

20.                 Выведите поочередно значения двух тегов на экран и главного тега.

21.                 Назначьте главным тег PODR. Повторите п.18 и объясните результат.

22.                 Удалите поочередно оба тега, всякий раз проверяя выполнение по п.18.

23.     Пример. Пусть требуется базу KADR.DBF упорядочить таким образом, чтобы выявить наиболее нуждающихся материально. Критерием будем считать размер зарплаты и число членов семьи. Для этого проиндексируем базу по полю средней зарплаты, деленному на число детей, плюс единица (сам работник). Частное округляем до рублей (ROUND(szar/(det+l),0)). Кроме того, необходимо учесть, состоит ли человек в браке. Будем считать, что если да, то при прочих равных условиях он нуждается меньше, чем не состоящий в браке, поскольку обычно супруг/супруга работает. При индексировании это обстоятельство учитывается следующим образом. Если человек не состоит в браке (8ЕМ#"Б"), полученное частное остается неизменным, в противном случае к нему прибавляется величина в десять копеек (+IIF(sem#'Б',0,.l)). Суммируемое значение настолько мало, что может повлиять только на порядок расположения тех записей, где сумма, приходящаяся на одного члена семьи , одинакова. Следующие команды реализуют поставленную задачу:

USE kadr INDEX ON ROUND(szar/(det+1),0)+IIF(sem#'B',0,.1) TO pom

Если вам предстоит создание сложного индекса, и вы не уверены, что правильно задали индексный ключ в команде индексирования, следует проверить вид самого индекса. Для этого можно прибегнуть к просмотру IDX-файла непосредственно в текстовом редакторе FoxPro. Однако осмысленный анализ "на глаз" возможен только для простых IDX-файлов, где индексные ключи находятся практически в естественной форме. Для компактных ,и тем более для CDX-файлов такой анализ ввиду их сложности практически невозможен. Удобнее всего вывести индексное выражение в команде BROWSE в качестве вычисляемого поля. Кроме того, полезно также вывести и номер каждой записи. Для предъявления индексного выражения можно прямо включить в команду BROWSE индексный ключ из команды INDEX после слова ON, но гораздо проще воспользоваться функцией

KEY(<BbipN>) , где <BbipN> - номер индекса в команде открытия.

Зарплата

Детей

Сем. полож.

Индекс

N записи

300

3

Б

75.1

2

400

2

X

133.0

6

400

2

Б

133.1

7

250

 

X

250.0

5

650

1

X

325.0

1

500

 

X

500.0

3

550

 

X

550.0

4

 

Полученное символьное выражение "наполняется" конкретным значением с помощью функции подстановки EVALUATE( ):

BROWSE FIELDS;

szar :Н='Зарплата',;

det :Н='Детей',;

sem :Н='Сем. полож.' ,;

i=EVALUATE(KEY(l)) :Р='#######.#' : Н='Индекс',;

n=RECNO() :H='N записи'

Анализируя значения полей базы данных SZAR, DET, SEM и вычисляемые поля N и I (номер записи и вид индекса), можно выяснить правильность индексирования. Можно даже провести эксперимент. При изменении зарплаты, числа детей или семейного положения запись должна изменить свое местоположение среди других в соответствии с установленным законом. Обратите внимание также, что у лиц, состоящих в браке, в первом разряде после точки в поле I, как и следовало ожидать, стоит единица. Таким образом, •при одинаковой зарплате (400) и одинаковом' числе детей (2), человек, не состоящий в браке (X), идет выше женатого (Б).

Этот же результат можно получить, прибегнув к символьному представлению ключа индексирования

INDEX ON STR(ROUND(szar/(det+l) ,0) ,7)+IIF(sem #'Б' ,' ‘,' * ') ТО pom

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

Контроль преподавателя.


Практическая работа №5.

Тема: «Работа с несколькими базами»

1.                 Создайте базу данных BRIG1 в Вашей папке . Включите в неё поля:

Поле ТипTAB Numeric 3VIR Numeric 7Длина Точность Примечание

0 табельный номер работника

0 выработка в рублях данного

работника

2.      Внесите в базу данных BRIG1 десять записей в соответствии с табельными номерами из базы данных KADR.

3.      В файле KADR среди прочих содержатся сведения о фамилиях и табельных номерах работников, а в файле BRIG1 - о табельных номерах (TAB) и выработке (VIR). Необходимо по фамилии (например, МИРОНОВ) из файла KADR найти его выработку из файла BRIG1.

CLOSE DATA

USE kadr - открытие файла KADR.DBF

USE brigl IN 0 — открытие BRIG1.DBF в свободной области

LOCATE FOR faM=' МИРОНОВ' - поиск записи с фамилией МИРОНОВ

SELECT brigl - переход в область BRIG1

LOCATE FOR tab=a.tab - поиск записи в файле BRIG1 с табельным номером МИРОНОВА ? a.fam, tab, vir - выдача данных из обеих баз МИРОНОВ Р.И. 468   204

Замечание. Как уже говорилось, в команде USE можно одновременно указывать и область, в которой открывается база данных. Однако переход в указанную область при этом не происходит. Так, после выполнения команд USE brigl IN 0 мы все равно остаемся в текущей области А.

4.       Связать файлы KADR.DBF и BRIG1.DBF по полю TAB. Вывести для каждого табельного номера файла BRIG1.DBF соответствующую фамилию и выработку.

USE brig IN a

USE kadr INDEX kadrtab IN b

SET RELATION TO tab INTO b

LIST tab, vir, b.fam

Record #

TAB

VIR

B.FAM

1

98

446

ПОТАПОВ Д.П.

2

6

480

КУЛАКОВА М.И

3

13

120

СИДОРОВ П.С.

4

468

204

МИРОНОВ Р.И.

 

Здесь выведены записи файла BRIG1.DBF, в которые включено поле соответствующих им фамилий KADR.DBF (B.FAM).

5.. Рассмотрим пример организации связи одной базы с несколькими базами, причем эта связь будет реализована по схеме одна запись -со многими. Для этого скопируйте содержимое базы данных BRIG1 в базу BRIG3. Измените значения поля VIR в BRIG3 любой известной Вам командой редактирования. Положим, что в бригадных файлах BRIG1.DBF и BRIG3.DBF некоторые табельные номера могут встречаться несколько раз (например, если фиксируются выработки каждого работника по отдельным нарядам). Допускаем также, что рабочие могут работать сразу в нескольких бригадах. Требуется для каждой фамилии и табельного номера из базы KADR.DBF предъявить все выработки данного работника из баз BRIG1.DBF и BRIG3.DBF, которые проиндексированы по полю TAB

(индексы BRIG1.IDX и BRIG3.IDX). BROWSE-ОКНО показано на

рисунке, решение приведено ниже:

SELECT a

USE kadr IN a                                     && Открытие старшей базы

области А

USE brig1 IN b INDEX brig1              && Открытие младшей базы в

области В

USE brig3 IN с INDEX brig3                  && Открытие другой младшей

базы в С

Установление связи одна-с-одной базы KADR.DBF с базами

BRIG1.DBF, BROG3.DBF

SET RELATION TO tab INTO b, tab INTO с

*Установление связи одна-со-многими базы KADR.DBF с

SET SKIP TO b, c            && базами BRIG1.DBF и BRIG3.DBF

BROWSE FIELDS a.fam ^-Фамилия' , а.tab :1а='Табель', ;

b.      tab :Ь-Таб/Бриг1', b.vir :Ь-Выр/Бриг1', ;

c.       tab ^-'Таб/БригЗ', c.vir й='Выр/Бриг3'

SET RELATION TO                          && Отмена всех связей

Фамилия

Табель

Таб/'БригЗ

Выр-БригЗ

Таб./Бриг5

Выр/Бриг5

ЕФИМОВ Н.П.

446

446

280

446

500

 

446

446

130

446

100

ЛАРИОНОВ Т.С

321

321

130

321

800

 

 

321

250

321

100

 

 

 

 

321

650

 

Для наглядности здесь выведены табельные номера работников из всех бригад. Видим, что ЕФИМОВ Н.П. с табельным номером 446 в файле BRIG31.DBF и в файле BRIG3.DBF имеет по 2 записи, а ЛАРИОНОВ Т.С. в бригаде номер 1 - две записи, а в бригаде номер 3 -три. Здесь повторяющиеся поля из старшей базы отображены символом заполнения. Для быстрого перемещения от записи к записи в старшей базе можно использовать клавиши С1г1-<вниз>/<вверх>.

Хотя клавиши дополнения и удаления (Ctrl-N, Ctrl-T) здесь доступны, они действуют только на старшую базу. Если при этом нужно, чтобы что-то происходило и с младшими базами, следует их перепрограммировать.

Команды DISPLAY/LIST предъявляют записи похожим образом, но для каждой сцепленной записи из младших баз значения полей из старшей базы будут повторяться. Ниже приведен результат выполнения команды

LIST a.fam, a.tab, b.tab, b.vir, a.tab, c.vir OFF :

.FAM

A.TAB

В.ТАВ

B.VIR

С.ТАВ

C.VIR

ФИМОВ А.П.

446

446

280

446

500

ФИМОВ А.П.

446

446

130

446

100

АРИОНОВ Т.С.

321

321

130

321

800

АРИОНОВ Т.С.

321

321

250

321

100

АРИОНОВ Т.С.

321

321

 

321

650

 

Рассмотренный пример соответствует сцеплению одной базы с несколькими. При этом реализовано два уровня данных. База K.ADR.DBF образует старший, первый уровень, а базы BRIG1.DBF и BRIG3.DBF-млаgший, второй уровень .

6. В базу данных BRIG3 добавьте информацию таким образом, чтобы были повторяющиеся табельные номера с разными выработками.

Скопируй те содержимое BRIG3 в базу BRIG5.

Любым известным Вам редактором отредактируй те оба поля в базе BRIG5.

Выполните связывание базы KADR c базами BRIG3 и BRIG5 , как показано в п.5.

Контроль преподавателя.


Практическая работа №6.

Тема: Создание командных файлов

I.       Поставим задачу. Пусть требуется хранить сведения об исполняемых документах в порядке намеченных сроков исполнения, а также выделить каким-то образом просроченные документы и документы, срок исполнения которых сегодня и завтра.

1.      Создайте базу данных (назовем ее KID.DBF), которая имеет структуру:

Содержание______

__Название Тип___ Длина

- Дата исполнения

DAT

Дата

8

- Номер документа

NDOK

Число

5

- Содержание документа SOD

Строка

60

- Исполнители____

___ ISP___

___Строка._

___ 60

 

и сохраните ее в Вашей папке, сделав ее предварительно текущей.

2.      Задайте системные установки ввода даты по германскому формату с указанием четырех цифр года.

3.      Введите в базу семь записей, которые бы относились ко вчерашнему числу, сегодняшнему и завтрашнему.

Исполнителей и содержание заполните самостоятельно.

4.       Просмотрите базу KID.

5.      На основе базы KID создайте одноиндексный файл по полю DAT с именем KID.

6.      Создайте программный файл с именем KID., включив в него команды:

*---------------- KID.PRG - контроль исполнения ------

SET TALK OFF

SET CENTURY ON

SET DATE GERMAN

SET DELETE ON

CLEAR

d=DATE()

USE kid INDEX kid

BROWSE TITLE 'Coxp.-AW Вых.-Esc Доп.- AN Удал.-лТ ' + ;

' (сегодня '+DTOC(DATE())+')' COLOR SCHEME 10;

FIELD ndok :h='HoMep', ;

dat :11-Дата', ;

sod ^-'Содержание' :27, isp ^-'Исполнители' :24, ; stat=IIF(dat<d,'* Проср.', IHddat ск'Сегодня',;

IIF(dat=d+l, 'Завтра', ' ' ))) ^-'Статус ' :8

7.      Сохраните командный файл в Вашей папке.

8.   Выведите на экран всё содержимое текущей папки и убедитесь в правильности выполнения.

9.      Закройте все базы.

10.          Запустите командный файл KID на выполнение. Отредактируйте его при необходимости.

Вид экрана, предъявляемого программой, будет иметь вид, показанный в таблице.

Пример1 .

("oxp.-'W Вых.-Esc flpn.^N Удал.-лТ (сегодня 22.11.95)

Статус ,

Номер

Дата

Содержание

Исполнители

Проср.

10

02.09.2004

Проф. собрание

Профком

сегодня

24

2.10.2004

Премирование

Отдел кадров

Завтра

27

3.10.2004

Утверждение отчета

Председ. СТК

 

11.            Контроль преподавателя.

Практическая работа № 7

Тема: «Создание программного файла экранного редактирования
базы данных»

1. Установите в качестве текущей папку с Вашими файлами FoxPro.

2.      Установите статус - строку.

3.      Создайте программный файл экранного редактирования базы данных Kadr

4.      С именем Redkadr. prg.

5.      Включите в него:

а)   параметры окружения:

-       в качестве текущей назначьте Вашу папку;

-       установите германский формат даты;

-       закройте все базы данных;

-       установите режим четырех символьного значения для года;

-       команда очистки экрана.

б)   задайте команду открытия базы данных Kadr в области « а ».

в)   установите курсор на начало файла. Очистите экран.

г)   откройте блок кода While .t.

д)   добавьте экранную форму:

@ 4,30 SAY 'ДАННЫЕ О СОТРУДНИКЕ'

@ 5, 9 ТО 15,70 DOUBL

@ 5,51 SAY ' Сегодня '+DTOC(DATE())+' ‘

@ 6,18 SAY 'Фамилия, инициалы:' GET fam

@ 7,20 SAY 'Дата рождения (день-месяц.год):' ;

GET dtr RANGE DATE()-80*365, DATE()-16*365

@ 8,11 SAY 'Табельный номер:' GET tab

@ 8,33 SAY 'Количество детей:' GET det

@ 8,54 SAY 'Пол (М или Ж):' GET pol

@ 9,15 SAY 'Семейное положение:' GET sem

@ 9,42 SAY 'Ср. зарплата:' GET szar

@ 10,12 SAY 'Перемещения по службе:' GET per;

@ 10,40 SAY 'Подразделение:' GET podr

READ CYCLE

е)   задайте команду перехода на следующую строку базы;

ж)   завершите цикл While

6.       Сохраните файл Redkadr в Вашей папке.

7.      Запустите его на выполнение. При необходимости исправьте ошибки.

8.      В строке ввода поля, используя опцию форматной функции ввода-вывода (Function) с ключом «М»,введите список возможных значений поля и личное поясняющее сообщение: «Выбор клавишей ПРОБЕЛ».

9.      Аналогичную п.7 операцию проведите для строки ввода семейного положения с сообщением « в Браке, Холост, Разведен - выбор клавишей ПРОБЕЛ».

10.       В строке «Перемещения по службе» добавьте выдачу личного

сообщения                  «Нажмите Ctrl-Home».

11.       Перед оператором чтения экранной формы введите две строки: вывод горизонтальной одинарной линии на всю экранную форму; сообщение «Выход с сохранением Ctrl - W, без сохранения Esc».

12.       Сохраните модифицированный файл.

13.Запустите файл на выполнение. При необходимости отладьте.

14.                Контроль преподавателя.

15.                Скопируйте программный файл Redkadr в текущую папку. Новому файлу дайте имя Prog8.

16.Откройте файл Prog8 для модификации.

17.                После задания параметров окружения (п. 4 а).) введите новый блок, в который включите:

двойную рамку по центру экрана высотой 4 - 5 строк;

внутри рамки вывод текста «Мои первые опыты в программировании в среде FoxPro»;

введите задержку вывода следующей экранной формы в 5 секунд, используя клавишную функцию;

добавьте команду очистки экрана.

18.                Сохраните файл.

19.Запустите файл на выполнение. При необходимости отладьте.

20.      Измените функцию задержки ввода на команду ввода- вывода Wait с пустым сообщением и опцией времени в 3 секунды.

21.      Сохраните изменения. Запустите файл на выполнение. При необходимости отладьте.

22.       Контроль преподавателя.

23.      Скопируйте файл Prog8 в Prog9 . Откройте файл Prog9 для редактирования.

24.      Перед второй экранной формой (п.4 г)) добавьте команду последовательного переноса значения полей текущей записи активного файла во временные переменные (см. одномерные массивы).

25.      Внесите во вторую экранную форму изменения, заменив имена полей массивов их одноименными временными переменными.

26.                В конце второй экранной формы после Read введите команду копирования значений временных переменных в соответствующие поля базы данных.

27.                Сохраните файл.

28.Запустите файл на выполнение. При необходимости отладьте.

29.                Создайте экранную форму ввода и редактирования данных базы Brig1 по полной аналогии с экранной формой файла Kadr в области « b» . Новому файлу дайте имя Redbrig и сохраните его в Вашей папке.

30.                Сохраните файл Redbrig. Запустите файл на выполнение. При необходимости отладьте.

31.                Усложним задание. Измените файл Redbrig, дополнив его начальной экранной формой

( см. Prog8) , в которой запросите ввода номера бригады и скомпонуйте внутри программы имя файла:

@ 5,8 SAY 'Укажите номер бригады' GET nom;

PICTURE '99' DEFAULT 0

READ

n='brig'+LTRIM(STR(nom))

clear

USE &n

32.      Сохраните модифицированный файл Redbrig. Запустите файл на выполнение. При необходимости отладьте.

33.                На основе программы лабораторной работы № 6 создайте программный файл с именем Prog9 .

34.                Перед командой Browse введите блок кода (см. 5г)). В конце Browse, перед

SET RELATION TO введите команды анализа нажатых клавиш для организации выхода из программы:

If readkey ()=270 . or . readkey ()=14

Exit

Endif

Enddo && завершение While

35.Запустите файл на выполнение. При необходимости отладьте.

36.Контроль преподавателя.


Практическая работа №8

Тема: «Создание вертикального меню в Fox Pro»

1.               Задайте в качестве текущей Вашу папку.

2.               Задайте команду установки статус-строки.

3.               Задайте команду создания командного файла с именем POPUPMENU

4.               Установите следующие параметры окружения :

J       Закрыть все базы

J       Очистка экрана

J Установить в качестве текущей Вашу папку

J       Установите германский формат даты

5.                Откройте цикл do while .t.

6.                Создание POPUP-меню с тенью с   именем menu1.

В качестве BAR-пунктов выберите по порядку:

J       Добавление

J       Редактирование

J       Выход

7.               В качестве реакции на всё меню назначьте запуск процедуры prmenu1

Процедуру передаётся при запуске номер выбранного пункта меню.

8.                Активизируете меню menu1

9.                Удалите меню, как неактивное( Clear menu)

10.           Дайте команду выхода в командный режим.

11.           Закрыть цикл пункта 5

12.           Опишите процедуру prmenu1.

а. Задайте команду приёма переданных параметров в одноимённую переменную

(m. bar)

б.  Откройте базу данных Kadr.

в.  Задайте команду множественного выбора. В качестве переменной выбора возьмите

параметр, переданный процедуре из основного меню.

г.  В блоке кода CASE для режима «Добавление» используете соответствующую

команду . Предусмотрите возможность возвращения в основное меню по функции

readkey(), если код нажатых клавиш равен 270 или 14 то вернуться в меню

(RETURN).

д.  Аналогичный блок кода сделайте по CASE для пункта меню «Редактирование»,

используя соответствующую команду FoxPro и блок выхода по анализу нажатых

клавиш.

е.  Для пункта Меню «Выход» в CASE дайте команду деактивации меню menu1.

- Завершите команду множественного выбора.

- Завершите процедуру.

- Сохраните программный файл.

13.            Запустите его на выполнение.

Отладьте при необходимости.

14.            Перед блоком кода (пункт.5) создайте блок вывода по центру экрана красочного окна с сообщением

(База «Кадры»), задержкой 3 секунды и последующей очисткой. Сохраните изменения.

15.            Отладьте при необходимости обновлённый файл.

16.            Добавьте в меню после пункта «Редактирование» пункт «Удаление» и поставьте

в процедуре (в блоке CASE для удаления) команду PACK.

Внесите необходимые изменения в процедуре prmenu1

- Сохраните изменения.

- Запустите на выполнение. Отладьте при необходимости.

17.            Оформите как комментарии два оператора по блоку кода do while .T.

Сохраните. Запустите на выполнение . Поясните результат.

18.      Контроль преподавателя.


Практическая работа №9

Тема: «Создание горизонтального меню в Fox Pro»

1.       Задайте в качестве текущей Вашу папку.

2.                Задайте команду установки статус-строки.

3.                Задайте команду создания командного файла с именем BARMENU

4.                Установите следующие параметры окружения :

J        Закрыть все базы

J        Очистка экрана

J Установить в качестве текущей Вашу папку

J Установите германский формат даты

5.                Создание BAR-меню с тенью с именем menu2.

В качестве PAD-пунктов выберите по порядку:

J Добавление

J Редактирование

J Выход

6.                В качестве реакции на пункт меню «Выход» выберите команду деактивации меню.

7.                В качестве реакции на остальные пункты назначьте запуск процедуры prmenu2

Процедуру передаётся при запуске имя выбранного пункта меню.

8.                Активизируете меню menu2

9.                Дайте команду выхода в командный режим.

10.            Опишите процедуру prmenu2 обработки первых двух пунктов меню по аналогии с лабораторной работой № 11 ( пункт 12).

Сохраните командный файл меню.

11.            Запустите файл на выполнение. При необходимости отладьте.

12.            Перед блоком кода (пункт.5) создайте блок вывода по центру экрана красочного окна с сообщением

« Мое первое горизонтальное меню», задержкой 3 секунды и последующей очисткой.

Сохраните изменения.

13.            Добавьте в меню после пункта «Редактирование» пункт «Удаление» и поставьте в процедуре (в блоке CASE для удаления) команду PACK.

Внесите необходимые изменения в процедуре prmenu2

14.                               Укажите координаты вывода основного горизонтального меню таким образом, чтобы оно помещалось в центре экрана. Сделайте его красочным.

15.       Сохраните изменения .Запустите на выполнение. Отладьте при необходимости.

16.       Контроль преподавателя.


ЛИТЕРАТУРА

1.       А.А.Попов.FoxPro 2.5/2.6.Создание приложений для FoxPro 2.5/2.6 в DOS и Windows. - М.Издательство «Калашников и К»,1997, 659 с.

2.       Хаббард Дж. Организация баз данных в вычислительных системах, М.,Мир,1984,294 с.

3.       Мейлер Д.,Теория реляционных баз данных,М.Мир,1997,608с.

4.       Кузин Л.Т.,Вольфенгаген В.Э.Реляционные методы пректирования банков данных., К., Вища школа ,1979,220 с.


 

5.       Скачано с www.znanio.ru