Скачайте в формате документа WORD

Алгоритмизация и программирование процессов обработки данных в среде СУБД типа FoxPro

Министерство образования и науки Российской Федерации

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

Государственное образовательное чреждение

высшего профессионального образования

ГОСУДАРСТВЕННЫЙ НИВЕРСИТЕТ ПРАВЛЕНИЯ

Кафедра компьютерных технологий

КУРСОВОЙ ПРОЕКТ


ПО ДИСЦИПЛИНЕ: КОМПЬЮТЕРНАЯ ПОДГОТОВКА/p>

по теме: Алгоритмизация и программирование процессов

обработки данных в среде СУБД типа Fox

Выполнил/p>

заочной формы обучения

специальности: а/p>

специализации: /p>

курса, группы


№ студенческого билета

а/p>

Проверил преподаватель

Несмеянов И.А.

Москва - 2006

Содержание

TOC \o "1-3" Введение /p>

2. Задание на курсовой проект /p>

3. Анализ и постановка задачи /p>

4. Формализация задачи /p>

5. Алгоритмы /p>

5.1. Создание двухуровневого светового меню

5.2. Создание файла данных

5.3. Чтение файла данных

5.4. Добавление данных в файл данных

5.5. Выдача сведений о количестве работников каждого из пяти цехов заданного разряда.

5.6. Выдача сведений о количестве работников каждой профессии по заданному разряду заданного цеха.

5.7. Выдача упорядоченного по алфавиту списка работников каждой профессии.

6. Программы /p>

6.1. Создание двухуровневого светового меню

6.2. Создание файла данных

6.3. Чтение файла данных

6.4. Добавление данных в файл данных

6.5. Печать сведений о количестве работников каждого из пяти цехов заданного разряда.

6.6. Печать сведений о количестве работников каждой профессии по заданному разряду заданного цеха.

6.7. Печать упорядоченного по алфавиту списка работников каждой профессии.

7. Результаты решений /p>

8. Заключение /p>

9. Список литературы /p>

1.   Введение/h1>

Реляционные системы управления базами данных (СУБД), такие как FoxBase, FoxBase plus, FoxPro, Visual FoxPro относятся к новому поколению СУБД реляционного типа из семейства dBase - подобных СУБД. Пакеты этого семейства получили широкое распространение, и многие из них были русифицированы.

СУБД типа Fox сохраняет преемственность по отношению к более ранним представителям dBase - подобных СУБД, в отношении структуры баз данных, команд создания и обработки данных, основных типов данных. В тоже время каждая последующая СУБД обладает большими возможностями по сравнению с предыдущими. Так, например, Visual FoxPro по сравнению с FoxPro обладает более значительными изобразительными возможностями.

Данная работ использует язык команд СУБД семейства Fox. Используемые команды, в основном, применимы во всех СУБД этого типа, но работ производилась на русифицированной СУБД Microsoft FoxPro для Windows версии 2.5b.


2.   Задание на курсовой проект/h1>

Структура ЗАПИСИ исходного ДОКУМЕНТА:/p>

Номер цеха

Табельный номер

Фамилия

Профессия

Разряд

НЕОБХОДИМО:

1. Дать сведения о количестве работников каждого из пяти цехов заданного разряда.

2. Подсчитать и напечатать количество работников каждой профессии по заданному разряду заданного цеха.

3. Распечатать списки работников каждой профессии, порядочив их по алфавиту.

3.   Анализ и постановка задачи/h1>

Исходные данные задачи представляют собой записи заданной структуры, которые должны вводиться с клавиатуры, затем выводиться в файл данных на магнитный диск. Следовательно, одной из подзадач должна быть задача создания файла данных на магнитном диске.

Созданный файл данных необходимо просмотреть на экране или вывести на печать в виде таблицы с печатью заголовка и шапки этой таблицы. Для этого следующей подзадачей должна являться задача просмотра файла данных. Также должна быть возможность добавления записей в созданный файл данных.

Затем необходимы еще три подзадачи, решение которых позволяет выполнить три пункта курсовой работы:

1.      Выдача сведений о количестве работников каждого из пяти цехов заданного разряда.

2.      Подсчет и выдача на печать сведений о количестве работников каждой профессии по заданному разряду заданного цеха.

3.      Выдача на печать порядоченных по алфавиту списков работников каждой профессии.

Кроме того, для диалога пользователя с системой необходимо создать так называемое Меню.


4.   Формализация задачи/h1>

В среде СУБД типа Fox каждая подзадача может оформляться в виде отдельного командного файла с расширением.prg и заканчиваться оператором возврата в вызывающий командный файл.

В данном случае основным командным файлом является файл MainMenu.prg, акоторый формирует полное экранное меню и осуществляет вызов других командных файлов, в зависимости от выбранного пункта меню:/p>

CreateFd.prg

Ц создание файла данных;/p>

ReadFd.prg

Ц чтение созданного файла данных;/p>

AddFd.prg

Ц добавление данных в созданный файл данных;

Zad1.prg

Ц выдача сведений о количестве работников каждого из пяти цехов заданного разряда;

Zad2.prg

Ц подсчет и выдача на печать сведений о количестве работников каждой профессии по заданному разряду заданного цеха;

Zad3.prg

Ц выдача на печать порядоченных по алфавиту списков работников каждой профессии.

Кроме того, необходимо предоставить пользователю возможность облегчить процесс создания файла данных, т.е. предусмотреть создание файла данных со структурой заданной в программе, не выбираемой самим пользователем, что полностью исключит возможные ошибки пользователя в задании имен полей файла данных, что, в свою очередь, может сказаться на корректной работе всей программы.


5.   Алгоритмы/h1>

5.1.


Конец

L1=0

Exit

L1=1

L1=2

Case

L2=1

L2=2

L2=3

Zad1

Zad2

Zad3

Case

L2=1

L2=2

L2=3

CreateFd

ReadFd

AddFd

L1=3

Case

L2=1

L2=2

Return

Quit

Запрет реакции команд

Задание цвета экрана

Формирование главного меню

Выбор пункта главного меню

Формирование подменю

Выбор пункта подменю

Case

Do While.T.

Начало

Очистка

экрана

Do While.T.

Скачайте в формате документа WORD

6.   Программы/h1>

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

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.   Результаты решений/h1>

Скачайте в формате документа WORD

8.   Заключение/h1>

Реляционные СУБД, такие как FoxPro действительно являются мощныма средством правления большим объемом данных. СУБД этого типа позволяют производить быструю сортировку большого массива данных, осуществлять быстрый переход по записям в произвольном порядке, производить быструю выборку большого количества данных из всего массива данных по заданным критериям. В таких реляционных СУБД каждый файл данных рассматривается как двумерная таблица, столбцы которой соответствуют полям записей, строки соответствуют отдельным записям файла и обращение к данным идет через казание номера записи имени поля. При этом работ с отдельным полем таблицы данных напоминает работу с переменными - обращение к данным максимально прощено, и пользователю не нужно знать всю иерархическую структуру данных.

Язык команд СУБД семейства Fox содержит широкий набор команд, выполняющих действия сложных конструкций, например, сортировка записей файла сводится только к двум командам. Помимо этого в СУБД предусмотрены команды создания светового меню для организации прямого диалога с пользователем. Все это максимально прощают написание программ и подтверждает, что реляционные СУБД семейства Fox действительно являются мощным инструментом для создания и обработки баз данных большого объема.


9.   Список литературы/h1>

1.   


Лемашко Е.В., Романчуков В.Г. Программирование в системе команд СУБД семейства Fox: учебное пособие / ГАУ, М., 1998.

2.    Компьютерный практикум. Программирование в среде Турбо-Паскаль и СУБД типа Fox. Методические казания к выполнению курсового проекта. /Сост.: О.Н. Леонова, И.А. Несмеянов; ГАУ, М.,1998./p>