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

Примечаниеот автора: в блок-схемах есть пара ошибок (стрелочки не туда смотрят), исправлять лень
Загрузить архив:
Файл: ref-21875.zip (99kb [zip], Скачиваний: 37) скачать

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

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

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

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

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

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

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

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

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

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

Выполнил

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

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

специализации:

                                       

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

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

                                                  

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

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

Москва - 2006

Содержание

TOC o "1-3"    Введение_______________________________________________ PAGEREF _Toc104107324 h

2.   Задание на курсовой проект______________________________ PAGEREF _Toc104107325 h

3.   Анализ и постановка задачи_____________________________ PAGEREF _Toc104107326 h

4.   Формализация задачи___________________________________ PAGEREF _Toc104107327 h

5.   Алгоритмы____________________________________________ PAGEREF _Toc104107328 h

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

5.2.   Создание файла данных____________________________________________ PAGEREF _Toc104107330 h

5.3.   Чтение файла данных______________________________________________ PAGEREF _Toc104107331 h

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

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

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

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

6.   Программы___________________________________________ PAGEREF _Toc104107336 h

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

6.2.   Создание файла данных___________________________________________ PAGEREF _Toc104107338 h

6.3.   Чтение файла данных_____________________________________________ PAGEREF _Toc104107339 h

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

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

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

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

7.   Результаты решений___________________________________ PAGEREF _Toc104107344 h

8.   Заключение___________________________________________ PAGEREF _Toc104107345 h

9.   Список литературы____________________________________ PAGEREF _Toc104107346 h


1.Введение

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

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

Данная работа использует язык команд СУБД семейства Fox. Используемые команды, в основном, применимы во всех СУБД этого типа, но работа производилась на русифицированной СУБД MicrosoftFoxProдля 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.

Конец

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.



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

True

Начало

Len(NameFd) >0

Очистка

экрана

Формирование заголовка

Изменение заголовка

Вывод вопроса

Ввод ответа (Д/Н) toABC

ABC=’Д’

Ввод имени файла, NameFd

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

Запрет изменения строки состояния

Запрет прерывания выполнения программы

Create Table &NameFd(<список полей>)

Create &NameFd

True

False

Wait

Return

False



5.3.

True

Начало

Len(NameFd) >0

Очистка

экрана

Формирование заголовка

Изменение заголовка

Чтение 15 записей из ФД

Ввод имени ФД, NameFd

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

Запрет изменения строки состояния

Запрет прерывания выполнения программы

Wait

Return

False

Do While .Not.EOF()

Wait



5.4.

True

Начало

Len(NameFd) >0

Очистка

экрана

Формирование заголовка

Изменение заголовка

Append

Ввод имени ФД, NameFd

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

Запрет изменения строки состояния

Запрет прерывания выполнения программы

Return

False

Wait



5.5.

Начало

Очистка экрана

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

Формирование заголовка

Ввод имени файла данных, NameFd

Ввод номера разряда, RazrNom

Открытие файла данных

Вывод шапки

таблицы

store 1 to Kk

store 0 to Kol

do while (Kk<=5)

scan

If RAZR=RazrNom

store 0 to Kol

store Kk+1 to Kk

wait

return

3

3

2

2

If NOMCEX=Kk

store kol+1 to kol

1

Вывод строки таблицы

1

kol+1 to kol

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

5.6.

Начало

Очистка экрана

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

Формирование заголовка

Ввод имени файла данных, NameFd

Ввод разряда работника, RazrNom

Открытие файла данных

Вывод шапки

таблицы

store 0 to Kol

store 1 to N, Nm

scan

If ASCAN R,PROF)=0

Store Kol+1 to Kol

store 0 to Kol

store Nm+1 to Nm

wait

return

1

Count to Col

Dimension PR (col)

Store PROF to PR (N)

Store N+1 to N

1

Dowhile Nm < N

Scan for RAZR=RazrNom

And NOMCEX = CexNom

And PROF = PR (Nm)

Вывод строки

таблицы


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

Начало

Очистка экрана

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

Формирование заголовка

Ввод имени файла данных, 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

Dowhile Nm < N

Scan for PROF = PR (Nm)

Открытие ФД с использованием индексного файла

Вывод шапка таблицы

wait

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

              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 - создание нового файла данных

setTalkoff

setStatusoff

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

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

@ 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

ifRow>=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


Выбор чтения файла данных



Выбор добавления данных

в файл данных


Номер цеха

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

Фамилия

Профессия

Разряд

1

1021

Волков

Шиномонтажник

3

2

1022

Новиков

Слесарь

4

3

1023

Григорьев

Механик

5

4

1024

Журавлев

Помощник механика

2

5

1025

Дианов

Автослесарь

5

Выбор выполнения Задания №1

Выбор выполнения Задания №2

Выбор выполнения Задания №3



Выход из СУБД


8.Заключение

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

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


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

1.

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

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