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

2





Министерство образования и науки Республики Казахстан

Карагандинский Государственный Технический Университет

Кафедра САПР



















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

к курсовой работе по дисциплине:

"Технология разработки баз данных"

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

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







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

Студент 













Караганда 2009


Аннотация



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


Содержание



Аннотация

Введение

1 Содержательная постановка задачи

2. Формализованная постановка задачи

3. Структура входной, хранимой и выходной информации

4. Структура программы, структура диалога, формы

5. Результаты работы программы

6. Руководство пользователя по работе с программой "Товары-почтой"

Заключение

Список использованных источников

Приложение А




Введение



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

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

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

Целью выполнения курсовой работы является приобретение студентами практических навыков проектирования баз данных и разработки программного обеспечения по управлению базами данных с использованием СУБД.

В задачи курсовой работы по дисциплине "Базы данных и знаний" входят:

1. Разработка структуры баз данных.

2. Работа с несколькими таблицами и установление взаимосвязей между таблицами.

3. Разработка системы меню.

4. Разработка и формирование отчетов.

5. Использование расширенных средств СУБД ввода и вывода данных.

6. Организация справочной системы.


1 Содержательная постановка задачи



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



2. Формализованная постановка задачи



База данных "Товары - почтой" должна содержать три отношения: "Товар" (wares), "Заказ" (buyer), "Поставщик" (supply). На основе того, что я выбрал в качестве товара "игры для ПК на дисках", я создал четвертое отношение "Жанры игр" (zhanr), для более подробной и полной базы.

Отношение "Товар" должно содержать информацию о предоставляемых товарах и представлено следующими атрибутами:

Шифр

Наименование

Цена

% надбавки

Жанр игры

Тип диска

Первичным ключом данного отношения является "Шифр".

Отношение "Заказ" содержит список людей, которые заказали товар по почте, и содержит следующие атрибуты:

Шифр

ФИО

Поставщик доставивший товар

Адрес

Товар

Количество экземпляров

Первичным ключом данного отношения выступает атрибут "Шифр".

Отношение "Поставщик" содержит список поставщиков и содержит следующие атрибуты:

Номер удостоверения личности

ФИО

Город

Первичным ключом данного отношения выступает атрибут "Номер УЛ".

Отношение "Жанры игр" содержит список возможных жанров игр и содержит следующие атрибуты:

Шифр

Название жанра игры

Первичным ключом данного отношения выступает атрибут "Шифр".

Отношение "Товар" и "Поставщик" являются родительским по отношению к отношению "Заказ". Отношение "Товар" в свою очередь является дочерним по отношению к отношению "Жанры игр". Вид связи между отношениями "Товар" - "Заказ", "Поставщик" - "Заказ", "Жанры игр" - "Товар", - один-ко-многим.

Взаимодействие с данными вышеописанных отношений должно осуществляться посредством форм, запросов и отчетов.

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

Выдать статистику в разрезе "товар".

Выдать списки поставщиков в разрезе "Город".



3. Структура входной, хранимой и выходной информации



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

Структура отношений "Заказ", "Товар", "Поставщик" и "Жанры игр" базы данных "Товары - почтой" представлена на рисунках 1, 2, 3, 4 соответственно.





Рисунок 1 Структура отношения "Заказ"





Рисунок 2 Структура отношения "Товар"




Рисунок 3 Структура отношения "Поставщик"





Рисунок 4 Структура отношения "Жанры игр"



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

После создания структуры таблиц необходимо создать связи между ними. Так как одной записи таблиц "Товар" и "Поставщик" может ставиться в соответствие несколько записей в таблице "Заказ" и одной записи из таблицы "Жанры игр" - несколько из таблицы "Товар", то были созданы связи один ко многим. Схема представлена на рисунке 5





Рисунок 5. Схема связей между таблицами



4. Структура программы, структура диалога, формы



При старте программы запускается главное меню приложение, структура которого представлена в таблице 1, и главная форма, макет которой представлен на рисунке 7. Главная форма программы (main) позволяет перейти на любую форму системы управления базой данных, вызвать на выполнения запросы и отчеты.



Таблица 1 Структура меню. 

Пункт меню

Команда меню

Действия, выполняемые командой

Таблицы

Заказы

показывает таблицу "Заказы"



Товар

показывает таблицу "Товар"



Поставщик

показывает таблицу "Поставщик"



Жанры игр

показывает таблицу "Жанры игр"

Формы 

Заказы

вызывает форму "Заказы"



Товар

вызывает форму "Товар"



Поставщик

вызывает форму "Поставщик"



Жанры игр

вызывает форму "Жанры игр"

Отчеты

Заказы

вызывает отчет "Заказы"



Товар

вызывает отчет "Товар"



Поставщик

вызывает отчет "Поставщик"



Жанры игр

вызывает отчет "Жанры игр"



Статистика по товару

вызывает отчет "Статистики по товару"



Поставщики по регионам

вызывает отчет "Поставщиков отсортированных по регионам"

Помощь

Руководство пользователя

вызывает форму "Руководство пользователя"



О программе

вызывает форму "О программе"

Выход



Осуществляет выход из программы



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





Рисунок 6 Системное меню





Рисунок 7 Главная форма приложения


Для просмотра, ввода и редактирования данных, хранящихся в таблицах, используются формы, являющиеся более наглядным средством представления информации. В рамках данной курсовой работы все формы были построены с помощью конструктора форм. Все функции кнопок, расположенных на формах приложения, описаны в листинге программы (Приложение А). Форма "Заказы", представленная на рисунке 8, позволяет осуществить просмотр всех сведений о заказах, отредактировать их, удалить и добавить данные. Для перехода по записям используются кнопки навигации.





Рисунок 8 Форма "Заказы"



Форма "Поставщик", макет которой представлен на рисунке 9, позволяет осуществить просмотр и редактирование сведений о поставщиках.





Рисунок 9 Форма "Поставщик"


Форма "Товар" показывает информацию о доступном товаре, так же можно отредактировать, удалить и добавить данные (Рисунок 10). Выбор жанра осуществляется через выпадающий список.





Рисунок 10 Форма "Товар"



Форма "Руководство пользователя" предоставляет подробную информацию по работе с данной программой (Рисунок 11).





Рисунок 11 Форма "Руководство пользователя"


5. Результаты работы программы



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

Отчет "Статистика по товарам" выводит отчет содержащий в себе шифр товара, цену, количество проданных, процентную надбавку и прибыль с каждого товара. Отчет представлен на рисунке 13.





Рисунок 13 Отчет "Статистика по товару"



Отчет "Поставщики по регионам" выдает список поставщиков, сгруппированных по региону. Отчет представлен на рисунке 14.




Рисунок 12 Результат выполнения запроса "Книги в единственном экземпляре"



Все формы созданы в едином стиле, позволяющем пользователю быстро сориентироваться в использовании программы.

Одной из основных задач создания и использования баз данных является предоставление пользователям необходимой информации на основе существующих данных. В базе данных "Товары-почтой" используются табличные отчеты. Все отчеты были построены с помощью Мастера отчетов и в последствии отредактированы в конструкторе отчетов.



6. Руководство пользователя по работе с программой "Товары-почтой"



Приложение "Товары-почтой" предназначено для автоматизированного ввода и обработки данных БД "Товары-почтой".

После запуска программы перед оператором появится форма, которая позволяет открыть остальные формы БД и запустить на выполнение отчеты и запросы.

В формах редактирования данных, изначально стоит режиме обозревателя, т.е. в этом режиме форма не позволит изменять данные. Это предохраняет от случайной (неумышленной) потери данных. Чтобы выйти из режима обозревателя, необходимо нажать на кнопку "Изменить". Форма перейдет в режим редактора, т.е. теперь поля будут доступны для изменения данных. Удалить запись в режиме обозревателя невозможно.

Для добавления данных необходимо нажать кнопку "Добавить" и ввести соответствующие данные.

Для удаления записи нажмите кнопку "Изменить", затем "Удалить".

Переход по записям осуществляется с помощью кнопок навигации:

"Первая" - перейти к первой записи

"Пред." - перейти к предыдущей записи

"След." - перейти к следующей записи

"Посл." - перейти к последней записи

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

Работа со всеми формами осуществляется аналогично.

База данных для полной работоспособности должна находиться в директории C: \Program Files\DB


Заключение



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

В результате курсовой работы был получен опыт в том, как использовать основные модели данных и их организацию, принципы построения языков запросов и манипулирования данными в БД. Было получено представление о том, как эффективно использовать среду разработки приложений Microsoft Visual Fox Pro.


Список использованных источников



Хансен Гэри, Хансен Джеймс. Базы данных: разработка и управление: Пер. с англ. - М.: ЗАО "Издательство БИНОМ", 1999.

Живаева А.В., Лимарева И.Г. Методические указания по выполнению курсовой работы по дисциплине "Базы данных", Караганда: КарГТУ, 2006. 17 с.


Приложение А



Листинг программы



Событие Кнопки "Руководство пользователя" главной формы:

Событие Кнопки "О программе" главной формы:

DO FORM "C: \Program Files\DB\about"

Событие Кнопки "Выход" главного меню

if messagebox ('Вы подтверждаете выход из программы? ', 4+32+256,"Выйти") =6 then

_screen. activeform. release ()

set sysmenu to default

endif

События кнопок навигации форм "Заказы", "Поставщик", "Товар", "Жанры игр" очень схожи и различие между ними только из-за различия в количестве используемых объектов на форме. Приведу пример из формы "Товар"

Кнопка "Первая"

if! bof ()

go top

this. enabled =. f.

thisform.command1. enabled =. t.

thisform.command2. enabled =. f.

thisform.command4. enabled =. t.

endif

_screen. activeform. refresh ()

Кнопка "Пред."

if! bof ()

skip-1

thisform.command3. enabled =. t.

thisform.command1. enabled =. t.

thisform.command4. enabled =. t.

endif

_screen. activeform. refresh ()

if bof ()

this. enabled =. f.

thisform.command3. enabled =. f.

endif

_screen. activeform. refresh ()

Кнопка "След."

if! eof ()

skip

thisform.command2. enabled =. t.

thisform.command3. enabled =. t.

thisform.command4. enabled =. t.

endif

_screen. activeform. refresh ()

if eof ()

this. enabled =. f.

thisform.command4. enabled =. f.

endif

_screen. activeform. refresh ()

Кнопка "Посл."

if! eof ()

go bottom

this. enabled =. f.

thisform.command1. enabled =. f.

thisform.command2. enabled =. t.

thisform.command3. enabled =. t.

endif

_screen. activeform. refresh ()

Кнопка "Удалить"

DELETE

pack

_screen. activeform. refresh ()

Кнопка "Изменить"

IF thisform.command8. Caption = "Изменить"

thisform. text1. ReadOnly =. F.

thisform. text2. ReadOnly =. F.

thisform. text3. ReadOnly =. F.

thisform. text4. ReadOnly =. F.

thisform. text5. ReadOnly =. F.

thisform. text6. ReadOnly =. F.

thisform.combo1. ReadOnly =. F.

thisform.command2. Enabled =. F.

thisform.command1. Enabled =. F.

thisform.command3. Enabled =. F.

thisform.command4. Enabled =. F.

thisform.command5. Enabled =. F.

thisform.command7. Enabled =. F.

thisform.command9. Enabled =. T.

thisform.command8. Caption = "Принять"

ELSE

thisform. text1. ReadOnly =. T.

thisform. text2. ReadOnly =. T.

thisform. text3. ReadOnly =. T.

thisform. text4. ReadOnly =. T.

thisform. text5. ReadOnly =. T.

thisform. text6. ReadOnly =. T.

thisform.combo1. ReadOnly =. T.

thisform.command2. Enabled =. T.

thisform.command1. Enabled =. T.

thisform.command3. Enabled =. T.

thisform.command4. Enabled =. T.

thisform.command5. Enabled =. T.

thisform.command7. Enabled =. T.

thisform.command9. Enabled =. F.

thisform.command8. Caption = "Изменить"

endIF

Кнопка "Добавить"

IF thisform.command5. Caption = "Добавить"

thisform. text1. ReadOnly =. F.

thisform. text2. ReadOnly =. F.

thisform. text3. ReadOnly =. F.

thisform. text4. ReadOnly =. F.

thisform. text5. ReadOnly =. F.

thisform. text6. ReadOnly =. F.

thisform.combo1. ReadOnly =. F.

thisform.command2. Enabled =. F.

thisform.command1. Enabled =. F.

thisform.command3. Enabled =. F.

thisform.command4. Enabled =. F.

thisform.command8. Enabled =. F.

thisform.command7. Enabled =. F.

thisform.command9. Enabled =. T.

APPEND BLANK

thisform.command5. Caption = "Принять"

ELSE

thisform. text1. ReadOnly =. T.

thisform. text2. ReadOnly =. T.

thisform. text3. ReadOnly =. T.

thisform. text4. ReadOnly =. T.

thisform. text5. ReadOnly =. T.

thisform. text6. ReadOnly =. T.

thisform.combo1. ReadOnly =. T.

thisform.command2. Enabled =. T.

thisform.command1. Enabled =. T.

thisform.command3. Enabled =. T.

thisform.command4. Enabled =. T.

thisform.command8. Enabled =. T.

thisform.command7. Enabled =. T.

thisform.command9. Enabled =. F.

thisform.command5. Caption = "Добавить"

endIF

_screen. ActiveForm. Refresh ()

Кнопка "Выход"

if messagebox ('Вы подтверждаете выход из формы? ', 4+32+256,"Выход") =6 then

_screen. activeform. release ()

DO FORM "C: \Program Files\DB\main"

endif