Реферат: База данный "Хозяйственный учет футбольного клуба"

Федеральноеагентство по образованию

Государственноеобразовательное учреждение высшего профессионального образования

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

Кафедрапрограммного обеспечения вычислительной техники

КУРСОВАЯ РАБОТА

по дисциплине ‹‹Базы данных››

на тему ‹‹Хозяйственный учетфутбольного клуба››

Специальность 230105 Программное обеспечение вычислительной техники иавтоматизированных систем

Авторы работы _______________________

            (инициалы, фамилия) (подпись, дата)

Группа ПО — 71

Руководитель работы В. Г. Белов ______________________

                                        (инициалы, фамилия) (подпись,дата)

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

                                        (дата)

Оценка____________________

Председатель комиссии

______________________ ______________________

      (инициалы, фамилия)              (подпись, дата)

Члены комиссии

________________________ _________________________

        (инициалы, фамилия)            (подпись, дата)

Курск, 2010 г.


Федеральноеагентство по образованию

Государственноеобразовательное учреждение высшего профессионального образования

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

Кафедра программного обеспечениявычислительной техники

ЗАДАНИЕНА КУРСОВУЮ РАБОТУ

Студент шифр 347011 группа ПО — 71

1. Тема Хозяйственный учет футбольного клуба

2. Срок предоставления работы (проекта) к защите ‹‹›› 2010 г

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

Неформальное описание предметной областии документы, которые в ней используются

4. Содержание пояснительно записки курсовой работы


Введение

1 Техническое задание

1.1 Основание для разработки

1.2 Назначение разработки

1.3 Стандарты

1.4 Требования к программе илипрограммному изделию

1.4.2 Носители информации

1.4.3 Требования к составу и параметрамтехнических средств

2 Технический проект

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

2.2 Словарь понятий и терминов

2.3 Определение функциональныхзависимостей

2.4 Синтез схемы базы данных на основаниифункциональных зависимостей

2.4.1 Построение неизбыточного покрытия

2.4.2 Построение леворедуцированногопокрытия

2.4.3 Построение праворедуцированногопокрытия

2.4.4 Построение классов эквивалентности

2.4.5 Построение редуцированного минимальногокольцевого покрытия

2.5 ER-схема базыданных

2.6 Построение запросов на SQL

2.6.1 Построение первого запроса        

3 Рабочий проект

3.1 Связи таблиц

3.2 Внешний вид формы

3.3Функциональные тесты

3.3.1 Тест 1

Заключение

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

Приложение А

Приложение Б


Реферат

Объем данного курсового проекта равен 56 страницам.В курсовом проекте содержится два приложения, в которых приведены ER-схемы базы данных, код программы. Также в КП содержитсяпостановка задачи.

Ключевые слова:

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

Объект разработки:

Объектом исследования в данной работе являетсяпроектирование базы данных в соответствии с заданным вариантом.

Цель работы:

Спроектировать базу данных «Хозяйственный учетфутбольного клуба».

Метод проведения работы:

Использование ER-диаграмм,минимизация зависимостей, построение запросов.


Summary

This termpaper contains 56 pages.It contains two enclosures, which contain ER-diagrams. Also it contains targetsetting.

Object of development is designof the database according to specified variant.

The aim of work is design of thedatabase, describing « the Economic account of football club ».

It is necessary to makeER-diagram, to minimize functional dependences, to write and minimize SQLqueries.

 


Определения

В данной работеприменены следующие термины с соответствующими определениями:

база данных: Файлы, снабженные описанием хранимыхв них данных и находящиеся под управлением СУБД.

er-диаграмма: Схема базыданных, спроектированная с помощью программы ERWin.

сущность: Любой различимый объект (объект, которыймы можем отличить от другого), информацию о котором необходимо хранить в базеданных.

атрибут: Поименованная характеристика сущности.

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

связь: Ассоциирование двух или более сущностей.

Обозначения и сокращения

В данной работеприменены следующие сокращения:

БД: База данных

СУБД: Система управления базами данных

ФЗ: Функциональная зависимость

 
Введение

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

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

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

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

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


1                  Техническое задание1.1          Основание для разработки

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

1.2          Назначение разработки

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

1.3          Стандарты

Данная работаоформлена в соответствии со стандартом СТУ 04.02.030.-2008.

1.4          Требования к программе или программномуизделию

Спроектировать базуданных для спортивной базы футбольного клуба. Описать предметную область,разработать словарь понятий и терминов, построить систему функциональныхзависимостей. Синтезировать схему базы данных на основании функциональныхзависимостей (построение неизбыточного покрытия, построение леворедуцированногонеизбыточного покрытия, построение праворедуцированного неизбыточного покрытия,построение классов эквивалентностей, построение минимального покрытия).Построить уточненную концептуальную модель в виде ER-диаграммы,запросы предметной области. Записать минимизированные запросы на языке SQL.

1.4.1    Результирующие компоненты изделия

База данных ввизуальной среде разработки систем управления реляционными базами данных Microsoft Visual FoxPro и все сопровождающие файлы.

 

1.4.2    Носители информации

Продукт должен размещаться в видефайлов на CD дисках. Впроцессе работы могут использоваться Flash, CD-R/-RW, DVD-R/RW или другиеносители информации.

1.4.3    Требования к составу и параметрам технических средств

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

−                 процессор Pentium V 2200МГц;

−                 оперативная память объемом 1024Мб;

−                 жесткий диск Seagate Barracuda,объемом 120 Гб;

−                 видеоадаптер SVGA;

−                 клавиатура;

−                 манипулятор типа “мышь”;

устройство удаленного доступа ксети: модем или сетевая карта.


 

2                   Технический проект 2.1          Описание предметной области

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

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

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

Для инвентаря итехники хранится информация о фирме-изготовителе и модели товара. Для мебелидолжна быть отражена информация о фирме-производителе, цвете, габаритныхразмерах (длина, ширина, высота).

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

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

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

2.2           Словарь понятий и терминов

Словарь понятий итерминов приведен в таблицах 2.1 – 2.12.

Таблица 2.1 — Общаяинформация

Атрибут Смысл Пример sp Серия паспорта 3569 np Номер паспорта 0123654 fam Фамилия Иванов im Имя Иван otch Отчество Иванович pol Пол мужской dateborn Дата рождения 12.05.1960 datevidachi Дата выдачи паспорта 12.24.2000 kemvidan Кем выдан паспорт Отделом милиции №3 УВД г.Москва country Страна Россия city Город Москва street Улица Первомайская numstreet Номер улицы 45 numflat Номер квартиры 12 dolgnost Должность главный врач

Таблица 2.2 –Игроки

Атрибут Смысл Пример sp Серия паспорта 3569 np Номер паспорта 0123654 date Дата 12.12.2004 rost Рост 180 ves Вес 79 staff Состав основной number Номер 12 status Статус нападающий

Таблица 2.3 –Помещение

Атрибут Смысл Пример num_p Номер помещения 15 square Площадь 123 naznachenie Назначение столовая

Таблица 2.4 — Комната

Атрибут Смысл Пример num_p Номер помещения 15 room Номер комнаты 3

Таблица 2.5 –Спортивный зал

Атрибут Смысл Пример num_p Номер помещения 15 type_zal Тип зала Тренажерный зал sp Серия паспорта 1226 np Номер паспорта 456987

Таблица 2.6 –Поступление объектов

Атрибут Смысл Пример code_obj Код объекта 15 Kol Количество 40 date Дата поступления 04.24.2008 balance Балансовая стоимость 450

Таблица 2.7 –Спортивный инвентарь

Атрибут Смысл Пример code_obj Код объекта 15 firm_inv Фирма-изготовитель Mizuno model_inv Модель GIM12

Таблица 2.8 –Техника

Атрибут Смысл Пример значения code_obj Код объекта 15 firm_tec Фирма-изготовитель Samsung model_tec Модель SG-125

Таблица 2.9 –Мебель

Атрибут Смысл Пример значения code_obj Код объекта 115 firm_meb Фирма-изготовитель «Мир мебели» dlina Длина 125 width Ширина 50 height Высота 70 material_meb Материал Дуб Цвет color_meb Орех

Таблица 2.10– Мяч

Атрибут Смысл Пример значения code_obj Код объекта 15 material_ball Материал кожа

Таблица 2.11 –Футбольные ворота

Атрибут Смысл Пример значения code_obj Код объекта 24 kind Вид ворот стандартные height Высота 123 shirina Ширина 365

Таблица 2.12 –Тренажер

Атрибут Смысл Пример значения code_obj Код объекта 65 type_tren Тип тренажера беговая дорожка

Таблица 2.13 –Телевизор

Атрибут Смысл Пример значения code_obj Код объекта 65 diagonal Диагональ экрана 54 screen Тип экрана

Таблица 2.14 –Холодильник

Атрибут Смысл Пример значения code_obj Код объекта 668 height Высота 125 width Ширина 105 depth Глубина 90 sum_sq_polok Площадь полок 126 com_volume Общий объем 368 userful_volume Используемый объем 360

Таблица 2.15 –Пылесос

Атрибут Смысл Пример значения code_obj Код объекта 268 moshnost Мощность 54

Таблица 2.16 –Кровать

Атрибут Смысл Пример значения code_obj Код объекта 45 Type_bed Тип кровати односпальная

Таблица 2.17 – Шкаф

Атрибут Смысл Пример значения code_obj Код объекта 123 type_shkaf Тип шкафа плательный

Таблица 2.18 – Стол

Атрибут Смысл Пример значения code_obj Код объекта 569 type_table Тип стола письменный

Таблица 2.19 –Размещение спортивного инвентаря по залам

Атрибут Смысл Пример значения Inv_number Инвентарный номер 123654 date Дата 05.15.2010 num_p Номер зала 56

Таблица 2.20 –Расселение людей по комнатам

Атрибут Смысл Пример значения Inv_number Номер помещения 123654 sp Серия паспорта 1236 np Номер паспорта 566002

Таблица 2.21 –Инвентарные номера спортивного инвентаря

Атрибут Смысл Пример значения Inv_number Инвентарный номер 123654 code_obj Код объекта 165

Таблица 2.22 –Инвентарные номера техники

Атрибут Смысл Пример значения Inv_number Инвентарный номер 333488 code_obj Код объекта 456

Таблица 2.23 –Инвентарные номера мебели

Атрибут Смысл Пример значения Inv_number Инвентарный номер 5699888 code_obj Код объекта 158

Таблица 2.24 –Списанный спортивный инвентарь

Атрибут Смысл Пример значения Inv_number Инвентарный номер 123654 date Дата списания 11.10.2007

Таблица 2.25 –Списанная техника

Атрибут Смысл Пример значения Inv_number Инвентарный номер 123654 date Дата списания 04.05.2007

Таблица 2.26 –Списанная мебель

Атрибут Смысл Пример значения Inv_number Инвентарный номер 123654 date Дата списания 12.03.2004 2.3          Определение функциональных зависимостей

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

Fam, Im,Otch, pol, dateborn, datevidachi, kemvidan, country, city, street, numstreet,numflat, dolgnost -> sp, np.

Один человек неможет иметь два разных паспорта.

sp_pl,np_pl -> sp, np -> date, rost, ves, staff, number, status -> Fam, Im,Otch, dateborn, country, city, street, numstreet, numflat.

Футболист не можетиграть в команде определенного состава одновременно под разными номерами вразном качестве.

 sp_pl, np_pl -> date, staff, number,status.

В определенномсоставе под одним номером не могут играть два футболиста.

sp_pl,np_pl -> staff, number, status.

Один человек неможет одновременно жить в двух комнатах.

num_room -> sp, np.

Помещение не можетиметь разные площади и назначения.

square, naznachenie -> num_p.

Номер помещенияоднозначно определяет номер комнаты.

room -> num_room.

Спортивный зал неможет одновременно относиться к разным типам. type_zal-> num_zal.

Объект в одно и тоже время поступает в определенном количестве по определенной цене. kol, date,balance -> code_obj.

Инвентарьпроизводится определенной фирмой и относится к определенной модели. firm_inv, model_inv-> code_inv.

Техникапроизводится определенной фирмой и относится к определенной модели, потребляетопределенную мощность. firm_tec, model_tec -> code_tec.

Мебельизготавливается из определенного материала, определенной длины, ширины, высоты,цвета. firm_meb, dlina, width, height, color -> code_meb.

Единица спортивногоинвентаря не может относиться к двум объектам. code_inv->inv_number_INV .

Единица техники неможет относиться к двум объектам. code_tec ->. inv_number_TEC.

Единица мебели неможет относиться к двум объектам. code_meb -> inv_number_MEB.

Единица спортивногоинвентаря не может быть списана дважды. date_out_inv-> inv_number_INV_out.

Единица техники неможет быть списана дважды. date_out_tec -> inv_number_TEC_out.

Единица мебели неможет быть списана дважды date_out_meb ->. inv_number_MEB_out.

Единица спортивногоинвентаря не может одновременно находиться в нескольких спортивных залах. num_zal-> inv_number_INV, date_IinZal.

Единица техники неможет одновременно находиться в нескольких помещениях. num_р -> inv_number_TEC, date_TecInP.

Единица мебели неможет одновременно находиться в нескольких помещениях. num_р -> inv_number_MEB, date_MebInP.

Мяч не может иметьразные характеристики. material -> code_balls.

Одни и те же воротане могут иметь разные характеристики. height_gate, shirina, kind -> code_gate.

Тренажер не можетбыть одновременно двух видов. type -> code_trenager.

Телевизор не можетиметь разные характеристики. diagonal, screen -> code_TV.

Холодильник неможет иметь разные характеристики. height_ref, widht_ref, depht_ref, sum_sq_polok,com_volume, user_volume -> code_refreg.

Пылесос не можетиметь разные характеристики. moshnost_v -> code_vacuum.

Кровать не можетиметь разные характеристики. type_bed -> code_bed.

Стол не может иметьразные характеристики. type_table, material_table >code_table.

Шкаф не может иметьразные характеристики. type_shkaf -> code_shkaf.

Исходныефункциональные зависимости представлены на рисунке 2.1


/>

Рисунок 2.1 – Исходныефункциональные зависимости

 

2.3.2Функциональные зависимости сохраняющие иерархию

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

Спортивным залом неможет быть несуществующее помещение. num_zal -> num_p.

Не поступавшаяпартия объектов не может быть зарегистрирована как инвентарь. code_inv-> code_obj.

Не поступавшаяпартия объектов не может быть зарегистрирована как техника. code_tec-> code_obj.

Не поступавшаяпартия объектов не может быть зарегистрирована как мебель. code_meb-> code_obj.

Незарегистрированнаяединица инвентаря не может быть списана. inv_number_INV_out-> inv_number_INV.

Незарегистрированнаяединица техники не может быть списана.

inv_number_TEC_out -> inv_number_TEC.

Незарегистрированнаяединица мебели не может быть списана. inv_number_MEB_out-> inv_number_MEB.

Незарегистрированнаяпартия инвентаря инвентаря не может быть партией мячей.

code_balls -> code_inv.

Одна и та же партияворот не может поступить дважды.

code_gate -> code_inv.

Одна и та же партиятренажеров не может поступить дважды.

code_trenager -> type.

Одна и та же партиятелевизоров не может поступить дважды.

code_TV -> diagonal, screen.

Одна и та же партияхолодильников не может поступить дважды.

code_refreg -> height_ref, widht_ref, depht_ref, sum_sq_polok,com_volume, user_volume.

Функциональныезависимости сохраняющие иерархию представлены на рисунке 2.2.


/>

Рисунок 2.2 — Функциональныезависимости, сохраняющие иерархию

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

Исходное множествофункциональных зависимостей представлено на рисунке 2.3.

sp, np -> Fam, Im, Otch, pol, dateborn, datevidachi, kemvidan, country,   city, street, numstreet, numflat, dolgnost Fam, Im, Otch, dateborn, country, city, street, numstreet, numflat -> sp, np sp_pl, np_pl -> date, rost, ves, staff, number, status date, staff, number, status -> sp_pl, np_pl sp, np -> num_room num_p -> square, naznachenie num_room -> room num_zal -> type_zal num_zal -> num_p code_obj -> kol, date, balance code_inv -> firm_inv, model_inv code_inv -> code_obj code_tec -> firm_tec, model_tec code_tec -> code_obj code_meb -> firm_meb, dlina, width, height, color code_meb -> code_obj inv_number_INV -> code_inv inv_number_TEC -> code_tec inv_number_MEB -> code_meb inv_number_INV_out -> inv_number_INV inv_number_TEC_out -> inv_number_TEC inv_number_MEB_out -> inv_number_MEB inv_number_INV_out -> date_out_inv inv_number_TEC_out -> date_out_tec inv_number_MEB_out -> date_out_meb inv_number_INV, date_IinZal -> num_zal inv_number_TEC, date_TecInP -> num_р inv_number_MEB, date_MebInP -> num_р code_balls -> material code_balls -> code_inv code_gate -> height_gate, shirina, kind code_gate -> code_inv code_trenager -> type code_trenager -> code_inv code_TV -> diagonal, screen code_TV -> code_tec code_refreg -> height_ref, widht_ref, depht_ref, sum_sq_polok, com_volume, user_volume code_refreg -> code_tec code_vacuum -> moshnost_v code_vacuum -> code_tec code_bed -> type_bed code_bed -> code_meb code_table -> type_table, material_table code_table -> code_meb code_shkaf -> type_shkaf code_shkaf -> code_meb

Рисунок 2.3 — Исходное множество функционаьных зависимостей

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

2.4.2    Построение леворедуцированного покрытия

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

 2.4.3   Построение праворедуцированного покрытия

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


 

2.4.4   Построениеклассовэквивалентности

Этапы построенияклассов эквивалентности представлены на рисунке 2.8.

1. Ef( sp, np ): sp, np -> Fam, Im, Otch, pol, dateborn, datevidachi, kemvidan, country, city, street, numstreet, numflat, dolgnost Fam, Im, Otch, dateborn, country, city, street, numstreet, numflat -> sp, np sp, np -> num_room 2. Ef( sp_pl, np_pl ): sp_pl, np_pl -> date, rost, ves, staff, number, status date, staff, number, status -> sp_pl, np_pl 3. Ef( num_p ): num_p -> square, naznachenie 4. Ef( num_room ): num_room -> room 5. Ef( num_zal ): num_zal -> type_zal num_zal -> num_p 6. Ef( code_obj ): code_obj -> kol, date, balance 7. Ef( code_inv ): code_inv -> firm_inv, model_inv; code_inv -> code_obj 8. Ef( code_tec ): code_tec -> firm_tec, model_tec; code_tec -> code_obj 9. Ef( code_meb ): code_meb -> firm_meb, dlina, width, height, color; code_meb -> code_obj 10. Ef( inv_number_INV ): inv_number_INV -> code_inv 11. Ef( inv_number_TEC ): 15. Ef( inv_number_MEB_out ): inv_number_MEB_out -> inv_number_MEB inv_number_MEB_out -> date_out_meb 16. Ef( inv_number_INV, date_IinZal ): inv_number_INV, date_IinZal -> num_zal 17. Ef( inv_number_TEC, date_TecInP ): inv_number_TEC, date_TecInP -> num_р 18. Ef( inv_number_MEB, date_MebInP ): inv_number_MEB, date_MebInP -> num_р 19. Ef( code_balls ): code_balls -> material code_balls -> code_inv 20. Ef( code_gate ): code_gate -> height_gate, shirina, kind code_gate -> code_inv 21. Ef( code_trenager ): code_trenager -> type code_trenager -> code_inv 22. Ef( code_TV ): code_TV -> diagonal, screen code_TV -> code_tec 23. Ef( code_refreg ): code_refreg -> height_ref, widht_ref, depht_ref, sum_sq_polok, com_volume, user_volume code_refreg -> code_tec 24. Ef( code_vacuum ): code_vacuum -> moshnost_v code_vacuum -> code_tec 25. Ef( code_bed ): code_bed -> type_bed code_bed -> code_meb 26. Ef( code_table ): code_table -> type_table, material_table code_table -> code_meb 27. Ef( code_shkaf ): code_shkaf -> type_shkaf code_shkaf -> code_meb

Рисунок 2.4 — Этапыпостроения классов эквивалентности

2.4.5    Построение минимального покрытия на основе прямойфункциональной определяемости

Этапы построенияминимального покрытия на основе прямой функциональной определяемостипредставлены на рисунке 2.5.

2. Проверка: f \ Ef(sp, np) |= sp, np -> sp, np? Да => заменяем sp, np -> Fam, Im, Otch, pol, dateborn, datevidachi, kemvidan, country, city, street, numstreet, numflat, dolgnost и sp, np -> num_room на sp, np -> Fam, Im, Otch, pol, dateborn, datevidachi, kemvidan, country, city, street, numstreet, numflat, dolgnost, num_room. 5. Проверка: f \ Ef(num_zal) |= num_zal -> num_zal? Да => заменяем num_zal -> type_zal и num_zal -> num_p на num_zal -> type_zal, num_p. 6. Проверка: f \ Ef(code_inv) |= code_inv -> code_inv? Да => заменяем code_inv -> firm_inv, model_inv и code_inv -> code_obj на code_inv -> firm_inv, model_inv, code_obj. 7. Проверка: f \ Ef(code_tec) |= code_tec -> code_tec? Да => заменяем code_tec -> firm_tec, model_tec и code_tec -> code_obj на code_tec -> firm_tec, model_tec, code_obj. 8. Проверка: f \ Ef(code_meb) |= code_meb -> code_meb? Да => заменяем code_meb -> firm_meb, dlina, width, height, color и code_meb -> code_obj на code_meb -> firm_meb, dlina, width, height, color, code_obj. 9. Проверка: f \ Ef(inv_number_INV_out) |= inv_number_INV_out -> inv_number_INV_out? Да => заменяем inv_number_INV_out -> inv_number_INV и inv_number_INV_out -> date_out_inv на inv_number_INV_out -> inv_number_INV, date_out_inv. 10. Проверка: f \ Ef(inv_number_TEC_out) |= inv_number_TEC_out -> inv_number_TEC_out? Да => заменяем inv_number_TEC_out -> inv_number_TEC и inv_number_TEC_out -> date_out_tec на inv_number_TEC_out -> inv_number_TEC, date_out_tec. 11. Проверка: f \ Ef(inv_number_MEB_out) |= inv_number_MEB_out -> inv_number_MEB_out? Да => заменяем inv_number_MEB_out -> inv_number_MEB и inv_number_MEB_out -> date_out_meb на inv_number_MEB_out -> inv_number_MEB, date_out_meb. 12. Проверка: f \ Ef(code_balls) |= code_balls -> code_balls? Да => заменяем code_balls -> material и code_balls -> code_inv на code_balls -> material, code_inv. 13. Проверка: f \ Ef(code_gate) |= code_gate -> code_gate? Да => заменяем code_gate -> height_gate, shirina, kind и code_gate -> code_inv на code_gate -> height_gate, shirina, kind, code_inv.

Рисунок 2.5 — Этапыпостроения минимального покрытия на основе прямой функциональной определяемости

Редуцированноеминимальное покрытие представлено на рисунке 2.6

Fam, Im, Otch, dateborn, country, city, street, numstreet, numflat > sp, np sp_pl, np_pl > date, rost, ves, staff, number, status date, staff, number, status > sp_pl, np_pl num_p > square, naznachenie num_room > room code_obj > kol, date, balance inv_number_INV > code_inv inv_number_TEC > code_tec inv_number_MEB > code_meb inv_number_INV, date_IinZal > num_zal inv_number_TEC, date_TecInP > num_р inv_number_MEB, date_MebInP > num_р sp, np > Fam, Im, Otch, pol, dateborn, datevidachi, kemvidan, country, city, street, numstreet, numflat, dolgnost, num_room num_zal > type_zal, num_p code_inv > firm_inv, model_inv, code_obj code_tec > firm_tec, model_tec, code_obj code_meb > firm_meb, dlina, width, height, color, code_obj inv_number_INV_out > inv_number_INV, date_out_inv inv_number_TEC_out > inv_number_TEC, date_out_tec inv_number_MEB_out > inv_number_MEB, date_out_meb code_balls > material, code_inv code_gate > height_gate, shirina, kind, code_inv code_trenager > type, code_inv code_TV > diagonal, screen, code_tec code_refreg > height_ref, widht_ref, depht_ref, sum_sq_polok, com_volume, user_volume, code_tec code_vacuum > moshnost_v, code_tec code_bed > type_bed, code_meb code_table > type_table, material_table, code_meb code_shkaf > type_shkaf, code_meb

Рисунок 2.6 — Редуцированное минимальное покрытие

 2.4.6   Построение редуцированного минимальногокольцевого покрытия

Определение CF-зависимостейпо классам эквивалентности. Построение кольцевого покрытия

Минимальноекольцевое покрытие представлено на рисунке 2.7

( sp, np; Fam, Im, Otch, dateborn, country, city, street, numstreet, numflat; ) -> pol, datevidachi, kemvidan, dolgnost, num_room ( sp_pl, np_pl; date, staff, number, status; ) -> rost, ves ( num_p; ) -> square, naznachenie ( num_room; ) -> room ( num_zal; ) -> type_zal, num_p ( code_obj; ) -> kol, date, balance ( code_inv; ) -> firm_inv, model_inv, code_obj ( code_tec; ) -> firm_tec, model_tec, code_obj ( code_meb; ) -> firm_meb, dlina, width, height, color, code_obj ( inv_number_INV; ) -> code_inv ( inv_number_TEC; ) -> code_tec ( inv_number_MEB; ) -> code_meb ( inv_number_INV_out; ) -> inv_number_INV, date_out_inv ( inv_number_TEC, _out; ) ( inv_number_MEB_out; ) -> inv_number_MEB, date_out_meb ( inv_number_TEC_out; ) -> date_out_tec ( inv_number_INV, date_IinZal; ) -> num_zal ( inv_number_TEC, date_TecInP; ) -> num_р ( inv_number_MEB, date_MebInP; ) -> num_р ( code_balls; ) -> material, code_inv ( code_gate; ) -> height_gate, shirina, kind, code_inv ( code_trenager; ) -> type, code_inv ( code_TV; ) -> diagonal, screen, code_tec ( code_refreg; ) -> height_ref, widht_ref, depht_ref, sum_sq_polok, com_volume, user_volume, code_tec ( code_vacuum; ) -> moshnost_v, code_tec ( code_bed; ) -> type_bed, code_meb ( code_table; ) -> type_table, material_table, code_meb ( code_shkaf; ) -> type_shkaf, code_meb

Рисунок 2.7 — Минимальное кольцевое покрытие

Получениекольцевого минимального редуцированного покрытия

Естественноехарактеристическое множество для кольцевого покрытия представлено на рисунке2.8.

f(C): sp, np -> Fam, Im, Otch, dateborn, country, city, street, numstreet, numflat Fam, Im, Otch, dateborn, country, city, street, numstreet, numflat -> sp, np Fam, Im, Otch, dateborn, country, city, street, numstreet, numflat -> pol, datevidachi, kemvidan, dolgnost, num_room sp_pl, np_pl -> date, staff, number, status date, staff, number, status -> sp_pl, np_pl date, staff, number, status -> rost, ves code_tec -> firm_tec, model_tec, code_obj code_meb -> firm_meb, dlina, width, height, color, code_obj inv_number_INV -> code_inv inv_number_TEC -> code_tec inv_number_MEB -> code_meb inv_number_INV_out -> inv_number_INV, date_out_inv inv_number_MEB_out -> inv_number_MEB, date_out_meb inv_number_TEC_out -> date_out_tec inv_number_INV, date_IinZal -> num_zal inv_number_TEC, date_TecInP -> num_р inv_number_MEB, date_MebInP -> num_р code_balls -> material, code_inv code_gate -> height_gate, shirina, kind, code_inv code_trenager -> type, code_inv code_TV -> diagonal, screen, code_tec code_refreg -> height_ref, widht_ref, depht_ref, sum_sq_polok, com_volume, user_volume, code_tec code_vacuum -> moshnost_v, code_tec code_bed -> type_bed, code_meb code_table -> type_table, material_table, code_meb code_shkaf -> type_shkaf, code_meb

Рисунок 2.8 — Естественное характеристическое множество для кольцевого покрытия

Минимальноередуцированное кольцевое покрытие представлено на рисунке 2.9.

( sp, np; Fam, Im, Otch, dateborn, country, city, street, numstreet, numflat; ) -> pol, datevidachi, kemvidan, dolgnost, num_room ( sp_pl, np_pl; date, staff, number, status; ) -> rost, ves ( num_p; ) -> square, naznachenie ( num_room; ) -> room ( num_zal; ) -> type_zal, num_p ( code_obj; ) -> kol, date, balance ( code_inv; ) -> firm_inv, model_inv, code_obj ( code_tec; ) -> firm_tec, model_tec, code_obj ( code_meb; ) -> firm_meb, dlina, width, height, color, code_obj ( inv_number_INV; ) -> code_inv ( inv_number_TEC; ) -> code_tec ( inv_number_MEB; ) -> code_meb ( inv_number_INV_out; ) -> inv_number_INV, date_out_inv ( inv_number_TEC, _out; ) ( inv_number_MEB_out; ) -> inv_number_MEB, date_out_meb ( inv_number_TEC_out; ) -> date_out_tec ( inv_number_INV, date_IinZal; ) -> num_zal ( inv_number_TEC, date_TecInP; ) -> num_р ( inv_number_MEB, date_MebInP; ) -> num_р ( code_balls; ) -> material, code_inv ( code_gate; ) -> height_gate, shirina, kind, code_inv ( code_trenager; ) -> type, code_inv ( code_TV; ) -> diagonal, screen, code_tec ( code_refreg; ) -> height_ref, widht_ref, depht_ref, sum_sq_polok, com_volume, user_volume, code_tec ( code_vacuum; ) -> moshnost_v, code_tec ( code_bed; ) -> type_bed, code_meb ( code_table; ) -> type_table, material_table, code_meb ( code_shkaf; ) -> type_shkaf, code_meb

Рисунок 2.9 — Минимальное редуцированное кольцевое покрытие

Естественноехарактеристическое множество представлено на рисунке 2.10.

R0 = ( sp, np; Fam, Im, Otch, dateborn, country, city, street, numstreet, numflat, pol, datevidachi, kemvidan, dolgnost, num_room ) K0 = { sp, np; Fam, Im, Otch, dateborn, country, city, street, numstreet, numflat } R1 = ( sp_pl, np_pl; date, staff, number, status, rost, ves ) K1 = { sp_pl, np_pl; date, staff, number, status } R2 = ( num_p, square, naznachenie ) K2 = { num_p } R3 = ( num_room, room ) K3 = { num_room } R4 = ( num_zal, type_zal, num_p ) K4 = { num_zal } R5 = ( code_obj, kol, date, balance ) K5 = { code_obj } R6 = ( code_inv, firm_inv, model_inv, code_obj ) K6 = { code_inv } R7 = ( code_tec, firm_tec, model_tec, code_obj ) K7 = { code_tec } R8 = ( code_meb, firm_meb, dlina, width, height, color, code_obj ) K8 = { code_meb } R9 = ( inv_number_INV, code_inv ) K9 = { inv_number_INV } R10 = ( inv_number_TEC, code_tec ) K10 = { inv_number_TEC } R11 = ( inv_number_MEB, code_meb )   K11 = { inv_number_MEB } R12 = ( inv_number_INV_out, inv_number_INV, date_out_inv )   K12 = { inv_number_INV_out } R13 = ( inv_number_TEC, _out )   K13 = { inv_number_TEC, _out } R14 = ( inv_number_MEB_out, inv_number_MEB, date_out_meb ) K14 = {inv_number_MEB_out } R15 = ( inv_number_TEC_out, date_out_tec )   K15 = { inv_number_TEC_out } R16 = ( inv_number_INV, date_IinZal, num_zal )   K16 = { inv_number_INV, date_IinZal } R17 = ( inv_number_TEC, date_TecInP, num_р )   K17 = { inv_number_TEC, date_TecInP } R18 = ( inv_number_MEB, date_MebInP, num_р )   K18 = { inv_number_MEB, date_MebInP } R19 = ( code_balls, material, code_inv )   K19 = { code_balls } R20 = ( code_gate, height_gate, shirina, kind, code_inv )   K20 = { code_gate } R21 = ( code_trenager, type, code_inv )   K21 = { code_trenager } R22 = ( code_TV, diagonal, screen, code_tec )   K22 = { code_TV } R23 = ( code_refreg, height_ref, widht_ref, depht_ref, sum_sq_polok, com_volume, user_volume, code_tec )   K23 = { code_refreg } R24 = ( code_vacuum, moshnost_v, code_tec )   K24 = { code_vacuum } R25 = ( code_bed, type_bed, code_meb )   K25 = { code_bed } R26 = ( code_table, type_table, material_table, code_meb )   K26 = { code_table } R27 = ( code_shkaf, type_shkaf, code_meb )   K27 = { code_shkaf }

Рисунок 2.10 — Естественное характеристическое множество

2.5          Концептуальная модель

Исходнаяконцептуальная модель базы данных представлена на рисунке 2.15.


/>

Рисунок 2.15 — Концептуальная модель (ER-диаграмма) базы данных

После проведениявсех этапов минимизации концептуальная модель не изменилась.


 

2.6 Построениезапросов

 

2.6.1 Построениепервого запроса

2.6.1.1 Исходныйзапрос

Первый запросформулируется следующим образом: «Вывести коды партий футбольных ворот типа«юниорские», которые производятся фирмой Star, относятсяк модели K325, поступили не раньше 2007 года и находятся вспортивных залах «Общей физической подготовки» ».

/>Текст первого запроса на языке SQLпредставлен на рисунке 2.16.

Риунок 2.16 — Текстпервого запроса на языке SQL

Исходное операционноедерево для первого запроса представлено на рисунке 2.17.


/>

Рисунок 2.17 — Исходное операционное дерево для первого запроса

/>Оценка стоимости исходного запроса представлена нарисунке 2.18.


/>Рисунок 2.18 – Оценка стоимости исходного запроса

2.6.1.2Минимизированный запрос

Текстминимизированного первого запроса на SQL представлен на рисунке 2.19.

SELECT code_obj from gate WHERE gate.kind=«Стандартные» INTO  CURSOR C1 SELECT code_obj FROM inventar WHERE (ALLTRIM(inventar.firm)=«Mizuno» AND ALLTRIM(inventar.model)=«K235») INTO CURSOR C2 SELECT code_obj from arrival_object WHERE ((arrival_object.date)>={^2007-01-01}) INTO CURSOR d5 SELECT * FROM c1 INNER JOIN c2 ON c1.code_obj=c2.code_obj INTO CURSOR C3 SELECT * FROM c3 INNER JOIN d5 ON d5.code_obj=c3.code_obj_a INTO CURSOR C6 SELECT code_obj_a,inv_number from  invnum_inv INNER JOIN C6 ON ALLTRIM(code_obj_a)==ALLTRIM(invnum_inv.code_obj) INTO CURSOR C7 SELECT code_obj_a,num_p from  inv_in_zal INNER JOIN C7 ON   inv_in_zal.inv_number=c7.inv_number INTO CURSOR C9 SELECT num_p from zal WHERE ALLTRIM(zal.type_zal)=«Общей физической подготовки» INTO CURSOR C10 SELECT DISTINCT code_obj_a from C9 INNER JOIN C10 ON C9.num_p=C10.num_p

Рисунок 2.19 –Текст минимизированного первого запроса

Минимизированноеоперационное дерево для первого запроса представлено на рисунке 2.20.


(18)

  />

Рисунок 2.20 — Операционноедерево для минимизированного первого запроса

Оценка стоимостиминимизированного запроса представлена на рисунке 2.21.


/>


/>

Рисунок 2.21-Оценка стоимости минимизированного первого запроса


 

2.6.2 Построениевторого запроса

Словеснаяформулировка запроса следующая: «Вывести номера спортивных залов, в которыххранится инвентарь, принадлежащий обеим партиям: 522715, 413998».

Текст запроса наязыке SQL представлен на рисунке 2.22.

SELECT num_p FROM  zal  WHERE ALLTRIM(zal.type_zal)='' INTO  CURSOR CR1 SELECT num_p,code_del FROM del,CR1 INTO  CURSOR CR4 SELECT CR1.num_p,inv_number FROM CR1 INNER JOIN inv_in_zal ON CR1.num_p==inv_in_zal.num_p INTO CURSOR CR2 SELECT num_p,code_obj FROM CR2 INNER JOIN invnum_inv ON (invnum_inv.inv_number==CR2.inv_number) DISTINCT INTO CURSOR CR3 SELECT DISTINCT num_p from CR4 WHERE NOT EXISTS (SELECT CR3.num_p FROM CR3 WHERE (CR4.num_p==CR3.num_p AND CR4.code_del==CR3.code_obj))into CURSOR CR5 SELECT  CR1.num_p,CR5.num_p FROM CR1 LEFT JOIN CR5 ON CR1.num_p=CR5.num_p INTO CURSOR CR6 SELECT DISTINCT num_p FROM CR1 WHERE NOT EXISTS (Select CR6.num_p_b from CR6 WHERE CR1.num_p=CR6.num_p_b)

Рисунок 2.22 — Текст запроса на языке SQL   

Операционное дереводля второго запроса представлено на рисунке 2.23.


/>

Рисунок 2.23 — Операционное дерево для второго запроса


3 Рабочий проект

3.1 Структурапроекта

3.1.1 Связь таблиц

Схема связей таблицпредставлена на рисунке 3.1

/>

Рисунок 3.1– Схемасвязей таблиц

3.1.2 Перечень форм

Формы, входящие всостав проекта приведенны в таблице 3.1.


Таблица 3.1 –Перечень форм

Название формы Окружение данных Инвентарные номера спортивного инвентаря Invnum_inv, Inventar Спортивный инвентарь Inventar Универсальный запрос Arrival_object,Gate, Inventar,Invnum_inv Запросы -

3.2 Описание формы

На рисунке 3.2. изображена форма«Инвентарные номера инвентаря»

                                                                                             Command

TextBox

  />

Grid

  />/>/>/>/>

Рисунок 3.2 – Форма«Инвентарные номера инвентаря»

/>При создании формы использовались компоненты: TextBox, Command, GridКаждая кнопка Command имеет событие Сlick. Обработчики событий Click для кнопок представлены в ПриложенииА.


Заключение

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

Для достижения целибыл решен ряд задач: составление описания предметной области; составлениесловаря понятий и терминов; построение исходной модели (ER-диаграммы)базы данных; определение функциональных зависимостей; синтез схемы базы данныхна основании функциональных зависимостей; построение оптимизированнойконцептуальной модели; построение запросов на выборку.


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

1.       Атре, Ш., Структурный подход к организации баз данных./ [Текст]: Атре, Ш. — М.: Финансы и статистика, 1983. – 320 с.

2.       Бойко, В.В., Проектирование баз данных информационныхсистем. / [Текст]: Бойко, В.В., Савинков, В.М., – М.: Финансы и статистика,1989. – 351 с.

3.       Гарсия-Молина, Гектор, Ульман, Джеффри, Д., Уидом,Дженнифер Системы баз данных. Полный курс.: Пер. с англ. – М.: Издательскийдом “Вильямс”, 2003. – 188 с.: ил.

4.       Дейт, К., Руководство по реляционной СУБД DB2. /[Текст]: Дейт, К. – М.: Финансы и статистика, 1988. – 320 с.

5.       Джексон, Г., Проектирование реляционных баз данных дляиспользования с микроЭВМ. / [Текст]: Джексон, Г., -М.: Мир, 1991. – 252 с.

6.       Кириллов, В.В., Структуризованный язык запросов (SQL)./ [Текст]: Кириллов, В.В., – СПб.: ИТМО, 1994. – 80 с.

7.       Мартин, Дж., Планирование развития автоматизированныхсистем. / [Текст]: Мартин, Дж., – М.: Финансы и статистика, 1984. – 196 с.

8.       Мейер, М., Теория реляционных баз данных. / [Текст]:Мейер, М.,– М.: Мир, 1987. – 608 с.

9.       Тиори, Т., Проектирование структур баз данных. /[Текст]: Тиори, Т., Фрай, Дж., В 2 кн., – М.: Мир, 1985. Кн. 1. – 287 с.: Кн.2. – 320 с.

10.  Ульман, Дж., Базы данных на Паскале. / [Текст]:Ульман, Дж., – М.: Машиностроение, 1990. – 386 с.

11.   Хаббард, Дж., Автоматизированное проектирование базданных. / [Текст]: Хаббард, Дж., – М.: Мир, 1984. – 294 с.

12.   Цикритизис, Д., Модели данных. / [Текст]:Цикритизис, Д., Лоховски, Ф., – М.: Финансы и статистика, 1985. – 344 с.

 
Приложение А

Текст обработчиков событий, связанных с компонентами формы «Инвентарные номера инвентаря»

А.1        Код,связанный с событием Click кнопок «След.» и «Пред.»

* NextIF NOT EOF()

SKIP

IF EOF()

GOBOTTOM

ЕNDIF

ENDIF

THISFORM.Refresh

THISFORM.Buttons

*Previous IF NOT BOF()

SKIP — 1

IF BОF()

G0 TOP

EHDIF

ЕNDIF

THISFORM.Refresh:

THISFORM.Buttons

А.2        Код, связанный с событием Clickкнопки «Найти»

IF NOT USED([Invnum_inv])

 USE Invnum_inv IN 0

ENDIF

IFthisform.container1.text1.Value=" "

ELSE

SELECT Invnum_inv

SET ORDER TO inv_number

LOCATE FOR

(ALLTRIM(inv_number))=ALLTRIM(thisform.container1.text1.value)

IF FOUND()

SEEK inv_number

ENDIF

thisform.refresh

ENDIF

А.3        Код, связанный с событием Click кнопки «Новаязапись»

IF NOT USED([inventar])

USE inventar IN 0

ENDIF

IF NOT USED([Invnum_inv])

USE Invnum_inv IN 0

ENDIF

IF NOTUSED([Arrival_object])

USE Arrival_object IN 0

ENDIF

thisform.Visible= .F.

SET RELATION TO

SET SKIP TO

SELECT Inventar

SET ORDER TO code_obj

SELECT Invnum_inv

SET RELATION TO code_objINTO Inventar

SET SKIP TO Inventar

DO FORM «c:\documentsand settings\yla\мои документы\visual foxpro projects\my_football_new\f_inventar.scx»

А.4        Код, связанный с событием Clickкнопки «Сохранить»

thisform.container2.command1.Enabled=.T.

SELECT invnum_inv

GO RECCOUNT()

IF(invnum_inv.inv_number!=' ')

thisform.Command1.Enabled=.T.

ELSE

MESSAGEBOX(«Введите вседанные!!!»,16, «Ошибка»)

ENDIF

А.5        Код, связанный с событием Clickкнопки «Отмена»

thisform.Height= 260

thisform.container1.command3.Enabled=.t.

thisform.container2.command1.Enabled=.t.

thisform.container2.command2.Enabled=.t.

thisform.container2.command5.Enabled=.t.

thisform.container3.command4.Enabled=.t.

thisform.container3.command3.Enabled=.t.

thisform.container3.command6.Enabled=.f.

А.6        Код, связанный с событием Clickкнопки «Удалить»

IF MESSAGEBOX («Удалить этузапись», 4 + 32 + 256 ) = 6

DELETENEXT 1

BLANK

SETDELETED ON

GO TOP

THISFORM.Refresh

ENDIF

А.7        Код, связанный с событием Clickкнопки «Просмотр»

IF NOTUSED([Arrival_object])

USE Arrival_object IN 0

ENDIF

IF NOT USED([inventar])

USE inventar IN 0

ENDIF

IF NOT USED([Invnum_inv])

USE Invnum_inv IN 0

ENDIF

thisform.Height= 454

thisform.container3.command6.Enabled=.t.

thisform.container1.command3.Enabled=.f.

thisform.container2.command1.Enabled=.f.

thisform.container2.command2.Enabled=.f.

thisform.container2.command5.Enabled=.f.

thisform.container3.command4.Enabled=.f.

thisform.container3.command3.Enabled=.f.


Приложение Б

Текст программы обработчика событий «Запрос» на форме «Универсальныйзапрос»

IF NOTUSED([arrival_object])

USE arrival_object IN 0

ENDIF

IF NOT USED([inventar])

USE inventar IN 0

ENDIF

IF NOT USED([invnum_inv])

USE invnum_inv IN 0

ENDIF

IF NOT USED([gate])

USE gate IN 0

ENDIF

IFthisform.container2.txt_height_gate.Value=" "

thisform.container2.txt_height_gate.Value=""

ENDIF

str="(2<>1)"

out_fields=«gate.code_obj»

IF thisform.ch_code.Value= 1

 out_fields=«gate.code_obj»

ENDIF

IFthisform.ch_date_arrival.Value= 1

out_fields = out_fields+", arrival_object.date"

ENDIF

IFthisform.ch_balance.Value = 1

out_fields = out_fields+", arrival_object.balance"

ENDIF

IF thisform.ch_kol.Value =1

 out_fields = out_fields+", arrival_object.kol"

ENDIF

IF thisform.ch_firm.Value =1

out_fields = out_fields+", inventar.firm"

ENDIF

IF thisform.ch_model.Value= 1

 out_fields = out_fields+", inventar.model"

ENDIF

IFthisform.ch_inv_number.Value = 1

out_fields = out_fields+", invnum_inv.inv_number"

ENDIF

IFthisform.container2.ch_height_gate.Value = 1

out_fields = out_fields+", gate.height_gate"

ENDIF

IFthisform.container2.ch_kind_gate.Value = 1

out_fields = out_fields+", gate.kind"

ENDIF

IFthisform.container2.Ch_shirina_gate.Value = 1

out_fields = out_fields+", gate.shirina"

ENDIF

IFALLTRIM(thisform.txt_code_obj.Value) == ""

ELSE

str = str +" AND"+

"((ALLTRIM(gate.code_obj))=ALLTRIM(thisform.txt_code_obj.Value))"

ENDIF

IFALLTRIM(thisform.txt_date_arrival.Value) == ""

ELSE

str = str +" AND"+

"((ALLTRIM(DTOC(arrival_object.date)))=ALLTRIM(thisform.txt_date_arrival.Value))"

ENDIF

IFALLTRIM(thisform.txt_balance.Value) == ""

ELSE

str = str +" AND"+

"((ALLTRIM(STR(arrival_object.balance)))=ALLTRIM(thisform.txt_balance.Value))"

ENDIF

IFALLTRIM(thisform.txt_kol.Value) == ""

ELSE

str = str +" AND"+

((ALLTRIM(STR(arrival_object.kol)))=ALLTRIM(thisform.txt_kol.Value))

ENDIF

IFALLTRIM(thisform.txt_firm.Value )== ""

ELSE

str = str +" AND"+

((ALLTRIM(inventar.firm))=ALLTRIM(thisform.txt_firm.Value))

ENDIF

IFALLTRIM(thisform.txt_model.Value) == ""

ELSE

str = str +" AND"+

"((ALLTRIM(inventar.model))=ALLTRIM(thisform.txt_model.Value))"

ENDIF

IFALLTRIM(thisform.container2.txt_kind_gate.Value) == ""

 ELSE

 str = str +" AND"+

"((ALLTRIM(gate.kind))=ALLTRIM(thisform.container2.txt_kind_gate.Value))"

ENDIF

IFALLTRIM(thisform.container2.txt_height_gate.Value) == ""

ELSE

str = str +" AND"+ "((ALLTRIM(STR(gate.height_gate)))

=thisform.container2.txt_height_gate.Value)"

ENDIF

IFALLTRIM(thisform.container2.txt_shirina_gate.Value)== ""

ELSE

 str = str +" AND"+ "((ALLTRIM(STR(gate.shirina)))=

=ALLTRIM(thisform.container2.txt_shirina_gate.Value))"

ENDIF

IFout_fields=«NULL»

out_fields ="*"

ENDIF

SELECT &out_fields;

FROM(((gate INNER JOINinventar ON

ALLTRIM(inventar.code_obj)==ALLTRIM(gate.code_obj));

INNER JOIN arrival_objectON

ALLTRIM(arrival_object.code_obj)==ALLTRIM(gate.code_obj));

INNER JOIN invnum_inv ON

ALLTRIM(invnum_inv.code_obj)==ALLTRIM(gate.code_obj));

WHERE &str INTO TABLEMy_tab

objExcel=CreateObject(«Excel.Application»)

objExcel.Visible=.T.

objExcel.Workbooks.add

nstol = 0

IF thisform.ch_code.Value= 1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value=«Код партии»

objExcel.Columns[nstol].ColumnWidth= 12

ENDIF

IFthisform.ch_date_arrival.Value= 1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value=«Дата поступления»

objExcel.Columns[nstol].ColumnWidth= 18

ENDIF

IFthisform.ch_balance.Value = 1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value=«Балансовая стоимость»

objExcel.Columns[nstol].ColumnWidth= 25

ENDIF

IF thisform.ch_kol.Value =1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value=«Количество»

objExcel.Columns[nstol].ColumnWidth= 12

ENDIF

IF thisform.ch_firm.Value =1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value=«Фирма-производитель»

objExcel.Columns[nstol].ColumnWidth= 25

ENDIF

IF thisform.ch_model.Value= 1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value=«Модель»

objExcel.Columns[nstol].ColumnWidth= 10

ENDIF

IFthisform.ch_inv_number.Value = 1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value=«Инвентарный номер»

objExcel.Columns[nstol].ColumnWidth= 25

ENDIF

IFthisform.container2.ch_height_gate.Value = 1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value=«Высота ворот»

objExcel.Columns[nstol].ColumnWidth= 15

ENDIF

IFthisform.container2.ch_kind_gate.Value = 1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value=«Вид ворот»

objExcel.Columns[nstol].ColumnWidth= 20

ENDIF

IFthisform.container2.Ch_shirina_gate.Value = 1

nstol = nstol+1

objExcel.Cells(3,nstol).select

objExcel.Cells(3,nstol).Font.Bold=.T.

objExcel.Cells(3,nstol).Value=«Ширина ворот»

objExcel.Columns[nstol].ColumnWidth= 15

ENDIF

IF nstol>0

tt1 =""+CHRTRAN(objExcel.Cells(1,1).Address,"$","")

tt2 =""+CHRTRAN(objExcel.Cells(1,nstol).Address,"$","")

WITH objExcel&&cel

WITH.Range(tt1+":"+tt2)

WITH .Font

Name = «ArialCyr»

FontStyle = «полужирный»

Size = 14

ENDWITH

HorizontalAlignment = 3

VerticalAlignment = 1

WrapText = .F.

Orientation = 0

AddIndent = .F.

IndentLevel = 0

ShrinkToFit = .F.

MergeCells = .F.

Merge

ENDWITH

Range(«A1»).Value =«Данные о партиях футбольных ворот»

ENDWITH

ENDIF

stroka=3

stolbic=1

SELECT my_tab

SCAN

stroka=stroka+1

temp_j = stolbic

IF thisform.ch_code.Value= 1

objExcel.Cells(stroka,temp_j).select

objExcel.Cells(stroka,temp_j).Value = my_tab.code_obj

temp_j = temp_j +1

ENDIF

IFthisform.ch_date_arrival.Value= 1

objExcel.Cells(stroka,temp_j).select

objExcel.Cells(stroka,temp_j).Value = my_tab.date

temp_j = temp_j +1

ENDIF

IFthisform.ch_balance.Value = 1

objExcel.Cells(stroka,temp_j).select

objExcel.Cells(stroka,temp_j).Value = my_tab.balance

temp_j = temp_j +1

ENDIF

IF thisform.ch_kol.Value =1

objExcel.Cells(stroka,temp_j).select

objExcel.Cells(stroka,temp_j).Value =my_tab.kol

temp_j = temp_j +1

ENDIF

IF thisform.ch_firm.Value =1

objExcel.Cells(stroka,temp_j).select

objExcel.Cells(stroka,temp_j).Value = my_tab.firm

temp_j = temp_j +1

ENDIF

IF thisform.ch_model.Value= 1

objExcel.Cells(stroka,temp_j).select

objExcel.Cells(stroka,temp_j).Value = my_tab.model

temp_j = temp_j +1

ENDIF

IFthisform.ch_inv_number.Value = 1

objExcel.Cells(stroka,temp_j).select

objExcel.Cells(stroka,temp_j).Value = my_tab.inv_number

temp_j = temp_j +1

ENDIF

IFthisform.container2.ch_height_gate.Value = 1

objExcel.Cells(stroka,temp_j).select

objExcel.Cells(stroka,temp_j).Value = STR(my_tab.height_gate)

         temp_j = temp_j+1

ENDIF

IFthisform.container2.ch_kind_gate.Value = 1

objExcel.Cells(stroka,temp_j).select

objExcel.Cells(stroka,temp_j).Value =my_tab.kind

temp_j = temp_j +1

ENDIF

IFthisform.container2.Ch_shirina_gate.Value = 1

objExcel.Cells(stroka,temp_j).select

objExcel.Cells(stroka,temp_j).Value =STR(my_tab.shirina)

temp_j = temp_j +1

ENDIF

ENDSCAN

IF nstol>0

tt1 =""+CHRTRAN(objExcel.Cells(3,1).Address,"$","")

tt2 =""+CHRTRAN(objExcel.Cells(stroka,nstol).Address,"$","")

WITH objExcel

WITH.Range(tt1+":"+tt2)

WITH .Font

.Name = «ArialCyr»

Size = 10

ENDWITH

HorizontalAlignment = 3

ENDWITH

ENDWITH

ENDIF

WithobjExcel.Range(tt1+":"+tt2)

Borders(1).LineStyle = 0

Borders(2).LineStyle = 0

With .Borders(1)

LineStyle = 1

Weight = 2

ENDWITH

With .Borders(2)

Weight = 2

ENDWITH

With .Borders(3)

LineStyle = 1

Weight = 2

ENDWITH

With .Borders(4)

LineStyle = 1

Weight = 2

ENDWITH

ENDWITH


Приложение В

Текст программы для заполнения таблицзаписями

IF NOTUSED([Arrival_object])

USE Arrival_object IN 0

ENDIF

IF NOT USED([inventar])

USE inventar IN 0

ENDIF

IF NOTUSED([out_inventar])

USE out_inventar IN 0

ENDIF

IF NOT USED([techno])

USE techno IN 0

ENDIF

IF NOT USED([firm_techno])

 USE firm_techno IN 0

ENDIF

IF NOT USED([firm_inv])

USE firm_inv IN 0

ENDIF

IF NOTUSED([techno_model])

USE techno_model IN 0

ENDIF

IF NOT USED([Mebel])

USE Mebel IN 0

ENDIF

IF NOT USED([invnum_inv])

USE invnum_inv IN 0

ENDIF

IF NOT USED([invnum_tec])

USE invnum_tec IN 0

ENDIF

IF NOT USED([invnum_meb])

USE invnum_meb IN 0

ENDIF

IF NOTUSED([datevidachi_table])

USE datevidachi_table IN 0

ENDIF

IF NOT USED([balls])

USE balls IN 0

ENDIF

IF NOT USED([gate])

USE gate IN 0

ENDIF

IF NOT USED([kind_gate])

USE kind_gate IN 0

ENDIF

IF NOTUSED([shir_and_height_gate])

USE shir_and_height_gateIN 0

ENDIF

IF NOT USED([trenager])

USE trenager IN 0

ENDIF

IF NOT USED([TV])

USE TV IN 0

ENDIF

IF NOTUSED([refrigerator])

USE refrigerator IN 0

ENDIF

IF NOTUSED([vacuum_cleaner])

USE vacuum_cleaner IN 0

ENDIF

IF NOT USED([bed])

USE bed IN 0

ENDIF

IF NOT USED([shkaf])

USE shkaf IN 0

ENDIF

IF NOT USED([table])

USE table IN 0

ENDIF

IF NOT USED([tumbochka])

USE tumbochka IN 0

ENDIF

j=0

k=0

SELECT arrival_object

FOR i=1 TO 1200000

APPEND BLANK

replace code_obj WITHALLTRIM(STR(i))

k=k+1

IF(k<10)

k = k+1

ELSE

k =5

ENDIF

replace kol WITH k

replace balance WITH k*5.8

SELECT datevidachi_table

IF NOT EOF()

replacearrival_object.date WITH date_v

SKIP

ELSE

SKIP -(RECNO())

replacearrival_object.date WITH date_v

SKIP

ENDIF

SELECT arrival_object

ENDFOR

**************************************

kol=0

j=1

SELECT arrival_object

GO 1

DO WHILE NOT EOF()

SELECT inventar

APPEND BLANK

replace code_obj WITHarrival_object.code_obj

kol = arrival_object.kol

SELECT invnum_inv

DO WHILE (kol!=0)

APPEND BLANK

replace inv_number WITHSTR(j)

replace code_obj WITHarrival_object.code_obj

j=j+1

kol=kol-1

ENDDO

SELECT firm_inv

IF NOT EOF()

replace inventar.firm WITHfirm_inv

SKIP

ELSE

GO 1

replace inventar.firm WITHfirm_inv

SKIP

ENDIF

SELECT techno_model

IF NOT EOF()

replace inventar.modelWITH model

SKIP

ELSE

GO 1

replace inventar.modelWITH model

SKIP

ENDIF

********

SELECT Arrival_object

SKIP

IF NOT EOF()

SELECT Techno

APPEND BLANK

replace code_obj WITHarrival_object.code_obj

SELECT firm_techno

IF NOT EOF()

replace Techno.firm_markaWITH firm_marka

SKIP

ELSE

GO 1

replace Techno.firm_markaWITH firm_marka

SKIP

ENDIF

SELECT techno_model

IF NOT EOF()

replace Techno.model WITHmodel

SKIP

ELSE

GO 1

replace Techno.model WITHmodel

SKIP

ENDIF

*********

SELECT Arrival_object

SKIP

IF NOT EOF()

SELECT Mebel

APPEND BLANK

replace code_obj WITHarrival_object.code_obj

********

SELECT Arrival_object

SKIP

ENDIF

ENDIF

ENDDO

&&заполнение таблиц«Спортивный инвентарь»

SELECT inventar

GO 1

DO WHILE NOT EOF()

SELECT balls

APPEND BLANK

replace code_obj WITHinventar.code_obj

********

SELECT inventar

SKIP

IF NOT EOF()

SELECT gate

APPEND BLANK

replace code_obj WITHinventar.code_obj

SELECT kind_gate

IF NOT EOF()

replace gate.kind WITHkind_gate

SKIP

ELSE

GO 1

replace gate.kind WITHkind_gate

SKIP

ENDIF

SELECTshir_and_height_gate

IF NOT EOF()

replace gate.height_gateWITH height

replace gate.shirina WITHshirina

SKIP

ELSE

GO 1

replace gate.height_gateWITH height

replace gate.shirina WITHshirina

SKIP

ENDIF

*********

SELECT inventar

SKIP

IF NOT EOF()

SELECT trenager

APPEND BLANK

replace code_obj WITHinventar.code_obj

SELECT inventar

SKIP

ENDIF

ENDIF

ENDDO

&&заполнение таблиц«Техника»

SELECT techno

GO 1

DO WHILE NOT EOF()

SELECT TV

APPEND BLANK

replace code_obj WITHtechno.code_obj

********

SELECT techno

SKIP

IF NOT EOF()

SELECT refrigerator

APPEND BLANK

replace code_obj WITHtechno.code_obj

*********

SELECT Techno

SKIP

IF NOT EOF()

SELECT vacuum_cleaner

APPEND BLANK

replace code_obj WITHtechno.code_obj

********

SELECT techno

SKIP

ENDIF

ENDIF

ENDDO

&&заполнение таблиц«Мебель»

SELECT Mebel

GO 1

DO WHILE NOT EOF()

SELECT bed

APPEND BLANK

replace code_obj WITHMebel.code_obj

********

SELECT Mebel

SKIP

IF NOT EOF()

SELECT shkaf

APPEND BLANK

replace code_obj WITHmebel.code_obj

*********

SELECT Mebel

SKIP

IF NOT EOF()

SELECT table

APPEND BLANK

replace code_obj WITHmebel.code_obj

********

SELECT Mebel

SKIP

IF NOT EOF()

SELECT tumbochka

APPEND BLANK

replace code_obj WITHmebel.code_obj

SELECT Mebel

SKIP

ENDIF

ENDIF

ENDIF

ENDDO

&&Заполнение таблиц«инвентарный номер»

kol=0

SELECT inventar

GO 1

SELECT invnum_inv

GO 1

SELECT techno

GO 1

SELECT mebel

GO 1

SELECT arrival_object

GO 1

&&Заполнение таблиц списанных«объектов»

SELECT invnum_inv

DO WHILE NOT EOF()

SELECT out_inventar

APPEND BLANK

replace inv_number WITHinvnum_inv.inv_number

SELECT invnum_inv

SKIP 10

ENDDO

IF NOT USED([invnum_inv])

USE invnum_inv IN 0

ENDIF

IF NOT USED([inv_in_zal])

USE inv_in_zal IN 0

ENDIF

IF NOT USED([type_zal])

USE type_zal IN 0

ENDIF

IF NOT USED([pomeshenie])

USE pomeshenie IN 0

ENDIF

IF NOT USED([zal])

USE zal IN 0

ENDIF

IF NOTUSED([pomeshenie_naznach])

USE pomeshenie_naznach IN0

ENDIF

IF NOTUSED([datevidachi_table])

USE datevidachi_table IN 0

ENDIF

SELECT pomeshenie

DELETE ALL

PACK

SELECT zal

DELETE ALL

PACK

SELECT inv_in_zal

DELETE ALL

PACK

SELECT pomeshenie_naznach

GO 1

SELECT pomeshenie

FOR i=1 TO 2000

APPEND BLANK

replace pomeshenie.num_pWITH i

SELECT pomeshenie_naznach

IF NOT EOF()

replace pomeshenie.naznachWITH naznach

SKIP

ELSE

SKIP -(RECNO())

replace pomeshenie.naznachWITH naznach

SKIP

ENDIF

*******************

IF ALLTRIM(pomeshenie.naznach)=«Спортивный зал»

SELECT zal

APPEND BLANK

replace num_p WITHpomeshenie.num_p

SELECT type_zal

IF NOT EOF()

replace zal.type_zal WITHtype_zal

SKIP

ELSE

SKIP -(RECNO())

replace zal.type_zal WITHtype_zal

SKIP

ENDIF

ENDIF

**************

SELECT pomeshenie

ENDFOR

SELECT invnum_inv

GO 1

DO WHILE NOT EOF()

SELECT inv_in_zal

APPEND blank

replace inv_number WITHinvnum_inv.inv_number

SELECT invnum_inv

SKIP

SELECT zal

IF NOT EOF()

replace inv_in_zal.num_pWITH num_p

SKIP

ELSE

SKIP -(RECNO())

replace inv_in_zal.num_pWITH num_p

SKIP

ENDIF

SELECT datevidachi_table

IF NOT EOF()

replace inv_in_zal.dateWITH date_v

SKIP

ELSE

SKIP -(RECNO())

replace inv_in_zal.dateWITH date_v

SKIP

ENDIF

SELECT invnum _ inv

ENDDO

В3. Заполнение таблиц «Общаяинформация и игроки»

IF NOT USED([Person])

USE Person IN 0

ENDIF

IF NOT USED([fam_table])

USE fam_table IN 0

ENDIF

IF NOT USED([im_table])

USE im_table IN 0

ENDIF

IF NOT USED([otch_table])

USE otch_table IN 0

ENDIF

IF NOTUSED([datevidachi_table])

USE datevidachi_table IN 0

ENDIF

IF NOT USED([dateborn])

USE dateborn IN 0

ENDIF

IF NOT USED([Country])

USE Country IN 0

ENDIF

IF NOT used([street])

USE street IN 0

ENDIF

SELECT Person

*GO 1

FOR i=1000 TO 1010

FOR j=100000 TO 100010

APPEND BLANK

replace sp WITH i

replace np WITH j

replace numstreet WITHi-990

replace numflat WITHj-99990

SELECT Fam_table

IF EOF()

SKIP -(RECNO())

replace Person.fam WITHfam

SKIP

ELSE

replace Person.fam WITHfam

SKIP

ENDIF

SELECT Im_table

IF EOF()

SKIP -(RECNO())

replace Person.im WITH im

skip

ELSE

replace Person.im WITH im

SKIP

ENDIF

SELECT Otch_table

IF EOF()

SKIP -(RECNO())

replace Person.otch WITHotch

skip

ELSE

replace Person.otch WITHotch

SKIP

ENDIF

SELECT Datevidachi_table

IF EOF()

SKIP -(RECNO())

replace Person.datevidachiWITH date_v

skip

ELSE

replace Person.datevidachiWITH date_v

SKIP

ENDIF

SELECT Country

IF EOF()

SKIP -(RECNO())

replace Person.countryWITH country

replace Person.city WITHcity

ELSE

replace Person.countryWITH country

replace Person.city WITHcity

SKIP

ENDIF

SELECT Street

IF EOF()

SKIP -(RECNO())

replace Person.Street WITHStreet

ELSE

replace Person.Street WITHStreet

SKIP

ENDIF

SELECT Dateborn

IF EOF()

SKIP -(RECNO())

replace Person.datebornWITH date_b

skip

ELSE

replace Person.datebornWITH date_b

SKIP

ENDIF

SELECT Person

ENDFOR

ENDFOR

browse

еще рефераты
Еще работы по информатике, программированию