Реферат: Алгоритмизация и программирование процессов на Fox
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 && открыть подменю, если выбран
&& любой пункт главного меню
* Формирование подменю
set Color to gr+/g, gr+/b && Установка цвета подменю
Menu 1, menuFile, 3,3
Menu 2, menuZad, 3,3
Menu 3, menuExit, 2,2
Read Menu Bar to L1, L2 && Вывод меню на экран
set Color to n/W* && Возврат к цвету экрана
* Обработка выбранного пункта меню
Do Case
Case L1=0
Exit && Выход в панель главного меню
Case L1=1
Do Case
Case L2=1 && Выбрано действие 'Создание нового ФД'
Do CreateFd
Case L2=2 && Выбрано действие 'Чтение данных'
Do ReadFd
Case L2=3 && Выбрано действие 'Добавление новых данных'
Do AddFd
EndCase
Case L1=2
Do Case
Case L2=1 && Выбрано задание №1 из курсового проекта
Do Zad1
Case L2=2 && Выбрано задание №2 из курсового проекта
Do Zad2
Case L2=3 && Выбрано задание №3 из курсового проекта
Do Zad3
EndCase
Case L1=3
Do Case
Case L2=1 && Выбран пункт 'Выход в Fox'
Return
Case L2=2 && Выбран пункт 'Выход из Fox'
Quit
EndCase
EndCase
EndDo
EndDo
6.2. Создание файла данных
* Командный файл 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
* Ответ на поставленный вопрос
Do While .T.
@ 16,57
Wait '' to ABC && Ожидание нажатия клавиши
If ABC='н' Or ABC='д'
ABC=Chr(Asc(ABC)-32) && Смена регистра
EndIf
If ABC='Н' Or ABC='Д'
Exit
EndIf
EndDo
* Создание ФД
If ABC='Д' && Автоматическое создание ФД
Create Table &NameFd ;
(KodOrg N(3,0), VidProd C(20), Volum N(4,0), Price N(6,2))
@ 8,0
set Talk on
Display Structure && Вывод созданной структуры
set Talk off
Else && Создание ФД с возможностью заполнения полей
Create &NameFd
EndIf
EndIf
* Конец работы
@ 24,0
Wait 'Для возврата в меню нажмите любую клавишу ...'
@ 24,0 Clear
Return
6.3. Чтение файла данных
* Командный файл ReadFd - чтение файла данных
set Talk off
set Status off
set Escape off
Clear
@ 4,27 to 4,54 Color u/w*
@ 3,27 Say 'Процесс чтения файла данных' Color u/w*
@ 12,0
Accept ' Введите имя считываемого файла данных: ' to NameFd
If Len(NameFd) >0 && Если имя файла не ввели, то делать нечего
* Изменение заголовка
@ 3,0 Clear to 5,79
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*
* Вывод содержимого файла
Use &NameFd
Do While .Not.EOF() && Цикл вывода порций записей ФД
&& В определенную область экрана
@ 7,0
Display Next 15
If EOF()=.F. && В последнем цикле не нужно переводить
&& указатель и держать паузу
Skip && Перевод указателя, чтобы новый экран не начинался
&& с последней записи предыдущего экрана
@ 24,0
Wait 'Нажмите любую клавишу для просмотра следующих 15 записей ...'
EndIf
EndDo
Close DataBases && Закрытие ФД
EndIf
* Конец работы
@ 24,0
Wait 'Для возврата в меню нажмите любую клавишу ...'
@ 24,0 Clear
Return
6.4. Добавление данных в файл данных
* Командный файл AddFd - добавление файла данных
set Talk off
set Status off
set Escape off
Clear
@ 4,25 to 4,56 Color u/w*
@ 3,25 Say 'Процесс добавления файла данных' Color u/w*
@ 12,0
Accept ' Введите имя файла данных для добавления данных: ' to NameFd
If Len(NameFd) >0 && Если имя файла не ввели, то делать нечего
* Изменение заголовка
@ 3,0 Clear
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*
* Добавление данных в ФД
Use &NameFd
Append
Close DataBases && Закрытие ФД
EndIf
* Конец работы
@ 24,0
Wait 'Для возврата в меню нажмите любую клавишу ...'
@ 24,0 Clear
Return
6.5. Печать сведений о суммарной стоимости продукции заданного вида по каждому предприятию и о среднем выпуске этой продукции одним предприятием.
* Командный файл Zad1 - печать сведений о заданной продукции
set Talk off
set Status off
set Escape off
Clear
@ 4,18 to 4,62 Color u/w*
@ 3,18 Say 'Процесс печати сведений о заданной продукции' Color u/w*
@ 12,0
Accept ' Введите имя файла данных: ' to NameFd
@ 12,0 Clear
@ 12,0
Accept ' Введите вид продукции: ' to TypeProd
If Len(NameFd) >0 And Len(TypeProd) > 0 && Если имя файла или
&& вид продукции не ввели,
&& то делать нечего
* Изменение заголовка
@ 3,0 Clear
Zag='Сведения о продукции: ' + TypeProd
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*
Use &NameFd
* Формирование шапки
L='+-----------------+---------------+--------+-----------+'
@ 7,12 Say L
@ 8,12 Say '| Код предприятия | Объем выпуска | Цена | Стоимость |'
@ 9,12 Say L
Row=10 && Текущий номер строки для вывода данных
Do While .Not.EOF()
If VidProd=TypeProd
* Формирование строки
@ Row,12 Say '|'
@ Row,20 Say KodOrg
@ Row,30 Say '|'
@ Row,36 Say Volum Picture '# ###'
@ Row,46 Say '|'
@ Row,48 Say Price Picture '###.##'
@ Row,55 Say '|'
@ Row,57 Say Volum*Price Picture '## ###.##'
@ Row,67 Say '|'
Row=Row+1
EndIf
Skip
EndDo
* Формирование итоговой части таблицы
@ Row,12 Say L
Row=Row+1
* Расчет суммарной стоимости
Sum Volum*Price For VidProd=TypeProd to AllPrice
* Расчет среднего выпуска
Average Volum For VidProd=TypeProd to AvVol
@ Row,29 Say 'Общая суммарная стоимость:'
@ Row,56 Say AllPrice Picture '### ###.##'
@ Row+1,21 Say 'Средний выпуск одним предприятием:'
@ Row+1,58 Say AvVol Picture '# ###'
Close DataBases && Закрытие ФД
EndIf
* Конец работы
@ 24,0
Wait 'Для возврата в меню нажмите любую клавишу ...'
@ 24,0 Clear
Return
6.6. Печать сведений о суммарной стоимости и суммарном выпуске каждой продукции.
* Командный файл Zad2 - печать сведений об объемах и стоимости продукции
set Talk off
set Status off
set Escape off
Clear
@ 4,15 to 4,64 Color u/w*
@ 3,15 Say 'Процесс печати сведений об объемах всей продукции' Color u/w*
@ 12,0
Accept ' Введите имя файла данных: ' to NameFd
@ 12,0 Clear
If Len(NameFd) >0 && Если имя файла не ввели, то печатать нечего