Главная Рефераты по сексологии Рефераты по информатике программированию Рефераты по биологии Рефераты по экономике Рефераты по москвоведению Рефераты по экологии Краткое содержание произведений Рефераты по физкультуре и спорту Топики по английскому языку Рефераты по математике Рефераты по музыке Остальные рефераты Рефераты по авиации и космонавтике Рефераты по административному праву Рефераты по безопасности жизнедеятельности Рефераты по арбитражному процессу Рефераты по архитектуре Рефераты по астрономии Рефераты по банковскому делу Рефераты по биржевому делу Рефераты по ботанике и сельскому хозяйству Рефераты по бухгалтерскому учету и аудиту Рефераты по валютным отношениям Рефераты по ветеринарии Рефераты для военной кафедры Рефераты по географии Рефераты по геодезии Рефераты по геологии Рефераты по геополитике Рефераты по государству и праву Рефераты по гражданскому праву и процессу Рефераты по делопроизводству Рефераты по кредитованию Рефераты по естествознанию Рефераты по истории техники Рефераты по журналистике Рефераты по зоологии Рефераты по инвестициям Рефераты по информатике Исторические личности Рефераты по кибернетике Рефераты по коммуникации и связи |
Дипломная работа: База данный "Хозяйственный учет футбольного клуба"Дипломная работа: База данный "Хозяйственный учет футбольного клуба"Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования ‹‹Курский государственный технический университет›› Кафедра программного обеспечения вычислительной техники КУРСОВАЯ РАБОТА по дисциплине ‹‹Базы данных›› на тему ‹‹Хозяйственный учет футбольного клуба›› Специальность 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 target setting. Object of development is design of the database according to specified variant. The aim of work is design of the database, describing « the Economic account of football club ». It is necessary to make ER-diagram, to minimize functional dependences, to write and minimize SQL queries. Определения В данной работе применены следующие термины с соответствующими определениями: база данных: Файлы, снабженные описанием хранимых в них данных и находящиеся под управлением СУБД. 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.2 Словарь понятий и терминовСловарь понятий и терминов приведен в таблицах 2.1 – 2.12. Таблица 2.1 - Общая информация
Таблица 2.2 Игроки
Таблица 2.3 Помещение
Таблица 2.4 - Комната
Таблица 2.5 Спортивный зал
Таблица 2.6 Поступление объектов
Таблица 2.7 Спортивный инвентарь
Таблица 2.8 Техника
Таблица 2.9 Мебель
Таблица 2.10– Мяч
Таблица 2.11 Футбольные ворота
Таблица 2.12 Тренажер
Таблица 2.13 Телевизор
Таблица 2.14 Холодильник
Таблица 2.15 Пылесос
Таблица 2.16 Кровать
Таблица 2.17 – Шкаф
Таблица 2.18 – Стол
Таблица 2.19 Размещение спортивного инвентаря по залам
Таблица 2.20 Расселение людей по комнатам
Таблица 2.21 Инвентарные номера спортивного инвентаря
Таблица 2.22 Инвентарные номера техники
Таблица 2.23 Инвентарные номера мебели
Таблица 2.24 Списанный спортивный инвентарь
Таблица 2.25 Списанная техника
Таблица 2.26 Списанная мебель
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.
Рисунок 2.3 - Исходное множество функционаьных зависимостей В ходе построения неизбыточнго покрытия множество функциональных зависимостей не изменилось. 2.4.2 Построение леворедуцированного покрытияВ ходе построения леворедуцированного покрытия множество функциональных зависимостей не изменилось. 2.4.3 Построение праворедуцированного покрытияВ ходе построения праворедуцированного покрытия множество функциональных зависимостей не изменилось. 2.4.4 Построение классов эквивалентностиЭтапы построения классов эквивалентности представлены на рисунке 2.8.
Рисунок 2.4 - Этапы построения классов эквивалентности 2.4.5 Построение минимального покрытия на основе прямой функциональной определяемостиЭтапы построения минимального покрытия на основе прямой функциональной определяемости представлены на рисунке 2.5.
Рисунок 2.5 - Этапы построения минимального покрытия на основе прямой функциональной определяемости Редуцированное минимальное покрытие представлено на рисунке 2.6
Рисунок 2.6 - Редуцированное минимальное покрытие 2.4.6 Построение редуцированного минимального кольцевого покрытияОпределение CF-зависимостей по классам эквивалентности. Построение кольцевого покрытия Минимальное кольцевое покрытие представлено на рисунке 2.7
Рисунок 2.7 - Минимальное кольцевое покрытие Получение кольцевого минимального редуцированного покрытия Естественное характеристическое множество для кольцевого покрытия представлено на рисунке 2.8.
Рисунок 2.8 - Естественное характеристическое множество для кольцевого покрытия Минимальное редуцированное кольцевое покрытие представлено на рисунке 2.9.
Рисунок 2.9 - Минимальное редуцированное кольцевое покрытие Естественное характеристическое множество представлено на рисунке 2.10.
Рисунок 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.
Рисунок 2.19 Текст минимизированного первого запроса Минимизированное операционное дерево для первого запроса представлено на рисунке 2.20.
Рисунок 2.20 - Операционное дерево для минимизированного первого запроса Оценка стоимости минимизированного запроса представлена на рисунке 2.21. Рисунок 2.21- Оценка стоимости минимизированного первого запроса 2.6.2 Построение второго запроса Словесная формулировка запроса следующая: «Вывести номера спортивных залов, в которых хранится инвентарь, принадлежащий обеим партиям: 522715, 413998». Текст запроса на языке SQL представлен на рисунке 2.22.
Рисунок 2.22 - Текст запроса на языке SQL Операционное дерево для второго запроса представлено на рисунке 2.23. Рисунок 2.23 - Операционное дерево для второго запроса 3 Рабочий проект 3.1 Структура проекта 3.1.1 Связь таблиц Схема связей таблиц представлена на рисунке 3.1 Рисунок 3.1– Схема связей таблиц 3.1.2 Перечень форм Формы, входящие в состав проекта приведенны в таблице 3.1. Таблица 3.1 Перечень форм
3.2 Описание формы На рисунке 3.2. изображена форма «Инвентарные номера инвентаря» Command
Рисунок 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 кнопок «След.» и «Пред.» * Next IF NOT EOF() SKIP IF EOF() GO BOTTOM Е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 IF thisform.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 NOT USED([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_obj INTO Inventar SET SKIP TO Inventar DO FORM "c:\documents and 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 ) = 6DELETE NEXT 1 BLANK SET DELETED ON GO TOP THISFORM.Refresh ENDIF А.7 Код, связанный с событием Click кнопки «Просмотр» IF NOT USED([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 NOT USED([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 IF thisform.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 IF thisform.ch_date_arrival.Value= 1 out_fields = out_fields +", arrival_object.date" ENDIF IF thisform.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 IF thisform.ch_inv_number.Value = 1 out_fields = out_fields +", invnum_inv.inv_number" ENDIF IF thisform.container2.ch_height_gate.Value = 1 out_fields = out_fields +", gate.height_gate" ENDIF IF thisform.container2.ch_kind_gate.Value = 1 out_fields = out_fields +", gate.kind" ENDIF IF thisform.container2.Ch_shirina_gate.Value = 1 out_fields = out_fields +", gate.shirina" ENDIF IF ALLTRIM(thisform.txt_code_obj.Value) == "" ELSE str = str +" AND "+ "((ALLTRIM(gate.code_obj))=ALLTRIM(thisform.txt_code_obj.Value))" ENDIF IF ALLTRIM(thisform.txt_date_arrival.Value) == "" ELSE str = str +" AND "+ "((ALLTRIM(DTOC(arrival_object.date)))=ALLTRIM(thisform.txt_date_arrival.Value))" ENDIF IF ALLTRIM(thisform.txt_balance.Value) == "" ELSE str = str +" AND "+ "((ALLTRIM(STR(arrival_object.balance)))=ALLTRIM(thisform.txt_balance.Value))" ENDIF IF ALLTRIM(thisform.txt_kol.Value) == "" ELSE str = str +" AND "+ ((ALLTRIM(STR(arrival_object.kol)))=ALLTRIM(thisform.txt_kol.Value)) ENDIF IF ALLTRIM(thisform.txt_firm.Value )== "" ELSE str = str +" AND "+ ((ALLTRIM(inventar.firm))=ALLTRIM(thisform.txt_firm.Value)) ENDIF IF ALLTRIM(thisform.txt_model.Value) == "" ELSE str = str +" AND "+ "((ALLTRIM(inventar.model))=ALLTRIM(thisform.txt_model.Value))" ENDIF IF ALLTRIM(thisform.container2.txt_kind_gate.Value) == "" ELSE str = str +" AND "+ "((ALLTRIM(gate.kind))=ALLTRIM(thisform.container2.txt_kind_gate.Value))" ENDIF IF ALLTRIM(thisform.container2.txt_height_gate.Value) == "" ELSE str = str +" AND "+ "((ALLTRIM(STR(gate.height_gate))) =thisform.container2.txt_height_gate.Value)" ENDIF IF ALLTRIM(thisform.container2.txt_shirina_gate.Value)== "" ELSE str = str +" AND "+ "((ALLTRIM(STR(gate.shirina)))= =ALLTRIM(thisform.container2.txt_shirina_gate.Value))" ENDIF IF out_fields="NULL" out_fields ="*" ENDIF SELECT &out_fields; FROM(((gate INNER JOIN inventar ON ALLTRIM(inventar.code_obj)==ALLTRIM(gate.code_obj)); INNER JOIN arrival_object ON 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 TABLE My_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 IF thisform.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 IF thisform.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 IF thisform.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 IF thisform.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 IF thisform.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 IF thisform.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 = "Arial Cyr" 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 IF thisform.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 IF thisform.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 IF thisform.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 IF thisform.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 IF thisform.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 IF thisform.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 = "Arial Cyr" Size = 10 ENDWITH HorizontalAlignment = 3 ENDWITH ENDWITH ENDIF With objExcel.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 NOT USED([Arrival_object]) USE Arrival_object IN 0 ENDIF IF NOT USED([inventar]) USE inventar IN 0 ENDIF IF NOT USED([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 NOT USED([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 NOT USED([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 NOT USED([shir_and_height_gate]) USE shir_and_height_gate IN 0 ENDIF IF NOT USED([trenager]) USE trenager IN 0 ENDIF IF NOT USED([TV]) USE TV IN 0 ENDIF IF NOT USED([refrigerator]) USE refrigerator IN 0 ENDIF IF NOT USED([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 WITH ALLTRIM(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() replace arrival_object.date WITH date_v SKIP ELSE SKIP -(RECNO()) replace arrival_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 WITH arrival_object.code_obj kol = arrival_object.kol SELECT invnum_inv DO WHILE (kol!=0) APPEND BLANK replace inv_number WITH STR(j) replace code_obj WITH arrival_object.code_obj j=j+1 kol=kol-1 ENDDO SELECT firm_inv IF NOT EOF() replace inventar.firm WITH firm_inv SKIP ELSE GO 1 replace inventar.firm WITH firm_inv SKIP ENDIF SELECT techno_model IF NOT EOF() replace inventar.model WITH model SKIP ELSE GO 1 replace inventar.model WITH model SKIP ENDIF ******** SELECT Arrival_object SKIP IF NOT EOF() SELECT Techno APPEND BLANK replace code_obj WITH arrival_object.code_obj SELECT firm_techno IF NOT EOF() replace Techno.firm_marka WITH firm_marka SKIP ELSE GO 1 replace Techno.firm_marka WITH firm_marka SKIP ENDIF SELECT techno_model IF NOT EOF() replace Techno.model WITH model SKIP ELSE GO 1 replace Techno.model WITH model SKIP ENDIF ********* SELECT Arrival_object SKIP IF NOT EOF() SELECT Mebel APPEND BLANK replace code_obj WITH arrival_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 WITH inventar.code_obj ******** SELECT inventar SKIP IF NOT EOF() SELECT gate APPEND BLANK replace code_obj WITH inventar.code_obj SELECT kind_gate IF NOT EOF() replace gate.kind WITH kind_gate SKIP ELSE GO 1 replace gate.kind WITH kind_gate SKIP ENDIF SELECT shir_and_height_gate IF NOT EOF() replace gate.height_gate WITH height replace gate.shirina WITH shirina SKIP ELSE GO 1 replace gate.height_gate WITH height replace gate.shirina WITH shirina SKIP ENDIF ********* SELECT inventar SKIP IF NOT EOF() SELECT trenager APPEND BLANK replace code_obj WITH inventar.code_obj SELECT inventar SKIP ENDIF ENDIF ENDDO &&заполнение таблиц "Техника" SELECT techno GO 1 DO WHILE NOT EOF() SELECT TV APPEND BLANK replace code_obj WITH techno.code_obj ******** SELECT techno SKIP IF NOT EOF() SELECT refrigerator APPEND BLANK replace code_obj WITH techno.code_obj ********* SELECT Techno SKIP IF NOT EOF() SELECT vacuum_cleaner APPEND BLANK replace code_obj WITH techno.code_obj ******** SELECT techno SKIP ENDIF ENDIF ENDDO &&заполнение таблиц "Мебель" SELECT Mebel GO 1 DO WHILE NOT EOF() SELECT bed APPEND BLANK replace code_obj WITH Mebel.code_obj ******** SELECT Mebel SKIP IF NOT EOF() SELECT shkaf APPEND BLANK replace code_obj WITH mebel.code_obj ********* SELECT Mebel SKIP IF NOT EOF() SELECT table APPEND BLANK replace code_obj WITH mebel.code_obj ******** SELECT Mebel SKIP IF NOT EOF() SELECT tumbochka APPEND BLANK replace code_obj WITH mebel.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 WITH invnum_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 NOT USED([pomeshenie_naznach]) USE pomeshenie_naznach IN 0 ENDIF IF NOT USED([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_p WITH i SELECT pomeshenie_naznach IF NOT EOF() replace pomeshenie.naznach WITH naznach SKIP ELSE SKIP -(RECNO()) replace pomeshenie.naznach WITH naznach SKIP ENDIF ******************* IF ALLTRIM(pomeshenie.naznach)="Спортивный зал" SELECT zal APPEND BLANK replace num_p WITH pomeshenie.num_p SELECT type_zal IF NOT EOF() replace zal.type_zal WITH type_zal SKIP ELSE SKIP -(RECNO()) replace zal.type_zal WITH type_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 WITH invnum_inv.inv_number SELECT invnum_inv SKIP SELECT zal IF NOT EOF() replace inv_in_zal.num_p WITH num_p SKIP ELSE SKIP -(RECNO()) replace inv_in_zal.num_p WITH num_p SKIP ENDIF SELECT datevidachi_table IF NOT EOF() replace inv_in_zal.date WITH date_v SKIP ELSE SKIP -(RECNO()) replace inv_in_zal.date WITH 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 NOT USED([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 WITH i-990 replace numflat WITH j-99990 SELECT Fam_table IF EOF() SKIP -(RECNO()) replace Person.fam WITH fam SKIP ELSE replace Person.fam WITH fam 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 WITH otch skip ELSE replace Person.otch WITH otch SKIP ENDIF SELECT Datevidachi_table IF EOF() SKIP -(RECNO()) replace Person.datevidachi WITH date_v skip ELSE replace Person.datevidachi WITH date_v SKIP ENDIF SELECT Country IF EOF() SKIP -(RECNO()) replace Person.country WITH country replace Person.city WITH city ELSE replace Person.country WITH country replace Person.city WITH city SKIP ENDIF SELECT Street IF EOF() SKIP -(RECNO()) replace Person.Street WITH Street ELSE replace Person.Street WITH Street SKIP ENDIF SELECT Dateborn IF EOF() SKIP -(RECNO()) replace Person.dateborn WITH date_b skip ELSE replace Person.dateborn WITH date_b SKIP ENDIF SELECT Person ENDFOR ENDFOR browse |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||