СОДЕРЖАНИЕ
1.1. Организационно-экономическая характеристика предприятия
1.2. Описание проектируемой системы
1.5. Формализованное описание в виде набора основных диаграмм
2. Проектирование базы данных информационной системы
2.1. Концептуальное проектирование базы данных
2.2. Логическое проектирование базы данных
2.3. Физическое проектирование базы данных
3.2. Связывание базы данных с программой Delphi
3.3. Разработка программного средства
dx:=((Main.Width-40) div mest)-3;
//Вычисляем шаг (высоту ячейки места) по вертикали
dy:=((Main.Height-180) div ryadov)-3;
//Узнаем центральную точку ячейки по горизонтали
centerx:=dx div 2;
//Узнаем центральную точку ячейки по вертикали
centery:=dy div 2;
//Допуск
dop:=(main.Width-((dx+3)*mest)) div 2;
//Устанавливаем курсор на первую строку файла зала
reset(textf);
//Фильтруем таблицу "Залы ряды" по идентификатору зала (оставляем только записи для текущего зала)
DataModule1.TZaly_ryady.Filter:='id_zal = '+IntToStr(id);
DataModule1.TZaly_ryady.Filtered:=true;
//Начираем последовательно перебирать ряды
for I := 0 to ryadov-1 do
begin
//Считываем строку из файла схемы (она соответствует ряду)
readln(textf, s);
//Устанавливаем курсор на первую запись отфильтрованной таблицы
DataModule1.TZaly_ryady.First;
//Узнаем цвет текущего ряда, для этого
//Последовательно перебираем записи в табилце
for m := 1 to DataModule1.TZaly_ryady.RecordCount do
begin
//Если номер ряда входит в диапазон в таблице (соответствует типу места этого диапазона)
if (i+1>=DataModule1.TZaly_ryady.FieldByName('ryad_ot').AsInteger) and (i+1<=DataModule1.TZaly_ryady.FieldByName('ryad_do').AsInteger) then
begin
//Узнаем цвет этого типа места
//Для этого устанавливаем курсор на первую строку таблицы "Типы мест"
DataModule1.TTipyMest.First;
//Находим строку в таблице соответстующую этому типу
DataModule1.TTipyMest.Locate('id_type', DataModule1.TZaly_ryady.FieldByName('id_type').AsInteger, []);
//Запоминаем цвет этого типа ряда
Color:=ConvertHtmlHexToTColor(DataModule1.TTipyMest.FieldByName('Color').AsString);
//Указываем этот цвет для цвета заливки
Main.Canvas.Brush.Color:=Color;
end;
//Продолжаем перебирать таблицу "Залы ряды"
DataModule1.TZaly_ryady.Next;
end;
//Рисуем номер ряда
Main.Canvas.TextOut(5, 80+i*(dy+3)+centery-5, IntToStr(i+1));
//Рисуем зал, для этого
//Последовательно перебираем места (символы в выбранной ранее строке схемы зала)
for k:= 0 to mest-1 do
//Если в считанной ранее из файла схемы строке в текущем символе находится единица, т.е. на этом месте есть кресло
if s[k+1]='1' then
begin
//Рисуем квадрат на форме. Это наше место. Причем отрисуется запомненным ранне цветом.
Main.Canvas.Rectangle(dop+k*(dx+3), 80+i*(dy+3), dop+(k*(dx+3))+dx, 80+i*(dy+3)+dy);
//И рисуем номер этого места
Main.Canvas.TextOut(dop+k*(dx+3)+centerx-5, 80+i*(dy+3)+centery-5, IntToStr(k+1));
end;
end;
//Теперь необходимо отрисовать занятые на сеанс места
//Для этого запоминаем номер сеанса
id_seans:=DBLookupComboBox3.KeyValue;
DataModule1.TBilety.Active:=False;
DataModule1.TBilety.Active:=True;
//Фильтруем таблицу "Билеты", оставляя в ней только билеты, купленные на данный сеанс
DataModule1.TBilety.Filter:='id_seans ='+IntToStr(id_seans);
DataModule1.TBilety.Filtered:=False;
DataModule1.TBilety.Filtered:=True;
//Переходим к первой записи таблицы
DataModule1.TBilety.First;
//Повторяем с первой до последней записи в отфильтрованной таблице
for m := 1 to DataModule1.TBilety.RecordCount do
begin
//Запоминаем номер места из таблицы
k:=DataModule1.TBilety.FieldByName('number_mesto').AsInteger-1;
//Запоминаем номер ряда из таблицы
i:=DataModule1.TBilety.FieldByName('number_ryad').AsInteger-1;
//Устанавливаем цвет заливки в красный
Main.Canvas.Brush.Color:=clRed;
//Рисуем квадрат в соответствующем месте
Main.Canvas.Rectangle(dop+k*(dx+3), 80+i*(dy+3), dop+(k*(dx+3))+dx, 80+i*(dy+3)+dy);
//Рисуем номер места
Main.Canvas.TextOut(dop+k*(dx+3)+centerx-5, 80+i*(dy+3)+centery-5, IntToStr(k+1));
//Переходим к следующей записи
DataModule1.TBilety.Next;
end;
end;
end;
Для установки программы необходимо скачать программное средство Microsoft SQL Server 2012 Express и среду разработки для него MS SQL Server 2012 Management Studio с сайта компании Microsoft.
Их необходимо установить с параметрами по умолчанию.
После этого необходимо запусти MS SQL Server Management Studio, войти с параметрами по умолчанию и нажав правой кнопкой на заголовке «Базы данных» выбрать «Присоединить». Указать файл базы данных, поставляемый с программой.
После этого необходимо отрыть файл settings.ini из папки с исполняемым файлом программы, и указать в нем название сервера и рабочей станции.
После этого программа будет готова к работе.
Для корректного функционирования программы требуется сервер со следующими параметрами.
Требования к клиентскому оборудованию аналогичные.
Для функционирования программы требуется ОС Windows XP/7/8/10.
Главная форма программы является основной рабочей формой программы.
В ней непосредственно просматриваются данные о залах, а также вносятся данные по реализованным билетам.
Главная форма выглядит следующим образом:

Рисунок 3.5. Главная форма программы
В начале работы необходимо последовательно выбрать зал для редактирования, фильм, идущий в нем, а также сеанс.
Следует отметить что программа допускает выбор только тех фильмов и залов, которые соответствуют выбранным ранее параметрам.
После выбора всех данных на экран будет выведена схема выбранного зала.
Для того, чтобы занести продажу билета – необходимо нажать на нужное место правой кнопкой мыши и выбрать нужный пункт из выпадающего меню.
Рисунок 3.5. Выпадающее меню
После нажатия на кнопку «Продать» продажа будет занесена в базу данных и занятое место выделено красным цветом.
Сведения о дате и стоимости билета заносятся в базу данных автоматически, на основании данных из справочников.
Компонент-навигатор, расположенный на каждой из форм справочника, имеет следующий вид.
6
7
8
9
5
4
3
2
1
10
В компоненте имеются следующие кнопки:
1 – перейти на первую запись таблицы.
2 – перейти к предыдущей записи.
3 – перейти к следующей записи.
4 – перейти к последней записи таблицы.
5 – добавить запись
6 – удалить запись.
7 – начать редактирование
8 – подтвердить изменения.
9 – отменить изменения.
10 – вернуть ввод.
Справочник стран предназначен для внесения возможных стран, в которых произведены фильмы.
Справочник выглядит следующим образом:
Рисунок 3.7. Справочник стран
Данные вносятся непосредственно в компонент на форме.
В справочник фильмов заносятся идущие в кинотеатре фильмы.
Рисунок 3.8. Справочник фильмов
В справочник сеансов заносится соответствие залов, фильмов и времени этих ссеансов.
Рисунок 3.9. Справочник сеансов
В данный справочник заносятся соотношения сеансов, типов мест и цен для данных типов.
Доступен выбор из выпадающих списков значений из справочников.

Рисунок 3.10. Справочник цен на билеты
В данный справочник заносятся названия типов мест и соответствующие им цвета в восьмеричном формате.
Рисунок 3.11. Справочник типов мест
В данный справочник заносится название зала, количество мест и рядов в нем, и название соответствующего этому залу файла схемы.
Рисунок 3.12. Справочник залов
В данный справочник заносятся название зала, тип места, и диапазон рядов соответствующих этому типу.
Рисунок 3.13. Справочник рядов
В данном отчете выводится общая сумма продаж билетов за указанный пользователем период в разрезе типов билетов.
Рисунок 3.14. Отчет «Продажи билетов по типам»
В данном отчете выводится общая сумма продаж билетов за указанный пользователем период в разрезе залов кинотеатра.
Рисунок 3.15. Отчет «Продажи билетов по залам»
Автоматизация кинозала или, тем более, кинотеатра-мультиплекса с несколькими залами — сегодня такая же необходимость, как установка экрана. Хороший звук, качественная картинка и удобные кресла по умолчанию должны сочетаться с четкой работой системы продажи и бронирования билетов. Ведь современный кинолюбитель уже отвык от таких анахронизмов, как продажа нескольких билетов на одно и то же место. Ему также трудно представить, что билеты в кино нельзя забронировать по телефону или интернету. Выбирая место в зале, он ищет глазами экран, на котором демонстрируется схема с отмеченными на ней занятыми и свободными креслами. Мониторы с информацией о сеансах в режиме реального времени тоже входят в джентльменский набор приличного кинотеатра.
Конечно, разработанная система не обладает подобными излишествами, но в целом позволяет автоматизировать работу кинотеатра.
В первой главе было рассмотрено предприятие и проведено формализованное описание системы.
Во второй главе было проведено проектирование и физическая реализация базы данных.
В третьей главе проведена разработка программного средства, а также написано руководство пользователя информационной системы.