GenMenu(2,1)=" Задание "
GenMenu(2,2)="Задания на курсовой проект"
GenMenu(3,1)=" Выход "
GenMenu(3,2)="Выход из программы"
menuFile(1)="Создание"
menuFile(2)="Чтение"
menuFile(3)="Добавление"
menuZad(1)="Задание №1"
menuZad(2)="Задание №2"
menuZad(3)="Задание №3"
menuExit(1)="Выход в Fox"
menuExit(2)="Выход из Fox"
Do While .T.
set Color to gr+/g, gr+/b
Menu Bar GenMenu, 3
Read Menu Bar to L1, L2
Do While L1 > 0
Menu 1, menuFile, 3,3
Menu 2, menuZad, 3,3
Menu 3, menuExit, 2,2
set Color to n/W*
Do Case
Case L1=0
Exit
Case L1=1
Case L2=1
Do CreateFd
Case L2=2
Do ReadFd
Case L2=3
Do AddFd
EndCase
Case L1=2
Do Zad1
Do Zad2
Do Zad3
Case L1=3
Return
Quit
EndDo
* Командный файл CreateFd - создание нового файла данных
set Talk off
set Status off
set Escape off
Clear
Zag='Процесс создания нового файла данных'
@ 4,22 to 4,58 Color u/w*
@ 3,22 Say Zag Color u/w*
@ 12,0
Accept ' Укажите имя создаваемого файла данных: ' to NameFd
If Len(NameFd) > 0
Zag=Zag + ': ' + NameFd + '.dbf'
LenZag=Int(Len(Zag))
@ 4,Int((80-lenZag)/2) to 4,Int((80-lenZag)/2)+LenZag Color u/w*
@ 3,Int((80-LenZag)/2) Say Zag Color u/w*
@ 14,0
Text
Вы хотите автоматически создать пустую структуру
с указанным именем, по заданию курсового проекта (Д/Н)?
EndText
@ 16,57
Wait '' to ABC
If ABC='н' Or ABC='д'
ABC=Chr(Asc(ABC)-32)
EndIf
If ABC='Н' Or ABC='Д'
If ABC='Д'
Create Table &NameFd ;
(NomCex N(1,0), TabNom N(4,0), Fam C(20), Prof C(20), Razr N(1,0))
@ 8,0
set Talk on
Display Structure
Else
Create &NameFd
@ 24,0
Wait 'Для возврата в меню нажмите любую клавишу ...'
@ 24,0 Clear
* Командный файл ReadFd - чтение файла данных
@ 4,27 to 4,54 Color u/w*
@ 3,27 Say 'Процесс чтения файла данных' Color u/w*
Accept ' Введите имя считываемого файла данных: ' to NameFd
If Len(NameFd) >0
@ 3,0 Clear to 5,79
Zag='Содержимое файла данных: ' + NameFd + '.dbf'
Use &NameFd
Do While .Not.EOF()
@ 7,0
Display Next 15
If EOF()=.F.
Skip
Wait 'Нажмите любую клавишу для просмотра следующих 15 записей ...'
Close DataBases
* Командный файл AddFd - добавление файла данных
@ 4,25 to 4,56 Color u/w*
@ 3,25 Say 'Процесс добавления файла данных' Color u/w*
Accept ' Введите имя файла данных для добавления данных: ' to NameFd
@ 3,0 Clear
Zag='Добавление данных в файл данных: ' + NameFd + '.dbf'
Append
* командный файл печати сведений о работниках заданного разряда Zad1
clear
set talk off
@ 5,25 say ' Командный файл печати сведений о работниках заданного разряда Zad1'
accept 'Введите имя файла данных: ' to NameFd
use &NameFd
input 'Введите номер разряда: ' to RazrNom
@ 5,10 say 'Сведения о работниках цеха, имеющих разряд '+STR(RazrNom,1)
@ 6,5 say '------------------------------------------------------'
@ 7,15 say 'Цех'
@ 7,40 say 'Количество'
@ 8,5 say '------------------------------------------------------'
store 1 to Kk
store 5 to Nn
store 0 to Kol
store 9 to Ss
do while (Kk<=Nn)
Scan
if Razr=RazrNom
if NomCex=Kk
store Kol+1 to Kol
endif
EndScan
@ Ss,7 say Kk
@ Ss,35 say Kol
store Kk+1 to Kk
store Ss+1 to Ss
enddo
@ Ss+1,5 say'------------------------------------------------------'
wait 'Для возврата в меню нажмите любую клавишу ...'
return
* командный файл печати сведений о работниках заданного разряда Zad2
@ 5,25 say ' Командный файл печати сведений о работниках заданного разряда Zad2'
input 'Введите номер цеха: ' to CexNom
@ 5,10 say 'Количество работников цеха № '+STR(CexNom,1)+', имеющих '+STR(RazrNom,1)+' разряд'
@ 7,15 say 'Профессия'
store 9 to Row
store 1 to N,Nm
count to col
dimension PR(col)
scan
if ASCAN(PR,PROF)=0
store PROF to PR(N)
store N+1 to N
endscan
do while Nm<N
scan for RAZR=RazrNom and NOMCEX=CexNom and PROF=PR(Nm)
@ Row,10 say PR(Nm)
@ Row,35 say Kol
store Row+1 to Row
store Nm+1 to Nm
@ Row+1,5 say '------------------------------------------------------'
* командный файл печати упорядоченного списка работников каждой про-фессии Zad3
@ 5,5 say 'Командный файл печати упорядоченно списка работников каждой профессии Zad3'
index On PROF+FAM to &NameFd
use &NameFd Index &NameFd
store 1 to Row
@ Row,12 say 'Список работников професcии ' + PR(Nm)
@ Row+1,5 say '-----------------------------------------------------------'
@ Row+2,7 say 'Номер цеха Таб.номер Фамилия Разряд'
@ Row+3,5 say '-----------------------------------------------------------'
scan for PROF=PR(Nm)
@ Row+4,11 say NOMCEX
@ Row+4,25 say TABNOM
@ Row+4,40 say FAM
@ Row+4,58 say RAZR
@ Row+4,5 say '-----------------------------------------------------------'
store Row+6 to Row
if Row>=40
Row=1
wait 'Нажмите любую клавишу для вывода ннформации о работниках следующих профессий'
Delete File NameFd + '.idx'
Выбор создания файла данных
Номер цеха
Табельный номер
Фамилия
Профессия
Разряд
1
1001
Белов
Механик
4
1002
Маслов
Шумоизоляторщик
5
1003
Ситников
Перегонщик
3
1004
Чернов
Помощник механика
2
1005
Сорокин
Автослесарь
1006
Хохлов
Сигнализаторщик
1007
Сиротин
Шиномонтажник
1008
Смирнов
Слесарь
1009
Колосов
Механик по тюнингу
1010
Бобров
1011
Никулин
1012
Малышев
1013
Брусков
1014
Воробьев
1015
Леонов
1016
Сиднев
1017
Ильин
1018
Фадеев
1019
Астахов
1020
Рублев
Выбор чтения файла данных
Выбор добавления данных
в файл данных
1021
Волков
1022
Новиков
1023
Григорьев
1024
Журавлев
1025
Дианов
Выбор выполнения Задания №1
Выбор выполнения Задания №2
Выбор выполнения Задания №3
Выход из СУБД
Реляционные СУБД, такие как FoxPro действительно являются мощным средством управления большим объемом данных. СУБД этого типа позволяют производить быструю сортировку большого массива данных, осуществлять быстрый переход по записям в произвольном порядке, производить быструю выборку большого количества данных из всего массива данных по заданным критериям. В таких реляционных СУБД каждый файл данных рассматривается как двумерная таблица, столбцы которой соответствуют полям записей, а строки соответствуют отдельным записям файла и обращение к данным идет через указание номера записи имени поля. При этом работа с отдельным полем таблицы данных напоминает работу с переменными – обращение к данным максимально упрощено, и пользователю не нужно знать всю иерархическую структуру данных.
Язык команд СУБД семейства Fox содержит широкий набор команд, выполняющих действия сложных конструкций, например, сортировка записей файла сводится только к двум командам. Помимо этого в СУБД предусмотрены команды создания светового меню для организации прямого диалога с пользователем. Все это максимально упрощают написание программ и подтверждает, что реляционные СУБД семейства Fox действительно являются мощным инструментом для создания и обработки баз данных большого объема.
1.
2. Компьютерный практикум. Программирование в среде Турбо-Паскаль и СУБД типа Fox. Методические указания к выполнению курсового проекта. /Сост.: О.Н. Леонова, И.А. Несмеянов; ГАУ, М.,1998.
Страницы: 1, 2