Файл: Организационно-экономическая характеристика предприятия.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 25.05.2023

Просмотров: 1136

Скачиваний: 5

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Рисунок 2.4. Декомпозиция контекстной диаграммы

2. Проектирование базы данных информационной системы

2.1. Концептуальное проектирование базы данных

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

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

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

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

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

Таким образом, нами определены следующие сущности в базе данных:

  • Страны-производители;
  • Фильмы:
  • Билеты;
  • Типы билетов;
  • Залы;
  • Сеансы;
  • Цены на билеты.

2.2. Логическое проектирование базы данных

7

2.3. Физическое проектирование базы данных

2.4. Состав таблиц

Опишем назначение и состав каждой из таблиц базы данных.

Таблица «Страны» (countries) содержит информацию о странах – производителях фильмов.

Таблица содержит следующие поля:

Таблица 2.1. Состав полей таблицы «Страны»

Название поля

Описание поля

Тип данных

Ключ

Id_country

Идентификатор страны

Integer

Первичный

Таблица «Билеты» (tickets) содержит информацию о проданных билетах.


Таблица содержит следующие поля:

Таблица 2.2. Состав полей таблицы «Билеты»

Название поля

Описание поля

Тип данных

Ключ

Id_ticket

Идентификатор билета

Integer

Первичный

Id_seans

Идентификатор сеанса

Integer

Внешний

Number_mesto

Номер места

Integer

Id_type

Идентификатор типа места

Integer

Внешний

Price

Цена билета

money

Таблица «Сеансы» (seans) содержит информацию о сеансах на фильмы.

Таблица содержит следующие поля.

Таблица 2.3. Состав полей таблицы «Сеансы»

Название поля

Описание поля

Тип данных

Ключ

Id_seans

Идентификатор сеанса

Integer

Первичный

Id_film

Идентификатор фильма

Integer

Внешний

Id_zal

Идентификатор зала

Integer

Внешний

Time

Время начала сеанса

Datetime

Таблица «Фильмы» (films) содержит информацию о фильмах.

Таблица содержит следующие поля.

Таблица 2.4. Состав полей таблицы «Фильмы»

Название поля

Описание поля

Тип данных

Ключ

Id_film

Идентификатор фильма

Integer

Первичный

Name

Название фильма

Varchar(20)

Id_country

Идентификатор страны

Integer

Внешинй

Director

ФИО режиссера фильма

Varchar(20)

Length

Длина фильма в минутах

Integer

Description

Описание фильма

Varchar (200)

Таблица «Залы» (zaly) содержит информацию о залах.

Таблица содержит следующие поля.

Таблица 2.5. Состав полей таблицы «Залы»

Название поля

Описание поля

Тип данных

Ключ

Id_zal

Идентификатор зала

Integer

Первичный

Name

Название зала

Varchar(20)

Mest

Количество мест

Integer

Ryadov

Количество рядов

Integer


Таблица «Типы мест» (type_mesta) содержит информацию о типах мест в залах.

Таблица содержит следующие поля.

Таблица 2.6. Состав полей таблицы «Типы мест»

Название поля

Описание поля

Тип данных

Ключ

Id_type

Идентификатор типа

Integer

Первичный

Name

Название типа

Varchar(20)

Таблица «Цены на билеты» (ticket prices) предназначена для сохранения цен на билеты.

Таблица содержит следующие поля.

Таблица 2.7. Состав полей таблицы «Цены на билеты»

Название поля

Описание поля

Тип данных

Ключ

Id_price

Идентификатор цены

Integer

Первичный

Id_seans

Идентификатор сеанса

Integer

Внешний

Id_type

Идентификатор типа

Integer

Внешний

Price

Цена на билет

Money

Далее с помощью инструменты среды ErWin Data Modeler под названием Forward Engineer был сгенерирован сценарий создания базы данных.

3. Программная реализация

3.1. Архитектура приложения

Проект имеет модульную структуру. Каждой форме проекта соответствует определенный файл модуля.

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

Таблица 3.1

Список модулей проекта

Название модуля

Назначение модуля

Umain.pas

Главный модуль проекта. Содержит все главные процедуры

UFilmy.pas

Модуль справочника фильмов

UDataModule.pas

Файл модуля данных, связывающий все компоненты, ответственные за доступ к базе данных

UCenyBilety.pas

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

USeansy.pas

Модуль справочника сеансов

UStrany.pas

Модуль справочника стран

UTipyMest.pas

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

UZaly.pas

Модуль справочника залов

UZalyRyady.pas

Модуль справочника рядов в залах

UProdajaZaly.pas

Модуля отчета «Продажа по залам»

UProdajaFilmy.pas

Модуль отчета «Продажа по фильмам»

UProdajaTipy.pas

Модуль отчета «Продажа по типам билетов»


3.2. Связывание базы данных с программой Delphi

После того, как база данных создана, необходимо организовать её связь с программой в Delphi. Наша задача состоит в том, чтобы организовать такое взаимодействие без использования дополнительных SQL-запросов и представлений.

Итак, создаем проект Delphi. Для того, чтобы таблицы обрабатывались централизованно (что в дальнейшем значительно облегчит работу с ними) мы будем использовать компонент типа Data Module. Data Module – это разновидность формы Delphi, на которой не может быть представлено никаких визуальных компонентов, кроме компонентов, предназначенных для работы с базами данных.

Создаем такой модуль, выбрав в главном меню File – New – Data Module. Сохраним программную часть этого компонента под названием UDataModule.

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

Для этого нажимаем на кнопку с тремя точками рядом с этим свойством. На экран выводится следующее окно.

Рисунок 3.1 – Свойства подключения

Далее нажимаем кнопку Build и настраиваем соединение с базой данных, указывая наименование сервера и базы данных.

Рисунок 3.2 – Настройка подключения к базе данных

Для проверки соединения можно нажать на кнопку «Проверить подключение». Если выведется сообщение о том, что подключение успешно, то данные правильны. После нажатия на кнопку «ОК» строка соединения будет сформирована.

Разместим на полученном модуле несколько компонентов типа ADOTable и несколько компонентов типа DataSource, дав им соответствующие имена.

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

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


Теперь создадим подстановочные поля. Для этого нажимаем правой кнопкой в окне редактора, и выбираем «New Field».

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

Рисунок 3.3 – Создание Lookup поля

Поясним эти параметры.

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

В поле Type указывается тип данных в поле. Для корректной работы необходимо выбрать значение Variant.

Поле Field Type указывает на тип поля. Необходимо указать тип Lookup.

Поле Key Fields указывает поле в исходной таблице для подстановки ключевого значения.

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

Поле Lookup Keys указывает значения ключевых полей, которые будут подставляться.

Поле Result Fields указывает поля с названиями ключевых полей.

Нажимаем на кнопку OK. Таким образом мы добавили поле типа Lookup в таблицу TFilmy.

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

3.3. Разработка программного средства

Файл UMain.pas имеет несколько ключевых процедур.

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

Приведем код данной процедуры с подробными комментариями.

procedure TMain.Otrisovka;

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

var s,fn:string;

Color:TColor;

begin

if DBLookupComboBox1.KeyValue<>null then

begin

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

if DataModule1.TZaly.Active<>true or DataModule1.TZaly_ryady.Active<>true or DataModule1.TBilety.Active<>true then exit;

//Устанавливаем цвет заливки в цвет формы

Canvas.Brush.Color:=ClBtnFace;

//Заливаем форму этим цветом (необходимо для очистки формы от предыдущего рисунка зала)

Canvas.FillRect(Canvas.ClipRect);

//Запоминаем идентификатор выбранного зала

id:=DBLookupComboBox1.KeyValue;

//Переходим в таблице "Залы" к этому залу

DataModule1.TZaly.Locate('id_zal',id, []);

//Запоминаем количество рядов в зале

ryadov:=DataModule1.TZaly.FieldByName('ryadov').AsInteger;

//Запоминаем количество мест в зале

mest:=DataModule1.TZaly.FieldByName('mest').AsInteger;

//Узнаем путь к схеме зала

fn:=ExtractFilePath(Application.ExeName)+'Залы\'+DataModule1.TZaly.FieldByName('File_schema').AsString;

//Связываем текстовую переменную с файлом

assignfile(textf, fn);

//Вычисляем шаг (размер ячейки места) по горизонтали