Курсовик по FoxPro

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

Кубанский государственный технологический университет


Кафедра ??


ПОЯСНИТЕЛЬНАЯ ЗАПИСКА


к курсовой работе по предмету

передача данных в информационно управляемых системах


тема курсовой работы:

«Создание и управление базой данных в СУБД FoxPro».


Выполнил : студент гр. ??–??–??

????

номер зачётной книжки ??–??–???


Руководитель : ???

????


???

2001

Государственный комитет Российской Федерации по высшему образованию

Кубанский государственный технологический университет


ЗАДАНИЕ


На курсовую работу


Студенту гр.


По дисциплине




Тема курсовой работы




Исходные данные










1 Выполнить задания:


1.1


1.2


1.3


1.4


1.5


1.6


1.7


1.8



2 Оформить расчётно-пояснительную записку


3 Основная литература








Задание выдано


Срок сдачи работы


Задание принял


Руководитель


Работа защищена


С оценкой



ЧЛЕНЫ КОМИССИИ :

РЕФЕРАТ


РЕЛЯЦИОННАЯ БАЗА ДАННЫХ, РЕЛЯЦИОННАЯ ТАБЛИЦА, ПЕРВИЧНЫЙ КЛЮЧ, ВТОРИЧНЫЙ ИНДЕКС, ИНФОРМАЦИОННЫЙ ЗАПРОС.


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


Курсовая работа содержит 34 страницы, 1 таблицу, 17 рисунков, 4 источника.


СОДЕРЖАНИЕ


Введение .........................................................................5

1Описание предметной области .........................................6

    1. Словесное описание предметной области ..........................6

    2. Описание предметной области в виде диаграммы................6

2Составление словаря данных............................................7

3Составление структуры базы данных.................................7

4Составление программных запросов к базе данных ..............8

    1. Создание базы данных ...................................................8

    2. Выполнение фильтрации, индексации, поиск записей ..........12

    3. Поиск записей с помощью циклов WHILE и SCAN..............13

    4. Построение меню и выдача сообщений .............................14

    5. Изучение графических возможностей ...............................15

    6. Использование модулей (подпрограмм) ............................16

    7. Страховое копирование данных и реализация справки .........17

    8. Создание новых таблиц и арифметические действия ...........20

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

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

Приложение А ..................................................................25

Приложение Б ..................................................................26

Приложение В ..................................................................28

Приложение Г ..................................................................29

Приложение Д ..................................................................31

Приложение Е ..................................................................32

Приложение Ж .................................................................34


ВВЕДЕНИЕ


Современное производство немыслимо без управляющих систем разной степени сложности. Но любой управляющей системе необходимо соответствующее информационное и программное обеспечение, иначе она не сможет продуктивно работать. Если рассматривать информационное обеспечение (базы данных), то современный рынок программного обеспечения может предложить довольно большой выбор систем управления базами данных (СУБД), ориентированных на различных пользователей: от мелких предпринимателей до крупных предприятий и корпораций. Наш выбор FoxPro обусловлен прежде всего разносторонностью этой СУБД, удобством как для разработчика приложений, так и для обычного пользователя. Наличие в ней языка программирования позволяет создавать сложные системы обработки данных, ориентированные на конкретные задачи и даже под конкретного пользователя. С другой стороны, в ней отражены и в разной мере используются многие современные технологии программирования: ActiveX, COM, SQL, ODBC, OLE, DCOM, API и ISAPI, и многое другое. При всем этом она сохранила совместимость со старыми версиями под DOS, созданными еще фирмой Fox Software. Если еще добавить, что FoxPro реализован также в средах Macintoch и Unix, то наш выбор становится обоснованным.

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


  1. Описание предметной области


    1. Словесное описание предметной области

Предмет составления базы данных – поступление товаров на склад. Составим концептуальную модель представления реальности в базе данных. Согласно условию, единственным объектным множеством является объектное множество “товары”. В его состав входит бесчисленное количество объектов – “степлеры”, “дискеты”, “карандаши” и др. Каждый из этих объектов обладает одинаковым по структуре множеством атрибутов (признаков). Каждый из атрибутов характеризует конкретный объект с какой-либо стороны: количество, качество, цена и т.д.

Пример: объект “клавиатуры” входит в состав объектного множества “товары” и обладает следующими атрибутами: наименование (клавиатуры), цена за единицу товара (150 р), количество единиц товара (3), единица измерения товара (штука), дата поступления (01.04.2001), качество товара (среднее), поставщик (Тайвань).


    1. Описание предметной области в виде диаграммы

На основании предыдущего пункта составим концептуальную модель будущей базы данных в виде диаграммы “объекты-связи”.



Рисунок 1.1.1 – Диаграмма “объекты - связи”.


  1. Составление словаря данных

На основании модели данных составим словарь данных. Словарь данных – это система, в которой хранятся сведения об объектах, их атрибутах, о значениях и форматах представления данных. Опишем назначение и свойства полей реляционной таблицы “товары”.

  • Наименование товара. Служит первичным ключом, по которому можно получить доступ к любой строке таблицы. Тип данных – строковый (Character), длина – 20 символов. Ширина поля – 20 символов. Возможные значения – названия товаров, имеющих отношение к офису.

  • Цена единицы товара. Хранит цену определенного вида товаров. Тип данных – денежный (Currency) точностью до 4 знаков после запятой. Ширина поля – 8 символов. Возможные значения ограничены шириной поля.

  • Количество единиц товара. Хранит число единиц товара, находящихся в данный момент на складе. Тип данных – целый (Integer). Ширина поля – 4 символа. Возможные значения ограничены шириной поля.

  • Единица измерения. Хранит название единицы измерения товара. Тип данных - строковый (Character), длина – 15 символов. Ширина поля – 15 символов. Возможные значения – в соответствии с первым полем таблицы.

  • Дата поступления. Хранит число, месяц и год поступления товара. Тип данных – выражение даты (Date). Ширина поля – 8 символов. Возможные значения записываются в формате: мм/дд/гггг, где мм – номер месяца (01..12), дд – день (01..31), гггг – номер года.

  • Качество товара. Хранит условную оценку качества поступившего товара. Тип данных – строковый (Character), длина – 7 символов. Ширина поля – 7 символов. Возможные значения – ‘высокое’, ’среднее’, ’низкое’.

  • Поставщик. Хранит название страны – производителя данного товара. Тип данных – строковый (Character), длина – 20 символов. Ширина поля – 20 символов. Возможные значения ограничены корректными названиями стран.


  1. Составление структуры базы данных

На основании диаграммы и словаря данных составим структуру базы данных “Goods”. Поскольку на диаграмме изображено только одно объектное множество, то, следовательно, в базу данных будет входить только одна реляционная таблица. Перечислим и дадим названия полям таблицы “Table_Goods” в соответствии с диаграммой:


Таблица 3.1 – Поля таблицы “Table_Goods”


Значение поля Имя поля Тип Длина
Наименование Name_unit Character 20
Цена за единицу товара Price_unit Currency
Количество Amount Integer
Единица измерения Unit_measure Character 5
Дата поступления Date_recep Date
Качество товара Quality_goods Character 7
Поставщик Supplier Character 20
Общая сумма ( вы- числяемое поле)
Sum=Amount*Price_unit
Numeric

  1. Составление программных запросов к базе данных

Приступим к программной реализации базы данных. Вообще следует отметить, что в Visual FoxPro существуют 2 пути реализации почти любой задачи: визуальный и программный. В первом случае необходимые действия выполняются с помощью команд меню самого FoxPro и специализированных мастеров. Во втором – с помощью встроенного языка программирования, унаследованного еще от ранних версий. Во всех случаях мы будем пользоваться вторым способом, кроме самого создания базы данных. Дело в том, что на первом этапе необходимо создать так называемый проект Visual FoxPro, в состав которого в дальнейшем будут входить все без исключения используемые нами компоненты. Для большей наглядности желательно создавать проект “вручную”. Кроме того, существуют 2 вида таблиц FoxPro: свободные и связанные, т.е. входящие в состав баз данных. Наша таблица относится ко второму типу, в то время как команда CREATE TABLE создает свободную таблицу. С учетом этого, создание базы данных проведем визуально, а все остальные манипуляции – программно.


    1. Создание базы данных

База данных создается с помощью Диспетчера проектов Visual FoxPro. Сначала создадим новый проект. Назовем его Kurs и разместим его в папке MyProject.

Рисунок 4.1.1 – Окно диспетчера проектов


Все компоненты, которые мы сможем создать, можно связать с проектом, при этоим они будут храниться в “родном” каталоге проекта.

Теперь можно создавать базу данных. Щелкнув правой кнопкой мыши на подраздел “Базы данных” раздела “Данные”. Необходимо ввести имя будущей базы данных. Новую базу данных сохраняем в папке проекта. После этого появляется окно Дизайнера баз данных. С его помощью можно добавлять в базу данных новые компоненты: таблицы, запросы, локальные и удаленные представления, соединения и внедренные процедуры.


Рисунок 4.1.2 – Окно Дизайнера баз данных


С помощью Дизайнера баз добавим в проект таблицу.


После присвоения имени новой таблице создаем ее структуру в соответствии с заданием. Структура таблицы представляет собой список полей и их характеристику: тип данных, размер, длину символьного представления (для типа Character) и др. В поле “Caption” можно указать надпись-заголовок столбца для каждого поля, которая будет высвечиваться при отображении таблицы.

Рисунок 4.1.5 – Создание структуры таблицы


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

Заполнить таблицу можно при помощи той же команды, если выбрать в меню “Edit” пункт “Append mode” (“Режим добавления”). Результат заполнения таблицы данными показан на рисунке 4.1.6.

Рисунок 4.1.6 – Записи таблицы Table_Goods.

    1. Выполнение фильтрации, индексации, поиск записей

В FoxPro есть команда

SET FILTER TO <условие>,

которая позволяет установить FOR-условие для всех без исключения команд обработки данных. Здесь <условие> указывает на то, какие именно записи могут быть доступны для обработки.

Выполним фильтрацию по полю “Поставщик”. Если после этого, например, написать команду BROWSE, то это будет эквивалентно BROWSE FOR supplier=’Россия’.

Рисунок 4.2.1 – Результат фильтрации по полю supplier.


Создание индексных файлов в базах данных преследует цель ускорения поиска записей и для упорядочения записей в таблицах. Вообще в FoxPro существуют 2 типа индексных файлов: *.idx (обычный индексный файл) и *.cdx (составной индексный файл, содержащий несколько индексов). В нашем случае требуется произвести индексацию по одному полю – полю “Количество товара”, поэтому создаем обычный индексный файл indtab.idx в папке проекта с помощью команды:


INDEX on amount to C:MY_WORKSTRANSF~1MYPROJ~1indtab


Следует отметить, что такое индексирование проводится только по возрастанию. Отобразим полученный результат с помощью команды LIST

LIST amount, name_unit, price_unit

Полученный результат отображен на рисунке 4.2.1

Рисунок 4.2.1 – Результат индексирования.


Отобразим все записи о товарах низкого качества

BROWSE FOR quality_goods='низкое'


Рисунок 4.2.2 – Записи о товарах низкого качества.


Найдем номер первой из записей о товаре в количестве 10.

LOCATE FOR amount=10

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



Рисунок 4.2.3 – Строка состояния FoxPro.


Полный текст программы приведен в приложении А.


    1. Поиск записей с помощью циклов WHILE и SCAN

Для последовательного поиска самой первой записи базы данных, удовлетворяющей заданному FOR-условию и до тех пор, пока соблюдается WHILE-условие (если есть), применяется команда LOCATE. Для продолжения поиска, начатого командой LOCATE, применяется команда CONTINUE.

Реализация итерационных циклов, т. е. циклов с заранее известным условием их окончания и неизвестным числом повторов, выполняется следующей инструкцией:


DO WHILE <условие>

<команды>

ENDDO


Для последовательного просмотра базы данных, поиска всех записей, удовлетворяющих условиям и выполнения над найденными записями каких-либо операций, служит команда SCAN.


SCAN[<границы>] [FOR <условие>]

<команды>

ENDSCAN


По заданию необходимо найти все товары, поставленные из России, а также общую стоимость всех товаров, поступивших на склад в период с 15.01.2001 по 15.03.2001. Каждый из этих запросов, в свою очередь, реализован в 2-х вариантах: с использованием цикла WHILE и с использованием цикла SCAN. Полный текст программы приведен в приложении Б, а результат работы – на рисунке 4.3.1.


Рисунок 4.3.1 – Результаты работы программы.


    1. Построение меню и выдача сообщений

Для организации в программах POPUP-меню необходимо сначала определить параметры будущего меню с помощью команды


DEFINE POPUP

меню>,


куда входит еще довольно много параметров. Выдача меню производится по команде


ACTIVATE POPUP

меню>.


Для выполнения какого-либо действия при нажатии клавиши или сочетания клавиш, используется следующая команда:


ON KEY [LABEL< имя клавиши>] [команда].


По заданию требуется вывести POPUP-меню с полями Name_unit, Quality_goods, Supplier, если в таблице БД есть товары с ценой < 100 р. Кроме того, при нажатии Alt+ F1 необходимо вывести сообщение ‘Ошибка памяти’. Полный текст программы приведен в приложении В, а результат работы – на рисунках 4.4.1 и 4.4.2.


Рисунок 4.4.1 – POPUP-меню.


Рисунок 4.4.2 – Сообщение, выдаваемое по Alt+F1.


    1. Изучение графических возможностей

FOX PRO содержит средства создания изображений из элементов псевдографики:


@ BOX <вырC>.


Команда формирует в заданных координатах рамку фон прямоугольника из любых символов, которые включены в <вырC>. Это символьное выражение может содержать до 9 символов (по 4 символа для углов и сторон прямоугольника, начиная с левого верхнего угла по часовой стрелке).


@ TO [DOUBLE/PANEL/<окантовка>] –


команда формирует рамку с координатами X1, Y1 и X2, Y2.


@ SAY <текст> –


команда выводит текст, начиная с координат X,Y.


Для задания цвета во всех вышеприведенных командах используется опция COLOR с указанием необходимой цветовой схемы. Причем при описании цвета необходимо указать не только цвет элемента, которого мы хотим нарисовать, но и цвет фона, на котором производится рисование (в нашем случае – белый).

В задании необходимо построить диаграмму количества товаров. Из-за недостатка места выведены не названия, а номера товаров. При этом столбец, относящийся к самому дорогому товару, нарисован красным цветом, а к самому дешевому – зеленым, о чем сказано в легенде.

Полный текст программы приведен в приложении Г, а результат работы – на рисунке 4.5.1.

Рисунок 4.5.1 – Диаграмма количества товаров.


    1. Использование модулей (подпрограмм)

В языке FoxPro могут использоваться внешние и внутренние процедуры.

Внешняя процедура – это совокупность команд, осуществляющих обычно какие-то законченные действия по обработке данных и образующих отдельный командный файл, т. е. отдельно программу (модуль).

Обращение к процедуре выполняется командой DO:


DO <имя командного файла>

[WITH <список параметров>][IN <файл>]


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


PARAMETERS <список параметров>


Совокупность команд, составляющих внутреннюю процедуру, должна начинаться командой


PROCEDURE <имя процедуры>


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

По заданию требуется, используя модули, вывести сведения о товарах, поступивших позже 15.02.2001, а также вывести сведения о товарах, у которых единица измерения – шт.

Полный текст программы приведен в приложении Д, а результат работы – на рисунке 4.6.1.

Рисунок 4.6.1 – Результаты работы программы.


    1. Страховое копирование данных и реализация справки

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

Удобным представляется поддержка в программе специальной переменной ( например, с именем NORMZ), фиксирующей нормальное /ненормальное завершение программы, а также переменной (NORMD) – даты текущего сеанса и сохранение их в специальном МЕМ-файле (NORM.MEM). Переменная NORMZ должна иметь значение `истина`, если последний сеанс работы завершился нормально, и `ложь` в противном случае. Тогда первым шагом прикладной системы должны быть считывание этого файла с диска и анализ переменной.

Фрагмент программы, реализующей страховое копирование данных, приведен ниже.


* ----Использование страхового копирования данных

SET CLEAR OFF

SET SAFETY OFF

* Если файл NORM.MEM есть...

IF FILE('C:MY_WORKSTRANSF~1MYPROJ~1norm.mem')

* ...он загружается в память.

RESTORE FROM('C:MY_WORKSTRANSF~1MYPROJ~1norm.mem')

* Если переменная завершения истинна...

IF normz

* ...копируем все файлы таблиц в страховую директорию

!COPY C:MY_WORKSTRANSF~1MYPROJ~1*.dbf C:MY_WORKSTRANSF~1MYPROJ~1Insure*.dbf>NUL

* иначе сообщение.

ELSE

WAIT normd+' было аварийное завершение .'+;

'Восстановить (ENTER) данные?' WINDOW

* В случае нажатия Enter, файлы восстанавливаются из страховой директории.

IF LASTKEY()=13

!COPY C:MY_WORKSTRANSF~1MYPROJ~1Insure*.dbf C:MY_WORKSTRANSF~1MYPROJ~1*.dbf>NUL

ENDIF

ENDIF

ENDIF

* Устанавливается переменная завершения, переменная текущей даты и обе запоминаются в файл.

normz= .T.

normd=DTOC( DATE( ))

SAVE ALL LIKE norm? TO C:MY_WORKSTRANSF~1MYPROJ~1norm


Здесь сначала выясняется, есть ли файл NORM.MEM в текущей директории. Если есть, файл загружается и выясняется значение переменной NORM. При NORMZ=.T. все файлы таблиц копируются в страховую поддиректорию внутри рабочей директории.


Поскольку файлов в системе обычно довольно много, проще использовать не собственные команды копирования FoxPro, а выполнить (через знак !) соответствующие команды DOS, для которых можно указать маску. Чтобы системные сообщения команд не выводились на экран, они переадресованы на пустое устройство ДОС - NUL. Если NORMZ=.F., значит, предыдущий сеанс работы завершился аварийно. На экран выдаются сообщение и запрос о необходимости восстановления данных из страховой директории (нажатием клавиши Enter). Такой запрос нужен для того, чтобы отказаться от копирования данных, если завершение программы было ненормальным, но данные, как знает пользователь, не пострадали. После завершения анализа переменной NORMZ она получает значение .F. и запоминается в файле NORM.MEM вместе с переменной NORMD. Далее идет тело собственно прикладной системы. Если при этом произойдет сбой, переменная NORMZ сохранит свое значение. При нормальном завершении программы этой переменной присваивается значение .Т. и она сохраняется в файле.


Кроме того, необходимо организовать систему контекстно-зависимой справки, вызываемой по F1. Текст помощи предварительно заносится в файл Table_Help.dbf, структура которого показана ниже.

Рисунок 4.7.1 – Таблица данных для помощи.


Для вызова процедуры помощи применена команда ON KEY LABEL. В процедуру Helper передается один параметр – имя поля исходной таблицы товаров, которое требуется пояснить. Функция VARREAD() возвращает имя переменной памяти, элемента массива или поля (прописными буквами), использованного для создания текущего элемента управления.

В процедуре осуществляется поиск по этому полю, и, если таковое найдено, соответствующее MEMO-поле выводится с

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту

Похожие рефераты: