Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Задачи автоматизации и характеристика существующих бизнес процессов

Содержание:

Введение

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

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

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

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

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

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

В качестве БД планируется использовать MS Access, поскольку данная БД обладает всеми необходимыми требованиями для обработки и хранения данных.

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

Данная работа формально поделена на три большие части.

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

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

Третья часть работы освящает пути возможного совершенствования полученного программного обеспечения.

Глава 1. Исследование предметной области и предприятия

1.1. Характеристика предприятия и его деятельности

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

Численность работников предприятия составляет 31 человек, в состав которых входит:

  • Руководитель (начальник) предприятия;
  • Заместитель начальника предприятия;
  • Финансово-экономическая группа;
  • Кассовые работники;
  • Отдел автоматизации;
  • Технический персонал.

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

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

Рисунок 1.1. Кадровая структура предприятия ЗАО "Победа".

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Это не диаграмма IDEF0! Вы должны показать контекстную диаграмму БРОНИРОВАНИЕ БИЛЕТОВ, а затем декомпозицию, то есть из каких этапов состоит этот бизнес-процесс

Рисунок 1.2. IDEF0 схема задачи

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

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

Систему бронирования билетов удобно осуществлять посредством СУБД (Система управления базами данных) и прикладного языка программирования.

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

Среди СУБД существует множество решений. Следует упомянуть, что прежде всего, СУБД делятся настольные и промышленные.

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

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

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

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

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

Среди настольных СУБД следует выделить такие как  dBase и Visual dBase ,  Microsoft Access , Microsoft FoxPro и Visual FoxPro , Paradox .

Среди промышленных СУБД можно выделить Oracle и Microsoft SQL Server.

Кстати, следует обязательно упомянуть, что СУБД Microsoft Access многие эксперты относят так же к промышленным. Таким образом, данное СУБД является с одной стороны очень мощным средством для реализациилюбых проектов, требующих работы с базами данных, с другой стороны это СУБД представляет самые удобные графические средства для управления базой данных. Именно это обуславливает выбор Microsoft Access как среды разработки базы данных для проекта системы бронирования билетов. Единственным наиболее сильным конкурентом у Microsoft Access является Visual FoxPro.

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

На самом деле можно было бы ограничиться только средствами самой Microsoft Access, ведь в ее состав входит Visual Basic for application, который позволяет писать самые сложные макросы, позволяющие реализовать, совместно с формами и отчетами, создаваемые в среде Microsoft Access, весь функционал полноценного приложения. Но тем не менее средства самого Microsoft Access в плане построения пользовательского интерфейса и дальнейшего расширения возможностей программы в плане интеграции и тому подобного является ограниченными. Именно поэтому целесообразно совместно с СУБД применять для разработки среду программирования.

В настоящее время для работы с базами данных существует достаточно множество различных сред. Это и С#, это Visual Basic, Java, Delphi и многие другие.

В каждом из этих языков есть свои преимущества и недостатки. Но в настоящее время все они настолько развиты и возможности их настолько велики, что выбор того или иного языка аргументируется больше предпочтениями конкретного программиста, нежели задачами. Уже не стоит задаваться вопросом что лучше, Visual Basic или Delphi. Они оба хороши и трудно переоценить возможности того или иного языка. Так же выбор языка аргументируется коллективной разработкой. Когда программист устраивается на определенную работу, где ведется командная разработка программного обеспечения, то он вынужден писать программный код на том языке, на котором работает команда. Хотя с появлением Net-технологий необходимость постепенно отпадает и в этом, ведь проекты, написанные на Net-подобных средах разработки способны в одном проекте объединять программные коды, написанные на разных языках программирования, поддерживающих технологию Net. Сама по себе первоначально Net среда была призвана полностью заменить COM-технологию, на которой полностью базируется Windows.

Что такое COM-технология по существу? Это технология общего использования компонентов, называемы ActiveX. ActiveX - это абстрактное представление COM-технологии в большей степени относящейся к компонентам и классам. Точнее говоря, первой абстактной ступенью COM является OLE -технология, а уже затем из нее получилась технология ActiveX. Кстати говоря, все они по-прежнему являются не более чем, простым маркетинговым ходом компании Microsoft, а программно принципиально ничем не изменились.

Итак, COM пропагандирует использования одного объекта, который является частью операционной системы Windows другими программами. Это значит, что все программы, которые пишутся под windows могут использовать уже готовые классы для создания своих объектов. Это и формы ввода, и кнопки, и элементы ввода информации , и многие другие элементы управления, которые являются стандартными для операционных систем семейства Windows. А те компоненты, которых нет в операционной системе, достаточно зарегистрировать как класс в процессе инсталляции приложения. Устанавливаются они вместе с приложением и распространяются в виде DLL-файлов.

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

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

Для реализации нашего проекта была выбрана среда разработки Delphi, а конкретно Delphi 7.

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

Хочется упомянуть о том, что Delphi 7 - это первая из версий Delphi, написанная на себе самом, то есть Delphi 7 написали на Delphi 6. Таким образом, очень впечатляет мощность этой программной среды.

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

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

По своим возможностям Delphi прямой конкурент не только Visual Basic, но и некоторой степени языка С, например по части взаимодействия с функциями API-windows. Здесь у Delphi есть все необходимое, а ведь функции API вызываются достаточно часто, при написании весьма крупных проектов. Delphi конечно уступает по скорости работы написанной на нем программы С-подобным языкам, но он создавался как язык более высокого уровня, предназначенным для решения прикладных задач, а языки семейства С - это более системные языки. Хотя стоит повториться, что сейчас положение дел изменилось и тот же С# обладает множеством визуальных компонентов, готовых к работе.

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

Delphi базируется на концепциях современного объектно-ориентированного программирования:

  • Полиморфизм
  • Наследование
  • Инкапсулирование

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

Наследование представляет собой технологию, когда дочерний объект наследует атрибуты объекта родителя.

Инкапсулирование - это объединение данных и функций в едином компоненте.

Delphi 7 был разработан компанией Borland. В настоящее время Delphi принадлежит компании Embarcadero. Но Embarcadero является в отношении Delphi структурным подразделением Borland.

Стоит сказать так же, что Delphi - это многоплатформенная среда разработки. Delphi 7 в своем составе имеет библиотеку VCL. То есть компоненты этой библиотеки не являются ActiveX, а напротив, являются "родными" для Delphi. Это значит, что их регистрация не требуется в операционной системе, и они встраиваются в исполняемый .exe - файл. Это значит, что такой исполняемый файл будет работать и в Linux. Современные версии делфи позволяют писать приложения для MAC IOS и Андроид.

Для работы с базой данных Delphi представляет из себя многочисленные технологии. Это технология BDE, ADO и многие другие.

Для реализации этого проекта была выбрана технология ADO компании Microsoft. Это ActiveX компонент, но его установка в операционной системе не требуется, так как она является сутью самой Windows. Альтернативой для данной задачи является механизм доступа к данным BDE, но движок BDE придется устанавливать на каждый компьютер отдельно. Это не являются чем-то проблемным, просто компания Borland посчитала механизм BDE немного устарешей технологией и плохо обрабатывающей большие объемы данных, которым сейчас оперируют современные базы. Хотя для нашей программы механизма BDE было бы более чем достаточно. Тем не менее, предпочтение отдано технологии ADO.

ADO - это механизм доступа к данным компании Microsoft, который заменил, две устаревшие технологии этой же компании DAO (Технология доступа к локальным данным) и RDO (Технология доступа к удаленным данным). Теперь эти два объекта объединяются в одном, что очень удобно.

Таким образом, Delphi 7 - это одна из самых мощных сред разработки прикладного программного обеспечения, в том числе и для работы с базами данных. ЭТО НЕ НАДО!!!!

Здесь об этом не надо писать. Здесь проводите Анализ существующего бизнес-процесса Бронирования билетов, то есть КАК-ЕСТЬ, в чем недостатки заключаются существующей системы.

Глава 2. Информационное обеспечение задачи

2.1. Информационная модель и ее описание

Рисунок 2.1. Информационная модель

Это не информационная модель! Смотрите в методичке как выглядит информационная модель. Эту можете перенести в пункт 1.3. Эта схема которую вы предлагаете? Или которая КАК ЕСТЬ? Если как есть, то можете перенести в пункт 1.3, как диаграмму декомпозиции.

2.2. Используемые классификаторы и системы кодирования

Таблица 2.1.

Нормализованные данные

Название

Тип

Описание

Name_Sean

Текстовый

Имя сеанса

Date_Sean

Дата/Время

Дата сеанса

Vrem_Sean

Дата/Время

Время сеанса

Stoim_Sean

Числовой

Стоимость сеанса

Skid_Sean

Числовой

Скидка на сеанс

Login

Текстовый

Логин пользователя

Password

Текстовый

Пароль пользователя

Status

Лоический

Статус

2.3. Характеристика нормативно-справочной, входной и оперативной информации

Нормативно-справочная информация содержится в двух справочных таблицах: Spek и Sean

Таблица 2.2.

Описание Spek

Название

Описание

Name_Spek

Наименование мероприятия

Opis_Spek

Описание мероприятия

Afisha_Spek

Афиша мероприятия

Пример заполнения справочника Spek:

Наименование вводится и описание с клавиатуры, а Афиша загружается из файла.

Рисунок 2.2 - Пример заполнения справочника Spek

Пример заполнения справочника Sean:

Справочник Sean заполняется посредством ввода данных непосредственно в сетку Grid. Ошибки ввода ограничены маской ввода.

Рисунок 2.3 - Пример заполнения справочника Sean

Таблица 2.3.

Описание Sean

Название

Описание

Name_Sean

Имя сеанса

Date_Sean

Дата сеанса

Vrem_Sean

Время сеанса

Stoim_Sean

Стоимость сеанса

Skid_Sean

Скидка на сеанс

2.4. Характеристика результатной информации

В результате ведь билет формируется!!!! Какие данные в него входят ? Тут представьте их

Результатной информацией будет статистика по проданным билетам за сеанс:

Глава 3. Программное обеспечение задачи

3.1. Общие положения (дерево функций и сценарий диалога)

Диалог с пользователем осуществляется посредством интерфейса MDI-приложения

Рисунок 3.1 - Интерфейс MDI

3.2. Характеристика базы данных

Имя базы данных - Teatr.mdb.

ER-модель описывает взаимосвязь таблиц в БД.

Рисунок 3.2 - ER-модель

!!!! ВАЖНО! Вот эта диаграмма и Информационная модель, которую вы создадите в пункте 2.1 должны соответствовать друг другу.

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

В ней есть всего три поля: логин, пароль, статус.

Логин - имя пользователя;

Пароль - пароль пользователя;

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

Рисунок 3.3. Характеристики таблицы LogPass (Логин/пароль)

Обязательность заполнения полей проверяется программно.

Следующая таблица, называется "Мероприятия" (Spek). Эта таблица является справочной. Она содержит в себе наименование и описание всех мероприятий, которые будут проходить в театре, а так же содержит поле с афишей. Код мероприятия (Kod_Spek) является ключевым полем для связи один ко многим с подчиненной таблицей сеансы, поскольку у одного и того же мероприятия может быть несколько сеансов. Так же они могут проходить в разные дни.

Рисунок 3.4. Структура таблицы "Сеансы"

Таблица "Сеансы" является рабочей. В ней так же есть поле "Kod_Spek", которое связано с одноименным полем таблицы "Spek" связью один ко многим. Поле "Kod_Sean" таблицы "Sean" является ключевым и связывает между собой данную таблицу с таблицей "Zal" (Зал).

Рисунок 3.5. Таблица "Зал"

Особенностью данной таблицы является наличие поля счетчика "Kod_ADO". Оно не является необходимым для базы данных, но наличие ключа в таблицы является требованием технологии ADO, поэтому формальное присутствие данного поля является необходимостью. Таблица характерна большим числом полей. Каждое кресло в зале отражается полем в таблице "Zal".

3.3. Структурная схема пакета (дерево вызова программных модулей)

Рисунок 3.6. Схема вызовов программных модулей

3.4. Описание программных модулей

ОПИШИТЕ текстом программные модели, а эту схему перенесите в ПРИЛОЖЕНИЕ

Глава 4. Контрольный пример реализации проекта и его описание

ПОДПИСИ ВСЕХ РИСУНКОВ - ШРИФТ VERDANA

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

Рисунок 4.1. Настройка автоматически создаваемых форм в проекте.

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

procedure TfrmMDI.mSpekClick(Sender: TObject);

begin

Application.CreateForm(TfrmSpek,frmSpek);

end;

С помощью этой команды создается объект frmSpek из класса TfrmSpek. После создания объект-форма становится автоматически видимой и метод show в данном случае применять не нужно. Остальные формы вызываются аналогичным образом.

Рисунок 4.2. Основное меню на этапе разработки.

На основной форме имеются два графических объекта, рисунок в которые загружается в событии onCreate, когда происходит создание формы:

procedure TfrmMDI.FormCreate(Sender: TObject);

begin

frmMDI.mSpek.visible:=false; // Прячем меню

frmMDI.mSean.visible:=false;

frmMDI.mZal.visible:=false;

frmMDI.mAdm.visible:=false;

frmMDI.mVih.visible:=false;

TekPapka:=getcurrentdir; //Путь к текущей папке

PathBD:=getcurrentdir+'\BD\Teatr.mdb';

Application.Icon.LoadFromFile(TekPapka+'\Draws\application.ico');

img_Zal.Picture.LoadFromFile(TekPapka+'\Draws\Zal.png');

imgVihod.Picture.LoadFromFile(TekPapka+'\Draws\Vihod.png');

imgVihod.Top:=0;

imgVihod.Left:=frmMDI.Width - 100; //ставим кнопку выхода справа

end;

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

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

После события onCreate наступает событие onShow, которое показывает созданную форму. В обработчике этого события создаем окно для ввода логина и пароля

procedure TfrmMDI.FormShow(Sender: TObject);

begin

Application.CreateForm(TfrmLogPass,frmLogPass);

end;

Рисунок 4.3. Форма авторизации с установленным на ней компонентом TQuery.

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

Для доступа к данным таблицы используется компонент TQuery. В обработчике события OnCreate записывается строка подключения к базе данных:

procedure TfrmLogPass.FormCreate(Sender: TObject);

var

KolZap: integer;

TekZap: integer;

i: integer; // Счетчик

begin

//Подключаемся к Таблице LogPass

adoLogPass.Close;

adoLogPass.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;

Data Source='''+PathBD+'''';

adoLogPass.SQL.Clear;

adoLogPass.SQL.add('SELECT * FROM LogPass');

adoLogPass.Active:=true;

//Заполняем логинами раскрывающийся список

cboLogin.Clear;

KolZap:=adoLogPass.RecordCount;

adoLogPass.First;

TekZap:=adoLogPass.RecNo;

for i:=TekZap to KolZap do

begin

cboLogin.Items.Add(adoLogPass.fieldbyname('Login').AsString);

adoLogPass.Next;

end;

end;

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

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

procedure TfrmLogPass.cmdVhodClick(Sender: TObject);

var

cLogin: String; //Содержит в себе выбранный пользователем логин

cPassword: String; //Содержит введенный пароль

lTip: Boolean;

begin

cLogin:=cboLogin.Text;

cPassword:=trim(txtPassword.Text);

//Проверяем пароль на истинность

adoLogPass.First;//Ставим указатель на первую запись таблицы

adoLogPass.Locate('Login', cLogin,[]);// Находим в таблице запись с выбранным логином

lTip:=adoLogPass.fieldbyname('Status').AsBoolean; //Считываем текущий статус логина

if adoLogPass.fieldbyname('Password').AsString = cPassword then //Если пароль совпадает с введенным, то

begin

if lTip=true then //Если найденный логин является администратором, то

begin // Показываем все меню

Admin_User:='Admin';

frmMDI.mSpek.visible:=true;

frmMDI.mSean.visible:=true;

frmMDI.mZal.visible:=true;

frmMDI.mAdm.visible:=true;

frmMDI.mVih.visible:=true;

end

else //Иначе скрываем пункты Мероприятия, Сеансы и Администрирование

begin

Admin_User:='User';

frmMDI.mSpek.visible:=false;

frmMDI.mSean.visible:=false;

frmMDI.mZal.visible:=true;

frmMDI.mAdm.visible:=false;

frmMDI.mVih.visible:=true;

end;

frmLogPass.close; //Закрываем форму логина/пароля

end else //Иначе

begin

showmessage('Пароль не верный! Обратитесь к администратору системы!');

end;

end;

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

Рисунок 4.4. Форма "Мероприятия"

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

procedure TfrmSpek.cmd_Load_AfishaClick(Sender: TObject);

var

jpg: TJPEGImage;

bmp: TBitmap;

begin

//if openpicturedialog1.Execute then

//dbimage1.Picture.LoadFromFile(openpicturedialog1.filename);

if OpenpictureDialog1.Execute then

begin

jpg := TJPEGImage.Create;

bmp := TBitmap.Create;

try

jpg.LoadFromFile(OpenpictureDialog1.FileName);

bmp.Assign(jpg);

ADOSpek.Edit;

ADOSpek.FieldByName('Afisha_Spek').Assign(bmp);

ADOSpek.Post;

finally

jpg.Free;

bmp.Free;

end;

end;

end;

Поскольку этот компонент может работать только с файлами формата BMP, а для удобства нужен формат JPEG, то в данной процедуре происходит "отождествление" этих форматов.

Процедура кнопки удалить афишу:

procedure TfrmSpek.Button9Click(Sender: TObject);

begin

ADOSpek.Edit;

ADOSpek.FieldByName('Afisha_Spek').asvariant:=Null;

ADOSpek.Post;

end;

Для добавления записи используется кнопка "Добавить":

procedure TfrmSpek.cmdDobClick(Sender: TObject);

begin

ADOSpek.append; //Добавляем запись в набор данных

txtName_Spek.SetFocus;//Устанавливаем фокус на первое поле

end;

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

procedure TfrmSpek.Button7Click(Sender: TObject);

begin

if txtName_Spek.text='' then

showmessage('Не указано наименование спектакля!')

else

try

if (ADOSpek.state=dsedit) or (ADOSpek.State=dsinsert) then ADOSpek.post;

lblKol.Caption:='Всего записей: '+inttostr(ADOSpek.RecordCount);//Считываем количество записей в таблице

lblTek.Caption:='Текущая запись: '+inttostr(ADOSpek.recno);//Считываем номер текущей записи

except

//showmessage('Заготовка под возможный код ошибки');

end;

end;

Подобным образом работаю кнопки "Удалить" и кнопки навигации по записям. Только в каждой из них используется свой метод.

В нижней части окна имеется блок с поиском записей.

Процедура кнопки фильтр:

procedure TfrmSpek.cmdFilterClick(Sender: TObject);

begin

if rbName.Checked=true then

begin;

adoSpek.close;

adoSpek.SQL.Clear;

//Отбираем записи, которые содержат символы, введенные в поле Наименование

adoSpek.SQL.add('SELECT * FROM Spek WHERE Name_Spek like ''%'+txtName_Spek_Poisk.text+'%''');

adoSpek.Open;

lblKol.Caption:='Всего записей: '+inttostr(adoSpek.RecordCount);//Считываем количество записей в таблице

lblTek.Caption:='Текущая запись: '+inttostr(adoSpek.recno);//Считываем номер текущей записи

end;

if rbOpis.Checked=true then

begin;

adoSpek.close;

adoSpek.SQL.Clear;

//Отбираем записи, которые содержат символы, введенные в поле Описание

adoSpek.SQL.add('SELECT * FROM Spek WHERE Opis_Spek like ''%'+txtOpis_Spek_Poisk.text+'%''');

adoSpek.Open;

lblKol.Caption:='Всего записей: '+inttostr(adoSpek.RecordCount);//Считываем количество записей в таблице

lblTek.Caption:='Текущая запись: '+inttostr(adoSpek.recno);//Считываем номер текущей записи

end;

end;

Фильтр ищет записи по неполному совпадению. За это отвечает оператор like в команде SELECT при отборе записей в набор данных.

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

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

procedure TfrmSpek.cmdVseClick(Sender: TObject);

begin

adoSpek.Close;

adoSpek.SQL.Clear;

adoSpek.SQL.add('SELECT * FROM Spek');

adoSpek.Open;

//Считываем число записей и номер текущей записи в таблице

lblKol.Caption:='Всего записей: '+inttostr(adoSpek.RecordCount);//Считываем количество записей в таблице

lblTek.Caption:='Текущая запись: '+inttostr(adoSpek.recno);//Считываем номер текущей записи

end;

При закрытии формы происходит событие onClose. В нем необходимо предусмотреть закрытие всех наборов данных, которые открывались при создании формы. Это предотвратит утечку памяти компьютера.

procedure TfrmSpek.FormClose(Sender: TObject; var Action: TCloseAction);

begin

adoSpek.Close;

action:=caFree;

end;

ПО умолчанию формы в Delphi не закрываются, а сворачиваются. Поэтому для их уничтожения из памяти в MDI приложении следует прописывать параметр action:=caFree;

Форма "Сеансы" работает аналогичным образом. Ее особенностью является использование объекта DBGrid для табличного представления данных из полей таблиц.

Рисунок 4.5. Форма "Сеансы"

Следующей основной формой является форма "Схема зала"

Рисунок 4.6. Форма "Схема зала"

На этапе разработки у данной формы видны множества объектов доступа к данным TQuery.

Один объект осуществляет доступ к таблице Zal и связывает каждое кресло формы frmZal с логическим полем таблицы Zal. Состояние True данного поля свидетельствует о том, что кресло занято, False - что свободно.

Запись значения из False в True осуществляется нажатием мышью на кресле и записано в процедуре:

procedure TfrmZal.pMesto_1_1Click(Sender: TObject);

var

nkod_Sean: integer;

begin

try

nkod_Sean:=dbLookup_Name_Sean.keyvalue;

//Переходим к первой записи набора adoZal

adozal.First;

//Ищем запись с кодом сеанса, который выбран в списке сеансов

if adozal.locate('Kod_Sean', nKod_Sean,[]) then

begin

adozal.Edit; //Переводим запись в режим редактирования

//Если место 1_1 фальшь, то устанавливаем его в истину

// и меняем цвет на зеленый.

if adozal.FieldByName('Mesto_1_1').AsBoolean=false then

begin

adozal.FieldByName('Mesto_1_1').AsBoolean:=True;

pMesto_1_1.Color:=clGreen;

end;

adozal.Post;

end;

except

showmessage('Выберите сеанс из списка!');

end;

end;

Такой обработчик прописан у каждого кресла.

Набор данных ADOLookup_Name_Sean служит для заполнения поля "Сеансы". для этого в диспетчере свойств устанавливаются следующие значения:

Рисунок 4.7. Привязка поля списка к набору данных через объект Data Source.

Остальные наборы данных служат для печати билета, для вывода афиши и подсчета статистики.

Ниже приведен фрагмент кода кнопки "обновить статистику"

procedure TfrmZal.cmd_Obn_StatClick(Sender: TObject);

var

iStetchik: integer;

iProd: integer; //Число проданных билетов

nkod_Sean: integer; //Код сеанса

iRad: integer;

iMesto: integer;

sRad: string;

sMesto: string;

sMestoPolnoe: string;

begin

nkod_Sean:=dbLookup_Name_Sean.keyvalue;

//Переходим к первой записи набора adoZal

adozal.First;

if adozal.locate('Kod_Sean', nKod_Sean,[]) then

begin

iStetchik:=1;

iProd:=0;

iRad:=1;

iMesto:=1;

sRad:=inttostr(irad);

sMesto:=inttostr(imesto);

sMestoPolnoe:='Mesto_'+sRad+'_'+sMesto;

while iStetchik <11 do

begin

if adozal.FieldByName(sMestoPolnoe).AsBoolean=true then iProd:=iProd+1;

iMesto:=iMesto+1;

sRad:=inttostr(irad);

sMesto:=inttostr(imesto);

sMestoPolnoe:='Mesto_'+sRad+'_'+sMesto;

iStetchik:=iStetchik+1;

end;

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

Заключение

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

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

Для разработки программного обеспечения был выбран объктно-ориентированный визуально-программируемый язык высокого уровня Delphi 7, содержащий в себе возможности по обработке базы данных, сопоставимые с возможностями СУБД. А широкий ассортимент методов и моделей доступа к данным позволил спроектировать приложения максимально комфортным способом.

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

Интерфейс программы является интуитивно понятным. Работа начинается с выбора типа пользователя системы. Классический вариант выбора администратора или любого другого пользователя позволяет выполнить вход в систему и начать работать.

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

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

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

Список используемой литературы

  1. Алешин Л.И.: Информационные технологии. - М.: Литера, 2008
  2. Архангельский А.Я.: Delphi 7. - М.: БИНОМ, 2004
  3. Архангельский А.Я.: Программирование в Delphi для Windows. - М.: Бином-Пресс, 2007
  4. Архангельский А.Я.: Программирование в Delphi для Windows. - М.: Бином-Пресс, 2007
  5. Балдин К.В.: Информационные системы в экономике. - М.: Дашков и К, 2006
  6. Бобровский СИ.: Delphi 7. - СПб.: Питер, 2005
  7. Бобровский СИ.: Delphi 7. - СПб.: Питер, 2006
  8. Бобровский СИ.: Delphi 7. - СПб.: Питер, 2008
  9. Боровский А.Н.: Программирование в Delphi 2005. -СПб.: БХВ-Петербург, 2005
  10. Браун С: Visual Basic 6. - СПб.: Питер, 2007
  11. Герчикова Т.М.: Как создать мультимедийное приложение на персональном компьютере: Все, что Вы хотели знать, но боялись спросить. - М.: Бук-Пресс и К, 2005
  12. Гобарева Я.Л.: Технология экономических расчетов средствами MS Exsel. - М.: КноРус, 2006
  13. Голенищев Э.П.: Информационное обеспечение систем управления. - Ростов н/Д: Феникс. 2010
  14. ДнепровАХ.: Видеосамоучитель. Microsoft Access 2007. - СПб.: Питер, 2008
  15. Емельянов в.п.: Основы программирования на Delphi. - М.: Высшая школа, 2005
  16. Зубов Ал Программирование на Delphi. - СПб.: Питер, 2005
  17. Избачков Ю.С.: Информационные системы. - СПб.: Питер, 2008
  18. Избачков Ю.С: Информационные системы. - СПб.:
  19. Избачков Ю.С: Информационные системы. - СПб.: Питер, 2008
  20. Корняков В.Н.: Программирование документов и приложений MS Office в Delphi. - СПб.: БХВ-Петербург, 2006
  21. Кузнецов A.: Microsoft Access 2003. Русская версия. - СПб.-Киев: Питер; ИД BHV, 2006
  22. Кузовкин А.В.: Управление данными. - М.: Академия. 2010
  23. Культин Н.Б.: Delphi в задачах и примерах. - СПб.: БХВ-Петербург, 2006
  24. Малыхина М.П.: Базы данных: основы, проектирование, использование. - СПб.: БХВ-Петербург, 2007
  25. Микрюков В.Ю.: Алгоритмизация и программирование. - Ростов на/Д: Феникс, 2007
  26. Михеева Е.В.: Информационные технологии в профессиональной деятельности. - М.: Академия, 2011
  27. Михеева Е.В.: Информационные технологии в профессиональной деятельности. - М.: Академия. 2010
  28. Михелёв В.М.: Базы данных и СУБД. - Белгород:
  29. Могилев А.В.: Информатика. - М.: Академия, 2008
  30. Могилев А.В.: Информатика. - М.: Академия, 2009
  31. Под общ. ред. д-ра экон. наук, профессора П.В. Акинина: Информационные системы в экономике: Практикум. - М.: КНОРУС, 2008
  32. под общ. ред. П.В. Акинина ; сост.: Е.Л. Торопцев и др.; рец.: Р.Г. Закинян, А.н. Байдаков: Информационные системы в экономике. - М.: КноРус, 2008
  33. Под ред. В. Озерова: Delphi. Советы программистов. - СПб.: Символ-Плюс, 2004
  34. Под ред. проф. А.Н. Романова, проф. Б.Е. Одинцова: Информационные системы в экономике. - М.: Вузовский учебник, 2008
  35. Под ред. СВ. Симоновича ; рец.: Каф. Московского гос. технического ун-та им. Н.Э. Баумана, СВ. Калин: Информатика. - СПб.: Питер, 2010
  36. Под ред. СВ. Симоновича ; рец.: Кафедра САПР Московского гос. технического ун-та им. Н.Э. Баумана, СВ. Калин: Информатика. - СПб.: Питер, 2009
  37. Ревич, Ю. Нестандартные приемы программирования на Delphi / Ю. Ревич. - М.: БХВ-Петербург, 2008. - 560 c.
  38. Рец.: П.Л. Салманов и др.; В.И. Чернов и др.: Информатика. - М.: Дрофа, 2008
  39. Родигин Л.А.: Базы данных для карманного персонального компьютера Pocket PC. - М.: КноРус, 2008
  40. Сергеев А.В.: Access 2007. Новые возможности. -СПб.: Питер, 2008
  41. Сорокин А.В.: Delphi. Разработка баз данных. -СПб.: Питер, 2005
  42. Угринович Н.Д.: Исследование информационных моделей. Элективный курс. - М.: БИНОМ. Лаборатория знаний, 2006
  43. Угринович Н.Д.: Исследование информационных моделей. Элективный курс. - М.: БИНОМ. Лаборатория знаний, 2004
  44. Уткин В.Б.: Информационные системы в экономике. - М.: Академия, 2010
  45. Фаронов В.В.: Delphi 2005. - СПб.: Питер, 2006
  46. Филимонова Е.В.: Информационные технологии в профессиональной деятельности. - Ростов н/Д: Феникс, 2009
  47. Флёнов М.Е.: Программирование в Delphi глазами хакера. - СПб.: БХВ-Петербург, 2004
  48. Харуто А.В.: Музыкальная информатика. - М.: ЛКИ, 2009
  49. Чиртик А.А.: Delphi. Трюки и эффекты. - СПб.: Питер, 2007
  50. Чиртик А.А.: Программирование в Delphi. - СПб: Питер, 2010
  51. Шаронов В.В.: Delphi 2005. Разработка приложений для баз данных и Интернета. - СПб.: Питер, 2006
  52. Шаронов В.В.: Delphi 2005. Язык, среда, разработка приложений. - СПб.: Питер, 2007
  53. Шаронов В.В.: Delphi 2005. Язык, среда, разработка приложений. - СПб.: Питер, 2007
  54. Шаронов В.В.: Delphi. Программирование на языке высокого уровня. - СПб.: Питер, 2008
  55. Шаронов В.В.: Turbo Pascal. - СПб.: Питер, 2007
  56. Шаронов В.В.: Программирование баз данных в Delphi 7. - СПб.: Питер, 2006
  57. Шаронов В.В.: Система программирования Delphi. -СПб.: БХВ-Петербург, 2006

Шлёнов М.Е.: Delphi 2005. Секреты программирования.. - СПб.: Питер, 2006

Приложения

Приложение. Листинг разрабатываемого программного комплекса системы бронирования билетов

procedure TfrmZal.cmd_Obn_StatClick(Sender: TObject);

var

iStetchik: integer;

iProd: integer; //Число проданных билетов

nkod_Sean: integer; //Код сеанса

iRad: integer;

iMesto: integer;

sRad: string;

sMesto: string;

sMestoPolnoe: string;

begin

nkod_Sean:=dbLookup_Name_Sean.keyvalue;

//Переходим к первой записи набора adoZal

adozal.First;

if adozal.locate('Kod_Sean', nKod_Sean,[]) then

begin

iStetchik:=1;

iProd:=0;

iRad:=1;

iMesto:=1;

sRad:=inttostr(irad);

sMesto:=inttostr(imesto);

sMestoPolnoe:='Mesto_'+sRad+'_'+sMesto;

while iStetchik <11 do

begin

if adozal.FieldByName(sMestoPolnoe).AsBoolean=true then iProd:=iProd+1;

iMesto:=iMesto+1;

sRad:=inttostr(irad);

sMesto:=inttostr(imesto);

sMestoPolnoe:='Mesto_'+sRad+'_'+sMesto;

iStetchik:=iStetchik+1;

end;

iStetchik:=1;

iRad:=2;

iMesto:=1;

sRad:=inttostr(irad);

sMesto:=inttostr(imesto);

sMestoPolnoe:='Mesto_'+sRad+'_'+sMesto;

while iStetchik <11 do

begin

if adozal.FieldByName(sMestoPolnoe).AsBoolean=true then iProd:=iProd+1;

iMesto:=iMesto+1;

sRad:=inttostr(irad);

sMesto:=inttostr(imesto);

sMestoPolnoe:='Mesto_'+sRad+'_'+sMesto;

iStetchik:=iStetchik+1;

end;

...

end;

iStetchik:=1;

iRad:=10;

iMesto:=1;

sRad:=inttostr(irad);

sMesto:=inttostr(imesto);

sMestoPolnoe:='Mesto_'+sRad+'_'+sMesto;

while iStetchik <11 do

begin

if adozal.FieldByName(sMestoPolnoe).AsBoolean=true then iProd:=iProd+1;

iMesto:=iMesto+1;

sRad:=inttostr(irad);

sMesto:=inttostr(imesto);

sMestoPolnoe:='Mesto_'+sRad+'_'+sMesto;

iStetchik:=iStetchik+1;

end;

lbl_Prod.caption:='Количество проданных билетов: '+inttostr(iprod);

lbl_Summa.caption:='Общая сумма продаж: '+inttostr(adoStoim.FieldByName('Stoim_Sean').Asinteger * iProd)+ ' руб.';

end;

end;

Модуль главной формы:

unit mdi;

interface

uses

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

Dialogs, StdCtrls, Menus, ExtCtrls, jpeg;

type

TfrmMDI = class(TForm)

MainMenu1: TMainMenu;

mSpek: TMenuItem;

mVih: TMenuItem;

mAdm: TMenuItem;

N4: TMenuItem;

N2: TMenuItem;

mSean: TMenuItem;

mZal: TMenuItem;

Img_Zal: TImage;

imgVihod: TImage;

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure mVihClick(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure mSpekClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure mSeanClick(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure imgVihodClick(Sender: TObject);

procedure mZalClick(Sender: TObject);

procedure Img_ZalClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmMDI: TfrmMDI;

PathBD: string; //Глобальная переменная, пределяющая путь к базе данных.

TekPapka: string;//Глобальная переменная, содержащая текущую папку

implementation

uses logpass, logpassedit, Kopy_, Zal, Spek, Sean;

{$R *.dfm}

procedure TfrmMDI.FormClose(Sender: TObject; var Action: TCloseAction);

begin

action:=caFree;

end;

procedure TfrmMDI.mVihClick(Sender: TObject);

begin

Close;

end;

procedure TfrmMDI.N2Click(Sender: TObject);

begin

Application.CreateForm(TfrmLogPassEdit,frmLogPassEdit);

end;

procedure TfrmMDI.FormShow(Sender: TObject);

begin

Application.CreateForm(TfrmLogPass,frmLogPass);

end;

procedure TfrmMDI.mSpekClick(Sender: TObject);

begin

Application.CreateForm(TfrmSpek,frmSpek);

end;

procedure TfrmMDI.FormCreate(Sender: TObject);

begin

frmMDI.mSpek.visible:=false;

frmMDI.mSean.visible:=false;

frmMDI.mZal.visible:=false;

frmMDI.mAdm.visible:=false;

frmMDI.mVih.visible:=false;

TekPapka:=getcurrentdir; //Путь к текущей папке

PathBD:=getcurrentdir+'\BD\Teatr.mdb';

Application.Icon.LoadFromFile(TekPapka+'\Draws\application.ico');

img_Zal.Picture.LoadFromFile(TekPapka+'\Draws\Zal.png');

imgVihod.Picture.LoadFromFile(TekPapka+'\Draws\Vihod.png');

imgVihod.Top:=0;

imgVihod.Left:=frmMDI.Width - 100;

end;

procedure TfrmMDI.mSeanClick(Sender: TObject);

begin

Application.CreateForm(TfrmSean,frmSean);

end;

procedure TfrmMDI.N4Click(Sender: TObject);

begin

Application.CreateForm(TfrmKopy,frmKopy);

end;

procedure TfrmMDI.imgVihodClick(Sender: TObject);

begin

frmMDI.Close;

end;

procedure TfrmMDI.mZalClick(Sender: TObject);

begin

Application.CreateForm(TfrmZal,frmZal);

end;

end.

Процедуры формы авторизации:

procedure TfrmLogPass.FormClose(Sender: TObject; var Action: TCloseAction);

begin

adoLogPass.Close;

action:=caFree;

end;

procedure TfrmLogPass.cmdOtmenaClick(Sender: TObject);

begin

frmMDI.close;

end;

procedure TfrmLogPass.cmdVhodClick(Sender: TObject);

var

cLogin: String; //Содержит в себе выбранный пользователем логин

cPassword: String; //Содержит введенный пароль

lTip: Boolean;

begin

cLogin:=cboLogin.Text;

cPassword:=trim(txtPassword.Text);

//Проверяем пароль на истинность

adoLogPass.First;//Ставим указатель на первую запись таблицы

adoLogPass.Locate('Login', cLogin,[]);// Находим в таблице запись с выбранным логином

lTip:=adoLogPass.fieldbyname('Status').AsBoolean; //Считываем текущий статус логина

if adoLogPass.fieldbyname('Password').AsString = cPassword then //Если пароль совпадает с введенным, то

begin

if lTip=true then //Если найденный логин является администратором, то

begin // Показываем все меню

Admin_User:='Admin';

frmMDI.mSpek.visible:=true;

frmMDI.mSean.visible:=true;

frmMDI.mZal.visible:=true;

frmMDI.mAdm.visible:=true;

frmMDI.mVih.visible:=true;

end

else //Иначе скрываем пункты Спектакли, Сеансы и Администрирование

begin

Admin_User:='User';

frmMDI.mSpek.visible:=false;

frmMDI.mSean.visible:=false;

frmMDI.mZal.visible:=true;

frmMDI.mAdm.visible:=false;

frmMDI.mVih.visible:=true;

end;

frmLogPass.close; //Закрываем форму логина/пароля

end else //Иначе

begin

showmessage('Пароль не верный! Обратитесь к администратору системы!');

end;

end;