Читайте данную работу прямо на сайте или скачайте
Алгоритмизация и программирование процессов обработки данных в среде СУБД типа FoxPro
Министерство образования и науки Российской Федерации
ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное чреждение
высшего профессионального образования
ГОСУДАРСТВЕННЫЙ НИВЕРСИТЕТ ПРАВЛЕНИЯ
Кафедра компьютерных технологий
КУРСОВОЙ ПРОЕКТ
ПО ДИСЦИПЛИНЕ: КОМПЬЮТЕРНАЯ ПОДГОТОВКА
по теме: Алгоритмизация и программирование процессов
обработки данных в среде СУБД типа Fox
Выполнил
заочной формы обучения
специальности: а
специализации:
курса, группы
№ студенческого билета
а
Проверил преподаватель
Несмеянов И.А.
Москва - 2006
Содержание
TOC \o "1-3" Введение
2. Задание на курсовой проект
3. Анализ и постановка задачи
4. Формализация задачи
5. Алгоритмы
5.1. Создание двухуровневого светового меню
5.2. Создание файла данных
5.3. Чтение файла данных
5.4. Добавление данных в файл данных
5.5. Выдача сведений о количестве работников каждого из пяти цехов заданного разряда.
5.6. Выдача сведений о количестве работников каждой профессии по заданному разряду заданного цеха.
5.7. Выдача упорядоченного по алфавиту списка работников каждой профессии.
6. Программы
6.1. Создание двухуровневого светового меню
6.2. Создание файла данных
6.3. Чтение файла данных
6.4. Добавление данных в файл данных
6.5. Печать сведений о количестве работников каждого из пяти цехов заданного разряда.
6.6. Печать сведений о количестве работников каждой профессии по заданному разряду заданного цеха.
6.7. Печать упорядоченного по алфавиту списка работников каждой профессии.
7. Результаты решений
8. Заключение
9. Список литературы
Выдача порядоченного по алфавиту списка работников каждой профессии.
Начало |
Очистка экрана |
Запрет вывода реакции команд |
Формирование заголовка |
Ввод имени файла данных, NameFd |
Index on PROF+FAM to Name FD |
store 0 to Kol store 1 to N, Nm |
scan |
If ASCAN R,PROF)=0 |
Вывод строки таблицы |
store Nm+1 to Nm |
Удаление индексного файла |
return |
1 |
Count to Col Dimension PR (col) |
Store PROF to PR (N) Store N+1 to N |
1 |
Doа while Nm < N |
Scan for PROF = PR (Nm) |
Открытие ФД с использованием индексного файла |
Вывод шапка таблицы |
wait |
![](images/picture-008-386.gif)
6. Программы
* Командный файл иерархического меню 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
Do Zad1
Case L2=2
Do Zad2
Case L2=3
Do Zad3
EndCase
Case L1=3
Do Case
Case L2=1
Return
Case L2=2
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 ;
(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
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
clear
set talk off
@ 5,25 say ' Командный файл печати сведений о работниках заданного разряда Zad1'
accept 'Введите имя файла данных: ' to NameFd
use &NameFd
input 'Введите номер разряда: ' to RazrNom
clear
@ 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
endif
EndScan
@а Ss,7 say Kk
@а Ss,35 say Kol
store 0 to Kol
store Kk+1 to Kk
store Ss+1 to Ss
enddo
@ Ss+1,5 say'------------------------------------------------------'
wait 'Для возврата в меню нажмите любую клавишу...'
return
6.6. Печать сведений о количестве работников каждой профессии по заданному разряду заданного цеха.
* командный файл печати сведений о работниках заданного разряд Zad2
clear
set talk off
@ 5,25 say ' Командный файл печати сведений о работниках заданного разряда Zad2'
accept 'Введите имя файла данных: ' to NameFd
Use &NameFd
input 'Введите номер разряда: ' to RazrNom
input 'Введите номер цеха: ' to CexNom
clear
@ 5,10 say 'Количество работников цеха № '+STR(CexNom,1)+', имеющих '+STR(RazrNom,1)+' разряд'
@ 6,5 say '------------------------------------------------------'
@ 7,15 say 'Профессия'
@ 7,40 say 'Количество'
@ 8,5 say '------------------------------------------------------'
store 9 to Row
store 0 to Kol
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
endifа
endscan
do while Nm<N
scan for RAZR=RazrNom and NOMCEX=CexNom and PROF=PR(Nm)
store Kol+1 to Kol
endscan
@ Row,10 say PR(Nm)
@ Row,35 say Kol
store 0 to Kol
store Row+1 to Row
store Nm+1 to Nm
enddoа
@ Row+1,5 say '------------------------------------------------------'
wait 'Для возврата в меню нажмите любую клавишу...'
return
6.7. Печать порядоченного по алфавиту списка работников каждой профессии.
* командный файл печати порядоченного списка работников каждой про-фессии Zad3
clear
set talk off
@ 5,5 say 'Командный файл печати порядоченно списка работников каждой профессии Zad3'
accept 'Введите имя файла данных: ' to NameFd
clear
use &NameFd
index On PROF+FAM to &NameFd
use &NameFd Index &NameFd
store 1 to Row
store 0 to Kol
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
endifа
endscan
do while Nm<N
@ 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
store Row+1 to Row
endscan
@ Row+4,5 say '-----------------------------------------------------------'
store Nm+1 to Nm
store Row+6 to Row
if Row>=40
Row=1
wait 'Нажмите любую клавишу для вывода ннформации о работниках следующих профессий'
clear
endif
enddoа
Close DataBases
Delete File NameFd + '.idx'
wait 'Для возврата в меню нажмите любую клавишу...'
return
7. Результаты решений
Выбор создания файла данных
![]() |
|||
![]() |
Номер цеха |
Табельный номер |
Фамилия |
Профессия |
Разряд |
1 |
1001 |
Белов |
Механик |
4 |
1 |
1002 |
Маслов |
Шумоизоляторщик |
5 |
1 |
1003 |
Ситников |
Перегонщик |
3 |
1 |
1004 |
Чернов |
Помощник механика |
2 |
2 |
1005 |
Сорокин |
втослесарь |
4 |
2 |
1006 |
Хохлов |
Сигнализаторщик |
5 |
2 |
1007 |
Сиротин |
Шиномонтажник |
4 |
2 |
1008 |
Смирнов |
Слесарь |
4 |
3 |
1009 |
Колосов |
Механик по тюнингу |
5 |
3 |
1010 |
Бобров |
Механик |
4 |
3 |
1011 |
Никулин |
Шумоизоляторщик |
5 |
3 |
1012 |
Малышев |
Механик |
4 |
4 |
1013 |
Брусков |
Помощник механика |
2 |
4 |
1014 |
Воробьев |
втослесарь |
4 |
4 |
1015 |
Леонов |
Сигнализаторщик |
5 |
4 |
1016 |
Сиднев |
Механик |
4 |
5 |
1017 |
Ильин |
втослесарь |
3 |
5 |
1018 |
Фадеев |
Шиномонтажник |
4 |
5 |
1019 |
стахов |
Слесарь |
4 |
5 |
1020 |
Рублев |
Механик по тюнингу |
5 |
![]() |
Выбор чтения файла данных
![]() |
![]() |
![](images/picture-020-231.gif)
Выбор добавления данных
в файл данных
|
Табельный номер |
Фамилия |
Профессия |
Разряд |
1 |
1021 |
Волков |
Шиномонтажник |
3 |
2 |
1022 |
Новиков |
Слесарь |
4 |
3 |
1023 |
Григорьев |
Механик |
5 |
4 |
1024 |
Журавлев |
Помощник механика |
2 |
5 |
1025 |
Дианов |
втослесарь |
5 |
Выбор выполнения Задания №1
![]() |
|||
![]() |
![](images/picture-032-42.jpg)
Выбор выполнения Задания №2
Выбор выполнения Задания №
3
![]() |
![]() |
Выход из СУБД
8. Заключение
Реляционные СУБД, такие как FoxPro действительно являются мощныма средством правления большим объемом данных. СУБД этого типа позволяют производить быструю сортировку большого массива данных, осуществлять быстрый переход по записям в произвольном порядке, производить быструю выборку большого количества данных из всего массива данных по заданным критериям. В таких реляционных СУБД каждый файл данных рассматривается как двумерная таблица, столбцы которой соответствуют полям записей, строки соответствуют отдельным записям файла и обращение к данным идет через казание номера записи имени поля. При этом работ с отдельным полем таблицы данных напоминает работу с переменными - обращение к данным максимально прощено, и пользователю не нужно знать всю иерархическую структуру данных.
Язык команд СУБД семейства Fox содержит широкий набор команд, выполняющих действия сложных конструкций, например, сортировка записей файла сводится только к двум командам. Помимо этого в СУБД предусмотрены команды создания светового меню для организации прямого диалога с пользователем. Все это максимально прощают написание программ и подтверждает, что реляционные СУБД семейства Fox действительно являются мощным инструментом для создания и обработки баз данных большого объема.
9. Список литературы
1.
|
2. Компьютерный практикум. Программирование в среде Турбо-Паскаль и СУБД типа Fox. Методические казания к выполнению курсового проекта. /Сост.: О.Н. Леонова, И.А. Несмеянов; ГАУ, М.,1998.