русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Указания к выполнению программы


Дата добавления: 2015-07-09; просмотров: 561; Нарушение авторских прав


 

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

Создадим программу, производящую моделирование и связывание таблицы (см. ЛР №1). Закончим её оператором вызова другой программы DO telef.prg, производящей поиск и редактирование записей БД и реализующей принцип вложенных меню.

Программы создаются, сохраняются, вводятся и редактируются так же, как это было указано в ЛР № 2.

Программа rel.prg ( для связывания БД ):

USE "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\LR № 5\table1.dbf" ALIAS r1

INDEX ON телефон TO "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\LR № 5\table1-1.dbf"

SELECT 2

USE "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\LR № 5\table2.dbf" ALIAS r2

INDEX ON телефон TO "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\LR № 5\table2-1.dbf"

SET RELATION TO телефон INTO r1

DO "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\LR № 3\telef.prg"

Программа telef.prg

SET TALK OFF

SET BLINK OFF

SET PROCEDURE TO labaproc.prg

DO WHILE T.

CLEAR

@ 4,17 SAY "БД абонентов и их родственников" COLOR r+

SET MESSAGE TO 24

@ 1,2 TO 21,77 DOUBLE

@ 10,22 PROMPT "Редактирование" MESSAGE "Редактирование записей"

@ 10,38 PROMPT "Поиск" MESSAGE "Поиск записей"

@ 10,45 PROMPT "Выход" MESSAGE "Выход из программы"

MENU TO m

DO CASE CASE m=1

@ 13,38 PROMPT "БД абоненты" MESSAGE "Редактирование БД абонентов”



@ 14,38 PROMPT "БД родственники" MESSAGE "Редактирование БД родственников"

MENU TO m2

DO CASE m2

CASE m2=1

« операторы редактирования БД абонентов, см. Л/Р N2 » CASE m2=2

« операторы редактирования БД родственников, см. Л/Р N2»

ENDCASE m2=1

CASE m=2

@ 13,38 PROMPT "По фамилии" MESSAGE "Поиск записи по фамилии"

@ 14,38 PROMPT "Po nomeru telefona" MESSAGE "Поиск записи по номеру телефона"

MENU TO m4 DO CASE m4

CASE m4=1

« операторы поиска по фамилии ( по полю Char) в БД « Абоненты » и операторы вывода номера найденной записи »

CASE m4=2

«операторы поиска по номеру телефона ( по полю Numeric ) в БД « Абоненты» и операторы вывода номера найденной записи » ENDCASE m4=1

CASE m=3

EXIT

ENDCASE

ENDDO

CLEAR

CLOSEALL

При сравнениях в программе значений переменных и полей сначала преобразуются в символы верхнего регистра командой UPPER ( ). И осуществляется отбрасывание незначащих пробелов командой ALLTRIM ( ).

 

К пункту 2. Осуществляя поиск по числовому полю телефон (типа Numeric) в таблице, оператор Locate будет иметь вид LOCATE FOR телефон = fno (где fno– переменная для хранения заданного номера телефона). Рассмотрим программу, реализующую поиск нужной записи в БД «Абоненты» по ключевому заданному значению. Используем для этого команду LOCATE. Поле поиска - фамилия(типа char).

PROCEDURE findfam

USE "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\LR № 5\table1.dbf"

CLEAR

fif=SPACE(20)

@ 7,32 SAY "Поиск по фамилии" COLOR r+/b

@ 6,2 TO 10,77 DOUBLE

@ 9,20 SAY "Введите искомое значение" GET fif

READ

fif=ALLTRIM(fif)

LOCATE FOR UPPER(фамилия)=UPPER(fif)

i=14

DO WHILE FOUND()

@ i,29 SAY ALLTRIM(фамилия)+"- номер записи -" +ALLTRIM(STR(RECNO()))

i=i+1

CONTINUE

ENDDO

PROCEDURE findte

USE "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\LR № 5\table1.dbf"

CLEAR

fno=0

@ 7,32 SAY "Поиск по номеру телефона" COLOR r+/b

@ 6,2 TO 10,77 DOUBLE

@ 9,20 SAY "Введите искомое значение" GET fno PICTURE '9-999-999-99-999'

READ

LOCATE FOR телефон=fno

i=14

DO WHILE FOUND()

@ i,29 SAY телефон PICTURE '9-999-999-99-999'+"- номер записи -" + ALLTRIM(STR(RECNO()))

i=i+1

CONTINUE

ENDDO

 

К пункту 3. Для упрощения разработки больших по объёму программ, а также для реализации базовых принципов модульного программирования, в Visual FoxPro предусмотрена возможность декомпозиции программы на отдельные модули и процедуры. При этом отдельные части программы оформляются в виде процедур, которые хранятся в отдельном от основной программы файле. Имя файла процедур в программе указывается оператором SET PROCEDURE TO < имя процедурного файла.prg >

В процедурном файле процедуры располагаются одна за другой, при этом каждая имеет заголовок PROCEDURE < имя процедуры >. Далее идёт тело процедуры и оператор возврата RETURN.

Переменные, которые должны передаваться из процедуры вне, описываются в начале процедуры оператором PUBLIC <переменная 1>, <переменная 2 >,...

Оформить в виде процедур основные части программы, а именно:

- операторы редактирования таблицы Абоненты;

- операторы редактирования таблицы Родственники;

- операторы поиска по символьному полю;

- операторы поиска по числовому полю.

Общая программа поиска и редактирования записей в БД должна выполнять:

- открытие, индексирование и реляционное связывание таблиц.

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

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

- добавление записей в таблицу Абоненты и в таблицу Родственники;

- поиск по фамилии в таблице Абоненты;

- поиск по телефону в таблице Родственники.

Для анализа результатов поиска в связанных базах данных удобно использовать функцию FOUND([<область>]) - функция вырабатывает логическое значение "истина" если команда поиска (LOCATE, CONTINUE) завершилась успешно, и "ложь" в противоположном случае.

Функция действует в рабочей или указанной <области>

Программа rel.prg приведена на рис.3.1

Рис. 3.1

Текст программы telef.prg приведён ниже:

SET TALK OFF

SET BLINK OFF

SET PROCEDURE TO labaproc.prg

DO WHILE.T.

CLEAR

@ 4,17 SAY "БД абонентов и их родственников" COLOR r+

@ 1,2 TO 21,77 DOUBLE

@ 10,22 PROMPT "Редактирование" MESSAGE "Редактирование и добавление записей"

@ 10,38 PROMPT "Поиск" MESSAGE "Поиск записей"

@ 10,45 PROMPT "Выход" MESSAGE "Выход из программы"

MENU TO m

DO CASE

CASE m=1

@ 13,22 PROMPT "Редактирование" MESSAGE "Редактирование БД"

@ 14,22 PROMPT "Пополнение" MESSAGE "Добавление новой записи в БД"

MENU TO m1

DO CASE m1

CASE m1=1

@ 13,38 PROMPT "БД абонентов" MESSAGE "Редактирование БД абонентов"

@ 14,38 PROMPT "БД родственников" MESSAGE "Редактирование БД родственников"

MENU TO m2

DO CASE m2

CASE m2=1

CLEAR

SELECT a

DO "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\lr № 6\showab.prg"

READ

CASE m2=2

CLEAR

SELECT b

DO "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\lr № 6\showrods.prg"

READ

ENDCASE

m2=1

CASE m1=2

@ 13,52 PROMPT "БД абнентов" MESSAGE "Пополнение БД абонентов"

@ 14,52 PROMPT "БД родственников" MESSAGE "Пополнение БД родственников"

MENU TO m3

DO CASE m3

CASE m3=1

CLEAR

SELECT a

APPEND BLANK

DO "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\lr № 6\showab.prg"

READ

CASE m3=2

CLEAR

SELECT b

APPEND BLANK

DO "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\lr № 6\showrods.prg"

READ

ENDCASE

m3=1

ENDCASE

m1=1

CASE m=2

@ 13,38 PROMPT "По фамилии" MESSAGE "Поиск записи по фамилии"

@ 14,38 PROMPT "По номеру телефона" MESSAGE "Поиск записи по номеру телефона"

MENU TO m4

DO CASE m4

CASE m4=1

CLEAR

SELECT a

DO findfam IN "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\lr № 3\labaproc.prg"

READ

CASE m4=2

CLEAR

SELECT b

DO findte IN "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\lr № 3\labaproc.prg"

READ

ENDCASE

m4=1

CASE m=3

EXIT

ENDCASE

m1=1

ENDDO

CLEAR

Программа labaprog.prg приведена на рис.3.2.

Рис. 3.2

При возникновении проблем по выполнению программы telef.prg необходимо в программе указать полные пути к самой программе telef.prg, к программе rel.prg, а также к процедуре labaproc.prg. Для запуска программы можно пользоваться панелью задач (Program/DO).

Данная манипуляция приведена на рис. 3.3.

Рис. 3.3

В появившемся окне выбираем необходимую программу и нажимаем ОK (рис. 3.4).

Рис. 3.4

Пример выполнения начала данной программы представлен на рис. 3.5.

Так же можно в командном окне набрать команду DO:

DO "c:\documents and settings\я.xxxl\мои документы\visual foxpro projects\lr № 3\rel.prg"

Результат её выполнения представлен на рис.3.5.

Рис. 3.5

При поиске по полю фамилиянеобходимо выбрать соответствующую вкладку меню, как это показано на рис. 3.6.

Рис. 3.6

После нажатия Enter на надписи Фамилия появится окно для ввода интересующей фамилии (рис. 3.7).

Рис. 3.7

После ввода фамилии необходимо нажать Enter.

Появится результат поиска (рис. 3.8).

Рис. 3.8

Действительно, в table1одна запись, чьё поле фамилия – Бережной (рис. 3.9).

Рис. 3.9

При необходимости редактировать содержания уже имеющихся записей, следует выбрать соответствующую вкладку (рис. 3.10).

Рис. 3.10

После чего будет предоставлена возможность выбрать: в какую из таблиц будут вноситься изменения (рис. 3.11).

Рис. 3.11

Внесём изменения в поле фамилия.

На рис. 3.12 показана запись до изменения, а на рис. 3.13 после внесения изменений.

Рис. 3.12

Рис. 3.13

Убедимся в том, что изменение вступило в силу, найдя (по вышеуказанному алгоритму) изменённую фамилию (рис. 3.14).

Рис. 3.14

Действительно, изменялась первая запись.

При поиске по полю телефон необходимо выбрать соответствующую вкладку (рис. 3.15).

Рис. 3.15

Появится окно для ввода телефона (рис. 3.16).

Рис. 3.16

После ввода телефона и нажатия Enter рабочее окно приобретёт вид, указанный на рис. 3.17.

Рис. 3.17

Действительно, в таблице table2 две записи с одинаковым номером (рис. 3.18).

Рис. 3.18

 



<== предыдущая лекция | следующая лекция ==>
Указания к выполнению программы | Указания к выполнению программы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 2.537 сек.