Дипломная работа. Автоматизированная информационная система баскетбольного клуба

0

ДИПЛОМНАЯ  РАБОТА

на тему:

АВТОМАТИЗИРОВАННАЯ ИНФОРМАЦИОННАЯ СИСТЕМА «БАСКЕТБОЛЬНОГО КЛУБА «НЕФТЯНИК»

 

 

 

Аннотация

Пояснительная записка содержит 100 страниц, в том числе 65 рисунков, 28 таблиц, 31 источник, 2 приложения.

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

The summary

The explanatory note contains 100 pages, including 65 drawing, 28 tables, 31 source, 2 appendices.

In the given explanatory note working out of the automated information system for basketball club «Neftyanik» is described. The explanatory note contains the description of all stages of working out of a software. It includes the analysis of data of a subject domain, and in particular the scheme of information streams of subjects of automation, the mathematical model intended for delivery of recommendations by definition of the basic structure of players of a command on a forthcoming match according to chosen criteria. Also it contains the description of architecture of a software, a functional purpose, designing and database working out, algorithm of a software and testing, the detailed description on the software operation, an including management of the system programmer and a management of users.

 

Введение.......7

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

1.1    Анализ информационных процессов баскетбольного клуба «Нефтяник».......8

1.1.1    Назначение и организационно-штатная структура клуба..........8

1.1.2    Формирование схемы информационных потоков................10

1.2    Анализ существующих аналогов программных средств.............12

1.3    Выбор математического аппарата, определения основного состава из игроков

команды на предстоящий матч............14

1.4    Постановка задачи на разработку автоматизированной информационной

системы.............17

1.4.1    Введение.................17

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

1.4.3    Назначение..................18

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

Выводы по разделу..............19

2    Разработка автоматизированной информационной системы баскетбольного

клуба «Нефтяник»..................20

2.1    Разработка архитектуры программного средства..................20

2.2    Обзор и обоснование выбора инструментальных средств..........25

2.2.1    Выбор инструментального средства разработки программного средства... 25

2.2.2    Выбор системы управления базой данных..........................29

2.3 Разработка базы данных.....................33

2.3.1    Внешний уровень базы данных.................33

2.3.2    Концептуальный уровень базы данных............41

2.3.3    Физическая модель базы данных......................45

2.4    Разработка программного обеспечения системы........52

2.5    Тестирование компонентов системы...............55

Выводы по разделу................................59

3    Технологический раздел.............................60

3.1    Руководство системного программиста.................60

3.1.1    Назначение и условия применения автоматизированной информационной

системы.............60

3.1.2    Характеристика программной системы.................60

3.1.3    Обращение к программной системе.................61

3.1.4    Входные и выходные данные................63

3.1.5    Сообщения программисту................64

3.2 Руководство программиста...........64

3.2.1    Назначение программной системы................64

3.2.2    Условия выполнения программной системы..............64

3.2.3    Выполнение программной системы.............64

3.3    Руководство тренера.................81

3.3.1 Назначение программной системы..............81

3.3.2    Условия выполнения программной системы.............82

3.3.3    Выполнение программной системы........................82

3.4 Руководство юриста.......................95

3.4.1    Назначение программной системы....................95

3.4.2    Условия выполнения программной системы.............96

3.4.3    Выполнение программной системы................96

Выводы по разделу......................99

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

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

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

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

 

Введение

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

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

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

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

Для разработки программного средства необходимо решить задачи синтеза и анализа. К задачам анализа относятся:

-    анализ предметной области;

-    анализ аналогов программных системы;

-    выбор средств проектирования базы данных;

-    выбор средств проектирования программного средства;

-    выбор математического аппарата определения основного состава игроков на основании данных предыдущих игр команды.

К задачам синтеза относятся:

-    проектирование и создание базы данных;

-    разработка архитектуры программного средства;

-    реализация алгоритмов программного средства;

-    реализация целостности и безопасности данных;

-    отладка и тестирование программного средства;

-    разработка сопровождающей документации.

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

1 Анализ предметной области

1.1    Анализ информационных процессов баскетбольного клуба «Нефтяник»

1.1.1    Назначение и организационно-штатная структура клуба

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

Москваская городская общественная организация «Баскетбольный клуб «Нефтяник», является добровольным общественным объединением, созданным в результате свободного волеизъявления граждан, объединившихся на основе общности интересов к игре баскетбол. Целями создания и деятельности клуба является: пропаганда и развитие баскетбола, формирование здорового образа жизни и воспитание патриотизма граждан. Задачами клуба являются: подготовка спортсменов высокого класса, способных достойно выступать в российских и международных соревнованиях, организация зрелищных спортивно-массовых мероприятий и участие в них, как в России, так и за рубежом, подготовка спортсменов олимпийского резерва и судей [2].

Организационно-штатная структура Москваской городской общественной организации «Баскетбольный клуб «Нефтяник» представлена на рисунке 1.1.

 

Дипломная работа. Автоматизированная информационная система баскетбольного клуба

 Рисунок 1.1 - Организационная структура  «Баскетбольный клуб «Нефтяник»

 

 

Директор  «Баскетбольный клуб «Нефтяник» осуществляет руководство клубом, женскими командами мастеров и дублирующего состава в

соответствии с Уставом Клуба и Законодательством РФ. Взаимодействует и сотрудничает с органами местного самоуправления, предприятиями, организациями и общественностью. Проводит на высоком профессиональном уровне учебно-тренировочные занятия, сборы, официальные и товарищеские игры, другие спортивные мероприятия, с подробными разборами и анализами для спортсменов-инструкторов. Определяет должностные обязанности, подписывает договора (контракты), назначает и увольняет работников клуба в установленном порядке согласно Трудовому Кодексу РФ и Устава Клуба. Требует от спортсменов повышения своего спортивно-профессионального мастерства и бережного отношения к имуществу клуба. Основной задачей директора (главного тренера) является: достижение высоких результатов баскетбольной команды мастеров и дублирующего состава в соревнованиях Чемпионата России (Суперлиги) и Первенства России соответственно, а также развитие баскетбола в Москваской области.

Исполнительный директор отвечает за то же что и Директор Клуба, в его отсутствие.

Главный тренер осуществляет правильный и качественный подбор и комплектование команды мастеров, отбирая в нее профессиональных и перспективных, подготовленных спортсменов-инструкторов, определяет основной состав для участия в официальных и товарищеских играх, выносит эти вопросы на обсуждение с директором. Участвует в составлении контрактов «Игрок-клуб» Своевременно, совместно с врачом команды осуществляет контроль за прохождением спортсменами медицинского осмотра, следит за состоянием их здоровья, принимает все меры по упреждению травм и несчастных случаев во время проведения тренировок, сборов, и других спортивных мероприятиях.

Бухгалтерия осуществляет:

-    регистрацию входящих счетов;

-    операции по приему и выписке счетов-фактур в строгом соответствии с установленными нормативными документами, правилами, вести журналы их регистрации;

-    подготовку соответствующих документов по встречным проверкам налоговых органов;

-    оперативную работу с предприятиями по выверке расчетов;

-    выписку счетов по штрафам за несвоевременную оплату счетов за оказанные предприятиям услуги;

-    регистрацию всей исходящей и входящей в отдел документации;

-    контроль за ведением делопроизводства в отделе согласно утвержденной номенклатуре дел.

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

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

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

Установка, обновление и эксплуатационная поддержка на рабочих станциях программного обеспечения сторонних производителей.

Обслуживание телефонных линий внутреннего пользования и мини АТС и многое другое.

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

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

1.1.2 Формирование схемы информационных потоков

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

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

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

Каждый информационный поток - единичное перемещение информации -имеет следующие признаки:

-    документ (на чем физически содержится информация);

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

-    исполнителя (человека, который эту информацию передает);

-    периодичность (частота передачи: ежемесячно, ежеквартально,

ежедневно).

В организациях выделяют два уровня детализации информационных потоков:

-    на уровне предприятия детализация производится до уровня цеха (подразделения), т.е. информация передается между цехами и службами предприятия;

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

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

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

 

 

Дипломная работа. Автоматизированная информационная система баскетбольного клуба

 Рисунок 1.2 - Схема информационных потоков  «Баскетбольный клуб «Нефтяник»

 

 

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

1.2 Анализ существующих аналогов программных средств

В баскетбольном клубе «Нефтяник» в настоящее время существует два аналога предполагаемой разрабатываемой автоматизированной информационной системы для ведения информации о результатах игр, выведения их статистики InfoBasket Match [3], и Game Checklist [4]. Программые модули для ведения статистики баскетбольных матчей.

 

Дипломная работа. Автоматизированная информационная система баскетбольного клуба

 Рисунок 1.4 - Экранная заставка программы Game Checklist.

 

 

 

В таблице 1.1 приведено сравнение этих двух программных продуктов в виде рассмотрения достоинств и недостатков рассматриваемых аналогов.

 

Таблица 1. 1 Достоинства и недостатки рассматриваемых аналогов

 

Программное средство «InfoBasket Match»

Программное средство «Game Checklist»

1

2

3

Достоинства

-использует небольшое пространство на «жестком» диске.

-есть доступ к БД;

- можно получить отчет по всем играм и о любом игроке; -простота в использовании; -язык интерфейса можно менять на русский и английский язык

-многопользовательская, возможность использования в локальной сети;

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

-данные обновляются оперативно быстро.

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

1

2

3

Недостатки

-не обновляется с момента ввода в эксплуатацию;

-мало отчетов можно получать; - системные требования устаревшие;

-база данных обновляется раз в неделю;

-можно посмотреть только общую статистику команды.

-сложность установки и настройки;

-сложность освоения;

-сложна в использовании; -неудобный интерфейс (устаревший);

-не предусмотрен русский язык.

 

С течением времени меняются требования (регламенты, постановления, положения и др.) и запросы к обрабатываемой информации, поэтому при разработке будут учтены современные требования.

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

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

1.3 Выбор математического аппарата, определения основного состава из игроков команды на предстоящий матч

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

Кластерный анализ - это совокупность методов многомерной классификации, целью которой является образование групп (кластеров) схожих между собой объектов. В отличие от традиционных группировок, рассматриваемых в общей теории статистики, кластерный анализ приводит к разбиению на группы с учетом всех группировочных признаков одновременно. Например, если наблюдаемый объект характеризуется двумя признаками X и Х2, то при использовании методов кластерного анализа оба эти признака учитываются одновременно при отнесении наблюдения в ту или иную группу [5].

Методы кластерного анализа позволяют решать следующие задачи:

- проведение классификации объектов с учетом признаков, отражающих сущность, саму природу объектов;

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

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

Все методы кластерного анализа можно разделить на две группы: иерархические методы (агломеративные и дивизимные) и итеративные (метод к -средних, метод поиска сгущений и т.д.).

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

X1, X2, ... Xn - совокупность объектов наблюдения; X = (Xn,Xi2,...,Xim) -

i-е наблюдение в m-мерном пространстве признаков (i = 1, 2, ..., n); dki -расстояние между к-м и l-м объектами; ziJ- - нормированные значения исходных переменных; D - матрица расстояний между объектами.

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

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

Дипломная работа. Автоматизированная информационная система баскетбольного клуба

 f - вес, приписываемый l-й переменной.

Если алгоритм кластеризации основан на измерении сходства между переменными, то в качестве мер сходства могут быть использованы:

-    линейные коэффициенты корреляции;

-    коэффициенты ранговой корреляции;

-    коэффициенты контингенции и т.д.

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

Из всех методов кластерного анализа наиболее распространенными является иерархические агломеративные методы. Сущность этих методов заключается в том, что на первом шаге каждый объект выборки рассматривается как отдельный кластер. Процесс объединения кластеров происходит последовательно: на основании матрицы расстояний или матрицы сходства объединяются наиболее близкие объекты. Если матрица расстояний первоначально имеет размерность m*m, то полностью процесс объединения завершается за m - 1 шагов. В итоге все объекты будут объединены в один кластер.

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

Метод ближнего соседа или одиночная связь, здесь расстояние между двумя кластерами определяется расстоянием между двумя наиболее близкими объектами (ближайшими соседями) в различных кластерах. Этот метод позволяет выделять кластеры сколь угодно сложной формы при условии, что различные части таких кластеров соединены цепочками близких друг к другу элементов. В результате работы этого метода кластеры представляются длинными «цепочками» или «волокнистыми» кластерами, «сцепленными вместе» только отдельными элементами, которые случайно оказались ближе остальных друг к другу.

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

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

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

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

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

Существуют несколько способов выбора радиуса сферы. Если dlk -расстояние между l-м и к-м объектами, то в качестве нижней границы радиуса RH выбирают RH = min{d(Xl,Xk)}, а верхняя граница радиуса R может быть

определена как R = max{d (X,, X,)}.

Если начинать работу алгоритма с величины R = min d(Xl, Xk) + S и при

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

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

1.4 Постановка задачи на разработку автоматизированной информационной системы

1.4.1 Введение

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

Также система должна использоваться для хранения, обработки и анализа данных.

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

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

Создание автоматизированной системы позволит обеспечить:

-    повышение оперативности в работе за счет внедрения прогрессивных технологий, современного программного и технического обеспечения;

-    повышение оперативности получения отчетной информации для анализа;

-    повышение информативности Системы для принятия конструктивных управленческих решений тренерами команды.

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

Система разрабатывается на основании приказа директора института на выпускную квалификационную работу по направлению бакалавра

1.4.3    Назначение

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

Пользователями программной системы являются программист, тренер и

юрист.

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

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

-    ввод новой информации в БД;

-    изменение существующей информации в БД;

-    просмотр информации в БД;

-    вывод информации по запросам пользователя;

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

Требования к надежности

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

Обеспечить целостность информации, хранящейся в типизированном

файле.

Обеспечить корректное завершение вычислений.

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

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

-    компьютер на базе процессора Intel или AMD с частотой > 866 ГГ ц;

-    оперативная память не менее 128Мб;

-    свободная память на жестком диске не менее 50Мб;

-    видеопамять не менее 16Мб;

-    монитор;

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

-    мышь.

Требования к информационной и программной совместимости

Для работы необходим персональный ЭВМ, который использует архитектуру Intel или AMD; Операционную систему семейства Windows.

Требования к программной документации

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

Выводы по разделу

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

2 Разработка автоматизированной информационной системы баскетбольного клуба «Нефтяник»

2.1 Разработка архитектуры программного средства

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

 Рисунок 2.1 - Функциональная схема системы

 

 

Дипломная работа. Автоматизированная информационная система баскетбольного клуба

Рисунок 2.1 (Продолжение), Лист 20

 

 

 

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

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

-    создание структуры данных, четко отражающих специфику предметной области;

-    моделирование реально существующих процессов;

-    обеспечение оптимальности структур данных;

-    разделение и группировка функций программного средства по подзадачам;

-    обеспечение максимальной надежности программного средства;

-    обеспечение функциональной полноты в соответствии с постановкой

задачи;

-    минимизация информационных потоков внутри системы, что позволяет сократить время обработки информации;

-    обеспечение наглядности моделируемых процессов путем визуализации.

Так же в разрабатываемое программное средство в качестве основного

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

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

Были рассмотрены следующие концепции программирования -процедурная и объектно-ориентированная. В первом случае при создании программ основной акцент ложится на процедуры и наилучшие алгоритмы их реализации, при этом структура данных отходит на второй план. Однако мы конструируем достаточно сложную программную систему, поэтому нуждаемся в действенных способах контроля правильности использования данных, в результате в качестве основной была выбрана концепция объектноориентированного программирования. Объектно-ориентированное программирование - это такой подход, руководящей идеей которого является стремление связать данные с обрабатывающими эти данные процедурами в единое целое - объект. Характерной чертой объектов является инкапсуляция (объединение) данных и алгоритмов их обработки, в результате чего и данные, и процедуры во многом теряют самостоятельно значение. Таким образом, основной акцент делается на смысловую связь данных с обрабатывающими их процедурами. Это позволяет придать объектам особое свойство максимальной независимости от остальных частей программы.

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

Все модули объединены в соответствии с иерархической схемой модулей программного средства, изображенной на рисунке 2.2.

 

Дипломная работа. Автоматизированная информационная система баскетбольного клуба

 Рисунок 2.2 - Иерархическая схема модулей программного средства

 

 

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

Модуль AV в этом модуле происходит авторизация пользователя, если авторизация прошла успешно модуль запускает модуль MENU;

Модуль MENU основной модуль программной системы с него осуществляется связь с остальными модулями программного средства;

Модуль ED вызывается с модуля MENU для добавления, изменения и удаления данных о единицах измерения. После своей работы модуль ED передает управление модулю MENU;

Модуль POST вызывается с модуля MENU для добавления, изменения и удаления данных о должностях имеющихся в организации. После своей работы модуль POST передает управление модулю MENU;

Модуль PAR вызывается с модуля MENU для добавления, изменения и удаления данных о параметрах игроков. После своей работы модуль PAR передает управление модулю MENU;

Модуль CONTRI вызывается с модуля MENU для добавления, изменения и удаления данных о стране. После своей работы модуль CONTRI передает управление модулю MENU;

Модуль TIP_EXIT вызывается с модуля MENU для добавления, изменения и удаления данных о типе выхода игрока из команды. После своей работы модуль TIP_EXIT передает управление модулю MENU;

Модуль AMMPL вызывается с модуля MENU для добавления, изменения и удаления данных о амплуа. После своей работы модуль AMMPL передает управление модулю MENU;

Модуль GROUPP вызывается с модуля MENU для добавления, изменения и удаления данных о группе. После своей работы модуль GROUPP передает управление модулю MENU;

Модуль SETI вызывается с модуля MENU для добавления, изменения и удаления данных о городе. После своей работы модуль SETI передает управление модулю MENU;

Модуль BROSKI вызывается с модуля MENU для добавления, изменения и удаления данных о бросках. После своей работы модуль BROSKI передает управление модулю MENU;

Модуль TIP_POD вызывается с модуля MENU для добавления, изменения и удаления данных о типе подбора. После своей работы модуль TIP_POD передает управление модулю MENU;

Модуль COMANDA вызывается с модуля MENU для добавления, изменения и удаления данных о команде. С модуля COMANDA вызывается модуль STADION. После своей работы модуль COMANDA передает управление модулю MENU;

Модуль STADION вызывается с модуля COMANDA для добавления и удаления данных о стадионе на котором занимается команда. После своей работы модуль STADION передает управление модулю COMANDA;

Модуль IGROC вызывается с модуля MENU для добавления, изменения и удаления данных о игроке. С модуля IGROC вызывается модули LIST_PAR, LIST_AMMPL и TRAVMA. После своей работы модуль IGROC передает управление модулю MENU;

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

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

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

Модуль TRENER вызывается с модуля MENU для добавления, изменения и удаления данных о тренерах команды. С модуля TRENER вызывается модуль DAN. После своей работы модуль TRENER передает управление модулю MENU;

Модуль COTR вызывается с модуля MENU для добавления, изменения и удаления данных о сотрудниках. С модуля COTR вызывается модуль DAN. После своей работы модуль COTR передает управление модулю MENU;

Модуль DAN вызывается с модуля TRENER и COTR для добавления и удаления данных о логине и пароли. После своей работы модуль DAN передает управление модулю TRENER или COTR в зависимости с какого модуля он был вызван;

Модуль CONTRACT вызывается с модуля MENU для добавления, изменения и удаления данных о контрактах подписанных либо с игроками или тренерами команды. После своей работы модуль CONTRACT передает управление модулю MENU;

Модуль TRUD вызывается с модуля MENU для добавления, изменения и удаления данных о трудовом договоре с сотрудником. После своей работы модуль TRUD передает управление модулю MENU;

Модуль PLAY вызывается с модуля MENU для добавления, изменения и удаления данных о игре. С модуля PLAY вызывается модуль SOSTAV. После своей работы модуль PLAY передает управление модулю MENU;

Модуль SOSTAV вызывается с модуля MENU для добавления, изменения и удаления данных о составе команды которая будет играть. С модуля SOSTAV вызывается модули REZ и PODBOR. После своей работы модуль SOSTAV передает управление модулю PLAY;

Модуль REZ вызывается с модуля SOSTAV для добавления и удаления данных о результате игры. После своей работы модуль REZ передает управление модулю SOSTAV;

Модуль PODBOR вызывается с модуля SOSTAV для добавления и удаления данных о подборах. После своей работы модуль PODBOR передает управление модулю SOSTAV;

Модуль METOD вызывается с модуля MENU и реализует алгоритм кластерного анализа игроков команды.

2.2 Обзор и обоснование выбора инструментальных средств

2.2.1 Выбор инструментального средства разработки программного средства

Для создания программного средства необходимо провести анализ наиболее распространенных средств разработки приложений. Сравнительные характеристики средств программирования Visual Studio.NET [6], C++ Builder [7] и Delphi [8] представлены в таблице 2.1.

 

Таблица 2.1 - Сравнительные характеристики средств программирования

Параметры

Visual

Studio.NET

C++ Builder

Delphi

1

2

3

4

Название, версия, фирма

Microsoft

C++ Builder 6

Delphi 7

производитель, ОС

 

Borland

Borland

 

 

Windows

Windows

1

2

3

4

Подход к разработке ПО

Объектно-

Структурный

Структурный

 

ориентированн

ый.

подход. ООП.

подход. ООП.

Механизмы доступа к БД

ADO.NET,

BDE, ADO,

BDE, dbExpress,

 

OLE DB

IBExpress,

dbExpress

IBExpress, ADO

Утилиты для работы с БД

SQL server

Interbase

Database

 

provider,

Console, BDE

Desktop, BDE

 

OLEDB

Administrator,

Administrator,

 

Provider

Database

Desktop

SQL Explorer

Поддержка стандарта языка SQL

+

+

+

Наличие компонент для работы с БД (невизуальные и визуальные компоненты)

+

+

Закладки DataAccess, DataControls, dbExpress, ADO, BDE

Наличие компонент построения отчетов и диаграмм

+

+

+

Поддержка Windows-подобного (оконного) интерфейса

+

+

+

Средства поддержки транзакций (параллельная работа нескольких пользователей с БД);

+

+

+

Простота/ сложность работы с

инструментальным

средством;

Простота

Простота

Простота

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

+

+

+

 

Для реализации программного средства была выбрана система программирования Delphi 7.0.

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

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

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

На стадии проектирования создаются и используются различные файлы. Основной частью программы является проект (в Borland/ Turbo Pascal эта часть называлась собственно программой). Файл, в котором размещается проект, имеет расширение . dpr. Как правило, эта часть, являющаяся собирательной частью всей программы, небольшая и формируется самой Delphi, хотя при необходимости сюда можно вносить свои изменения. Кроме этой части в программе используются различные модули, файлы которых имеют расширение . pas и из которых в программу включаются необходимые элементы. Многие из модулей написаны заранее и могут использоваться в любой программе (стандартные модули), другие формирует разработчик, полностью или частично. Модули, которые формирует разработчик, в свою очередь, можно разделить на модули, содержащие информацию о формах, и модули, не связанные непосредственно с формами (модули разработчика). Последние предназначены для размещения текста программы, связанного непосредственно с решением задачи, для которой она создается, размещения данных и т. д. Их можно рассматривать как модули собственных библиотек.

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

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

пользователя через средства ввода информации (например, через клавиатуру или посредством манипулирования мышью). Эта реакция представляет собой особым образом оформленную информацию - сообщение, которое содержит сведения о виде реакции (например, нажатие клавиши мыши или отпускание клавиши клавиатуры), и информацию, уточняющую эту реакцию (например, какая клавиша мыши нажата). Сообщение через операционную систему Windows передается программе. Программа должна отреагировать на то или иное сообщение событием, которое обработает передаваемую информацию, причем обработать эту информацию могут разные элементы программы: и конкретное окно (форма) этой программы, и та или иная компонента какого-либо окна. Для того чтобы какой-то элемент программы обработал информацию, ему следует написать специальную подпрограмму - обработчик событий, причем таких обработчиков может быть и не один, если элемент должен обрабатывать различные сообщения.

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

Delphi также предоставляет возможности по созданию dll библиотек, которые необходимы при реализации дипломного проекта.

Borland Delphi наравне с C++ Builder занимает одну из лидирующих позиций в рейтинге инструментальных средств создания приложений, так как является довольно мощным продуктом и поддерживает все те же возможности, что и его собрат, кроме того, данные инструментальные средства включают в себя библиотеку классов объектов, реализующих доступ к базам данных по средствам Borland Database Engine (DBE). DBE позволяет получить доступ к наиболее распространенным видам баз данных таких как Paradox, dBase, FoxPro, Access, Clipper, InterBase и так далее.

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

Вышеперечисленные достоинства, повлияли на выбор языка и средства программирования в пользу Borland Delphi. Кроме того, выбор языка программирования обусловлен личными предпочтениями и опытом работы с этой средой. Это в значительной степени снизило время затраченное на разработку программного средства и затраты при его программировании.

2.2.2 Выбор системы управления базой данных

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

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

-    моделирование данных;

-    особенности архитектуры и функциональные возможности;

-    контроль работы системы;

-    особенности разработки приложений;

-    производительность;

-    надежность;

-    требования к рабочей среде;

-    смешанные критерии.

Рассмотрим каждую из этих групп в отдельности.

Моделирование данных. Имеется в виду, поддерживает ли СУБД необходимые типы данных, используемые языки запросов.

Особенности архитектуры и функциональные возможности. Является ли СУБД мобильной, т.е. независимой от среды, в которой она работает, распределенной, т.е. поддерживает ли сетевой обмен данными.

Контроль работы системы. Возможность СУБД управлять использованием оперативной и физической памяти.

Особенности разработки приложений. Учитывается, для каких целей разрабатывается АИС, для использования одним, несколькими или тысячами пользователей, будет ли АИС локализовываться в других странах, с другой языковой поддержкой, будет ли это Web-проект или обычная АИС и т.д.

Производительность. Способна ли СУБД распараллеливать процессы обработки запросов, тем самым, понижая время ответа системы на запросы пользователя, предусмотрена ли возможность оптимизации запросов.

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

Требования к рабочей среде:

-    поддерживаемые аппаратные платформы;

-    минимальные требования к оборудованию;

-    максимальный размер адресуемой памяти;

-    операционные системы, под управлением которых способна работать

СУБД.

Смешанные критерии. Такие как, качество и полнота документации, модель формирования стоимости, стабильность производителя, распространенность СУБД.

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

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

Был проведен анализ нескольких наиболее распространенных СУБД и инструментальных средств. В качестве объектов анализа выбраны следующие СУБД: Microsoft Access 2003 [10], Microsoft SQL Server 2005 [11] и Borland Interbase 7.0 [12]. Результат их сравнения приведен в таблице 2.2.

 

Таблица 2.2 - Сравнительные характеристики СУБД

Название

Microsoft Access 2003

Microsoft SQL Server 2005

Borland Interbase 7.0

1

2

3

4

Используемая ОС

Windows 2000/XP

Windows 98/Me,

Windows

NT/2000/XP,

Windows

NT/2000/2003

Server, Windows

CE

Windows NT/2000/XP, Windows 2003 Server

Linux, Solaris

1

2

3

4

Требования к

аппаратному

обеспечению

233 МГц, 128 МБ ОЗУ, 180 МБ на жестком диске

733 МГц, 192 МБ ОЗУ, 380 МБ на жестком диске

32 МБ ОЗУ, 20 МБ на жестком диске

Поддерживаемые объекты БД

Таблицы, формы, отчеты, макросы, модули

Таблицы,

динамические

таблицы (view),

триггеры,

индексы,

хранимые

процедуры,

пользовательские

процедуры

Таблицы, динамические таблицы (view), триггеры, индексы, хранимые процедуры, пользовательские процедуры, домены

Поддерживаемая модель данных

Реляционная

Реляционная

Реляционная

Формат файлов

*.mdb

*.mdf

b

d

.g

*.

Наличие встроенных средств для разработки прикладных программ для работы с БД

Присутствуют

Нет

Нет

Технология создания БД и объектов

При помощи мастеров и конструкторов, ограниченные возможности создания при помощи SQL

При помощи визуальных средств Enterprise Manager, при помощи запросов SQL

Встроенные

визуальные

средства сильно

ограничены.

Обычно

используют

сторонние

разработки

Возможность создания локальной БД

Есть

Локальный

сервер

Локальный сервер

Поддержка

сервера

Файл-сервер

Клиент-сервер

Клиент-сервер

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

Visual Basic for Application

Нет

Нет

1

2

3

4

Средства поддержки ограничения целостности БД

Первичные ключи, внешние ключи, условия корректности поля

Первичные ключи, внешние ключи, уникальность поля

Первичные ключи, внешние ключи, уникальность поля

Поддержка стандарта SQL

Да (Microsoft Jet SQL)

Да (Transact SQL)

Да (InterBase SQL)

Наличие средств передачи данных во внешние форматы

Экспорт в файлы Microsoft Office

Возможность запросов с результатом в формате XML

Отсутствует

Реализация прав доступа

Защита файла паролем

Политика пользователей, ролей. Как на уровне сервера, так и на уровне

БД

Политика пользователей, ролей на уровне сервера

Наличие средств для резервного копирования и восстановления

Резервное копирование файла БД

Широкие возможности по работе с резервными копиями

Предусмотрена система резервного копирования и восстановления из копии

 

По результатам сравнения приведенных характеристик можно сказать, что MS SQL Server 2005 предоставляет гораздо больше функциональных возможностей при его требованиях к аппаратному обеспечению по сравнению с MS Access и Borland Interbase и в основном он предназначен для больших сетевых БД и для реализации поставленной задачи является, достаточно излишним.

Среди оставшихся сред выбор сделан в пользу Borland Interbase 7.0.1 потому, что среда наиболее приспособлена к работе выбранной средой разработки приложения Delphi 7.0 и достаточно устойчива к повреждениям при ее сопровождении. Также, немалым фактором обусловившим выбор Borland Interbase 7.0.1, оказалась стоимость программного обеспечения.

2.3 Разработка базы данных

2.3.1 Внешний уровень базы данных Иерархия функций, реализуемая системой

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

 Рисунок 2.3 - Иерархия функций

 

Дипломная работа. Автоматизированная информационная система баскетбольного клуба

 Рисунок 2.3 (Продолжение), Лист 33

 

 

 

Пользователи программной системы. Уровни доступа пользователей

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

1    Программист - имеет полный доступ к БД;

2    Конечный пользователь - тренер обладающие правом ввода, просмотра и редактирования данных в 9 таблицах БД;

3    Конечный пользователь - юрист, обладающие правом ввода, просмотра и редактирования данных в 2 таблицах БД;

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

2.3

 

Таблица 2.3 - Уровни доступа к БД пользователей системы

Объекты доступа

Пользователи

Программист

Конечный пользователь - тренер

Конечный пользователь - юрист

1

2

3

4

Т

равма

Код

RID

RID

R

Название

RIUD

RIUD

R

Дата получения

RIUD

RIUD

R

Дата выздоровления

RIUD

RIUD

R

Данные

Код

RID

RID

R

Логин

RIUD

RIUD

R

Пароль

RIUD

RIUD

R

1 2

3

4

Должность

Код

RID

R

R

Название

RIUD

R

R

Страна

Код

RID

R

R

Название

RIUD

R

R

Трудовой договор

Код

RID

R

RID

Номер

RIUD

R

RIUD

Дата

RIUD

R

RIUD

Единица измерения

Код

RID

R

R

Название

RIUD

R

R

Краткое название

RIUD

R

R

Физическое лицо

Код

RID

RID

R

Фамилия

RIUD

RIUD

R

Имя

RIUD

RIUD

R

Отчество

RIUD

RIUD

R

Дата рождения

RIUD

RIUD

R

Параметр

Код

RID

R

R

Названия

RIUD

R

R

Список параметров

Код

RID

RID

R

Значение

RIUD

RIUD

R

Тип подбора

Код

RID

R

R

Название

RIUD

R

R

Список амплуа

Код

RID

RID

R

Дата

RIUD

RIUD

R

Амплуа

Код

RID

R

R

Название

RIUD

R

R

Подбор

Код

RID

RID

R

Значение

RIUD

RIUD

R

Контракт

Код

RID

R

RID

Дата начала

RIUD

R

RIUD

Дата окончания

RIUD

R

RIUD

 

-1гра

Код

RID

RID

R

Дата

RIUD

RIUD

R

Время

RIUD

RIUD

R

1

2

3

4

Забито

RIUD

RIUD

R

Пропущено

RIUD

RIUD

R

Команда

Код

RID

RID

R

Название

RIUD

RIUD

R

Г

а

п

п

у

Код

RID

R

R

Название

RIUD

R

R

Город

Код

RID

R

R

Название

RIUD

R

R

Место игр

Код

RID

RID

R

Название

RIUD

RIUD

R

Вместимость

RIUD

RIUD

R

Состав

Код

RID

RID

R

Тип выхода

Код

RID

R

R

Название

RIUD

R

R

Результат

Код

RID

RID

R

Всего

RIUD

RIUD

R

Зачтено

RIUD

RIUD

R

Б

росок

Код

RID

R

R

Название

RIUD

R

R

 

В таблице 2.3 использованы сокращения операций, производимых с данными:

R - read (чтение);

I - insert (добавление);

U - update (обновление);

D - delete (удаление).

Формализованное описание предметной области

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

Формализованное описание предметной области представлено в виде двух таблиц - таблица 2.4 и таблица 2.5.

 

Таблица 2. 4 - Объекты и свойства

Объект

Свойство

Ключ

Физические

хар-ки

Логические

ограничения

Процессы

Обязательность

значения

1

2

3

4

5

6

Травма

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Название

 

символьный 60

1заглавная,

остальные

прописные

В, Пр, К

непустое

Дата

получения

 

дата

дд.мм.гггг

В, Пр, К

непустое

Дата

выздоровлени

я

 

дата

дд.мм.гггг

В, Пр, К

непустое

Подбор

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Значение

 

целое

<p>>0< p>>0<></p>>0<>

В, Пр, К

непустое

Должность

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Название

 

символьный 40

 

В, Пр, К

непустое

Страна

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Название

 

символьный 40

 

В, Пр, К

непустое

Тип подбора

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Название

 

символьный 40

 

В, Пр, К

непустое

Тип выхода

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Название

 

символьный 40

 

В, Пр, К

непустое

Физическое лицо

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Фамилия

 

символьный 50

1заглавная,

остальные

прописные

В, Пр, К

непустое

Имя

 

символьный 30

1заглавная,

остальные

прописные

В, Пр, К

непустое

Отчество

 

символьный 30

1заглавная,

остальные

прописные

В, Пр, К

непустое

Дата

рождения

 

целое, 10

<p>>0< p>>0<></p>>0<>

 

непустое

Данные

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

1

2

3

4

5

6

Логин

 

символьный 20

цифры и символы

В, Пр, К

непустое

Пароль

 

символьный 20

цифры и символы

В, Пр, К

непустое

Бросок

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Название

 

символьный 10

1заглавная,

остальные

прописные

В, Пр, К

непустое

Состав

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Игра

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Дата

 

дата

дд.мм.гггг

В, Пр, К

непустое

Время

 

символьный 10

цифры

В, Пр, К

непустое

Забито

 

целое, 4

<p>>0< p>>0<></p>>0<>

В, Пр, К

 

Пропущено

 

целое, 4

<p>>0< p>>0<></p>>0<>

В, Пр, К

 

Список амплуа

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Дата

 

дата

дд.мм.гггг

В, Пр, К

непустое

Контракт

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Дата начало

 

дата

дд.мм.гггг

В, Пр, К

непустое

Дата

окончания

 

дата

дд.мм.гггг

В, Пр, К

непустое

Результат

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Всего

 

целое, 4

<p>>0< p>>0<></p>>0<>

В, Пр, К

непустое

Значение

 

целое, 4

<p>>0< p>>0<></p>>0<>

В, Пр, К

непустое

Команда

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Название

 

символьный 50

1заглавная,

остальные

прописные

В, Пр, К

непустое

Место игр

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Название

 

символьный 40

1заглавная,

остальные

прописные

В, Пр, К

непустое

Вместимость

 

целое, 4

<p>>0< p>>0<></p>>0<>

В, Пр, К

непустое

Список параметров

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Значение

 

целое, 4

<p>>0< p>>0<></p>>0<>

В, Пр, К

непустое

1

2

3

4

5

6

Единица измерения

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Название

 

символьный 40

1заглавная,

остальные

прописные

В, Пр, К

непустое

Краткое

название

 

символьный 5

1заглавная,

остальные

прописные

В, Пр, К

непустое

Параметр

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Название

 

символьный 40

1заглавная,

остальные

прописные

В, Пр, К

непустое

Амплуа

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Название

 

символьный 40

1заглавная,

остальные

прописные

В, Пр, К

непустое

Группа

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Название

 

символьный 40

1заглавная,

остальные

прописные

В, Пр, К

непустое

Город

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Название

 

символьный 40

1заглавная,

остальные

прописные

В, Пр, К

непустое

Трудовой договор

Код

1,ПК

целое, 4

<p>>0< p>>0<></p>>0<>

Г, Пр

непустое

Номер

 

целое, 4

<p>>0< p>>0<></p>>0<>

 

непустое

Дата

 

дата

дд.мм.гггг

В, Пр, К

непустое

В таблице 2. 4 использованы следующие сокращения: В - ввод;

Пр - просмотр;

К - корректировка;

Г - генерация;

У - уникальное;

П - первичный ключ;

ВК - внешний ключ.

 

Таблица 2.5 - Объекты и связи

Классы объектов

Опциональность

связи

Имя связи

Тип связи

Главный КО

Подчиненный

КО

Главн ый КО

Подчиненн ый КО

Главный

КО

Подчиненн ый КО

Главн ый КО

Подчин

енный

КО

Физическое

лицо

Травма

М.б.

Д.б.

Имеет

Относится

1

М

Физическое

лицо

Данные

М.б.

Д.б.

Имеет

Относятся

1

М

Физическое

лицо

Трудовой

договор

М.б.

Д.б.

Заключает

Включает

1

М

Физическое

лицо

Список

параметров

М.б.

Д.б.

Имеет

Относится

1

М

Физическое

лицо

Список

амплуа

М.б.

Д.б.

Имеет

Относится

1

М

Физическое

лицо

Контракт

М.б.

Д.б.

Заключает

Включает

1

М

Физическое

лицо

Состав

М.б.

Д.б.

Входит

Состоит

1

М

Единица

измерения

Список

параметров

М.б.

Д.б.

Относится

Имеет

1

M

Параметр

Список

параметров

М.б.

Д.б.

Входит

Имеет

1

М

Амплуа

Список

амплуа

М.б.

Д.б.

Входит

Имеет

1

М

Группа

Команда

М.б.

Д.б.

Состоит

Входит

1

М

Город

Команда

М.б.

Д.б.

Имеет

Относится

1

М

Команда

Место игр

М.б.

Д.б.

Играет

Относится

1

М

Команда

Игра

М.б.

Д.б.

Принимает

Имеет

1

М

Команда

Игра

М.б.

Д.б.

Гостит

Имеет

1

М

Команда

Контракт

М.б.

Д.б.

Заключает

Относится

1

М

Игра

Состав

М.б.

Д.б.

Имеет

Относится

1

М

Тип выхода

Состав

М.б.

Д.б.

Относится

Имеет

1

М

Состав

Результат

М.б.

Д.б.

Имеет

Относится

1

М

Состав

Подбор

М.б.

Д.б.

Имеет

Относится

1

М

Тип подбора

Подбор

М.б.

Д.б.

Относится

Имеет

1

М

Бросок

Результат

М.б.

Д.б.

Имеет

Относится

1

М

Место игр

Игра

М.б.

Д.б.

Относится

Играется

1

М

 

В таблице 2.5 использованы сокращения:

1 - мощность связи «один»;

М - мощность связи «много»;

Д.б. - связь обязательная («должен быть»); М.б. - связь необязательная («может быть»).

2.3.2 Концептуальный уровень базы данных

Информационно-логическая модель предметной области

При разработке модели базы данных была составлена ER-диаграмма для данного программного средства, которая представлена на рисунке 2.4.

 Рисунок 2.4 - ER-диаграмма

 

 

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

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

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

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

Значения некоторых атрибутов могут в какие-то моменты просто отсутствовать или же быть недоступны. В таких случаях перед именем атрибута на схеме ставится буква «o», что говорит о том, что атрибут - необязательный.

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

Связью называется поименованное отношение, имеющее место между двумя сущностями.

Каждая связь имеет два конца, каждый из которых обладает:

-    именем;

-    степенью (мощностью);

-    признаком обязательности.

Даталогическая модель предметной области

Даталогическая модель базы данных разрабатываемой системы представлена на рисунке 2.5. На рисунке представлены: 23 таблицы, из которых 10 являются справочными, 13 основными. Все связи между таблицами - один ко многим.

 

 

Дипломная работа. Автоматизированная информационная система баскетбольного клуба

 Рисунок 2.5 - Даталогическая модель базы данных

 

 

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

При этом даталогическая модель (ДЛМ) разрабатывается с учетом конкретной реализации СУБД, а также с учетом специфики конкретной предметной области на основе ее инфологической модели.

Основная задача ДЛМ - получение структуры данных, описанной на языке конкретной математической модели, ориентированной на выбранную СУБД.

Преобразование связи 1:М. Связь реализуется копированием первичного ключа из реляционного отношения на стороне «один» в реляционное отношение на стороне «много», из главного отношения в подчиненное. Новому появившемуся атрибуту присваивается уникальное в пределах отношения имя. В имени хорошо использовать имя таблицы, откуда осуществляется копия. Этот вновь появившийся атрибут помечается как внешний ключ. Если на ER -диаграмме опциональность связи со стороны «много» была обязательной, то опциональность внешнего ключа также обязательная. В противном случае опциональность внешнего ключа будет иметь значение «м.б.». Если уникальность класса объектов со стороны «много» определялась из связи, то внешний ключ должен входить в состав первичного ключа, эта ситуация соответственно помечается.

Анализ схем отношений на соответствие 3НФ

Необходимо проверить полученную схему на соответствие её нормальной форме Бойса-Кодда.

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

Требования нормализации направлены на то, чтобы последовательно устранить так называемые «аномалии» в базе данных: неоправданное

дублирование хранящихся данных или неоправданное усложнение алгоритмов работы с базой данных.

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

-    отсутствие опыта проектировщика;

-    не были выделены все классы объектов присущие данной предметной области;

-    не правильно распределены качественные и количественные характеристики по классам объектов.

Поэтому после построения даталогической модели необходимо провести анализ полученных схем отношений на соответствие нормальной форме Бойса-Кодда (НФБК).

Проанализируем полученные схемы реляционных отношений разработанной базы данных на соответствие НФБК.

Ввиду того, что все атрибуты отношений атомарные и нет повторяющихся групп, можно говорить, что достигнута первая нормальная форма (1НФ).

В каждой из полученных схем использованы не составные ключи, что делает невозможными частичные зависимости, а значит, достигнута вторая нормальная форма (2НФ).

В полученных схемах отношений отсутствуют транзитивные зависимости, что подтверждает их соответствие третьей нормальной форме (3НФ).

Кроме того, каждый детерминант отношения является потенциальным ключом, что свидетельствует о достижении НФБК.

В большинстве случаев достаточно привести схему отношений к нормальной форме Бойса-Кодда и на этом завершить нормализацию.

Проведя проверку на соответствие полученной схемы отношений НФБК, пришли к выводу, что схема отношений соответствует НФБК.

2.3.3 Физическая модель базы данных

Описание проектируемых объектов БД

СУБД InterBase поддерживает ряд объектов реляционной базы данных: таблица, представление, триггер, домен, роль, индекс.

Таблица является базовой структурой реляционной базы данных, которая состоит из строк и столбцов с данными.

Представление - это поименованная динамически поддерживаемая СУБД выборка данных из одной или нескольких таблиц.

Триггер - хранимая процедура, автоматически выполняемая СУБД, как реакция на какое-либо действие в таблице.

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

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

Роль представляет собой именованных набор прав и привилегий на объект БД.

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

Техническое описание объектов БД [9].

Язык SQL относительно прост в изучении. Это непроцедурный язык, поэтому в нем необходимо указывать, какая информация должна быть получена, а не как ее можно получить. Иначе говоря, язык SQL не требует указания методов доступа к данным. Как и большинство современных языков, SQL поддерживает свободный формат записи операторов. Это означает, что при вводе отдельные элементы операторов не связаны с фиксированными позициями на экране. Структура команд задается набором ключевых слов, представляющих собой обычные слова английского языка.

В процессе реализации разрабатываемой АИС будут созданы таблицы генераторы, триггеры, роли.

Таблица - основной объект для хранения информации в реляционной базе данных. Она состоит из содержащих данные строк и столбцов. Синтаксис оператора создания таблицы следующий:

CREATE TABLE имя_таблицы (имя_столбца тип_данных

[NULL|NOT NULL ] [,...n])

[PRIMARY KEY (имя_столбца [,...n])

{[UNIQUE (имя_столбца [,...n])}

[FOREIGN KEY (имя_столбца_внешнего_ключа [,...n]).

Ключевое слово NULL используется для указания того, что в данном столбце могут содержаться значения NULL. По умолчанию стандарт SQL предполагает наличие ключевого слова NULL. Primary Key - определения первичного ключа. Unique - значения столбца(-ов) могут быть только уникальными. Foreign Key - определение внешнего ключа.

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

CREATE GENERATOR имя.

Триггер - это процедура базы данных, которая автоматически вызывается SQL сервером при возникновении определенных событий в базе данных (добавление, удаление, обновление записей). Синтаксис оператора создания триггера следующий:

CREATE TRIGGER name FOR table {BEFORE| AFTER}

{DELETE| INSERT| UPDATE}

[POSITION number]

AS BEGIN

<compound_statements>

[<compound_statcment> ...]

END.

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

{CREATE| ALTER} VIEW имя_просмотра [(имя_столбца [,...n])]

As SELECT_onepaTOp

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

для предоставления привилегий в отношении поименованных объектов базы данных указанным пользователям. Оператор GRANT имеет следующий формат: GRANT {<привилегия>[,...п]|

ALL PRIVILEGES}

ON имя_объекта

ТО {<идентификатор_пользователя>

[,...n]| PUBLIC}

[ WITH GRANT OPTION].

Параметр <привилегия>:

{SELECT|DELETE|INSERT [(имя_столбца[,... п])]

| UPDATE [(имя_столбца[,...п])]}

| REFERENCES [(имя_столбца[,...п])] |

USAGE].

Из соображений упрощения в операторе GRANT можно указать ключевое слово ALL PRIVILEGES, что позволит предоставить указанному пользователю все существующие привилегии без необходимости их перечисления. Кроме того, в этом операторе может указываться ключевое слово PUBLIC, означающее предоставление доступа указанного типа не только всем существующим пользователям, но также и всем тем, кто будет определен в базе данных впоследствии.

Благодаря параметру WITH GRANT OPTION, указанные в операторе GRANT пользователи имеют право передавать все предоставленные им в отношении указанного объекта привилегии другим пользователям, которые, в свою очередь, будут наделены точно таким же правом передачи своих полномочий.

Роль - это имя группы, в которую можно добавлять и из которой можно исключать пользователей. Когда роли предоставляются какие-то привилегии, то эти же привилегии предоставляются каждому входящему в эту группу (роль) пользователю. Чтобы создать роль, используется следующий синтаксис:

Create Role rolename.

На сегодняшний день язык SQL является единственным признанным стандартом языка баз данных, поддерживаемым всеми основными поставщиками СУБД.

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

-    создавать базы данных и таблицы с полным описанием их структуры;

-    выполнять основные операции манипулирования данными, такие как вставка, модификация и удаление данных из таблиц;

-    выполнять простые и сложные запросы.

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

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

СУБД InterBase использует ЯОД, который является диалектом стандарта языка SQL.

Проектируемые объекты БД СУБД InterBase можно представить в виде таблиц 2.6 - 2.27:

 

Таблица 2.6 - Травма

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Name

 

Varchar(60)

Not null

Data n

 

Timestamp

Not null

Data o

 

Timestamp

Not null

Id fl

Fk

Integer

Not null

 

Таблица 2. 7 - Физическое лицо

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Fam

 

Varchar(60)

Not null

Im

 

Varchar(40)

Not null

Ot

 

Varchar(40)

Not null

Data r

 

Timestamp

Not null

Id cantri

Fk1

Integer

Not null

Id_post

Fk2

Integer

Not null

 

Таблица 2.8 - Тип подбора

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Name

 

Varchar(40)

Not null

 

Таблица 2. 9 - Контракт

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Date n

 

Timestamp

Not null

Date o

 

Timestamp

Not null

Id fl

Fk1

Integer

Not null

Id_pl

Fk2

Integer

Not null

 

Таблица 2.11 - Список параметров

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Date

 

Timestamp

Not null

Tamee

 

Varchar(10)

Not null

Zab

 

Integer

Not null

Prop

 

Integer

Not null

Id1_pl

Fk1

Integer

Not null

Id2_pl

Fk2

Integer

Not null

Id_mesto_play

Fk3

Integer

Not null

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Zn

 

Integer

Not null

Id fl

Fk1

Integer

Not null

Id ed

Fk2

Integer

Not null

Id_par

Fk3

Integer

Not null

 

Таблица 2.12 - Список амплуа

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Data

 

Timestamp

Not null

Id fl

Fk1

Integer

Not null

Id_ammpl

Fk2

Integer

Not null

 

Таблица 2.13 - Страна

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Name

 

Varchar(40)

Not null

 

Таблица 2.14 - Данные

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Log

 

Varchar(20)

Not null

Par

 

Varchar(20)

Not null

Id fl

Fk

Integer

Not null

 

Таблица 2.15 - Должность

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Name

 

Varchar(40)

Not null

 

Таблица 2.16 - Тип выхода

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Name

 

Varchar(40)

Not null

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Zn

 

Integer

Not null

Id tip_pod

Fk1

Integer

Not null

Id sostav

Fk2

Integer

Not null

 

Таблица 2.18 - Бросок

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Name

 

Varchar(10)

Not null

 

Таблица 2.19 - Город

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Name

 

Varchar(40)

Not null

 

Таблица 2.20 - Группа

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Name

 

Varchar(40)

Not null

 

Таблица 2. 21 - Амплуа

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Name

 

Varchar(40)

Not null

 

Таблица 2.22 - Параметр

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Name

 

Varchar(40)

Not null

 

Таблица 2.23 - Единица измерения

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Name

 

Varchar(40)

Not null

Kname

 

Varchar(5)

 

 

Таблица 2.24 - Команда

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Name

 

Varchar(40)

Not null

Id groupp

Fk1

Integer

Not null

Id seti

Fk2

Integer

Not null

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Name

 

Varchar(40)

Not null

Vmestim

 

Integer

Not null

Id_pl

fk

Integer

Not null

 

Таблица 2.26 - Результат

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Vsego

 

Integer

Not null

Zach

 

Integer

Not null

Id sostav

Fk1

Integer

Not null

Id broski

Fk2

Integer

Not null

 

Таблица 2.27 - Состав

Имя поля

Ключ

Тип, длинна

Обязательность значения

Id

Pk

Integer

Not null

Id tip exit

Fk1

Integer

Not null

Id_play

Fk2

Integer

Not null

Id fl

Fk3

Integer

Not null

 

Реализация ограничений целостности БД

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

Поддержка целостности реляционной БД рассматривается в следующих аспектах.

Целостность таблицы. Обязательно должны поддерживаться:

-    уникальность строк таблицы. Должен быть определен первичный ключ таблицы, и значение его должно быть определено;

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

Эти ограничения реализуются в командах создания и модификации таблиц. Например, в языке SQL это команды Create Table. В этих командах для описания полей - первичных ключей используется конструкция Primary Key, для описания полей - уникальных ключей конструкция Unique, обязательность значений полей задается конструкцией Not Null [13].

Ссылочная целостность. Каждая таблица проектируемой БД должна быть связана с другими посредством соответствующих первичных и внешних ключей, т.е. быть либо родительской (главной) по отношению к другим таблицам, либо дочерней (подчиненной), либо той и другой для разного уровня связей. Назначение внешнего ключа - связывать каждую строку дочерней таблицы с соответствующей строкой родительской таблицы. Значение внешнего ключа может иметь и пустое значение (Null), если он реализует необязательную связь,

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

2.4 Разработка программного обеспечения системы

Укрупненная схема алгоритма программного средства, представлена на рисунке 2.6.

 

 

Дипломная работа. Автоматизированная информационная система баскетбольного клуба

 Рисунок 2. 6 - Укрупненная схема алгоритма программного средства

 

 

Дипломная работа. Автоматизированная информационная система баскетбольного клуба

 Рисунок 2.6 (Продолжение), Лист 52

 

 

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

 

 

Дипломная работа. Автоматизированная информационная система баскетбольного клуба

  Рисунок 2.7 - Укрупненная схема алгоритма реализованного в модуле metod

 

 

Таким образом на основании схем алгоритмов представленных на рисунках 2.6 и 2.7 были реализованы модули menu и metod.

2.5 Тестирование компонентов системы

Существует две стратегии тестирования ПО: снизу вверх (восходящее) и сверху вниз (нисходящее). Сверху вниз - при добавлении нового модуля нам так же следует добавить новые тестовые данные. Снизу вверх - стержневая логика заключается в проверке работоспособности на нескольких однотипных тестах. Чем больше тестов, тем лучше. Хорошим будет тест, для которого велика вероятность обнаружения ошибки.

К достоинствам нисходящего тестирования относятся следующие его особенности:

-    большинство тестов готовится в форме, рассчитанной на пользователя;

-    во многих случаях небольшой объем отладочного программирования;

-    отпадает необходимость тестирования сопряжения модулей.

Недостатком нисходящего тестирования является то, что тестовое

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

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

Результат расчета кластерного анализа при помощи пакета MathCAD приведен на рисунке 2.10.

 

 

 

Дипломная работа. Автоматизированная информационная система баскетбольного клуба

  Рисунок 2.10 - Расчет в среде MathCAD

 

 

Дипломная работа. Автоматизированная информационная система баскетбольного клуба

  Рисунок 2.10 - (Продолжение), Лист 57

 

 

Результаты расчетов, проведенные в разработанном программном средстве и в среде MathCAD совпадают, что свидетельствует о корректности расчета проведенного программой.

Выводы по разделу

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

3 Технологический раздел

3.1    Руководство системного программиста

3.1.1    Назначение и условия применения автоматизированной информационной системы

Автоматизированная информационная система предназначена для хранения и аналитического использования данных по играм, проводимым баскетбольным клубом «Нефтяник» в рамках чемпионата России. Программная система позволит:

-    хранить справочную информацию;

-    хранить данные об игроках;

-    хранить данные о тренерах;

-    хранить данные о сотрудниках;

-    хранить данные об играх;

-    анализировать данные о значимости игроков команды, с использованием агломеративного иерархического метода кластерного анализа;

-    облегчить добавление, хранение и выборку данных.

Для корректной работы программного средства аппаратное обеспечение должно состоять как минимум из следующих компонент: процессор архитектуры x86 с тактовой частотой не ниже 2000 Mhz с поддержкой технологии MMX или аналогичной, оперативная память объёмом не менее 256 Mb, жёсткий диск ёмкостью не менее 20 Gb, видеоадаптер с видеопамятью не меньше 32 Mb. В случае если на рабочем месте используется операционная система, требующая большие характеристики, требования к программному средству будет соответствовать минимальным требованиям к операционной системе.

3.1.2    Характеристика программной системы

Автоматизированная информационная система работает в графическом режиме, для нормального отображения которого необходимо разрешение экрана не менее 800х600 точек. Для проверки работоспособности программы необходимо запустить ее и проверить все режимы работы. Проверка программной системы должна начинаться с его запуска. При запуске должно появиться главное окно программы. На следующем шаге необходимо проверить нормально ли функционируют справочники. Для этого их поочередно выбирают в главном меню. Выполнив добавление, удаление или изменение данных, необходимо проверить правильность сохранения результатов действий, открыв справочники в среде СУБД Borland Interbase 7.0.1.

База данных содержит 23 таблицы: ammpl, broski, contract, contri, dan, ed, fl, groupp, list_ammpl, list_par, mesto_play, par, pl, play, post, rez, rezob, seti, sostav, tip_exit, tip_pod, travma, trud.

Системный программист должен выполнять следующие функции:

-    осуществляет настройку базы данных в локальной сети;

-    осуществляет резервное копирование и восстановление БД;

-    корректировки данных и структуры БД;

-    прописывает путь к базе данных.

Подключение к базе данных осуществляется через IB Console. Сначала определяется место хранения БД, она может хранится, на локальной машине, в этом случае выбирается Local Server, а также на удаленной машине, в этом случае выбирается Remote Server. После чего вводится имя пользователя «sysdba» и пароль «masterkey», после подтверждения сервер БД регистрируется. После регистрации сервера БД, регистрируется сама БД, для этого необходимо выбрать расположение файла basc.gdb в котором располагаются таблицы БД, ввести имя пользователя и пароль, которые совпадают с логином и паролем использованным для регистрации сервера. Окно регистрации БД показано на рисунке 3.1.

 

 

Дипломная работа. Автоматизированная информационная система баскетбольного клуба

  Рисунок 3.1 - Подключение к базе данных

 

 

На рисунке 3.2 представлено основное окно IB Console, на котором видно из каких таблиц состоит БД.

 

Дипломная работа. Автоматизированная информационная система баскетбольного клуба

 Рисунок 3.2 - Список таблиц БД На рисунке 3.3 показаны поля для таблицы «Игра»

 

 

Дипломная работа. Автоматизированная информационная система баскетбольного клуба

 

 Рисунок 3.3 - Поля таблицы «Игра»

 

 

На рисунке 3.4 показаны данные хранящиеся в таблице «Игра»

 

 

Дипломная работа. Автоматизированная информационная система баскетбольного клуба

 Рисунок 3.4 - Данные хранящиеся в таблице «Игра»

 

 

Физически база данных располагается в папке с исходным кодом программного средства в файле basc.gdb. При выполнении резервного копирования БД в папке создается файл с именем в формате «dd_mm_yyyy_hh_mm_ss.gdb», представляющий из себя стандартную резервную копию Interbase. При отсутствии текущей базы данных в исходной директории можно восстановить её из резервной копии стандартными средствами. Рекомендуется делать резервное копирование не менее одного раза в месяц. Редактирование учетных записей пользователей производится также стандартными средствами СУБД Interbase. Для каждой таблицы имеется генератор первичного технологического ключа и триггер автоматического добавления ключа при добавлении новой записи в таблицы.

3.1.4 Входные и выходные данные

Входными данными является:

-    сведения о командах;

-    сведения о сотрудниках;

-    сведения об игроках;

-    сведения о тренерах;

-    расписание проведения регулярных игр чемпионата;

-    данные о проведенных играх;

-    справочная информация.

Выходными данными будут:

-    статистические отчеты по прошедшим матчам;

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

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

3.2 Руководство программиста

3.2.1    Назначение программной системы

Автоматизированная информационная система предназначена для хранения и аналитического использования данных по играм, проводимым баскетбольным клубом «Нефтяник» в рамках чемпионата России. Программная система позволит:

-    хранить справочную информацию;

-    хранить данные об игроках;

-    хранить данные о тренерах;

-    хранить данные о сотрудниках;

-    хранить данные об играх;

-    анализировать данные о значимости игроков команды, с использованием агломеративного иерархического метода кластерного анализа;

-    облегчить добавление, хранение и выборку данных.

3.2.2    Условия выполнения программной системы

Для корректной работы программного средства аппаратное обеспечение должно состоять как минимум из следующих компонент: процессор архитектуры x86 с тактовой частотой не ниже 2000 Mhz с поддержкой технологии MMX или аналогичной, оперативная память объёмом не менее 256 Mb, жёсткий диск ёмкостью не менее 20 Gb, видеоадаптер с видеопамятью не меньше 32 Mb. В случае если на рабочем месте используется операционная система, требующая большие характеристики, требования к программному средству будет соответствовать минимальным требованиям к операционной системе.

3.2.3    Выполнение программной системы

Работа с программным средством осуществляется путем выбора нужных пунктов меню (кнопок).

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

 

 


 

 

Дипломная работа. Автоматизированная информационная система баскетбольного клуба

 

 

 Рисунок 3.5 - Форма «Авторизация пользователя»

 

 

ПРИЛОЖЕНИЕ А

(обязательное)

SQL-скрипты

/* Table: AMMPL, Owner: SYSDBA */

CREATE TABLE AMMPL (

ID INTEGER NOT NULL,

NAME VARCHAR(40) NOT NULL, CONSTRAINT PK_AMMPL PRIMARY KEY (ID)

);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER AMMPL_BI FOR AMMPL ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_AMMPL_ID, 1);

END

л

COMMIT WORK л SET TERM ;л

/* Table: BROSKI, Owner: SYSDBA */

CREATE TABLE BROSKI (

ID INTEGER NOT NULL,

NAME VARCHAR(10) NOT NULL, CONSTRAINT PK_BROSKI PRIMARY KEY (ID)

);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER BROSKI_BI FOR BROSKI ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BROSKI_ID, 1);

END

л

COMMIT WORK л SET TERM ;л

/* Table: CONTRACT, Owner: SYSDBA */ CREATE TABLE CONTRACT (

ID INTEGER NOT NULL,

DATAN TIMESTAMP NOT NULL,

DATAO TIMESTAMP NOT NULL,

ID_FL INTEGER NOT NULL,

ID_PL INTEGER NOT NULL,

CONSTRAINT PK_CONTRACT PRIMARY KEY (ID)

);

ALTER TABLE CONTRACT ADD CONSTRAINT FK1_CONTRACT FOREIGN KEY (ID_FL) REFERENCES FL (ID);

ALTER TABLE CONTRACT ADD CONSTRAINT FK3_CONTRACT FOREIGN KEY (ID_PL) REFERENCES PL (ID);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER CONTRACT_BI FOR CONTRACT

ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_CONTRACT_ID, 1); END

л

COMMIT WORK л SET TERM ;л

/* Table: CONTRI, Owner: SYSDBA */

CREATE TABLE CONTRI (

ID INTEGER NOT NULL,

NAME VARCHAR(40) NOT NULL, CONSTRAINT PK_CONTRI PRIMARY KEY (ID)

);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER CONTRI_BI FOR CONTRI ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_CONTRI_ID,1);

END

л

CREATE TABLE DAN (

ID INTEGER NOT NULL,

LOG VARCHAR(20) NOT NULL, PASSWORDD VARCHAR(20) NOT NULL, ID_FL INTEGER NOT NULL,

CONSTRAINT PK_DAN PRIMARY KEY (ID) );

ALTER TABLE DAN ADD CONSTRAINT FK FOREIGN KEY (ID_FL) REFERENCES FL (II SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER DAN_BI FOR DAN ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_DAN_ID,1);

END

л

COMMIT WORK л SET TERM ;л

/* Table: ED, Owner: SYSDBA */

CREATE TABLE ED (

ID INTEGER NOT NULL,

NAME VARCHAR(40) NOT NULL,

KNAME VARCHAR(5), CONSTRAINT PK_ED PRIMARY KEY (ID)

);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER ED_BI FOR ED ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_ED_ID, 1);

END

л

COMMIT WORK л SET TERM ;л

/* Table: FL, Owner: SYSDBA */

CREATE TABLE FL (

ID INTEGER NOT NULL,

FIO VARCHAR(100) NOT NULL,

DATA_R TIMESTAMP NOT NULL,

ID_POST INTEGER NOT NULL,

ID_CONTRI INTEGER,

CONSTRAINT PK_FL PRIMARY KEY (ID)

);

ALTER TABLE FL ADD CONSTRAINT FK1_FL FOREIGN KEY (ID_POST) REFERENCES POST (ID);

ALTER TABLE FL ADD CONSTRAINT FK2_FL FOREIGN KEY (ID_CONTRI) REFERENCES CONTRI (ID);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER FL_BI FOR FL ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_FL_ID,1);

END

л

COMMIT WORK л SET TERM ;л

/* Table: GROUPP, Owner: SYSDBA */

CREATE TABLE GROUPP (

ID INTEGER NOT NULL,

NAME VARCHAR(40) NOT NULL, CONSTRAINT PK_GROUPP PRIMARY KEY (ID)

);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER GROUPP_BI FOR GROUPP ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_GROUPP_ID, 1);

END

л

COMMIT WORK л SET TERM ;л

/* Table: LIST_AMMPL, Owner: SYSDBA */ CREATE TABLE LIST_AMMPL (

ID INTEGER NOT NULL,

DATA TIMESTAMP NOT NULL,

ID_FL INTEGER NOT NULL,

ID_AMMPL INTEGER NOT NULL,

CONSTRAINT PK_LIST_AMMPL PRIMARY KEY (ID)

);

ALTER TABLE LIST_AMMPL ADD CONSTRAINT FK1_LIST_AMMPL FOREIGN KEY (ID_FL) REFERENCES FL (ID);

ALTER TABLE LIST_AMMPL ADD CONSTRAINT FK2_LIST_AMMPL FOREIGN KEY (ID_AMMPL) REFERENCES AMMPL (ID);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER LIST_AMMPL_BI FOR LIST_AMMPL

ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_LIST_AMMPL_ID,1); END

л

COMMIT WORK л SET TERM ;л

/* Table: LIST_PAR, Owner: SYSDBA */

CREATE TABLE LIST_PAR (

ID INTEGER NOT NULL,

ZN VARCHAR(30) NOT NULL,

ID_FL INTEGER NOT NULL,

ID_ED INTEGER NOT NULL,

ID_PAR INTEGER NOT NULL, CONSTRAINT PK_LIST_PAR PRIMARY KEY (ID) );

ALTER TABLE LIST_PAR ADD CONSTRAINT FK1_LIST_PAR FOREIGN KEY (ID_FL) REFERENCES FL (ID);

ALTER TABLE LIST_PAR ADD CONSTRAINT FK2_LIST_PAR FOREIGN KEY (ID_ED) REFERENCES ED (ID);

ALTER TABLE LIST_PAR ADD CONSTRAINT FK3_LIST_PAR FOREIGN KEY (ID_PAR) REFERENCES PAR (ID);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER LIST_PAR_BI FOR LIST_PAR ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_LIST_PAR_ID, 1);

END

л

COMMIT WORK л

SET TERM ;л

/* Table: MESTO_PLAY, Owner: SYSDBA */ CREATE TABLE MESTO_PLAY (

ID INTEGER NOT NULL,

NAME VARCHAR(40) NOT NULL,

VMESTIM INTEGER NOT NULL,

ID_PL INTEGER NOT NULL,

CONSTRAINT PK_MESTO_PLAY PRIMARY KEY (ID)

);

ALTER TABLE MESTO_PLAY ADD CONSTRAINT FK_MESTO_PLAY FOREIGN KEY (ID_PL) REFERENCES PL (ID);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER MESTO_PLAY_BI FOR MESTO_PLAY

ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_MESTO_PLAY_ID,1); END

л

COMMIT WORK л SET TERM ;л

/* Table: PAR, Owner: SYSDBA */

CREATE TABLE PAR (

ID INTEGER NOT NULL,

NAME VARCHAR(40) NOT NULL,

CONSTRAINT PK_PAR PRIMARY KEY (ID)

);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER PAR_BI FOR PAR ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_PAR_ID, 1);

END

л

COMMIT WORK л SET TERM ;л

/* Table: PL, Owner: SYSDBA */

CREATE TABLE PL

(

ID INTEGER NOT NULL,

NAME VARCHAR(50) NOT NULL, ID_GPOUPP INTEGER NOT NULL,

ID_SETI INTEGER NOT NULL, CONSTRAINT PK_PL PRIMARY KEY (ID)

);

ALTER TABLE PL ADD CONSTRAINT FK1_PL FOREIGN KEY (ID_GPOUPP) REFERENCES GROUPP (ID);

ALTER TABLE PL ADD CONSTRAINT FK2_PL FOREIGN KEY (ID_SETI) REFERENCES SETI (ID);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER PL_BI FOR PL ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_PL_ID, 1);

END

л

COMMIT WORK л SET TERM ;л

/* Table: PLAY, Owner: SYSDBA */

CREATE TABLE PLAY (

ID INTEGER NOT NULL,

DATA TIMESTAMP NOT NULL,

TAMEE VARCHAR(10) NOT NULL,

ID1_PL INTEGER NOT NULL,

ID2_PL INTEGER NOT NULL,

ID_MESTO_PLAY INTEGER,

ZAB INTEGER,

PROP INTEGER,

CONSTRAINT PK_PLAY PRIMARY KEY (ID)

);

ALTER TABLE PLAY ADD CONSTRAINT FK1_PLAY FOREIGN KEY (ID1_PL) REFERENCES PL (ID);

ALTER TABLE PLAY ADD CONSTRAINT FK2_PLAY FOREIGN KEY (ID2_PL) REFERENCES PL (ID);

ALTER TABLE PLAY ADD CONSTRAINT FK3_PLAY FOREIGN KEY (ID_MESTO_PLAY) REFERENCES MESTO_PLAY (ID);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER PLAY_BI FOR PLAY ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_PLAY_ID, 1);

END

л

COMMIT WORK л SET TERM ;л

/* Table: POST, Owner: SYSDBA */

CREATE TABLE POST (

ID INTEGER NOT NULL,

NAME VARCHAR(40) NOT NULL,

CONSTRAINT PK_POST PRIMARY KEY (ID)

);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER POST_BI FOR POST ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_POST_ID,1);

END

л

COMMIT WORK л SET TERM ;л

/* Table: REZ, Owner: SYSDBA */

CREATE TABLE REZ (

ID INTEGER NOT NULL,

VSEGO INTEGER NOT NULL,

ZACH INTEGER NOT NULL,

ID_BROSKI INTEGER NOT NULL, ID_SOSTAV INTEGER NOT NULL, CONSTRAINT PK_REZ PRIMARY KEY (ID)

);

ALTER TABLE REZ ADD CONSTRAINT FK1_REZ FOREIGN KEY (ID_BROSKI) REFERENCES BROSKI (ID);

ALTER TABLE REZ ADD CONSTRAINT FK2_REZ FOREIGN KEY (ID_SOSTAV) REFERENCES SOSTAV (ID);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER REZ_BI FOR REZ ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_REZ_ID,1);

END

л

COMMIT WORK л SET TERM ;л

/* Table: REZOB, Owner: SYSDBA */

CREATE TABLE REZOB (

ID INTEGER NOT NULL,

ZN INTEGER NOT NULL,

ID_SOSTAV INTEGER NOT NULL, ID_TIP_POD INTEGER NOT NULL, CONSTRAINT PK_REZOB PRIMARY KEY (ID) );

ALTER TABLE REZOB ADD CONSTRAINT FK1_REZOB FOREIGN KEY (ID_SOSTAV) REFERENCES SOSTAV (ID);

ALTER TABLE REZOB ADD CONSTRAINT FK2_REZOB FOREIGN KEY (ID_TIP_POD) REFERENCES TIP_POD (ID);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER REZOB_BI FOR REZOB ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_REZOB_ID, 1);

END

л

COMMIT WORK л SET TERM ;л

/* Table: SETI, Owner: SYSDBA */

CREATE TABLE SETI (

ID INTEGER NOT NULL,

NAME VARCHAR(40) NOT NULL, CONSTRAINT PK_SETI PRIMARY KEY (ID)

);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER SETI_BI FOR SETI ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_SETI_ID,1);

END

л

CREATE TABLE SOSTAV (

ID INTEGER NOT NULL,

ID_TIP_EXIT INTEGER NOT NULL,

ID_FL INTEGER NOT NULL,

ID_PLAY INTEGER NOT NULL,

CONSTRAINT PK_SOSTAV PRIMARY KEY (ID) );

ALTER TABLE SOSTAV ADD CONSTRAINT FK1_SOSTAV FOREIGN KEY (ID_TIP_EXIT) REFERENCES TIP_EXIT (ID);

ALTER TABLE SOSTAV ADD CONSTRAINT FK2_SOSTAV FOREIGN KEY (ID_FL) REFERENCES FL (ID);

ALTER TABLE SOSTAV ADD CONSTRAINT FK3_SOSTAV FOREIGN KEY (ID_PLAY) REFERENCES PLAY (ID);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER SOSTAV_BI FOR SOSTAV ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_SOSTAV_ID, 1);

END

л

COMMIT WORK л SET TERM ;л

/* Table: TIP_EXIT, Owner: SYSDBA */

CREATE TABLE TIP_EXIT (

ID INTEGER NOT NULL,

NAME VARCHAR(40) NOT NULL, CONSTRAINT PK_TIP_EXIT PRIMARY KEY (ID)

);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER TIP_EXIT_BI FOR TIP_EXIT ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_TIP_EXIT_ID,1);

END

л

COMMIT WORK л SET TERM ;л

CREATE TABLE TIP_POD (

ID INTEGER NOT NULL,

NAME VARCHAR(40) NOT NULL, CONSTRAINT PK_TIP_POD PRIMARY KEY (ID)

);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER TIP_POD_BI FOR TIP_POD ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_TIP_POD_ID,1);

END

л

COMMIT WORK л SET TERM ;л

/* Table: TRAVMA, Owner: SYSDBA */

CREATE TABLE TRAVMA (

ID INTEGER NOT NULL,

NAME VARCHAR(60) NOT NULL,

DATA_N TIMESTAMP NOT NULL,

DATA_O TIMESTAMP,

ID_FL INTEGER NOT NULL,

CONSTRAINT PK_TRAVMA PRIMARY KEY (ID) );

ALTER TABLE TRAVMA ADD CONSTRAINT FK1_TRAVMA FOREIGN KEY (ID_FL) REFERENCES FL (ID);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER TRAVMA_BI FOR TRAVMA ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_TRAVMA_ID,1);

END

л

COMMIT WORK л SET TERM ;л

/* Table: TRUD, Owner: SYSDBA */

CREATE TABLE TRUD (

ID INTEGER NOT NULL,

NOM INTEGER NOT NULL,

DATA TIMESTAMP NOT NULL,

ID_FL INTEGER NOT NULL,

CONSTRAINT PK_TRUD PRIMARY KEY (ID)

);

ALTER TABLE TRUD ADD CONSTRAINT FK_TRUD FOREIGN KEY (ID_FL) REFERENCES FL (ID);

SET TERM л ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER TRUD_BI FOR TRUD ACTIVE BEFORE INSERT POSITION 0 AS

BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_TRUD_ID, 1);

END

л

COMMIT WORK л SET TERM ;л

ПРИЛОЖЕНИЕ Б

(обязательное) Текст программы

unit ammpl;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, Grids, DBGrids;

type

TForm8 = class(TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

IBQuery4: TIBQuery; procedure Button4Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form8: TForm8; implementation {$R *.dfm} uses av;

procedure TForm8.Button4Click(Sender: TObject);

begin

close;

end;

procedure TForm8.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:=Edit1.Text;

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:='';

end;

procedure TForm8.Button2Click(Sender: TObject); begin

IBQuery3 .Params[0].AsString:=Edit1 .Text;

IBQuery3 .Params[1].AsString:=IBQuery1.Fields[0] .As String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:=";

end;

procedure TForm8.Button3Click(Sender: TObject); begin

IBQuery4.Params[0].AsString:=IBQuery1.Fields[0].As

String;

IBQuery4.Open;

IBQuery4.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

end. unit av;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, IBDatabase, DB, StdCtrls, XPMan, IBCustomDataSet, IBQuery;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Button1: TButton;

Button2: TButton;

IBDatabase1: TIBDatabase;

IBTransaction1: TIBTransaction;

XPManifest1: TXPManifest;

IBQuery1: TIBQuery; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Forml: TForml; implementation uses menu;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject); var k:string; begin k:='';

IBQuery1.Params[0].AsString:=Edit1.Text;

IBQuery1.Params[1].AsString:=Edit2.Text;

IBQuery1.Open;

while not IBQuery1.Eof do

begin

k:=IBQuery1.Fields[1].AsString;

IBQuery1.Next;

end;

IBQuery1.Close;

if k='7' then form2.ShowModal;

if k='8' then

begin

form2.N1.Visible:=False;

form2.N12.Visible:=False;

form2.N17.Visible:=False;

form2.N18.Visible:=False;

form2.ShowModal;

end;

if k='1' then begin

form2.N1.Visible:=False;

form2.N16.Visible:=False;

form2.N20.Visible:=False;

form2.ShowModal;

end;

if k='' then begin

Edit1.Text:-';

Edit2.Text:='';

Application.MessageBox('Попробуйте еще

раз','Ошибка ввода',тЬ_ок);

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

close;

end;

procedure TForm1.FormCreate(Sender: TObject); begin

Edit1.Text:='';

Edit2.Text:='';

end;

end.

unit broski; interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, Grids, DBGrids;

type

TForm11 = class(TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

IBQuery4: TIBQuery; procedure Button4Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form11: TForm11;

implementation

{$R *.dfm} uses av;

procedure TForm11.Button4Click(Sender: TObject);

begin

close;

end;

procedure TForm11.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:=Edit1 .Text; IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:='';

end;

procedure TForm11.Button2Click(Sender: TObject); begin

IBQuery3 .Params [0].As String:=Edit1.Text;

IBQuery3 .Params[1].AsString:=IBQuery1.Fields[0] .As String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:=";

end;

procedure TForm11.Button3Click(Sender: TObject); begin

IBQuery4.Params[0].AsString:=IBQuery1.Fields[0].As

String;

IBQuery4.Open;

IBQuery4.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

end.

unit comanda;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, DBCtrls, Grids, DBGrids;

type

TForm13 = class(TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

Label3: TLabel;

DBLookupComboBox1: TDBLookupComboBox; DBLookupComboBox2: TDBLookupComboBox; Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

IBQuery4: TIBQuery; procedure Button5Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form13: TForm13; implementation {$R *.dfm}

uses av, groupp, seti, stadion;

procedure TForm13.Button5Click(Sender: TObject);

begin

close;

end;

procedure TForm13.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:=Edit1 .Text;

IB Query2 .Params [1].AsString:=form9. IB Query 1.Field s[0].AsString;

IBQuery2.Params[2].AsString:=form10.IBQuery1.Fiel

ds[0].AsString;

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:='';

end;

procedure TForm13.Button2Click(Sender: TObject); begin

IBQuery3 .Params[0].AsString:=Edit1 .Text;

IBQuery3.Params[1].AsString:=form9.IBQuery1.Field

s[0].AsString;

IBQuery3.Params[2].AsString:=form10.IBQuery1.Fiel

ds[0].AsString;

IBQuery3.Params[3].AsString:=IBQuery1.Fields[0].As

String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:=";

end;

procedure TForm13.Button3Click(Sender: TObject); begin

IBQuery4.Params[0].AsString:=IBQuery1.Fields[0].As

String;

IBQuery4.Open;

IBQuery4.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

procedure TForm13.Button4Click(Sender: TObject); begin

form14.edit3.text:-';

form14.edit4.text:-';

form14.Edit1.Text:=IBQuery1.Fields[2].AsString;

form14.Edit2.Text:=IBQuery1.Fields[0].AsString;

form14.IB Query 1. Params [0].AsString :=IB Query l.Fiel

ds[0].AsString;

form14.IBQuery1.close;

form14.IBQuery1.Open;

form14.ShowModal;

end;

end.

unit contract;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids, DBGrids, DB, DBCtrls, IBCustomDataSet, IBQuery,

ComCtrls;

type

TForm21 = class(TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Label2: TLabel;

DateTimePicker1: TDateTimePicker;

DateT imePicker2: TDateT imePicker;

Label3: TLabel;

Label4: TLabel;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

IBQuery4: TIBQuery;

DBLookupComboBox1: TDBLookupComboBox; IBQuery5: TIBQuery;

DataSource2: TDataSource;

Button5: TButton;

IBQuery6: TIBQuery; procedure Button4Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button5Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form21: TForm21;

implementation

{$R *.dfm} uses av, comanda;

procedure TForm21.Button4Click(Sender: TObject);

begin

close;

end;

procedure TForm21.Button1Click(Sender: TObject); begin

IBQuery2 .Params [0]. AsString:=DateT o Str(DateT imeP icker1.Date);

IB Query2 .Params [1].As String :=DateTo Str(DateT imeP icker2.Date);

IBQuery2.Params[2].AsString:=IBQuery5.Fields[0].As

String;

IBQuery2.Params[3].AsString:='1';

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

procedure TForm21.Button2Click(Sender: TObject); begin

IBQuery3 .Params[0].AsString:=DateToStr(DateTimeP icker1.Date);

IBQuery3 .Params [1]. AsString:=DateT o Str(DateT imeP icker2.Date);

IBQuery3.Params[2].AsString:=IBQuery5.Fields[0].As

String;

IBQuery3.Params[3].AsString:=IBQuery1.Fields[0].As

String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

procedure TForm21.Button3Click(Sender: TObject); begin

IBQuery4.Params[0].AsString:=IBQuery1.Fields[0].As

String;

IBQuery4.Open;

IBQuery4.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

procedure TForm21.Button5Click(Sender: TObject); begin

IBQuery6 .Params [0]. AsString:=DateT o Str(DateT imeP icker2.Date);

IBQuery6.Params[1].AsString:=IBQuery1.Fields[0].As

String;

IBQuery6.Open;

IBQuery6.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

end.

unit contri;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, Grids, DBGrids;

type

TForm6 = class(TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

IBQuery4: TIBQuery; procedure Button4Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form6: TForm6; implementation {$R *.dfm} uses av;

procedure TForm6.Button4Click(Sender: TObject);

begin

close;

end;

procedure TForm6.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:=Edit1.Text;

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:-';

end;

procedure TForm6.Button2Click(Sender: TObject); begin

IBQuery3.Params[0].AsString:=Edit1.Text;

IBQuery3.Params[1].AsString:=IBQuery1.Fields[0].As

String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:='';

end;

procedure TForm6.Button3Click(Sender: TObject); begin

IBQuery4.Params[0].AsString:=IBQuery1.Fields[0].As

String;

IBQuery4.Open;

IBQuery4.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

end.

unit cotr; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ComCtrls, DB, IBCustomDataSet, IBQuery, StdCtrls, DBCtrls,

Grids, DBGrids;

type

TForm27 = class(TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Label2: TLabel;

Edit1: TEdit;

DBLookupComboBox1: TDBLookupComboBox; Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

IBQuery4: TIBQuery;

Label3: TLabel;

DateTimePicker1: TDateTimePicker;

IBQuery5: TIBQuery;

DataSource2: TDataSource; procedure Button5Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form27: TForm27;

implementation

{$R *.dfm} uses av, dan;

procedure TForm27.Button5Click(Sender: TObject);

begin

close;

end;

procedure TForm27.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:=Edit1.Text;

IBQuery2 .Params [1]. AsString:=DateT o Str(DateT imeP icker1.Date);

IBQuery2.Params[2].AsString:=IBQuery5.Fields[0].As

String;

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:='';

end;

procedure TForm27.Button2Click(Sender: TObject); begin

IBQuery3.Params[0].AsString:=Edit1.Text;

IBQuery3 .Params [1]. AsString:=DateT o Str(DateT imeP icker1.Date);

IBQuery3.Params[2].AsString:=IBQuery5.Fields[0].As

String;

IBQuery3.Params[3].AsString:=IBQuery1.Fields[0].As

String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:='';

end;

procedure TForm27.Button3Click(Sender: TObject); begin

IBQuery4.Params[0].AsString:=IBQuery1.Fields[0].As

String;

IBQuery4.Open;

IBQuery4.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

procedure TForm27.Button4Click(Sender: TObject); begin

form18.edit3.text:-';

form18.edit4.text:-';

form18.Edit1.Text:=IBQuery1.Fields[1].AsString;

form18.Edit2.Text:=IBQuery1.Fields[0].AsString;

form18.IBQuery1.Params[0].AsString:=IBQuery1.Fiel

ds[0].AsString;

form18.IBQuery1.close;

form18.IBQuery1.Open;

form18.ShowModal;

end;

end.

unit dan; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, Grids, DBGrids;

type

TForm18 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Label2: TLabel;

Edit3: TEdit;

Edit4: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery; procedure Button3Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form18: TForm18;

implementation

{$R *.dfm} uses av;

procedure TForm18.Button3Click(Sender: TObject);

begin

close;

end;

procedure TForm18.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:=Edit3 .Text; IBQuery2.Params[1].AsString:=Edit4.Text; IBQuery2.Params[2].AsString:=Edit2.Text; IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit3.Text:-'';

Edit4.Text:='';

end;

procedure TForm18.Button2Click(Sender: TObject); begin

IBQuery3 .Params[0].AsString:-IBQuery 1 .Fields[0] .As String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

end.

unit ed;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, Grids, DBGrids;

type

TForm3 = class(TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

Edit2: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

IBQuery4: TIBQuery; procedure Button4Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form3: TForm3; implementation {$R *.dfm} uses av;

procedure TForm3.Button4Click(Sender: TObject);

begin

close;

end;

procedure TForm3.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:=Edit1.Text;

IBQuery2.Params[1].AsString:=Edit2.Text;

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:='';

Edit2.Text:-'';

end;

procedure TForm3.Button2Click(Sender: TObject); begin

IBQuery3 .Params[0].AsString:=Edit1 .Text; IBQuery3.Params[1].AsString:=Edit2.Text;

IBQuery3 .Params[2].AsString:=IBQuery 1 .Fields[0] .As String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:='';

Edit2.Text:-'';

end;

procedure TForm3.Button3Click(Sender: TObject); begin

IBQuery4.Params[0].AsString:=IBQuery1.Fields[0] .As String;

IBQuery4.Open;

IBQuery4.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

end.

unit groupp;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, Grids, DBGrids;

type

TForm9 = class(TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

IBQuery4: TIBQuery; procedure Button4Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form9: TForm9;

implementation

{$R *.dfm} uses av;

procedure TForm9.Button4Click(Sender: TObject);

begin

close;

end;

procedure TForm9.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:=Edit1.Text;

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:='';

end;

procedure TForm9.Button2Click(Sender: TObject); begin

IBQuery3.Params[0].AsString:=Edit1.Text;

IBQuery3.Params[1].AsString:=IBQuery1.Fields[0].As

String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:='';

end;

procedure TForm9.Button3Click(Sender: TObject); begin

IBQuery4.Params[0].AsString:=IBQuery1.Fields[0].As

String;

IBQuery4.Open;

IBQuery4.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

end.

unit igroc;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, DBCtrls, ComCtrls,

Grids, DBGrids;

type

TForm15 = class(TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

DateTimePicker1: TDateTimePicker;

Label3: TLabel;

DBLookupComboBox1: TDBLookupComboBox; Button1: TButton;

Button2: TButton;

Button3: TButton;

Button5: TButton;

Button6: TButton;

Button7: TButton;

Button8: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

IBQuery4: TIBQuery; procedure Button8Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button7Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form15: TForm15; implementation {$R *.dfm}

uses av, contri, list_par, list_ammpl, dan, travma;

procedure TForm15.Button8Click(Sender: TObject);

begin

close;

end;

procedure TForm15.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:=Edit1 .Text;

IB Query2 .Params [1].AsString:=DateTo Str(DateT imeP icker1.Date);

IBQuery2.Params[2].AsString:=form6.IBQuery1.Field

s[0].AsString;

IBQuery2.Params[3].AsString:='6';

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:='';

end;

procedure TForm15.Button2Click(Sender: TObject); begin

IBQuery3 .Params[0].AsString:=Edit1 .Text;

IBQuery3 .Params [1]. AsString:=DateT o Str(DateT imeP icker1.Date);

IBQuery3 .Params[2].AsString:=form6.IBQuery1.Field s[0].AsString;

IBQuery3.Params[3].AsString:='6';

IBQuery3.Params[4].AsString:=IBQuery1.Fields[0].As

String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:='';

end;

procedure TForm15.Button3Click(Sender: TObject); begin

IBQuery4.Params[0].AsString:=IBQuery1.Fields[0].As

String;

IBQuery4.Open;

IBQuery4.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

procedure TForm15.Button5Click(Sender: TObject); begin

form16.edit3.text:-'';

form16.Edit1.Text:=IBQuery1.Fields[1].AsString;

form16.Edit2.Text:=IBQuery1.Fields[0].AsString;

form16.IB Query 1 .Params [0].AsString:=IB Query 1 .Fiel

ds[0].AsString;

form16.IBQuery1.close;

form16.IBQuery1.Open;

form16.ShowModal;

end;

procedure TForm15.Button6Click(Sender: TObject); begin

form17.Edit1.Text:=IBQuery1.Fields[1].AsString;

form17.Edit2.Text:=IBQuery1.Fields[0].AsString;

form17.IBQuery1.Params[0].AsString:=IBQuery1.Fiel

ds[0].AsString;

form17.IBQuery1.close;

form17.IBQuery1.Open;

form17.ShowModal;

end;

procedure TForm15.Button4Click(Sender: TObject); begin

form18.edit3.text:-'';

form18.edit4.text:-'';

form18.Edit1.Text:=IBQuery1.Fields[1].AsString;

form18.Edit2.Text:-IBQuery1.Fields[0].AsString;

form18.IBQuery1.Params[0].AsString:-IBQuery1.Fiel

ds[0].AsString;

form18.IBQuery1.close;

form18.IBQuery1.Open;

form18.ShowModal;

end;

procedure TForm15.Button7Click(Sender: TObject); begin

form19.edit3.text:-'';

form19.Edit1.Text:-IBQuery1.Fields[1].AsString;

form19.Edit2.Text:-IBQuery1.Fields[0].AsString;

form19.IB Query 1. Params [0].AsString :-IB Query 1 .Fiel

ds[0].AsString;

form19.IBQuery1.close;

form19.IBQuery1.Open;

form19. ShowModal;

end;

end.

unit list_ammpl;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, DBCtrls, ComCtrls,

Grids, DBGrids;

type

TForm17 - class(TForm)

Edit1: TEdit;

Edit2: TEdit;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Label2: TLabel;

DateTimePicker1: TDateTimePicker; DBLookupComboBox1: TDBLookupComboBox; Button1: TButton;

Button2: TButton;

Button3: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery; procedure Button3Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form17: TForm17;

implementation

{$R *.dfm} uses av, ammpl;

procedure TForm17.Button3Click(Sender: TObject);

begin

close;

end;

procedure TForm17.Button1Click(Sender: TObject); begin

IBQuery2 .Params [0]. AsString:-DateT o Str(DateT imeP icker1.Date);

IBQuery2.Params[1].AsString:=Edit2.Text;

IBQuery2.Params[2].AsString:=form8.IBQuery1.Field

s[0].AsString;

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

procedure TForm17.Button2Click(Sender: TObject); begin

IBQuery3.Params[0].AsString:=IBQuery1.Fields[0].As

String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

end.

unit list_par;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, DBCtrls, Grids, DBGrids;

type

TForm16 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit3: TEdit;

DBLookupComboBox1: TDBLookupComboBox; DBLookupComboBox2: TDBLookupComboBox; Button1: TButton;

Button2: TButton;

Button3: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery; procedure Button3Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form16: TForm16; implementation

{$R *.dfm} uses av, ed, par;

procedure TForm16.Button3Click(Sender: TObject);

begin

close;

end;

procedure TForm16.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:=Edit3 .Text;

IBQuery2.Params[1].AsString:=form3.IBQuery1.Field

s[0].AsString;

IBQuery2.Params[2].AsString:=Edit2.Text;

IBQuery2.Params[3].AsString:=form5.IBQuery1.Field

s[0].AsString;

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit3.Text:-'';

end;

procedure TForm16.Button2Click(Sender: TObject); begin

IBQuery3 .Params[0].AsString:-IBQuery 1 .Fields[0] .As String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

end.

unit menu;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, jpeg, ExtCtrls;

type

TForm2 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

N11: TMenuItem;

N12: TMenuItem;

N13: TMenuItem;

N14: TMenuItem;

N15: TMenuItem;

N17: TMenuItem;

N18: TMenuItem;

N19: TMenuItem;

N20: TMenuItem;

N21: TMenuItem;

N22: TMenuItem;

Image1: TImage;

N16: TMenuItem;

procedure N19Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure N4Click(Sender: TObject); procedure N5Click(Sender: TObject); procedure N6Click(Sender: TObject); procedure N7Click(Sender: TObject); procedure N8Click(Sender: TObject); procedure N9Click(Sender: TObject); procedure N10Click(Sender: TObject); procedure N11Click(Sender: TObject); procedure N13Click(Sender: TObject); procedure N14Click(Sender: TObject); procedure N15Click(Sender: TObject); procedure N16Click(Sender: TObject); procedure N17Click(Sender: TObject); procedure N21Click(Sender: TObject); procedure N22Click(Sender: TObject); procedure N18Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form2: TForm2; implementation

uses av, ed, post, par, contri, tip_exit, ammpl, groupp, seti, broski,

tip_pod, comanda, igroc, trener, contract, play, trud, cotr, metod;

{$R *.dfm}

procedure TForm2.N19Click(Sender: TObject); begin

form1.close;

close;

end;

procedure TForm2.N2Click(Sender: TObject); begin

form3.edit1.text:-''; form3.edit2.text:-''; form3 .ShowModal; end;

procedure TForm2.N3Click(Sender: TObject); begin

form4.edit1.text:-'';

form4.ShowModal;

end;

procedure TForm2.N4Click(Sender: TObject); begin

form5.edit1.text:-''; form5. ShowModal; end;

procedure TForm2.N5Click(Sender: TObject); begin

form6.edit1.text:-''; form6. ShowModal; end;

procedure TForm2.N6Click(Sender: TObject); begin

form7.edit1.text:-''; form7. ShowModal; end;

procedure TForm2.N7Click(Sender: TObject); begin

form8.edit1.text:-''; form8. ShowModal; end;

procedure TForm2.N8Click(Sender: TObject); begin

form9.edit1.text:-''; form9. ShowModal; end;

procedure TForm2.N9Click(Sender: TObject); begin

form10.edit1.text:-'';

form10.ShowModal;

end;

procedure TForm2.N10Click(Sender: TObject); begin

form11.edit1.text:-''; form11. ShowModal; end;

procedure TForm2.N11Click(Sender: TObject); begin

form12.edit1.text:-'';

form12.ShowModal;

end;

procedure TForm2.N13Click(Sender: TObject); begin

form13.edit1.text:-''; form13. ShowModal; end;

procedure TForm2.N14Click(Sender: TObject); begin

form15.edit1.text:-''; form15. ShowModal; end;

procedure TForm2.N15Click(Sender: TObject);

begin

form20.edit1.text:-'';

form20.ShowModal;

end;

procedure TForm2.N16Click(Sender: TObject); begin

form27.edit1.text:-'';

form27.ShowModal;

end;

procedure TForm2.N17Click(Sender: TObject); begin

form22.edit1.text:-'';

form22.edit2.text:-'';

form22.edit3.text:-'';

form22.ShowModal;

end;

procedure TForm2.N21Click(Sender: TObject); begin

form21. ShowModal; end;

procedure TForm2.N22Click(Sender: TObject); begin

form26.edit1.text:-'';

form26.ShowModal;

end;

procedure TForm2.N18Click(Sender: TObject); begin

Form28.ShowModal;

end;

end.

unit metod;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, Grids, StdCtrls;

type

TForm28 - class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

StringGrid1: TStringGrid;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

IBQuery4: TIBQuery;

Edit1: TEdit;

StringGrid2: TStringGrid;

StringGrid3: TStringGrid;

Label1: TLabel;

Label2: TLabel;

StringGrid4: TStringGrid;

Label3: TLabel;

procedure Button3Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form28: TForm28;

implementation uses av;

{$R *.dfm}

procedure TForm28.Button3Click(Sender: TObject);

begin

close;

end;

procedure TForm28.Button1Click(Sender: TObject); var

kol,k,i,j ,b,p :integer; begin kol:-1;

IBQuery1.Open; while not IBQuery1.Eof do begin k:-0; b:-0; p:-0;

IBQuery2.Params[0].AsString:-IBQuery1.Fields[0].As

String;

IBQuery2.Open;

while not IBQuery2.Eof do

begin

IBQuery3.Params[0].AsString:-IBQuery2.Fields[0].As

String;

IBQuery3.Open;

while not IBQuery3.Eof do

begin

b:-b+StrToInt(IBQuery3.Fields[1].AsString) ; IBQuery3.Next; end;

IBQuery3.Close;

IBQuery4.Params[0].AsString:-IBQuery2.Fields[0].As

String;

IBQuery4.Open;

while not IBQuery4.Eof do

begin

p:-p+StrToInt(IBQuery4.Fields[1].AsString) ; IBQuery4.Next; end;

IBQuery4.Close;

inc(k);

IBQuery2.Next;

end;

IBQuery2.Close;

StringGrid1.Cells[0,kol]:-IBQuery1.Fields[1].AsString

StringGrid 1.Cells[1,kol] :-IntT o Str(k);

StringGrid 1.Cells [2,kol] :-IntT o Str(b);

StringGrid 1.Cells[3,kol] :-IntT o Str(p); inc(kol);

IBQuery1.Next;

end;

IBQuery1.Close;

StringGrid1.RowCount:-kol;

Edit1.Text:-IntT o Str(kol); end;

procedure TForm28.FormCreate(Sender: TObject); begin

StrmgGridLCeИs[0,0]:='Фамилия Имя игрока'; StringGrid1.Cells[1,0]:='Кол-во игр в основе'; StringGrid1.Cells[2,0]:-Кол-во забитых мячей'; StringGridl .Cells[3,0] :='Кол-во подборов'; end;

procedure TForm28.Button2Click(Sender: TObject); var

i,j,kol:integer;

s,r,k1,k2:real;

begin

kol:-StrToInt(Edit1.Text);

StringGrid1 .RowCount:-kol+2; StringGrid1.Cells[0,kol] :='Среднее значение'; for i:-1 to 3 do begin s:-0;

for j:-1 to kol-1 do s :-s+StrT oInt(StringGrid 1. Cells [i,j]); r:-s/(kol-1);

StringGrid1.Cells[i,kol]:-FormatFloat('0.####',r);

end;

StringGrid1.Cells[0,kol+1] :='Среднее квадратическое отклонение'; for i:-1 to 3 do begin r:-0;

for j:-1 to kol-1 do

r:-r+sqr(StrToInt( StringGrid 1.Cells[i,j])-StrT oFloat(StringGrid 1. Cells [i,kol])); r:-r/(kol-1);

StringGrid1.Cells[i,kol+1]:-FormatFloat('0.####',sqrt(r

));

end;

StringGrid2 .RowCount:- StrT oInt(Edit1 .Text)-1; StringGrid3 .RowCount:-StrToInt(Edit1.Text); StringGrid3.ColCount:-StrToInt(Edit1 .Text); kol:-StrToInt(Edit1.Text)-1; for i:-1 to 3 do

for j:-1 to kol do begin

k1:-StrToInt(StringGrid1.Cells[i,j])-StrT oFloat(StringGrid1 .Cells [i,kol+1]); k2 :-StrT oFloat(StringGrid1 .Cells [i,kol+2]); StringGrid2 .Cells[i-1,j-1] :-FormatFloat('0.####',k1/k2); end;

for i:-0 to stringgrid3.RowCount-2 do for j:-0 to stringgrid3.ColCount-2 do

stringgrid3. Cells [j+1,i+1]:-FormatFloat('0. ####',sqrt( sqr(StrT oFloat(stringgrid2 .Cells[0,i])-strtoFloat(stringgrid2 .Cells[0,j]))+ sqr(strtoFloat(stringgrid2 .Cells[1,i])-strtoFloat(stringgrid2 .Cells[1,j]))+ sqr(strtoFloat(stringgrid2. Cells [2,i] )-strtoFloat(stringgrid2 .Cells[2,j]))

));

end;

procedure TForm28.Button4Click(Sender: TObject); var

i,j,kol,d,mini,minj :integer; s,r,k1,k2,min:real; s1:string; begin

kol:-StrToInt(Edit1.Text)-1;

for i:-1 to stringgrid3.RowCount-1 do

stringgrid3.Cells[0,i] :-IntToStr(i);

for d:-kol downto 3 do

begin

min:-StrT ofloat(StringGrid3 .Cells[1,2]);

mini:-1;

minj:-2;

for i:-1 to d do

for j:-1 to d do

if (StrTofloat(StringGrid3.Cells[i,j])<min)and (i<>j) then begin

min:-StrT ofloat(StringGrid3. Cells [i,j]);

mini:-i;

minj:-j;

end;

StringGrid3.Cells[0,mini]:-StringGrid3.Cells[0,mini]+' ,'+StringGrid3.Cells[0,minj]; for i:-minj to d-1 do for j:-0 to kol do

StringGrid3 .Cells[j,i] :-StringGrid3. Cells [j,i+1]; for j:-minj to d-1 do for i:-1 to d do

StringGrid3 .Cells[j,i] :-StringGrid3. Cells [j+1,i]; StringGrid3 .RowCount:-d;

StringGrid3. ColCount:-d; end;

StringGrid3. Cells [0,1]:-', '+StringGrid3. Cells [0,1]+','; StringGrid3. Cells [0,2]:-', '+StringGrid3. Cells [0,2]+','; for i:-1 to kol do begin

s1:-','+IntToStr(i)+',';

if Pos(s1, StringGrid3. Cells [0,1] )<>0 then StringGrid1.Cells[4,i]:-'2' else StringGrid1.Cells[4,i]:-'1'; end;

s1:-StringGrid 1.Cells[4,1]; i:-1;

for j:-1 to kol+1 do begin

if StringGrid1.Cells[4,j]-s1 then begin StringGrid4 .Cells [0,i] :-StringGrid 1. Cells [0,j]; inc(i); end; end;

StringGrid4.RowCount:-i;

StringGrid3.Cells[0,1]:-'';

StringGrid3.Cells[0,2]:-'';

end;

end.

unit par; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, Grids, DBGrids;

type

TForm5 - class(TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

IBQuery4: TIBQuery; procedure Button4Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form5: TForm5; implementation {$R *.dfm} uses av;

procedure TForm5.Button4Click(Sender: TObject);

begin

close;

end;

procedure TForm5.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:-Edit1 .Text; IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:-'';

end;

procedure TForm5.Button2Click(Sender: TObject); begin

IBQuery3 .Params[0].AsString:-Edit1 .Text;

IBQuery3 .Params[1].AsString:-IBQuery1.Fields[0] .As String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:-'';

end;

procedure TForm5.Button3Click(Sender: TObject); begin

IBQuery4.Params[0].AsString:-IBQuery1.Fields[0].As

String;

IBQuery4.Open;

IBQuery4.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

end.

unit play;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids, DBGrids, DB, IBCustomDataSet, IBQuery, DBCtrls,

ComCtrls;

type

TForm22 - class(TForm)

DBGrid1: TDBGrid;

Label1: TLabel;

Label2: TLabel;

DateTimePicker1: TDateTimePicker;

Edit1: TEdit;

Label3: TLabel;

Edit2: TEdit;

Label4: TLabel;

Edit3: TEdit;

Button1: TButton;

Label5: TLabel;

DBLookupComboBox1: TDBLookupComboBox; Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

IBQuery4: TIBQuery;

DataSource1: TDataSource;

Label6: TLabel;

Label7: TLabel;

DBLookupComboBox2: TDBLookupComboBox; DBLookupComboBox3: TDBLookupComboBox; DataSource2: TDataSource;

IBQuery5: TIBQuery;

DataSource3: TDataSource;

IBQuery6: TIBQuery;

IBQuery7: TIBQuery;

Button6: TButton;

IBQuery8: TIBQuery;

Button7: TButton;

StringGrid1: TStringGrid;

IBQuery9: TIBQuery;

IBQuery10: TIBQuery;

IBQuery11: TIBQuery; procedure Button5Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure DBGrid1DblClick(Sender: TObject); procedure DBLookupComboBox2Click(Sender: TObject);

procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form22: TForm22; implementation {$R *.dfm}

uses av, stadion, comanda, sostav, broski, ComObj; var A:variant;

procedure TForm22.Button5Click(Sender: TObject);

begin

close;

end;

procedure TForm22.Button1Click(Sender: TObject); begin

IBQuery2 .Params [0]. AsString:-DateT o Str(DateT imeP icker1.Date);

IBQuery2.Params[1].AsString:-Edit1.Text;

IBQuery2.Params[2].AsString:-IBQuery6.Fields[0].As

String;

IBQuery2.Params[3].AsString:-form13.IBQuery1.Fiel

ds[0].AsString;

IBQuery2.Params[4].AsString:-IBQuery5.Fields[0].As

String;

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:-'';

Edit2.Text:-'';

Edit3.Text:-'';

end;

procedure TForm22.Button2Click(Sender: TObject); begin

IBQuery3 .Params[0].AsString:-DateToStr(DateTimeP icker1.Date);

IBQuery3 .Params[1].AsString:-Edit1 .Text;

IBQuery3.Params[2].AsString:-IBQuery6.Fields[0].As

String;

IBQuery3.Params[3].AsString:-IBQuery1.Fields[0].As

String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:-'';

Edit2.Text:-'';

Edit3.Text:-'';

end;

procedure TForm22.Button3Click(Sender: TObject); begin

IBQuery4.Params[0].AsString:-IBQuery1.Fields[0].As

String;

IBQuery4.Open;

IBQuery4.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

procedure TForm22.Button4Click(Sender: TObject); begin

form23 .Edit1 .Text:-IBQuery 1 .Fields[1].AsString;

form23.Edit2.Text:-IBQuery1.Fields[0].AsString;

form23 .IBQuery1.Params[0] .AsString:-IBQuery1.Fiel

ds[0].AsString;

form23 .IBQuery 1.close;

form23 .IBQuery 1.Open;

form23. ShowModal;

end;

procedure TForm22.DBGrid1DblClick(Sender:

TObject);

begin

IBQuery7.Params[0].AsString:-IBQuery1.Fields[8].As

String;

IBQuery7.Open;

IBQuery7.Close;

IBQuery7.Params[0].AsString:-IBQuery1.Fields[9].As

String;

IBQuery7.Open;

IBQuery7.Close;

end;

procedure

TForm22.DBLookupComboBox2Click(Sender:

TObject);

begin

IBQuery6.Close;

IBQuery6.Params[0].AsString:-form13.IBQuery1.Fiel

ds[0].AsString;

IBQuery6.Open;

IBQuery5.Close;

IBQuery5.Params[0].AsString:-form13.IBQuery1.Fiel

ds[0].AsString;

IBQuery5.Open;

end;

procedure TForm22.Button6Click(Sender: TObject); begin

IBQuery8.Params[0].AsString:-Edit2.Text;

IBQuery8.Params[1].AsString:-Edit3.Text;

IBQuery8.Params[2].AsString:-IBQuery1.Fields[0].As

String;

IBQuery8.Open;

IBQuery8.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit2.Text:-'';

Edit3.Text:-'';

end;

procedure TForm22.Button7Click(Sender: TObject); var

i,kol:integer;

begin

kol:-1;

IBQuery9.Params[0].AsString:-IBQuery1.Fields[0].As

String;

IBQuery9.Open;

while not IBQuery9.Eof do

begin

IBQuery 10 .Params [0]. AsString:-IBQuery9 .Fields [0]. AsString;

IBQuery10.Open;

while not IBQuery10.Eof do

begin

if IBQuery10.Fields[3].AsString-1' then begin

StringGrid1.Cells[3,kol]:-IBQuery10.Fields[1].AsStrin

g;

StringGrid1.Cells[4,kol]:-IBQuery10.Fields[2].AsStrin

g;

end;

if IBQuery10.Fields[3].AsString-'2' then begin

StringGrid1.Cells[5,kol]:-IBQuery10.Fields[1].AsStrin

g;

StringGrid1.Cells[6,kol]:-IBQuery10.Fields[2].AsStrin

g;

end;

if IBQuery 10 .Fields [3].As String-'3' then begin

StringGrid1.Cells[7,kol]:-IBQuery10.Fields[1].AsStrin

g;

StringGrid1.Cells[8,kol]:-IBQuery10.Fields[2].AsStrin

g;

end;

IBQuery10.Next;

end;

IBQuery10.Close;

IBQuery11.Params[0].AsString:-IBQuery9.Fields[0].

AsString;

IBQuery11.Open;

while not IBQuery11.Eof do

begin

if IBQuery11.Fields[2].AsString-'1' then StringGrid1.Cells[1,kol]:-IBQuery11.Fields[1].AsStrin

g;

if IBQuery11.Fields[2].AsString-'2' then StringGrid1.Cells[2,kol]:-IBQuery11.Fields[1].AsStrin

g;

IBQuery11.Next;

end;

IBQuery11.Close;

StringGrid1.Cells[0,kol]:-IBQuery9.Fields[4].AsString

inc(kol);

IBQuery9.Next;

end;

IBQuery9.Close;

StringGrid1.RowCount:-kol+1;

A:-CreateOleObj ect('Excel.Application'); A.Visible:-true;

A.WorkBooks.Add(ExtractFileDir(application.ExeNa

me)+'\статистика.xlsx');

A.Range['c'+inttostr(5)]:-IBQuery1.Fields[1].AsString

A.Range['f+inttostr(5)]:-IBQuery1.Fields[2].AsString; A.Range['j '+inttostr(5)] :-IBQuery 1 .Fields [4].AsString; A.Range['d'+inttostr(8)]:-IBQuery1.Fields[6].AsString

A.Range['d'+inttostr( 10)]:-IBQuery 1 .Fields [8].As Strin

g;

A.Range['d'+inttostr(8)]:-IBQuery1.Fields[6].AsString A.Range['d'+inttostr( 10)]:-IBQuery 1 .Fields [8].As Strin

g;

A.Range['k'+inttostr(8)]:-IBQuery1.Fields[9].AsString

A.Range['l'+inttostr(8)]:-IBQuery1.Fields[10].AsStrin

g;

for i:-1 to kol do begin

A.Range['b'+inttostr(i+14)]:-StringGrid1.Cells[0,i]; A.Range['e'+inttostr(i+14)] :-StringGrid 1.Cells[1,i]; A.Range['f+inttostr(i+14)] :-StringGrid 1. Cells [2,i]; A.Range['i'+inttostr(i+14)] :-StringGrid 1.Cells[3,i]; A.Range['j '+inttostr(i+14)] :-StringGrid 1.Cells[4,i]; A.Range['l'+inttostr(i+14)] :-StringGrid 1.Cells[5,i]; A.Range['m'+inttostr(i+14)] :-StringGrid 1.Cells[6,i]; A.Range['r'+inttostr(i+14)] :-StringGrid 1. Cells [7,i]; A.Range['s'+inttostr(i+14)]:-StringGrid1.Cells[8,i]; end;

end;

end.

unit podbor;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, DBCtrls, Grids, DBGrids;

type

TForm25 - class(TForm)

Edit1: TEdit;

Edit2: TEdit;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

DBLookupComboBox1: TDBLookupComboBox; Label2: TLabel;

Edit3: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery; procedure Button3Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations }

public { Public declarations } end;

var

Form25: TForm25;

implementation

{$R *.dfm} uses av, tip_pod;

procedure TForm25.Button3Click(Sender: TObject);

begin

close;

end;

procedure TForm25.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:-Edit3 .Text; IBQuery2.Params[1].AsString:-Edit2.Text; IBQuery2.Params[2].AsString:-form12.IBQuery1.Fiel ds[0].AsString;

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit3.Text:-'';

end;

procedure TForm25.Button2Click(Sender: TObject); begin

IBQuery3 .Params[0].AsString:-IBQuery 1 .Fields[0] .As String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

end.

unit post; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, Grids, DBGrids;

type

TForm4 - class(TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

IBQuery4: TIBQuery; procedure Button4Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form4: TForm4; implementation {$R *.dfm} uses av;

procedure TForm4.Button4Click(Sender: TObject);

begin

close;

end;

procedure TForm4.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:-Edit1.Text;

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:-'';

end;

procedure TForm4.Button2Click(Sender: TObject); begin

IBQuery3.Params[0].AsString:-Edit1.Text;

IBQuery3.Params[1].AsString:-IBQuery1.Fields[0].As

String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:-'';

end;

procedure TForm4.Button3Click(Sender: TObject); begin

IBQuery4.Params[0].AsString:-IBQuery1.Fields[0].As

String;

IBQuery4.Open;

IBQuery4.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

end.

unit rez;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, DBCtrls, Grids, DBGrids;

type

TForm24 - class(TForm)

Edit1: TEdit;

Edit2: TEdit;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit3: TEdit;

Edit4: TEdit;

DBLookupComboBox1: TDBLookupComboBox; Button1: TButton;

Button2: TButton;

Button3: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery; procedure Button3Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form24: TForm24;

implementation

{$R *.dfm} uses av, broski;

procedure TForm24.Button3Click(Sender: TObject);

begin

close;

end;

procedure TForm24.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:-Edit3 .Text; IBQuery2.Params[1].AsString:-Edit4.Text; IBQuery2.Params[2].AsString:-form11.IBQuery1.Fiel ds[0].AsString;

IBQuery2.Params[3].AsString:-Edit2.Text;

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit3.Text:-'';

Edit4.Text:-'';

end;

procedure TForm24.Button2Click(Sender: TObject); begin

IBQuery3.Params[0].AsString:-IBQuery1.Fields[0].As

String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

end.

unit seti; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, Grids, DBGrids;

type

TForm10 - class(TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

IBQuery4: TIBQuery; procedure Button4Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form10: TForm10;

implementation

{$R *.dfm} uses av;

procedure TForm10.Button4Click(Sender: TObject);

begin

close;

end;

procedure TForm10.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:-Edit1.Text;

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:-'';

end;

procedure TForm10.Button2Click(Sender: TObject); begin

IBQuery3 .Params[0].AsString:-Edit1 .Text;

IBQuery3 .Params[1].AsString:-IBQuery1.Fields[0] .As String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:-'';

end;

procedure TForm10.Button3Click(Sender: TObject); begin

IBQuery4.Params[0].AsString:-IBQuery1.Fields[0].As

String;

IBQuery4.Open;

IBQuery4.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

end.

unit sostav;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, DBCtrls, Grids, DBGrids;

type

TForm23 - class(TForm)

Edit1: TEdit;

Edit2: TEdit;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

DBLookupComboBox1: TDBLookupComboBox; Label2: TLabel;

DBLookupComboBox2: TDBLookupComboBox; Button1: TButton;

Button2: TButton;

Button3: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

Label3: TLabel;

Button4: TButton;

Button5: TButton;

procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject);

procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form23: TForm23; implementation {$R *.dfm}

uses av, igroc, tip_exit, rez, podbor;

procedure TForm23.Button3Click(Sender: TObject);

begin

close;

end;

procedure TForm23.Button2Click(Sender: TObject); begin

IBQuery3.Params[0].AsString:-IBQuery1.Fields[0].As

String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

procedure TForm23.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:-form15.IBQuery1.Fiel

ds[0].AsString;

IBQuery2.Params[1].AsString:-Edit2.Text;

IBQuery2.Params[2].AsString:-form7.IBQuery1.Field

s[0].AsString;

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

procedure TForm23.Button4Click(Sender: TObject); begin

form24.Edit3.Text:-'';

form24.Edit4.Text:-'';

form24.Edit1.Text:-IBQuery1.Fields[2].AsString;

form24.Edit2.Text:-IBQuery1.Fields[0].AsString;

form24.IBQuery1.Params[0].AsString:-IBQuery1.Fiel

ds[0].AsString;

form24.IBQuery1.close;

form24.IBQuery1.Open;

form24.ShowModal;

end;

procedure TForm23.Button5Click(Sender: TObject); begin

form25.Edit3.Text:-'';

form25.Edit1.Text:-IBQuery1.Fields[2].AsString;

form25.Edit2.Text:-IBQuery1.Fields[0].AsString;

form25. IB Query 1. Params [0].AsString :-IB Query 1 .Fiel

ds[0].AsString;

form25.IBQuery1.close;

form25.IBQuery1.Open;

form25. ShowModal;

end;

end.

unit stadion;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, Grids, DBGrids;

type

TForm14 - class(TForm)

Edit1: TEdit;

Edit2: TEdit;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Label2: TLabel;

Edit3: TEdit;

Edit4: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

IBQuery4: TIBQuery; procedure Button4Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form14: TForm14; implementation {$R *.dfm} uses av;

procedure TForm14.Button4Click(Sender: TObject);

begin

close;

end;

procedure TForm14.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:-Edit3.Text;

IBQuery2.Params[1].AsString:-Edit4.Text;

IBQuery2.Params[2].AsString:-Edit2.Text;

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit3.Text:-'';

Edit4.Text:-'';

end;

procedure TForm14.Button2Click(Sender: TObject); begin

IBQuery3 .Params[0].AsString:-Edit3 .Text; IBQuery3.Params[1].AsString:-Edit4.Text; IBQuery3.Params[2].AsString:-IBQuery1.Fields[0].As String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery3.Close;

IBQuery3.Open;

Edit3.Text:-'';

Edit4.Text:-'';

end;

procedure TForm14.Button3Click(Sender: TObject); begin

IBQuery4.Params[0].AsString:-IBQuery1.Fields[0].As

String;

IBQuery4.Open;

IBQuery4.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

end.

unit tip_exit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, Grids, DBGrids;

type

TForm7 - class(TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

IBQuery4: TIBQuery;

procedure Button4Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form7: TForm7; implementation {$R *.dfm} uses av;

procedure TForm7.Button4Click(Sender: TObject);

begin

close;

end;

procedure TForm7.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:-Edit1 .Text; IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:-'';

end;

procedure TForm7.Button2Click(Sender: TObject); begin

IBQuery3 .Params[0].AsString:-Edit1 .Text;

IBQuery3 .Params[1].AsString:-IBQuery1.Fields[0] .As String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:-'';

end;

procedure TForm7.Button3Click(Sender: TObject); begin

IBQuery4.Params[0].AsString:-IBQuery1.Fields[0].As

String;

IBQuery4.Open;

IBQuery4.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

end.

unit tip_pod;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, Grids, DBGrids;

type

TForm12 - class(TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

IBQuery4: TIBQuery; procedure Button4Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form12: TForm12;

implementation

{$R *.dfm} uses av;

procedure TForm12.Button4Click(Sender: TObject);

begin

close;

end;

procedure TForm12.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:-Edit1.Text;

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:-'';

end;

procedure TForm12.Button2Click(Sender: TObject); begin

IBQuery3.Params[0].AsString:-Edit1.Text;

IBQuery3.Params[1].AsString:-IBQuery1.Fields[0].As

String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:-'';

end;

procedure TForm12.Button3Click(Sender: TObject); begin

IBQuery4.Params[0].AsString:-IBQuery1.Fields[0].As

String;

IBQuery4.Open;

IBQuery4.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

end.

unit travma;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, DBCtrls, Grids, DBGrids,

ComCtrls;

type

TForm19 - class(TForm)

Edit1: TEdit;

Edit2: TEdit;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit3: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

DateTimePicker1: TDateTimePicker;

DateT imePicker2: TDateT imePicker; procedure Button3Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form19: TForm19;

implementation

{$R *.dfm} uses av;

procedure TForm19.Button3Click(Sender: TObject);

begin

close;

end;

procedure TForm19.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:-Edit3.Text;

IB Query2 .Params [1].As String :-DateTo Str(DateT imeP icker1.Date);

IBQuery2 .Params [2]. AsString:-DateT o Str(DateT imeP icker2.Date);

IBQuery2.Params[3].AsString:-Edit2.Text;

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit3.Text:-'';

end;

procedure TForm19.Button2Click(Sender: TObject); begin

IBQuery3.Params[0].AsString:-IBQuery1.Fields[0].As

String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

end.

unit trener;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, DBCtrls, ComCtrls,

Grids, DBGrids;

type

TForm20 - class(TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

DateTimePicker1: TDateTimePicker;

Label3: TLabel;

DBLookupComboBox1: TDBLookupComboBox; Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

IBQuery4: TIBQuery; procedure Button4Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button3Click(Sender: TObject); private

{ Private declarations } public { Public declarations } end;

var

Form20: TForm20;

implementation

{$R *.dfm} uses av, contri, dan;

procedure TForm20.Button4Click(Sender: TObject);

begin

close;

end;

procedure TForm20.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:-Edit1 .Text;

IB Query2 .Params [1].AsString:-DateTo Str(DateT imeP icker1.Date);

IBQuery2.Params[2].AsString:-form6.IBQuery1.Field

s[0].AsString;

IBQuery2.Params[3].AsString:-'1';

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:-'';

end;

procedure TForm20.Button2Click(Sender: TObject); begin

IBQuery3.Params[0].AsString:-Edit1.Text;

IBQuery3 .Params [1]. AsString:-DateT o Str(DateT imeP icker1.Date);

IBQuery3 .Params[2].AsString:-form6.IBQuery1.Field s[0].AsString;

IBQuery3.Params[3].AsString:-IBQuery1.Fields[0].As

String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:-'';

end;

procedure TForm20.Button5Click(Sender: TObject); begin

IBQuery4.Params[0].AsString:-IBQuery1.Fields[0].As

String;

IBQuery4.Open;

IBQuery4.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

procedure TForm20.Button3Click(Sender: TObject); begin

form18.edit3.text:-'';

form18.edit4.text:-'';

form18.Edit1.Text:-IBQuery1.Fields[1].AsString;

form18.Edit2.Text:-IBQuery1.Fields[0].AsString;

form18.IBQuery1.Params[0].AsString:-IBQuery1.Fiel

ds[0].AsString;

form18.IBQuery1.close;

form18.IBQuery1.Open;

form18.ShowModal;

end;

end.

unit trud; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, ComCtrls, Grids,

DBGrids, DBCtrls;

type

TForm26 - class(TForm)

Label1: TLabel;

DBLookupComboBox1: TDBLookupComboBox; DBGrid1: TDBGrid;

Label2: TLabel;

Edit1: TEdit;

Label3: TLabel;

DateTimePicker1: TDateTimePicker;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

IBQuery4: TIBQuery;

DataSource1: TDataSource;

IBQuery5: TIBQuery;

DataSource2: TDataSource; procedure Button4Click(Sender: TObject); procedure DBLookupComboBox1Click(Sender: TObject);

procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var

Form26: TForm26;

implementation

{$R *.dfm} uses av;

procedure TForm26.Button4Click(Sender: TObject);

begin

close;

end;

procedure

TForm26.DBLookupComboBox1Click(Sender:

TObject);

begin

IBQuery1.Close;

IBQuery1.Params[0].AsString:-IBQuery5.Fields[0].As

String;

IBQuery1.Open;

end;

procedure TForm26.Button1Click(Sender: TObject); begin

IBQuery2.Params[0].AsString:-Edit1 .Text;

IB Query2 .Params [1].AsString:-DateTo Str(DateT imeP icker1.Date);

IBQuery2.Params[2].AsString:-IBQuery5.Fields[0].As

String;

IBQuery2.Open;

IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:-'';

end;

procedure TForm26.Button2Click(Sender: TObject); begin

IBQuery3 .Params[0].AsString:-Edit1 .Text;

IBQuery3 .Params [1]. AsString:-DateT o Str(DateT imeP icker1.Date);

IBQuery3 .Params[2].AsString:-IBQuery 1 .Fields[0] .As String;

IBQuery3.Open;

IBQuery3.Close;

IBQuery1.Close;

IBQuery1.Open;

Edit1.Text:-'';

end;

procedure TForm26.Button3Click(Sender: TObject); begin

IBQuery4.Params[0].AsString:-IBQuery1.Fields[0].As

String;

IBQuery4.Open;

IBQuery4.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

end.

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

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

-    анализ аналогов программных системы, в результате чего были выявлены их достоинства и недостатки рассмотренных аналогов, и принято решение о разработке собственного программного средства;

-    выбран математический аппарат для решения задачи по определению основного состава команды в соответствии с заданными критериями, на основании данных по прошедшим матчам;

-    в соответствии с заданной предметной областью была спроектирована база данных, и реализована на InterBase 7.0;

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

-    разработан алгоритм решения задачи;

-    проведена отладка и тестирование программного средства и в частности математического аппарата в среде MatCad;

-    разработана сопроводительная документация для администратора БД, программиста и пользователя программного средства.

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

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

1    Официальный сайт Российской Федерации Баскетбола [Электронный ресурс]: - URL: http://www.basket.ru/documents/file/list/viewing/?ctgrub=43. - (дата обращения: 18.12.2011).

2    Российская федерация баскетбола [Электронный ресурс]: - URL: http://www.infobasket.ru. - (дата обращения: 20.12.2011).

3    Суперлига по баскетболу [Электронный ресурс]:    - URL:

http://news.sportbox.ru/Vidy_sporta/Basketbol. - (дата обращения: 20.12.2011).

4    Мандель, И.Д. Кластерный анализ. [Текст] / И.Д. Мандель. - М.: Финансы и статистика, 1988. - 176 с.

5    Гофман, В.Э. Visual Studio.NET. [Текст] / Гофман В.Э., Хомоненко А.Д. СПб.: БХВ - Петербург, 2007. - 1152с.

6    Керман, К. Программирование и отладка в C++ Builder. [Текст] Учебный курс, Москва 2006. - 326 c.

7    Бобровский, С. И. Delphi 7 [Текст]: учебный курс / С. И. Бобровский . -СПб. : Питер, 2008. - 736 с.

8    Советов Б.Я., Базы данных: теория и практика: Учебник для вузов - М.: Высшая школа, 2007. - 463 с.: ил.

9    Дженнингс, Р. Использование Microsoft Office Access 2003. Специальное издание [Текст]: пер. с англ. / Р. Дженнингс. - М. : Вильямс, 2006. - 1312 с.

10    Виейра, Р. Программирование баз данных Microsoft SQL Server 2005 = Beginnig SQL Server 2005 programming [Текст]: базовый курс: пер. с англ / Р. Виейра . - М. : Вильямс, 2007. - 832 с.

11    Ковязин, А. Архитектура, администрирование и разработка приложений баз данных в InterBase/Firebird/Yaffil [Текст]: /А. Ковязин, С. Востриков - М.: КУ-ДИЦ-ОБРАЗ, 2003. - 496 с.

12    Фаронов, В. В. Программирование баз данных в Delphi 7 [Текст]: учеб. курс / В. В. Фаронов. - СПб. : Питер, 2005. - 459 с.

13    Тельман, Дж. Современные системы управления базами данных. - М.: Финансы и статистика, 2008. - 625 c.

14    Орлов, С.А. Технология разработки программного обеспечения. [Текст]

- Спб.: Питер, 2002 - 464 с.

15    Макаров, Ч.М. Теория выбора и ПР. [Текст] Учебное пособие.- М. Наука. 1982.

16    Спицнадель, В.Н. Теория и практика принятия оптимальных решений. [Текст] Учебное пособие. -М., Бизнес-пресса, 2002.

17    Ларичев, О.Н. Теория и методы принятия решений. [Текст] -М., Логос,

2002.

18    Мушин, Э.К. Методы принятия технических решений. [Текст] -М., Мир,

1990.

19    Розен, В.В. Цель, оптимальность, решение. Математические модели принятия оптимальных решений. [Текст] -М. Радио и связь. 1982.

20    Кини, Р.Л. ПР при многих критериях предпочтения и замещения.

[Текст] / Кини Р.Л., Райфа Х. М.: Радио и связь, 1981.

21    Саати, Т. Принятие решений. Метод анализа иерархий. [Текст] М.: Сов. Радио,1993.

22    Орловский, С.А. Проблемы принятия решений при нечетких исходных данных. [Текст] М.: Наука, 1981.

23    Когловский, М. Р. Технология баз данных на персональных ЭВМ. [Текст] - М.: Финансы и статистика, 1992. - 421 с.

24    Мартин, Дж. Организация баз данных в вычислительных системах. [Текст] - М: Мир, 1978. - 161 с.

25    Горев, А. Эффективная работа с СУБД. [Текст] / Горев А., Р. Ахаян, С. Макашарипов -СПб.: Питер, 1997. - 704 с.

26    Стивенс, Р. Delphi Готовые алгоритмы. [Текст] Москва 2001.

27    ГОСТ 19.701-90. Схемы алгоритмов, программ, данных и систем. -[Текст] Введ. 01.01.92. - М.: Издательство стандартов, 1998. - 25с.

 

Скачать дипломную работу: AVTOMATIZIROVANNAYa_INFORMACIONNAYa_SISTEMA_BASKETBOLNOGO_KLUBA.rar

Категория: Дипломные работы / Дипломные работы по информатике

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.