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

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



p>данные база программа университет

База данных реализована при помощи бесплатной СУБД MySQL4.1.22.

Эта СУБД наиболее подходит для решения поставленных задач. Она имеет следующие преимущества:

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

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

надежность;

простота использования;

бесплатность.

База данных создавалась в MySQL Command Line Client без использования графического интерфейса [3]. В последствии для выполнения SQL-запросов и в процессе отладки использовалась программа MySQL-Front. Рабочее окно программы представлено на рисунке 2.1.

Рисунок 2.1 - Рабочее окно MySQL-Front

Созданная база данных имеет шесть таблиц.

Таблица Zaregcl предназначена для хранения регистрационных данных игроков (таблица 2.1).

Таблица 2.1 - Zaregcl

Название поляТип данныхОписаниеОбязательное полеidсчетчикпорядковый номердаloginvarchar(20)логин для входа в системудаpasswordvarchar(20)парольда

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

Таблица Games предназначена для хранения списка имеющихся игр с указанием ссылок на их интерфейс (таблица 2.2).

Таблица 2.2 - Games

Название поляТип данныхОписаниеОбязательное полеidсчетчикпорядковый номердаgamevarchar(255)название игрыдаssilkavarchar(255)ссылка на интерфейсда

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

Таблица History предназначена для хранения истории проведенных игр. В этой же таблице хранятся игры, которые проходят в данный момент, либо в которые идет набор игроков (таблица 2.3).

Таблица 2.3 - History

Название поляТип данныхОписаниеОбязательное полеidсчетчикпорядковый номердаdatedatetimeдата игрыдаid_gameintссылка на игрудаstatusvarchar(25)статус игрыдаkomnatavarchar(255)название комнатыда

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

Таблица Etaps предназначена для хранения информации об этапах игр. Здесь хранятся задания на этапы игр, максимальное время на этап и правильный ответ на этап (если необходимо) (таблица 2.4).

Таблица 2.4 - Etaps

Название поляТип данныхОписаниеОбязательное полеidсчетчикпорядковый номердаid_gameintссылка на игрудаetapintномер этапа игрыдаzadanielongblobзадание на этапдаtimetimeвремя на этапнетotvetlongblobправильный ответ на этапнет

Поле id является первичным ключом и служит для однозначной идентификации игры. Поле id_game является внешним ключом на поле game из таблицы Games, чтобы не нарушить ссылочную целостность. Поля id, id_game и etap могут принимать значения только больше 0.

Таблица Online предназначена для хранения информации о проводимых играх с указанием задействованных в них игроков и их состояниями (таблица 2.5).

Таблица 2.5 - Online

Название поляТип данныхОписаниеОбязательное полеidсчетчикпорядковый номердаid_gameintссылка на игрудаid_loginintссылка на клиентадаetapintтекущий этапдаstatusvarchar(20)статус выполнения этападаtimetimeоставшееся время на этапнет

Поле id является первичным ключом и служит для однозначной идентификации игры. Поле id_game является внешним ключом на поле id из таблицы History, чтобы не нарушить ссылочную целостность. Поле id_login является внешним ключом на поле id из таблицы Zaregcl, чтобы не нарушить ссылочную целостность. Поля id, id_game, id_login и etap могут принимать значения только больше 0. Статус выполнения этапа игроком может принимать несколько значений: выполняет, выполнил, не успел, потеряна связь. Поле time заполняется лишь при потере связи с игроком. Связка полей id_login и id_game уникальна, чтобы исключить дублирование записей.

Таблица Otveti предназначена для хранения ответов игроков (таблица 2.6).

Таблица 2.6 - Otveti

Название поляТип данныхОписаниеОбязательное полеid_loginintссылка на клиентадаetapintномер этападаotvetlongblobответ, данный на этапдаtimetimeзатраченное время на этапнетresultblobсравнение с правильным ответом на этапнет

Поле id_login является внешним ключом на поле id из таблицы Online, чтобы не нарушить ссылочную целостность. Поля id_login и etap могут принимать значения только больше 0. Поле result заполняется лишь при необходимости.

Связи между таблицами представлены на рисунке 2.2.

Рисунок 2.2 - Наглядные связи между таблицами базы данных

2.2 Управляющая программа

Программа выполнена средствами Delphi 7. Обмен данными с сервером реализован при помощи сокетов и компонента ClientSocket. Связь с базой данных осуществляется через сервер. Для отображения игр используется компонент ListView.Управляющий модуль имеет возможность создавать новые игры, разрешать и запрещать доступ клиентам к играм, осуществлять переход на следующий этап игры, заканчивать игры.

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