Курсовая на тему Алгоритмизация и программирование процессов обработки данных в среде СУБД типа Fox
Работа добавлена на сайт bukvasha.net: 2015-06-29Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Государственный Университет Управления
Институт заочного обучения
Специальность – менеджмент
Объяснительная записка к курсовому проекту
по дисциплине «Компьютерная подготовка»
по теме: «Алгоритмизация и программирование процессов
обработки данных в среде СУБД типа 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
1. Введение
Реляционные системы управления базами данных (СУБД), такие как FoxBase, FoxBaseplus, FoxPro, Visual FoxPro относятся к новому поколению СУБД реляционного типа из семейства dBase – подобных СУБД. Пакеты этого семейства получили широкое распространение, и многие из них были русифицированы.
СУБД типа Fox сохраняет преемственность по отношению к более ранним представителям dBase – подобных СУБД, в отношении структуры баз данных, команд создания и обработки данных, основных типов данных. В тоже время каждая последующая СУБД обладает большими возможностями по сравнению с предыдущими. Так, например, VisualFoxPro по сравнению с FoxPro обладает более значительными изобразительными возможностями.
Данная работа использует язык команд СУБД семейства Fox. Используемые команды, в основном, применимы во всех СУБД этого типа, но отладка велась на русифицированной СУБД FoxPro для Windows версии 2.5b.
2. Задание на курсовой проект
Структура ЗАПИСИ исходного ДОКУМЕНТА:
Код предприятия | Вид продукции | Объем выпуска | Цена единицы продукции |
Необходимо:
1. Определить суммарную стоимость продукции заданного вида и ее средний выпуск одним предприятием.
2. Для каждого из пяти видов продукции определить суммарную стоимость и суммарный выпуск.
3. Выдать на печать в порядке возрастания суммарной стоимости продукцию пяти видов.
3. Анализ и постановка задачиИсходные данные задачи представляют собой записи заданной структуры, которые должны вводиться с клавиатуры, а затем выводиться в файл данных на магнитный диск. Следовательно, одной из подзадач должна быть задача создания файла данных на магнитном диске.
Созданный файл данных необходимо просмотреть на экране или вывести на печать в виде таблицы с печатью заголовка и шапки этой таблицы. Для этого следующей подзадачей должна являться задача просмотра файла данных. Также должна быть возможность добавления записей в созданный файл данных.
Затем необходимы еще три подзадачи, решение которых позволяет выполнить три пункта курсовой работы:
1. Выдача сведений о суммарной стоимости продукции заданного вида по каждому предприятию и о среднем выпуске этой продукции одним предприятием.
2. Выдача сведений о суммарной стоимости и суммарном выпуске каждой продукции.
3. Выдача на печать продукции пяти видов в порядке возрастания ее суммарной стоимости.
Кроме того, для диалога пользователя с системой необходимо создать так называемое, «Меню».
4. Формализация задачи
В среде СУБД типа Fox каждая подзадача может оформляться в виде отдельного командного файла с расширением .prg и заканчиваться оператором возврата в вызывающий командный файл.
В данном случае основным командным файлом является файл MainMenu.prg, который формирует полное экранное меню и осуществляет вызов других командных файлов, в зависимости от выбранного пункта меню:
CreateFd.prg | – создание файла данных; |
ReadFd.prg | – чтение созданного файла данных; |
AddFd.prg | – добавление данных в созданный файл данных; |
Zad1.prg | –выдача сведений о суммарной стоимости продукции заданного вида по каждому предприятию и о среднем выпуске этой продукции одним предприятием; |
Zad2.prg | –выдача сведений о суммарной стоимости и суммарном выпуске каждой продукции; |
Zad3.prg | –выдача на печать продукции пяти видов в порядке возрастания ее суммарной стоимости. |
Кроме того, необходимо предоставить пользователю возможность облегчить процесс создания файла данных, т.е. предусмотреть создание файла данных со структурой заданной в программе, а не выбираемой самим пользователем, что полностью исключит возможные ошибки пользователя в задании имен полей файла данных, что в сою очередь может сказаться на корректной работе всей программы.
5. Алгоритмы 5.1. Создание двухуровневого светового меню
5.2. Создание файла данных
5.3. Чтение файла данных
5.4. Добавление данных в файл данных
5.5. Печать сведений о суммарной стоимости продукции заданного вида по каждому предприятию и о среднем выпуске этой продукции одним предприятием.
5.6. Печать сведений о суммарной стоимости и суммарном выпуске каждой продукции.
5.7. Печать упорядоченного по суммарной стоимости списка продукции пяти видов
6. Программы 6.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
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 && Если имя файла не ввели, то печатать нечего
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
6.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
7. Результаты решений
Выбор создания файла данных
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 |
Выбор чтения файла данных