|
Реферат: Алгоритмизация и програмирование (Программирование)
РЕФЕРАТ
Пояснительная записка содержит 15 листов, 2 рисунка, 3 использованных источника, 1 приложение.
СТРУКТУРА ЭВМ, СХЕМА АЛГОРИТМА, ПРОГРАММА, РЕЗУЛЬТАТЫ РАСЧЕТОВ
В настоящей курсовой работе приведено задание, требующее для решения использования современных средств вычислительной техники. Дана структура и описано функциональное назначение основных блоков ЭВМ. Изложены математические подходы к решению задачи, поставленной в работе. Разработана схема алгоритма реализации ее решения. Предложен текст программы на алгоритмическом языке Турбо-Паскаль 7.0, представлены результаты расчетов и проведен их анализ.
Содержание
Введение………………………………………………………………………….4 1 Математическая часть………………………………………………………... 5 2 Описание алгоритма решения задачи……………………………………….. 7 3 Описание переменных………………………………………………………...10 4 Анализ результатов вычислений……………………………………………..11 Заключение……………………………………………………………………....12 Список использованных источников…………………………………………..13 Приложение. Текст программы и распечатка с ЭВМ………………………....14 Введение
Развитие современной техники идёт по пути все большего усложнения конструкции вновь создаваемых изделий. При их создании используются все более сложные технологии и технологические процессы. Процесс проектирования новых изделий требует привлечения и использования новых нестандартных решений. Одним из наиболее бурно развивающихся направлений новой техники является создание средств вычислительной техники, которые, постепенно, из области непосредственных вычислений стали применяться в процессе решения все более усложняющихся инженерных задач. В настоящее время, процесс проектирования образцов новой техники и разработки новых технологий уже немыслим без использования средств вычислительной техники. Применение этих средств позволяет ускорить и оптимизировать этот процесс значительно. Одним из примеров использования средств вычислительной техники - персональной электронной вычислительной машины (ПЭВМ) при решении математических задач является материал настоящей курсовой работы.
Математическая часть
Рассматриваемые в задаче геометрические фигуры изображены на рисунке 1.
Шаровой, или сферической, поверхностью называют геометрическое место точек пространства, равноудаленных от одной точки – центра шара. Тело, ограниченное шаровой поверхностью, называется шаром(рис. 1,а). Объем шара вычисляется по формуле:
Где r2-радиус второго шара.
Часть шара, ограниченная кривой поверхностью шарового сегмента (АС на рис. 1, б) и конической поверхностью (OABCD), основанием которой служит основание сегмента (ABCD), а вершиной – центр шара, называется шаровым сектором.
Объем шарового сектора вычисляется по формуле:
[pic]
где rосн- радиус основания шарового сегмента, h-высота шарового сегмента, принадлежащего шаровому сектору.
[pic],
где а – центральный угол шарового сектора.
[pic],
где а – центральный угол шарового сектора.
Рис. 1, а Рис. 1, б
Для решения поставленной задачи необходимо выполнение условия [pic] 2. Описание алгоритма решения задачи
Блок 1. Начало программы. Блок 2. Задание угла а, значений радиусов шара r1 и r2. Блок 3. Вычисление радиуса основания шарового сегмента. Блок 4. Вычисление высоты пирамиды. Блок 5. Вычисление высоты шарового сегмента. Блок 6. Вычисление объема шарового сектора. Блок 7. Вычисление объема шара. Блок 8. Проверка условия v_sek>v_shar. Если задача не выполняется – происходят переход к блоку 3, если задача выполняется – то происходит переход в блоку 11. Блок 9. Увеличение значения центрального угла. Блок 10. Увеличение значения радиуса второго шара. Блок 11. Проверка условия ограничения значения центрального угла, если оно выполняется, то задача решений не имеет, если не выполняется, то происходит переход к блоку 3. Блок 12. Уменьшение значения радиуса второго шара на один шаг. Блок 13. Уменьшение значения центрального угла на один шаг. Блок 14. Вычисление радиуса основания шарового сегмента. Блок 15. Вычисление высоты пирамиды. Блок 16. Вычисление высоты шарового сегмента. Блок 17. Вычисление объема шарового сектора. Блок 18. Вычисление объема шара. Блок 19. Вывод на экран результатов. Блок 20. Конец программы.
3. Описание переменных
а – угол в вершине шарового сектора, который изменяется от а1 до а2 с шагом b; r1 – радиус первого шара, из которого вырезан сектор; r2 – радиус второго шара (изменяется от r3 до r4 с шагом k); r_osn – радиус основания шарового сегмента; h – высота шарового сегмента, принадлежащего шаровому сектору; h1 – высота конуса, принадлежащего шаровому сектору; v_sek – объем шарового сектора; v_shar – объем шара. 4. Анализ результатов вычислений
Расчеты, проведенные по программе, реализующей описанный в пункте 3 алгоритм (текст программы см. в приложении), позволили получить следующие результаты. Максимальное значение угла в вершине шарового сектора=14 рад. Максимальное значение высоты =2,4879 см. Радиус основания шарового сектора=2,1681 см. Значения параметров рассматриваемых фигур: высота шарового сегмента h=0.4 м, радиус шара r4=1.2329 м, радиус шара 2 r3=0.6 м, радиус шара1 r1=2.1 м.
Анализ этих результатов дает возможность сделать вывод, что составленная программа позволяет правильно решить поставленную задачу.
Заключение
В курсовой работе решена задача определения параметров шара и шарового сектора, при которых их объёмы равны в пределах заданной точности. Составлена и отлажена программа, реализующая указанный алгоритм. С ее помощью проведены расчеты, проанализированы полученные результаты. Анализ результатов показал, что поставленная задача успешно решена. ЛИТЕРАТУРА
1. Выгодский М. Я. Справочник по элементарной математике / М. Я. Выгодский. М.: Наука, 1976. 2. Вычислительная техника и программирование. Учеб. Для техн. Вузов / А.В. Петров, В.Е. Алексеев, А.С. Ваулин и др.; Под ред. А.В. Петрова.- М.: Высш. шк., 1990. 3. Вычислительная техника и программирование. Практикум по программированию: Практ. Пособие / В.Е. Алексеев, А.С. Ваулин, Г.Б. Петрова ; Под ред. А.В. Петрова.- М.: Высш. шк., 1991. ТЕКСТ ПРОГРАММЫ И РАСПЕЧАТКА С ЭВМ
Program Kursovik; Uses Crt; label 1; Var h1,r,v_sek,v_shar,a1,a2,k,b,r1,r_osn,r3,r4,h:real; Begin clrscr; b:=1; k:=-0.1; a1:=1; a2:=161; r3:=3.6; r4:=0.2; r1:=3.3; repeat r_osn:=abs(r1*sin(a1/2)); h1:=abs(r1*cos(a1/2)); h:=r1-h1; v_sek:=2/3*pi*r1*r1*h; v_shar:=4/3*pi*r3*r3*r3; if v_sek>v_shar then begin a1:=a1-b; r3:=r3-k; r_osn:=abs(r1*sin(a1/2)); h1:=abs(r1*cos(a1/2)); h:=r1-h1; v_sek:=2/3*pi*r1*r1*h; v_shar:=4/3*pi*r3*r3*r3; writeln('Максимальный угол= ',a1:8:4); writeln('Максимальное значение высоты= ',h1:8:4); writeln('Максимальный радиус основания= ',r_osn:8:4); writeln('Объем шарового сектора= ',v_sek:8:4); writeln('Объем шара= ',v_shar:8:4); writeln(v_sek:8:4, ' < ',v_shar:8:4, ' -> Условие выполняется'); goto 1; end; a1:=a1+b; r3:=r3+k; until a1=161; 1:readkey; END.
Результаты вычислений
----------------------- [pic]
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ПЕНЗЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Кафедра
МО и ПЭВМ
Зав. кафедрой
(ученое звание, ученая степень)
2003 г.
(подпись, инициалы, фамилия)
АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ
Пояснительная записка к курсовой работе
ПГУ 170900-02КР021.12ПЗ
(обозначение документа)
Автор работы
Пахомов В. Е.
(подпись, инициалы, фамилия) Группа 02ТП1 Специальность 170900
Руководитель работы Дорофеева О.С.
(подпись, дата, инициалы, фамилия)
Работа защищена > 2003г. Оценка
Члены комисси
2003
Алгоритмизация…(см. титульный лист). Пояснительная записка.
НАЧАЛО
[pic]
[pic]
[pic]
20
А
А
a1=161
19
9
r3:=r3-k
a1:=a1-b
a1:=a1+b
r3:=r3+k
[pic]
да
В
h:=r1-h1
[pic]
15
14
13
12
165
18
8
7
6
5
ПГУ 170900-02КР021.12 ПЗ
Гр. 02ТП1
1
17
нет
11
В
a1, h1, r_osn v_sek, v_shar
[pic]
v_sek>v_shar
h:=r1-h1
[pic]
[pic]
[pic]
2
a1:=1, a2:=161, r3:=3.6, r4:=0.2; r:=3.3
4
3
Конец
10
нет
да
[pic]
[pic]
Реферат на тему: Алгоритмизация и программирование процессов на Fox
Государственный Университет Управления
Институт заочного обучения Специальность – менеджмент
Объяснительная записка к курсовому проекту по дисциплине «Компьютерная подготовка»
по теме: «Алгоритмизация и программирование процессов обработки данных в среде СУБД типа Fox»
Выполнил студент Студенческий билет № Группа №УП4-1-98/2 Вариант №2 Адрес:
Москва, 1999 г. Содержание.
1. Введение 3
2. Задание на курсовой проект 4
3. Анализ и постановка задачи 4
4. Формализация задачи 5
5. Алгоритмы 6
5.1. Создание двухуровневого светового меню 6
5.2. Создание файла данных 7
5.3. Чтение файла данных 8
5.4. Добавление данных в файл данных 9
5.5. Печать сведений о суммарной стоимости продукции заданного вида по каждому предприятию и о среднем выпуске этой продукции одним предприятием. 10
5.6. Печать сведений о суммарной стоимости и суммарном выпуске каждой продукции. 11
5.7. Печать упорядоченного по суммарной стоимости списка продукции пяти видов 12
6. Программы 13
6.1. Создание двухуровневого светового меню 13
6.2. Создание файла данных 15
6.3. Чтение файла данных 16
6.4. Добавление данных в файл данных 17
6.5. Печать сведений о суммарной стоимости продукции заданного вида по каждому предприятию и о среднем выпуске этой продукции одним предприятием. 18
6.6. Печать сведений о суммарной стоимости и суммарном выпуске каждой продукции. 20
6.7. Печать упорядоченного по суммарной стоимости списка продукции пяти видов 21
7. Результаты решений 22
8. Заключение 29
9. Список литературы 30
Введение
Реляционные системы управления базами данных (СУБД), такие как FoxBase, FoxBase plus, FoxPro, Visual FoxPro относятся к новому поколению СУБД реляционного типа из семейства dBase – подобных СУБД. Пакеты этого семейства получили широкое распространение, и многие из них были русифицированы. СУБД типа Fox сохраняет преемственность по отношению к более ранним представителям dBase – подобных СУБД, в отношении структуры баз данных, команд создания и обработки данных, основных типов данных. В тоже время каждая последующая СУБД обладает большими возможностями по сравнению с предыдущими. Так, например, Visual FoxPro по сравнению с FoxPro обладает более значительными изобразительными возможностями. Данная работа использует язык команд СУБД семейства Fox. Используемые команды, в основном, применимы во всех СУБД этого типа, но отладка велась на русифицированной СУБД FoxPro для Windows версии 2.5b.
Задание на курсовой проект
Структура ЗАПИСИ исходного ДОКУМЕНТА: |Код предприятия |Вид продукции |Объем выпуска |Цена единицы | | | | |продукции |
Необходимо: 1. Определить суммарную стоимость продукции заданного вида и ее средний выпуск одним предприятием. 2. Для каждого из пяти видов продукции определить суммарную стоимость и суммарный выпуск. 3. Выдать на печать в порядке возрастания суммарной стоимости продукцию пяти видов.
Анализ и постановка задачи
Исходные данные задачи представляют собой записи заданной структуры, которые должны вводиться с клавиатуры, а затем выводиться в файл данных на магнитный диск. Следовательно, одной из подзадач должна быть задача создания файла данных на магнитном диске. Созданный файл данных необходимо просмотреть на экране или вывести на печать в виде таблицы с печатью заголовка и шапки этой таблицы. Для этого следующей подзадачей должна являться задача просмотра файла данных. Также должна быть возможность добавления записей в созданный файл данных. Затем необходимы еще три подзадачи, решение которых позволяет выполнить три пункта курсовой работы: 1. Выдача сведений о суммарной стоимости продукции заданного вида по каждому предприятию и о среднем выпуске этой продукции одним предприятием. 2. Выдача сведений о суммарной стоимости и суммарном выпуске каждой продукции. 3. Выдача на печать продукции пяти видов в порядке возрастания ее суммарной стоимости. Кроме того, для диалога пользователя с системой необходимо создать так называемое, «Меню».
Формализация задачи
В среде СУБД типа Fox каждая подзадача может оформляться в виде отдельного командного файла с расширением .prg и заканчиваться оператором возврата в вызывающий командный файл. В данном случае основным командным файлом является файл MainMenu.prg, который формирует полное экранное меню и осуществляет вызов других командных файлов, в зависимости от выбранного пункта меню: |CreateFd.prg |– создание файла данных; | |ReadFd.prg |– чтение созданного файла данных; | |AddFd.prg |– добавление данных в созданный файл данных; | |Zad1.prg |– выдача сведений о суммарной стоимости продукции| | |заданного вида по каждому предприятию и о среднем| | |выпуске этой продукции одним предприятием; | |Zad2.prg |– выдача сведений о суммарной стоимости и | | |суммарном выпуске каждой продукции; | |Zad3.prg |– выдача на печать продукции пяти видов в порядке| | |возрастания ее суммарной стоимости. |
Кроме того, необходимо предоставить пользователю возможность облегчить процесс создания файла данных, т.е. предусмотреть создание файла данных со структурой заданной в программе, а не выбираемой самим пользователем, что полностью исключит возможные ошибки пользователя в задании имен полей файла данных, что в сою очередь может сказаться на корректной работе всей программы.
Алгоритмы
1 Создание двухуровневого светового меню
2 Создание файла данных
3 Чтение файла данных
4 Добавление данных в файл данных
5 Печать сведений о суммарной стоимости продукции заданного вида по каждому предприятию и о среднем выпуске этой продукции одним предприятием.
6 Печать сведений о суммарной стоимости и суммарном выпуске каждой продукции.
7 Печать упорядоченного по суммарной стоимости списка продукции пяти видов
Программы
1 Создание двухуровневого светового меню
* Командный файл иерархического меню MainMenu set Talk off set Color to n/W* && Выбор цвета экрана Clear
* Описание массивов данных меню Declare GenMenu(3,2), menuFile(3), menuZad(3), menuExit(2)
* Задание значений элементов массивов GenMenu(1,1)=" Файл данных " GenMenu(1,2)="Работа с файлом данных" 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 && открыть подменю, если выбран && любой пункт главного меню * Формирование подменю 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
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
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
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
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 Печать сведений о суммарной стоимости и суммарном выпуске каждой продукции.
* Командный файл 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 && Если имя файла не ввели, то печатать нечего Use &NameFd
* Формирование шапки таблицы L='+---------------------+---------------+---------------------+' @ 7,10 Say L @ 8,10 Say '| Вид продукции | Общий объем | Суммарная стоимость |' @ 9,10 Say L
* Сортировка данных по виду продукции Index On VidProd to &NameFd && Создание индексного файла Use &NameFd Index &NameFd
* Формирование строк таблицы Row=10 && Текущий номер строки для вывода данных Do While .Not.EOF() VP=VidProd RNom=RecNo() && Запомнить номер текущей записи Sum Volum For VidProd=VP to AllVol && Общий объем Sum Volum*Price For VidProd=VP to AllPrice && Суммарная стоимость GoTo RNom && Вернуться на текущую запись @ Row,10 Say '|' @ Row,12 Say VidProd @ Row,32 Say '|' @ Row,37 Say AllVol Picture '### ###' @ Row,48 Say '|' @ Row,55 Say AllPrice Picture '### ###.##' @ Row,70 Say '|'
* Пропуск записей с отработанным видом продукции Do While VidProd = VP And .Not.EOF() Skip EndDo Row=Row+1 EndDo
* Формирование итоговой части таблицы @ Row,10 Say L Close DataBases && Закрытие ФД Delete File NameFd + '.idx' && Удаление индексного файла EndIf
* Конец работы @ 24,0 Wait 'Для возврата в меню нажмите любую клавишу ...' @ 24,0 Clear Return
7 Печать упорядоченного по суммарной стоимости списка продукции пяти видов
* Командный файл Zad3 - печать упорядоченных сведений о стоимости продукции set Talk off set Status off set Escape off Clear @ 4,9 to 4,71 Color u/w* @ 3,9 Say 'Печать сведений о суммарной стоимости продукции по возрастанию' Color u/w* @ 12,0 Accept ' Введите имя файла данных: ' to NameFd @ 12,0 Clear If Len(NameFd) >0 && Если имя файла не ввели, то печатать нечего Use &NameFd
* Формирование шапки таблицы L='+---------------------+---------------------+' @ 7,17 Say L @ 8,17 Say '| Вид продукции | Суммарная стоимость |' @ 9,17 Say L
* Поиск продукции с наименьшим значением стоимости Store 0 to MinAP, LastAP For I=1 to 5 && Цикл для пяти видов продукции Do While .Not.EOF() && Цикл поиска нового минимума VP=VidProd && Текущий вид продукции RNom=RecNo() && Текущая запись Sum Volum*Price For VidProd=VP to AllPrice If AllPrice > LastAP If AllPrice < MinAP Or MinAP=0 MinAP=AllPrice MinVP=VP EndIf EndIf If RNom < RecCount() GoTo RNom+1 && Переход на следующую запись EndIf EndDo
* Формирование строки таблицы @ 9+I,17 Say '|' @ 9+I,19 Say MinVP @ 9+I,39 Say '|' @ 9+I,46 Say MinAP Picture '### ###.##' @ 9+I,61 Say '|' LastAP=MinAP && Предыдущее минимальное значение && (нижняя граница минимальных значений) MinAP=0 GoTo Top && Возобновить просмотр с первой строки Next * Формирование итоговой части таблицы @ 15,17 Say L Close DataBases && Закрытие ФД EndIf * Конец работы @ 24,0 Wait 'Для возврата в меню нажмите любую клавишу ...' @ 24,0 Clear Return
Результаты решений
Выбор создания файла данных
|1 |Ручка |1000 |2,00 | |1 |Карандаш |500 |1,50 | |1 |Фломастер |1000 |4,70 | |1 |Чернила |500 |3,00 | |2 |Ручка |1200 |1,85 | |2 |Фломастер |750 |5,00 | |2 |Ластик |5000 |1,20 | |2 |Карандаш |1500 |1,35 | |3 |Чернила |400 |3,20 | |3 |Ручка |800 |1,90 | |3 |Карандаш |1200 |1,40 | |3 |Фломастер |2000 |4,50 | |4 |Ручка |900 |1,85 | |4 |Ластик |200 |2,00 | |4 |Фломастер |1400 |4,70 | |4 |Чернила |500 |3,05 | |5 |Карандаш |700 |1,45 | |5 |Чернила |1100 |2,60 | |5 |Ластик |1400 |1,65 | |5 |Фломастер |500 |5,30 |
Выбор чтения файла данных
Выбор добавления данных в файл данных
|6 |Ластик |600 |1,55 | |6 |Чернила |800 |3,10 | |6 |Карандаш |1000 |1,55 |
Выбор выполнения Задания №1
Выбор выполнения Задания №2
Выбор выполнения Задания №3
Выход из СУБД
Заключение
Реляционные СУБД, такие как FoxPro действительно являются мощным средством управления большим объемом данных. СУБД этого типа позволяют производить быструю сортировку большого массива данных, осуществлять быстрый переход по записям в произвольном порядке, производить быструю выборку большого количества данных из всего массива данных по заданным критериям. В таких реляционных СУБД каждый файл данных рассматривается как двумерная таблица, столбцы которой соответствуют полям записей, а строки соответствуют отдельным записям файла и обращение к данным идет через указание номера записи имени поля. При этом работа с отдельным полем таблицы данных напоминает работу с переменными – обращение к данным максимально упрощено, и пользователю не нужно знать всю иерархическую структуру данных.
Язык команд СУБД семейства Fox содержит широкий набор команд, выполняющих действия сложных конструкций, например, сортировка записей файла сводится только к двум командам. Помимо этого в СУБД предусмотрены команды создания светового меню для организации прямого диалога с пользователем. Все это максимально упрощают написание программ и подтверждает, что реляционные СУБД семейства Fox действительно являются мощным инструментом для создания и обработки баз данных большого объема.
Список литературы
1. Лемашко Е.В., Романчуков В.Г. Программирование в системе команд СУБД семейства Fox: учебное пособие / ГАУ, М., 1998.
2. Компьютерный практикум. Программирование в среде Турбо-Паскаль и СУБД типа Fox. Методические указания к выполнению курсового проекта. /Сост.: О.Н. Леонова, И.А. Несмеянов; ГАУ, М.,1998.
----------------------- Do While .Not.EOF()
Запрет реакции команд Задание цвета экрана
Len(NameFd) >0
Len(NameFd) >0
Wait
Формирование главного меню
Выбор пункта главного меню
Выбор пункта подменю
Do While .T.
Формирование подменю
Case
L1=0
Exit
L1=1
L1=2
L1=3
Case
L2=3
L2=2
L2=1
AddFd
ReadFd
CreateFd
VidProd=TypeProd
Вывод шапки таблицы
Zad3
Zad2
Zad1
L2=3
L2=2
L2=1
Case
True
Ввод вида продукции, TypeProd
Quit
Return
Очистка экрана
L2=2
L2=1
Case
Конец
False
Do While .T.
Начало
True
Wait
Запрет вывода реакции команд Запрет изменения строки состояния Запрет прерывания выполнения программы
Ввод имени ФД, NameFd
Wait
Return
Do While .Not.EOF()
False
False
Return
Wait
Return
Начало
Wait
False
True
Вывод вопроса
Чтение 15 записей из ФД
Запрет вывода реакции команд Запрет изменения строки состояния Запрет прерывания выполнения программы
Изменение заголовка
Изменение заголовка
ABC=’Д’
Формирование заголовка
Формирование заголовка
Очистка экрана
Очистка экрана
Create &NameFd
False
Create Table &NameFd ()
True
Ввод имени ФД, NameFd
Append
Ввод имени файла, NameFd
Ввод ответа (Д/Н) to ABC
Запрет вывода реакции команд Запрет изменения строки состояния Запрет прерывания выполнения программы
Начало
Изменение заголовка
Формирование заголовка
Очистка экрана
Len(NameFd) >0
Начало
True
False
Return
Запрет вывода реакции команд Запрет изменения строки состояния Запрет прерывания выполнения программы
Ввод имени ФД, NameFd
Переход на следующую запись
Изменение заголовка
Формирование заголовка
Очистка экрана
Len(NameFd) >0 And Len(TypeProd)>0
Начало
True
Вывод строки таблицы
2
1
1
2
Вывод заключения таблицы
AvVol=Average(Volum)
AllPrice=Sum(Volum*Price)
Вывод AllPrice AvVol
Wait
False
Return
Запрет вывода реакции команд Запрет изменения строки состояния Запрет прерывания выполнения программы
Ввод имени ФД, NameFd
2
1
Формирование заголовка
Очистка экрана
Len(NameFd) >0
Начало
True
Вывод строки таблицы
Вывод шапки таблицы
Вывод заключения таблицы
Сортировка по полю VidProd с помощью индексного файла
Do While .Not.EOF()
AllVol=Sum(Volum)
Вывод заключения таблицы
AllPrice=Sum(Volum*Price)
Переход на запись с новым видом продукции
1
2
1
2
Wait
Return
1
[pic]
Переход на следующую запись
AllPrice=Sum(Volum*Price)
Store 0 to MinAP, LastAP
Начало
Do While .Not.EOF()
For I=1 to 5
Вывод в строке таблицы MinVP, MinAP
Вывод шапки таблицы
False
Запрет вывода реакции команд
Ввод имени ФД, NameFd
Формирование заголовка
Очистка экрана
Len(NameFd) >0
True
Переход к первой записи
LastAP=MinAP
[pic]
Запрет прерывания выполнения программы
Запрет изменения строки состояния
2
VP=VidProd
AllPrice>LastAP
AllPrice | |