78078

Разработка АИС «Кинотеатр» в среде C++Builder 6

Дипломная

Информатика, кибернетика и программирование

Вследствие огромной популярности и прогрессивности киноиндустрии возникает потребность в качественном обслуживании посетителей кинотеатров. АИС «Кинотеатр» предназначена для упрощения организации работы оператора кинотеатра.

Русский

2015-02-07

1.32 MB

67 чел.

ВВЕДЕНИЕ

Вследствие огромной популярности и прогрессивности киноиндустрии возникает потребность в качественном обслуживании посетителей кинотеатров. АИС «Кинотеатр» предназначена для упрощения организации работы оператора кинотеатра. Данная программа является автоматизированной. Источником информации программы выступает СУБД Microsoft Access, но процесс работы выполнен в интерактивном режиме, что в свою очередь, помогает выполнять определенные операции в более короткие сроки.

АИС «Кинотеатр» — автоматизированная информационная система, предназначенная для упрощения и ускорения процесса работы с данными кинотеатра. Из данного определения можно выявить, что цель данной АИС, это максимальное упрощение и ускорение процесса работы с данными кинотеатра, а именно:

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

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

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

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

Во второй главе «Описание программы» проводится краткое описание программы и обосновывается ее применение.

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

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

В пятой главе описано проведенное тестирование и его результаты.

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

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

В ходе разработки дипломного проекта мной была разработана АИС «Кинотеатр». Данная АИС проста в использовании и будет интересна, как для начинающего, так и для опытного пользователя.

Разработанная программа может быть использована операторами различных кинотеатров.

  1.  
    Постановка задачи

  1.  Требование к программе

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

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

1.2 Цели создания приложения и его описание

Целью создания данной АИС, является  максимально-эффективная организация работы с данными кинотеатра.

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

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

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

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

1.3 Требования к интерфейсу

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

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

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

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


2 Описание программы

2.1 Входная информация

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

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

2.2 Выходная информация

Выходными данными АИС «Кинотеатр» являются:

  •  вычисленная стоимость билетов;
  •  вычисленная стоимость билетов, с учетом брони;
  •  отчет по продаже билетов;
  •  отчет по бронированию билетов;
  •  измененные в программе или БД данные.

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

2.3 Постоянная информация

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

  1.  
    Проектирование задачи

  1.   Модель предметной области

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

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

3.2 Обоснование выбранных средств и инструментов разработки

Для разработки данного программного средства был выбран программный продукт «С++ Builder» версии 6.

Особых требований, по современным меркам, к ресурсам компьютера пакет не предъявляет. АИС «Кинотеатр» разработана в операционной системе Microsoft Windows 98/Me/2000/XP/Seven.

Популярность ОС Windows обеспечили следующие ее свойства:

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

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

Среда разработки C++ Builder была выбрана по ряду причин описанных ниже.

Сходство C++Builder и Delphi не является чисто внешним. C++Builder обладает компонентной архитектурой и создан на основе библиотеки визуальных компонентов Delphi ставшей за последние два года весьма популярной среди разработчиков. По этой причине этот продукт имеет общую с Delphi библиотеку классов, часть из которых написана на Obiect Pascal.

Сходство C++Builder и Delphi не является чисто внешним. C++Builder обладает компонентной архитектурой и создан на основе библиотеки визуальных компонентов Delphi, ставшей за последние два года весьма популярной среди разработчиков. По этой причине этот продукт имеет общую с Delphi библиотеку классов, часть из которых написана на Object Pascal.

Однако совместимость C++Builder и Delphi этим не исчерпывается. В проектах C++Builder можно использовать не только библиотеку компонентов Delphi, но и код, написанный на Object Pascal, а также формы и модули Delphi. Поддерживается визуальное наследование форм и модулей данных, в том числе и созданных в Delphi. Эти возможности появились благодаря включению в C++Builder обоих компиляторов C++ и Object Pascal.

Это означает, что можно создавать общие проекты, используя оба средства разработки - и C++BuiIder, и Delphi. Части одного приложения могут быть созданы с помощью двух средств, и теперь к работе над проектом можно привлекать разработчиков, использующих как Delphi, так и C++. Вовторых, и это очень важно, C++Builder может использовать компоненты, созданные для Delphi, а их за последние несколько лет создано огромное количество. Это богатство, накопленное разработчиками всего мира, сегодня способно удовлетворить самые причудливые запросы.

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

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

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

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

Таким образом, учитывая выше перечисленные достоинства объектно-ориентированного языка программирования и требования для данного приложения, можно сделать вывод, что C++Builder 6 идеально подходит для разработки программы.

3.3 Требования к аппаратным ресурсам и ОС

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

Программное средство, разрабатываемое в рамках дипломного проекта, реализовано под управлением операционной системы Microsoft Windows XP, но также может работать под управлением операционных систем Microsoft Windows 98/Me/2000.

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

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

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

  •  процессор: не ниже Pentium II;
  •  объем оперативной памяти: не ниже 64 Мбайт;
  •  операционная система: Windows 98, Windows Me, Windows 2000, Windows XP;
  •  свободного места на жестком диске не менее 20 Мбайт;
  •  наличие монитора VGA с разрешением не менее 800x600 точек;
  •  наличие манипулятора “мышь”;
  •  клавиатура IBM PC любой модификации.

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

  •  процессор: Athlon 1000;
  •  объем оперативной памяти: 1024 Мбайт;
  •  операционная система: Windows XP/Seven;
  •  свободного места на жестком диске 200 Мбайт;
  •  наличие монитора VGA с разрешением не менее 1280x720 точек;
  •  наличие манипулятора “мышь”;
  •  клавиатура IBM PC любой модификации.

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


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

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

Структура данного приложения включает в себя 14 модулей: Unit1.pasUnit14.pas. Главным модулем является Unit1.pas, так, как именно с данного модуля оператор выбирает круг необходимых операций, как показано на рисунке 1.

Рисунок 1 – Схема Unit АИС «Кинотеатр»

Из представленного выше рисунка видно, что Unit1 (Form1) является отправной точкой в работе с программой. При переходе на другую форму перед оператором кинотеатра встанет выбор определенных операций, функций необходимых к исполнению.

Алгоритм данной программы довольно прост. Ниже рассмотрим алгоритм изменения информации о фильмах.

Рисунок 2 – Алгоритм изменения данных фильма

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

  •  void __fastcall TForm1::sButton3Click(TObject *Sender) – процедура перехода на новую форму;
  •  void __fastcall TForm4::sButton2Click(TObject *Sender) – процедура удаления выбранной строки из соответствующей таблицы;
  •  void __fastcall TForm4::sButton4Click(TObject *Sender) – процедура выбора последней строки соответствующей таблицы;
  •  void __fastcall TForm4::sButton6Click(TObject *Sender) – процедура выбора следующей строки соответствующей таблицы;
  •  void __fastcall TForm4::sButton5Click(TObject *Sender) – процедура выбора предыдущей строки соответствующей таблицы;
  •  void __fastcall TForm4::sButton7Click(TObject *Sender) – процедура выбора первой строки соответствующей таблицы;
  •  void __fastcall TForm4::sButton8Click(TObject *Sender) – процедура обновления запроса и визуального компонента таблицы;
  •  void __fastcall TForm4::sButton9Click(TObject *Sender) – процедура поиска по заданному критерию;
  •  void __fastcall TForm4::FormShow(TObject *Sender) – процедура обновления запроса;
  •  void __fastcall TForm5::sButton2Click(TObject *Sender) – процедура сохранения картинки в БД;
  •  void __fastcall TForm5::sButton3Click(TObject *Sender) – процедура загрузки картинки из БД;
  •  void __fastcall TForm5::sButton1Click(TObject *Sender) – процедура вставки данных;
  •  void __fastcall TForm6::sButton1Click(TObject *Sender) – процедура добавления строки;
  •  void __fastcall TForm7::sButton1Click(TObject *Sender) – процедура открытия видео файла;
  •  void __fastcall TForm10::sButton1Click(TObject *Sender) – процедура просмотра отчета;
  •  void __fastcall TForm10::sEdit2Change(TObject *Sender) – процедура вычисления количества оставшихся билетов.

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

4.2 Логическая модель данных

Данное программное средство организовано с помощью компонентов среды разработки C++Builder 6. Каждая из форм содержит определенные компоненты, которые в свою очередь выполняют определенные задачи. Как было отмечено выше, данный программный продукт состоит из 14 Unit и 14 Form которые связанны между собой.

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

Рисунок 3 – Структура таблицы «Билеты»

Как видно, из рисунка 3, таблица «Билеты» содержит 8 столбцов, которые содержат определенные значения. Поле «id» является счетчиком записей, с помощью данного поля, возможно, отследить количество записей в таблице. Данное поле имеет автоматический инкремент (значение+1).

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

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

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

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

Поле «день» указывает на день продажи билетов.

Рисунок 4 – Структура таблицы «Бронирование»

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

Рисунок 5 – Структура таблицы «Место»

В таблице «Место» имеется всего 3 поля. Поле «id», как было выше отмечено, поле – счетчик.

Поле «номер_места» содержит информацию о номерах мест в кинотеатре и дает возможность проследить количество занятых мест в кинотеатре.

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

Рисунок 6 – Структура таблицы «Сеанс»

Таблица сеанс располагает данными о времени и типе сеанса. Также данная таблица имеет информацию о дне и коэффициенте сеанса.

Поле «время» содержит время наступления определенного сеанса.

Поле «тип_сеанса» содержит информацию о суточном расположении сеанса. К примеру, сеанс на 12:00 будет иметь дневной тип сеанса.

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

Рисунок 7 – Структура таблицы «Фильмы»

Таблица «Фильмы» содержит полную информацию о фильме, который будет показываться в кинотеатре.

Поле «название» содержит в себе название фильма.

Поле «описание» включает в себя описательные данные фильма, о чем именно данный фильм.

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

Поле «длительность». Название данного поля отвечает само за себя. В данном столбце данных содержится информация о длительности фильма.

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

Поле «Жанр» содержит  информацию о жанре фильма. Жанры могут быть сложными, а именно включать не один жанр, а несколько. Пример, «боевик, драма, триллер».

Поле «страна», показывает в какой стране вышел данный фильм.

Поле «озвучивание» указывает на то, какое озвучивание предоставлено к данной версии фильма.

Такое поле, как «режиссер» показывает на ФИО режиссера, который снял данный фильм.

«год_издание», данное поле показывает год выхода фильма.

Поле «фотография» содержит в себе афишу предоставленного фильма.

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

Образованная связь между таблицами один ко многим(1:∞).

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

Схема данных данной БД указана на рисунке ниже.

Рисунок 8 – Схема данных

4.2 Модель в нотации UML

UML (англ. Unified Modeling Language — унифицированный язык моделирования) — язык графического описания для объектного моделирования в области разработки программного обеспечения. UML является языком широкого профиля, это открытый стандарт, использующий графические обозначения для создания абстрактной модели системы, называемой UML-моделью. UML был создан для определения, визуализации, проектирования и документирования в основном программных систем. UML не является языком программирования, но в средствах выполнения UML-моделей как интерпретируемого кода возможна кодогенерация.

  1.  Диаграмма вариантов использования

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

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

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

Диаграмма вариантов использования, приложения, представлена в приложение А.

  1.  Диаграмма состояний

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

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

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

Диаграмма состояния приложения, представлена в приложение В.

  1.  Диаграмма деятельности

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

Состояние действия (action state) является специальным случаем состояния с некоторым входным действием и, по крайней мере, одним выходящим из состояния переходом.

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

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

Диаграмма деятельности приложения, представлена в приложение Б.

4.2.4 Диаграмма классов

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

Класс – это основной строительный блок ПС. Это понятие присутствует и в ОО языках программирования, то есть между классами UML и программными классами есть соответствие, являющееся основой для автоматической генерации программных кодов или для выполнения реинжиниринга. Каждый класс имеет название, атрибуты и операции. Класс на диаграмме показывается в виде прямоугольника, разделенного на 3 области. В верхней содержится название класса, в средней – описание атрибутов (свойств), в нижней – названия операций – услуг, предоставляемых объектами этого класса.

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

Для каждого атрибута класса можно задать видимость (visibility). Эта характеристика показывает, доступен ли атрибут для других классов. В UML определены следующие уровни видимости атрибутов:

  •  Открытый (public) – атрибут виден для любого другого класса (объекта);
  •  Защищенный (protected) – атрибут виден для потомков данного класса;
  •  Закрытый (private) – атрибут не виден внешними классами (объектами) и может использоваться только объектом, его содержащим.

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

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

Диаграмма классов представлена в приложение Г.


5 Тестирование

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

Тестирование - процесс выполнения программ с целью обнаружения факта наличия ошибок.

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

Существует два основных вида тестирования: функциональное и структурное.

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

Объектом испытания является АИС «Кинотеатр».

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

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

Рисунок 9 – Отображение ввода информации в программе

Рисунок 10 – Отображение данных программы в СУБД Microsoft Access

Также проверялась возможность удаления данных. Данные удалялись из программы в соответствующем разделе (выделенная кнопка на рисунке 11), затем в БД проверяли наличие данной записи.

Рисунок 11 – Процесс удаления данных

Рисунок 12 – Результат удаления данных, отсутствие записи

Также тестировалась возможность перехода с записи на запись, с помощью панели навигации, как показано на рисунке 13.

Рисунок 13 – Панель навигации

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

Тест на корректность запросов заключался в вводе определенной информации в программе, а затем выполнение соответствующего запроса. В данном случае это будет запрос на фильмы 2013 года. Запрос в данной программе выполнялся с помощью языка SQL. Для осуществления данного запроса был использован такой компонент среды разработки C++Builder 6, вкладки ADO, ADOQuery.

Рисунок 14 – Введенные данные

Из введенных фильмов, только два из них вышли в 2013 году. Далее необходимо проверить корректность выполнения запроса. Для этого зайдем на вкладку «НОВИНКИ ГОДА» главной формы.

Рисунок 15 – Отображение запроса

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

Для проверки корректности вычислений были сделаны следующие операции:
  •  создавалась новая запись, куда вводились определенные значения;

Рисунок 16 – Введенная запись

  •  для подсчета конечной стоимости необходимо выполнить такие вычисления «Начальная стоимость»* «Коэф места» * «Коэф сеанса». Из введенной строки видно, что под данное выражение следует подставить такие значения, как «12000»* «1» * «1». Результатом такого вычисления должно стать «12000». Для подсчета записей необходимо нажать на титульную часть таблицы, как показано на рисунке 17.

Рисунок 17 – Результат вычислений

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

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

Рисунок 18 – Функциональная кнопка «Распечатка»

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

Рисунок 19 – Отображения отчета

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

Все необходимые тестирования над программой были произведены. Неполадок не найдено. Программа корректно выполняет поставленные перед ней задачи.

  1.  
    Описание применения

  1.  Назначение программы

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

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

АИС «Кинотеатр» способна решать многие необходимые задачи, тем самым освобождая много времени для оператора.

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

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

Работа с данными весьма просто организована. Как было выше отмечено, работа в интерактивном режиме также дает дополнительное время для работы. Освобождая от дополнительных приложений. Тем самым можно сказать, что данная программа весьма проста, легка, но огромное достоинство в том, что дает больше времени на различные операции.

  1.  Требования к аппаратным ресурсам ПК

Для полноценной работы с данной программой персональный компьютер обладать следующими характеристиками:

  •  Процессор: Intel Pentium 2.0 МГц и выше;
  •  Операционная система: Microsoft Windows XP, Windows Vista, Windows 7;
  •  Оперативная память 1024 Мбайт;
  •  Пространство на жестком диске 124-500 Мбайт;
  •  Монитор SVGA или выше
  •  Другое аппаратное обеспечение такое, как DW-ROM, мышь, клавиатура.

  1.  Описание интерфейса

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

При создании АИС «Кинотеатр» было использовано некоторое количество следующих компонентов:

  •  компонент label – предназначен для отображения статического текста, то есть надписей и меток на Форме;

  •  компонент Edit представляет собой поле ввода-редактирования строки символов;
  •  компонент Button – обычная кнопка без рисунка, наиболее распространена в  Windows приложениях;
  •  компонент Form – форма основной компонент приложения. На ней размещаются все другие компоненты;
  •  компонент Memo – данный компонент предназначен для отображения простого текста (как в программе «Блокнот»);
  •  компонент Panel – панель используется для отображения надписей и группирования кнопок;
  •  компонент Image – компонент отображения изображения;
  •  компонент OpenDialog – предназначен для открытия файлов;
  •  компонент OpenPictureDialog – предназначен для открытия графических файлов;
  •  компонент FontDialog – компонент для работы со шрифтом;
  •  компонент sSkinManager – компонент позволяющий редактировать стили, скины программы;
  •  компонент ADOConnection – компонент, предназначенный для связывания БД с программы;
  •  компонент ADOTable – компонент содержащий таблицу БД.
  •  компонент DataSource – компонент содержащий данные таблицы БД;
  •  компонент ADOQuery – компонент содержащий запрос БД;

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

Таким образом, данная АИС «Кинотеатр» обладает достаточно простым и интуитивно понятным интерфейсом, что позволяет работать с программой не только опытным пользователям, но и тем, у кого опыт работы с различного рода программными продуктами и компьютером в целом невелик.

  1.  Руководство пользователя

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

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

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

Рисунок главного окна показан ниже.

Рисунок 20 – Главное окно программы

Как видно на рисунке 20, в данной программе возможна работа с данными кинотеатра, возможно бронирование билетов, их заказ, можно посмотреть название фильмов, которые вышли в 2013 году, а также предусмотрен просмотр видео файлов.

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

Рисунок 21 – Окно просмотра видео

На плеере уже предусмотрен ряд управляющих кнопок. Это такие кнопки как stop, play, next, prew. Также имеется регулятор громкости, необходимый для увеличения или уменьшения громкости. Для просмотра видеофайла необходимо нажать на кнопку «Open». После чего выбрать соответствующий видеофайл.

Рисунок 22 – Просмотр видеофайла

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

Рисунок 23 – Окно выбора критерия работы

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

Рисунок 24 – Окно редактирования данных о фильмах

Рисунок 25 – Окно редактирования данных о сеансах

Рисунок 26 – Окно редактирования данных о местах

Для изменения данных в таблицах «Сеансы» и «Места» достаточно выделить ячейку с данными и написать новое значение, как показано на рисунке 27.

Рисунок 27 – Изменение данных

Для изменения данных в таблице «Фильмы» необходимо проделать некоторые операции. Сначала необходимо обозначить какие данные будут изменяться. Это можно сделать при помощи поиска в программе организованного методом фильтрации. Для этого в окне редактирования данных фильма необходимо ввести значение в поле поиска и нажать на кнопку «поиск фильма», как показано на рисунке 28.

Рисунок 28 – Результаты поиска фильма

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

Рисунок 29 – Окно изменения информации

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

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

Рисунок 30 – Окно добавления информации

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

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

Работа с билетами и их бронированием весьма проста и заключается в нескольких моментах.

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

Рисунок 31 – Панель навигации таблицы «Билеты»

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

Рисунок 32 – Кнопка «Добавить»

С помощью панели навигации, возможно, редактировать данные.

Для получения отчета по билетам или распечатать билет необходимо нажать на кнопку «Распечатка», которая также находить на панели навигации.

Рисунок 33 – Кнопка «Распечатка»

После чего откроется отчет.

Рисунок 34 – Отображение отчета

Данная программа обладает небольшим количеством функций в отличие от аналогов. АИС «Кинотеатр» обладает простыми функциями работы с данными и отчетами, но, тем не менее, программа способна выполнять поставленные перед ней задачи.


  1.  Экономический раздел

  1.  Расчет трудоемкости разработки программного продукта

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

В разработку программного продукта входит следующий перечень работ:

  1.  Постановка проблемы;( исследование по проблеме создания ПП)  
  2.  Описание предметной области;
  3.  Отладка приложения;
  4.  Документирование.

  1.   Установка оценок времени продолжительности работ

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

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

  1.  Устанавливается оптимистическая оценка времени выполнения работы. Минимальное время (указано в колонке «Т min» табл.7.2.1), которое будет при самом благоприятном стечении обстоятельств.
  2.  Устанавливается также максимальное (указано в колонке «Т max» табл.1) время работы, которое имеет место при самом неблагоприятном стечении обстоятельств. Это время характеризуется большим, чем обычно числом неудач и т.п.

Таблица 1Расчет трудоемкости проектирования программного продукта

Наименование работы

Вероятностные оценки, дни

Tmin

Tmax

Tож

Постановка проблемы

4

6

5

Описание предметной области

6

8

7

Проектирование клавиатурного тренажера

20

32

25

Отладка АИС «Кинотеатр»

2

4

3

Оформление документов

8

10

9

Общая продолжительность работы составляет:

40

60

50

tож =   .         (1)

где Тож – ожидаемое время продолжительности работ

Тmin – оценка при наиболее благоприятных условиях

Tmax – оценка при наиболее неблагоприятных условиях

Ожидаемое время выполнения работ по разработке АИС «Кинотеатр» = 35 дней.

  1.   Расчет себестоимости и цены разработки программного продукта

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

  1.    Методика расчета статей калькуляции

  1.   Расчет материальных затрат

В статье «Материальные затраты» предусмотрены затраты на материалы, применяемые при использовании данного программного продукта на предприятии. Расчет стоимости материальных затрат произведен в таблице 2

Таблица 2 – Расчет стоимости материальных затрат

Наименование материала

Количество комплектов, шт.

Цена одного комплекта, руб.

Транспортные затраты, руб.

Сумма затрат ,руб.

Компакт-диск (чистый)

1

6800

0

6800

Бумага

1

45000

0

45000

Ручка

3

5000

0

15000

Всего

-

-

-

68800

  1.   Расчет заработной платы программиста

Расчет ЗП программиста производится в соответствии с трудоемкостью разработки программного продукта.

Данные для расчета:

  1.  Ставка 1 разряда –250 000 руб.
  2.  Разряд 10
  3.  Тарифный коэффициент 2.03
  4.  С 10-го до 11-го разряда 1.275

Часовая тарифная ставка (Сч) определяется:

Сч =    ,  ,       (7.4.2.1)

где Фрв – плановый фонд рабочего времени за месяц, из расчета 22 рабочих дня по 8 часов.

Сч =    = 3593,2 рубля в час.

Основная заработная плата программиста за разработку программы составит:

ЗПосн = Сч ∙ Тож,           (7.4.2.2)

ЗПосн = 3593,2 * (50*8) = 3593,2 *400 = 1437280 (руб.).

Дополнительная заработная плата:

ЗПдоп =           ,               (7.4.2.3)

ЗПдоп =           = 215592 (руб.),

Итого затраты на оплату труда:

ЗПобщ = ЗПосн + ЗПдоп,        (7.4.2.4)

ЗПобщ = 1437280 + 215592 =1652872 (руб.).

7.4.3  Расчет единого социального налога

При ставке 35% от общей суммы заработной платы, ФСЗН высчитывается по формуле:

ФСЗН =   ,       (7.4.3.5)

ФСЗН =                = 578505,2 (руб.).

7.4.4 Расчет накладных расходов

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

Таблица 3 – Затраты на электроэнергию

Вид оборудования

Мощность, Вт

Стоимость,1 кВт/час(Без НДС)

Время работы оборудования, Тож час

Сумма затрат, руб.

ПК

0,4

630

400

100800

Итого

-

-

-

100800

В таблице 3 выполнены расчеты по затрате ресурсов на электроэнергию по формуле:

Сумма = (М ∙ С) ∙ Т,        (7.4.4.1)

где  М - Мощность, кВт,

С - Стоимость , 1 кВт/час,

Т - Время работы оборудования, Тож час.

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

Таблица 4 – Амортизационные отчисления

Вид оборудования

Первоначальная стоимость, руб.

Количество рабочих месяцев

Норма амортизации %

Сумма амортизационных

отчислений, руб.

ПК

3500000

24

12,5

437500

Итого

-

-

-

437500

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

Аг =            ,        (7.4.4.2)

Амес =  .        (7.4.4.3)

где  Сп – первоначальная стоимость оборудования, руб.;

На – годовая норма амортизации, %;

Тмес – трудоемкость разработки программы, месяцы;

12 – количество календарных месяцев в году;

Прочие накладные расходы – 20% от основной заработной платы:

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

Сумма накладных расходов = 287456 + 100800+ 437500 = 825756 (руб.)

  1.   Расчет калькуляции затрат на разработку программного продукта

Расчет калькуляции затрат наглядно представлен в таблице 7.4.5.1 «Калькуляция затрат на разработку программного продукта».

Таблица 5 - Калькуляция затрат на разработку программного продукта

Статья затрат

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

Сумма затрат, руб.

Материальные затраты

руб.

68800

Отчисления на социальные нужды (ФСЗН)

%

578505,2

Накладные расходы, в т.ч. амортизация

руб.

825756

Итого:

-

1473061,2

7.5 Определение цены программного продукта

Процент рентабельности (условно) – 25% ,

Прибыль рассчитывается по формуле:

П =   ,        (7.5.1)

где Сполн – себестоимость

Р - процент рентабельности

П =     =  368265,3 (руб.).

Цена программного продукта равна сумме полной себестоимости и прибыли:

Ц = Сполн + П,         (7.5.2)

Ц =1473061 + 368265,3 = 1841326,3 (руб.).

Цена программного продукта с НДС:

НДС =   ,       (7.5.3)

НДС =    = 368265,26 (руб.),

Цена = 1841326,3 + 368265,26 = 2209591,56 (руб.).

Стоимость программного продукта составляет 2209591,56  рублей.


8  Охрана труда

Соблюдение правил техники безопасности обеспечивает сохранение здоровья работника на рабочем месте.

Для обеспечения комфортной и правильной работы на ПЭВМ также нужно соблюдать санитарно-гигиенические нормы:

  •  обязательно заземление компьютера;
  •  нормы освещённости: экрана – 100-250 Лк, поверхность стола в зоне размещения рабочего документа – 300-500 Лк;
  •  чередование работы и перерывов в работе: 5-10 мин. после каждого часа работы или 15-20 минут после каждых двух часов работы;
  •  продолжительность непрерывной работы - не более 2 часов;
  •  обеденный перерыв не входит в суммарное время регламентированных перерывов; ночью (с 22 до 6 часов) суммарное время регламентированных перерывов увеличивается на 60 минут;
  •  при несоответствии гигиенических условий труда нормативам время перерывов увеличивается на 30 %;
  •  соблюдать оптимальное расстояние от глаз до экрана монитора (50-70 см); температура в помещении – 21-25 0С;
  •  относительная влажность – 40-60 %;
  •  скорость движения воздуха – 0,1 м/с;
  •  обязательна ежедневная влажная уборка;
  •  убедиться  в отсутствии видимых повреждений аппаратуры и рабочего места;
  •  должно быть подъёмно поворотное кресло, регулируемое по высоте и углам наклона сидения и спинки; ширина сидения – 400 мм;
  •  стол должен быть с выдвижной доской для клавиатуры (высота – 725 мм, ширина - 800-1000 мм, длина – 800-1200 мм);
  •  высота сидения стула должна быть отрегулирована в соответствии с ростом ученика, чтобы линия взора приходилась на центр экрана монитора;
  •  монитор должен быть установлен так, чтобы не было бликов;
  •  в кабинете должны быть регулируемые жалюзи;
  •  расстояние между мониторами – 2 метра (если они друг за другом), 1,5 метра (рядом);
  •  минимальные размеры рабочего места одного пользователя: площадь – 6 м2, объём – 20 м3;
  •  беременным и кормящим матерям компьютер вреден;
  •  нельзя устанавливать компьютер возле источников тепла;
  •  следует избегать сгибов и защемлений питающего кабеля и проводов;
  •  работать только чистыми руками, плавно нажимая на клавиши, не допуская резких ударов, нельзя класть книги, дискеты и тетради на монитор, системный блок и клавиатуру;
  •  нельзя работать при плохом самочувствии, с влажными руками, во влажной одежде;
  •  допустимый уровень шума – 50 - 75 дБ.

  1.  Общие требования безопасности

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

Лица, работающие на ЭВМ, не допускаются к работе в состоянии наркотического, токсического и алкогольного опьянения.

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

Соблюдать правила пожарной и электробезопасности.

Соблюдать порядок включения и выключения ПЭВМ.

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

Нельзя прикасаться к корпусу ПЭВМ, питающим проводам и предметам, связанным с землёй  (батареи отопления, водопровод).

Нельзя прикасаться к экрану и тыльной стороне монитора, клавиатуры.

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

8.2 Требования безопасности перед началом работы:

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

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

Не приступать к выполнению работы без разрешения руководителя.

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

8.3 Требования безопасности во время работы:

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

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

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

Во время выполнения работы не прикасаться и не наклоняться (особенно с неубранными волосами) к вращающимся частям компьютера.

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

Соблюдать расстояние до экрана монитора не менее 50-70 см.

Запрещается работать за компьютером без очков работникам, имеющим плохое зрение.

После 30 минут работы за компьютером необходимо выполнить комплекс упражнений для глаз (в течение 2-3 минут).

8.4 Техника безопасности в аварийной ситуации

Техника безопасности в аварийной ситуации:

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

Требования безопасности по окончании занятий:

  1.  После выполненной работы, подготовить компьютер к выключению.
  2.  Привести в порядок свое рабочее место.

ЗАКЛЮЧЕНИЕ

В результате проделанной работы было выполнено:

  •  Объектно-ориентированный анализ АИС «Кинотеатр», результатом которого явилось техническое задание, построенное в виде диаграммы вариантов использования.
  •  Реализация программы в среде C++Builder 6  под Windows 95/98/NT/XP/Seven  

Созданное приложение, позволит:

  •  повысить производительность труда;
  •  экономить время;
  •  сократить время на заполнение данных;

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

В соответствии с полученным результатом работы программы можно сделать вывод, что разработанная АИС «Кинотеатр» работает верно, а требования технического задания выполнены в полном объеме.

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

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


СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1.  Палицын, В.А. Технико-экономическое обоснование дипломных проектов / В.А. Палицын. - Мн.: БГУИР, 2006.
  2.  Стивен, П. Язык программирования / П. Стивен - М. Издательство "Диасофт", 2002.
  3.  Дейтел, П. Как программировать на С++ / П. Дейтел, X. Дейтел. - М.: Издательство "Бином" 2001.
  4.  Павловская, Т.А. С/С++. Практикум / Т.А. Павловская, Ю.А. Щупак –СПб.: Питер, 2002.
  5.  Культин, Н. С/С++ в задачах и примерах / Н. Культин –СПб.: БХВ-Петербург, 2001.


ПРИЛОЖЕНИЕ А

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

Диаграмма вариантов использования


Приложение Б

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

Диаграмма деятельности


Приложение В

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

Диаграмма состояния


ПРИЛОЖЕНИЕ Г

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

Диаграмма классов


ПРИЛОЖЕНИЕ Д

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

Листинг программы

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "Unit3.h"

#include "Unit7.h"

#include "Unit9.h"

#include "Unit10.h"

#include "Unit12.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "sSkinManager"

#pragma link "sLabel"

#pragma link "sButton"

#pragma link "sPanel"

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::sButton3Click(TObject *Sender)

{

Form3->ShowModal();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::sButton1Click(TObject *Sender)

{

Form7->ShowModal();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::sButton2Click(TObject *Sender)

{

Form9->ShowModal();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::sButton4Click(TObject *Sender)

{

Form10->ShowModal();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::sButton5Click(TObject *Sender)

{

Form12->ShowModal();

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit3.h"

#include "Unit4.h"

#include "Unit6.h"

#include "Unit8.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "sButton"

#pragma link "sLabel"

#pragma resource "*.dfm"

TForm3 *Form3;

//---------------------------------------------------------------------------

__fastcall TForm3::TForm3(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm3::sButton1Click(TObject *Sender)

{

Form4->Show();

Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm3::sButton2Click(TObject *Sender)

{

Form6->Show();

}

//---------------------------------------------------------------------------

void __fastcall TForm3::sButton3Click(TObject *Sender)

{

Form8->Show();

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit4.h"

#include "Unit2.h"

#include "Unit5.h"

#include "jpeg.hpp"

#include "Unit14.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "sLabel"

#pragma link "sButton"

#pragma link "sPanel"

#pragma link "sEdit"

#pragma resource "*.dfm"

TForm4 *Form4;

//---------------------------------------------------------------------------

__fastcall TForm4::TForm4(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm4::DBGrid1CellClick(TColumn *Column)

{

if(!(TBlobField*)DataModule2->ADOTable1->FieldByName("Фотография")->IsNull){

      if(!Image1->Visible)Image1->Visible=true;

      TMemoryStream* strm = new TMemoryStream;

      TJPEGImage *ptJpg=new TJPEGImage;

       ((TGraphicField*)DataModule2->ADOTable1->FieldByName("Фотография"))->SaveToStream(strm);

       strm->Seek(0,0);

       if (*(Word*)strm->Memory == 0xD8FF)Image1->Picture->Graphic=ptJpg;

       Image1->Picture->Graphic->LoadFromStream(strm);

       delete strm;

       delete ptJpg;

     }else

     Image1->Visible=false;

}

//---------------------------------------------------------------------------

void __fastcall TForm4::sButton1Click(TObject *Sender)

{

Form5->ShowModal();

}

//---------------------------------------------------------------------------

void __fastcall TForm4::sButton2Click(TObject *Sender)

{

DataModule2->ADOTable1->Delete();

}

//---------------------------------------------------------------------------

void __fastcall TForm4::sButton4Click(TObject *Sender)

{

DataModule2->ADOTable1->Last();        

}

//---------------------------------------------------------------------------

void __fastcall TForm4::sButton6Click(TObject *Sender)

{

DataModule2->ADOTable1->Next();        

}

//---------------------------------------------------------------------------

void __fastcall TForm4::sButton5Click(TObject *Sender)

{

DataModule2->ADOTable1->Prior();        

}

//---------------------------------------------------------------------------

void __fastcall TForm4::sButton7Click(TObject *Sender)

{

DataModule2->ADOTable1->First();        

}

//---------------------------------------------------------------------------

void __fastcall TForm4::sButton8Click(TObject *Sender)

{

DataModule2->ADOTable1->Close();

DataModule2->ADOTable1->Open();

DBGrid1->DataSource=DataModule2->DataSource1;

DataModule2->ADOTable1->Filtered=false;

}

//---------------------------------------------------------------------------

void __fastcall TForm4::sButton9Click(TObject *Sender)

{

DataModule2->ADOTable1->Filtered=false;

DataModule2->ADOTable1->Filter="название like '%"+sEdit1->Text+"%'";

DataModule2->ADOTable1->Filtered=true;

sEdit1->Clear();

}

//---------------------------------------------------------------------------

void __fastcall TForm4::FormShow(TObject *Sender)

{

DataModule2->ADOQuery1->Close();

DataModule2->ADOQuery1->Open();

}

//---------------------------------------------------------------------------

void __fastcall TForm4::DBGrid1TitleClick(TColumn *Column)

{

DataModule2->ADOQuery1->Close();

DataModule2->ADOQuery1->Open();

}

//---------------------------------------------------------------------------

void __fastcall TForm4::DBGrid1DblClick(TObject *Sender)

{

Form14->Show();

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit5.h"

#include "Unit2.h"

#include "jpeg.hpp"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "sEdit"

#pragma link "sLabel"

#pragma link "sMemo"

#pragma link "sButton"

#pragma resource "*.dfm"

TForm5 *Form5;

//---------------------------------------------------------------------------

__fastcall TForm5::TForm5(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm5::sButton2Click(TObject *Sender)

{

DataModule2->ADOTable1->Edit();

      TMemoryStream* strm = new TMemoryStream();

      Image1->Picture->Graphic->SaveToStream(strm);

      ((TGraphicField*)DataModule2->ADOTable1->FieldByName("Фотография"))->LoadFromStream(strm);

      delete strm;

      DataModule2->ADOTable1->Post();        

}

//---------------------------------------------------------------------------

void __fastcall TForm5::sButton3Click(TObject *Sender)

{

if (OpenPictureDialog1->Execute())

 {

   AnsiString CurrentFile = OpenPictureDialog1->FileName;

   Image1->Picture->LoadFromFile(CurrentFile);

 }

}

//---------------------------------------------------------------------------

void __fastcall TForm5::sButton1Click(TObject *Sender)

{

DataModule2->ADOTable1->Insert();

DataModule2->ADOTable1->FieldByName("Название")->AsString=sEdit1->Text;

DataModule2->ADOTable1->FieldByName("Описание")->AsVariant=sMemo1->Text;

DataModule2->ADOTable1->FieldByName("Длительность")->AsString=sEdit2->Text;

DataModule2->ADOTable1->FieldByName("Актеры")->AsString=sEdit3->Text;

DataModule2->ADOTable1->FieldByName("жанр")->AsString=sEdit5->Text;

DataModule2->ADOTable1->FieldByName("страна")->AsString=sEdit6->Text;

DataModule2->ADOTable1->FieldByName("озвучивание")->AsString=sEdit7->Text;

DataModule2->ADOTable1->FieldByName("режисер")->AsString=sEdit8->Text;

DataModule2->ADOTable1->FieldByName("Рейтинг")->AsString=sEdit4->Text;

DataModule2->ADOTable1->FieldByName("год_издания")->AsInteger=StrToInt(sEdit9->Text);

DataModule2->ADOTable1->FieldByName("фотография")->AsVariant=Image1->Picture;

DataModule2->ADOTable1->Post();

sEdit1->Clear();

sEdit2->Clear();

sEdit3->Clear();

sEdit4->Clear();

sEdit5->Clear();

sEdit6->Clear();

sEdit7->Clear();

sEdit8->Clear();

sEdit9->Clear();

sMemo1->Clear();

}

//---------------------------------------------------------------------------

void __fastcall TForm5::FormClose(TObject *Sender, TCloseAction &Action)

{

DataModule2->ADOTable1->Close();

DataModule2->ADOTable1->Open();

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit6.h"

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "sLabel"

#pragma link "sButton"

#pragma link "sPanel"

#pragma resource "*.dfm"

TForm6 *Form6;

//---------------------------------------------------------------------------

__fastcall TForm6::TForm6(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm6::sButton1Click(TObject *Sender)

{

DataModule2->ADOTable2->Insert();

}

//---------------------------------------------------------------------------

void __fastcall TForm6::sButton2Click(TObject *Sender)

{

DataModule2->ADOTable2->Delete();        

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit7.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "WMPLib_OCX"

#pragma link "sButton"

#pragma resource "*.dfm"

TForm7 *Form7;

//---------------------------------------------------------------------------

__fastcall TForm7::TForm7(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm7::sButton1Click(TObject *Sender)

{

OpenDialog1->Execute();

WindowsMediaPlayer1->close();

WindowsMediaPlayer1->URL= OpenDialog1->FileName;

//WindowsMediaPlayer1->open();

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit8.h"

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "sButton"

#pragma link "sLabel"

#pragma link "sPanel"

#pragma link "sEdit"

#pragma resource "*.dfm"

TForm8 *Form8;

//---------------------------------------------------------------------------

__fastcall TForm8::TForm8(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm8::sButton1Click(TObject *Sender)

{

DataModule2->ADOTable3->Insert();

}

//---------------------------------------------------------------------------

void __fastcall TForm8::sButton2Click(TObject *Sender)

{

DataModule2->ADOTable3->Delete();        

}

//---------------------------------------------------------------------------

void __fastcall TForm8::sButton3Click(TObject *Sender)

{

DataModule2->ADOTable3->Filtered=false;

DataModule2->ADOTable3->Filter="номер_места="+sEdit1->Text+"";

DataModule2->ADOTable3->Filtered=true;

sEdit1->Clear();

}

//---------------------------------------------------------------------------

void __fastcall TForm8::sButton4Click(TObject *Sender)

{

DataModule2->ADOTable3->Filtered=false;

DBGrid1->DataSource=DataModule2->DataSource3;

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit9.h"

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "sLabel"

#pragma resource "*.dfm"

TForm9 *Form9;

//---------------------------------------------------------------------------

__fastcall TForm9::TForm9(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm9::FormShow(TObject *Sender)

{

DataModule2->ADOQuery2->Close();

DataModule2->ADOQuery2->Open();

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit10.h"

#include "Unit2.h"

#include "Unit11.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "sButton"

#pragma link "sPanel"

#pragma link "sLabel"

#pragma link "sEdit"

#pragma resource "*.dfm"

TForm10 *Form10;

//---------------------------------------------------------------------------

__fastcall TForm10::TForm10(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm10::FormShow(TObject *Sender)

{

for(int i=1;i<=DataModule2->ADOTable4->RecordCount;i++)

{

DataModule2->ADOTable4->Edit();

       DataModule2->ADOTable4->FieldByName("конечная_стоимость")->AsInteger=DataModule2->ADOTable4->FieldByName("начальная_стоимость")->Value*DataModule2->ADOTable4->FieldByName("коэф.сеанса")->Value*DataModule2->ADOTable4->FieldByName("коэф.места")->Value;

DataModule2->ADOTable4->Post();

DataModule2->ADOTable4->Next();

}

if (sEdit2->Text!="")

sEdit3->Text=sEdit2->Text-IntToStr(DataModule2->ADOQuery3->FieldByName("Expr1000")->AsInteger);

DataModule2->ADOQuery3->Close();

DataModule2->ADOQuery3->Open();

DataModule2->ADOQuery3->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm10::sButton2Click(TObject *Sender)

{

DataModule2->ADOTable4->Insert();

}

//---------------------------------------------------------------------------

void __fastcall TForm10::sButton3Click(TObject *Sender)

{

DataModule2->ADOTable4->Delete();

}

//---------------------------------------------------------------------------

void __fastcall TForm10::sButton5Click(TObject *Sender)

{

DataModule2->ADOTable4->Prior();   

}

//---------------------------------------------------------------------------

void __fastcall TForm10::sButton4Click(TObject *Sender)

{

DataModule2->ADOTable4->Next();

}

//---------------------------------------------------------------------------

void __fastcall TForm10::sButton7Click(TObject *Sender)

{

DataModule2->ADOTable4->Last();    

}

//---------------------------------------------------------------------------

void __fastcall TForm10::sButton6Click(TObject *Sender)

{

DataModule2->ADOTable4->First();

}

//---------------------------------------------------------------------------

void __fastcall TForm10::DBGrid1TitleClick(TColumn *Column)

{

for(int i=1;i<=DataModule2->ADOTable4->RecordCount;i++)

{

DataModule2->ADOTable4->Edit();

       DataModule2->ADOTable4->FieldByName("конечная_стоимость")->AsInteger=DataModule2->ADOTable4->FieldByName("начальная_стоимость")->Value*DataModule2->ADOTable4->FieldByName("коэф.сеанса")->Value*DataModule2->ADOTable4->FieldByName("коэф.места")->Value;

DataModule2->ADOTable4->Post();

DataModule2->ADOTable4->Next();

}

sEdit3->Text=sEdit2->Text-IntToStr(DataModule2->ADOQuery3->FieldByName("Expr1000")->AsInteger);

DataModule2->ADOQuery3->Close();

DataModule2->ADOQuery3->Open();

DataModule2->ADOQuery3->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm10::sButton1Click(TObject *Sender)

{

Form11->QuickRep1->PreviewModal();

}

//---------------------------------------------------------------------------

void __fastcall TForm10::sButton8Click(TObject *Sender)

{

DataModule2->ADOTable4->Filtered=false;

DataModule2->ADOTable4->Filter="номер_билета='"+sEdit1->Text+"'";

DataModule2->ADOTable4->Filtered=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm10::sButton9Click(TObject *Sender)

{

DataModule2->ADOTable4->Filtered=false;

DBGrid1->DataSource=DataModule2->DataSource4;

}

//---------------------------------------------------------------------------

void __fastcall TForm10::sEdit2Change(TObject *Sender)

{

if (sEdit2->Text!="")

sEdit3->Text=sEdit2->Text-IntToStr(DataModule2->ADOQuery3->FieldByName("Expr1000")->AsInteger);

DataModule2->ADOQuery3->Close();

DataModule2->ADOQuery3->Open();

DataModule2->ADOQuery3->Active=true;

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit11.h"

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "acPNG"

#pragma resource "*.dfm"

TForm11 *Form11;

//---------------------------------------------------------------------------

__fastcall TForm11::TForm11(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit12.h"

#include "Unit2.h"

#include "Unit13.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "sButton"

#pragma link "sLabel"

#pragma link "sPanel"

#pragma resource "*.dfm"

TForm12 *Form12;

//---------------------------------------------------------------------------

__fastcall TForm12::TForm12(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm12::sButton2Click(TObject *Sender)

{

DataModule2->ADOTable5->Insert();

}

//---------------------------------------------------------------------------

void __fastcall TForm12::sButton3Click(TObject *Sender)

{

DataModule2->ADOTable5->Delete();        

}

//---------------------------------------------------------------------------

void __fastcall TForm12::sButton5Click(TObject *Sender)

{

DataModule2->ADOTable5->Prior();        

}

//---------------------------------------------------------------------------

void __fastcall TForm12::sButton4Click(TObject *Sender)

{

DataModule2->ADOTable5->Next();        

}

//---------------------------------------------------------------------------

void __fastcall TForm12::sButton7Click(TObject *Sender)

{

DataModule2->ADOTable5->Last();        

}

//---------------------------------------------------------------------------

void __fastcall TForm12::sButton6Click(TObject *Sender)

{

DataModule2->ADOTable5->First();

}

//---------------------------------------------------------------------------

void __fastcall TForm12::DBGrid1TitleClick(TColumn *Column)

{

for(int i=1;i<=DataModule2->ADOTable5->RecordCount;i++)

{

DataModule2->ADOTable5->Edit();

       DataModule2->ADOTable5->FieldByName("конечная_стоимость")->AsInteger=DataModule2->ADOTable5->FieldByName("начальная_стоимость")->Value*DataModule2->ADOTable5->FieldByName("коэф сеанса")->Value*DataModule2->ADOTable5->FieldByName("коэф места")->Value+DataModule2->ADOTable5->FieldByName("стоимость_брони")->Value;

DataModule2->ADOTable5->Post();

DataModule2->ADOTable5->Next();

}

}

//---------------------------------------------------------------------------

void __fastcall TForm12::sButton1Click(TObject *Sender)

{

Form13->QuickRep1->Preview();

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit13.h"

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "acPNG"

#pragma resource "*.dfm"

TForm13 *Form13;

//---------------------------------------------------------------------------

__fastcall TForm13::TForm13(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit14.h"

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "sButton"

#pragma resource "*.dfm"

TForm14 *Form14;

//---------------------------------------------------------------------------

__fastcall TForm14::TForm14(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm14::sButton3Click(TObject *Sender)

{

if (OpenPictureDialog1->Execute())

 {

   AnsiString CurrentFile = OpenPictureDialog1->FileName;

   Image1->Picture->LoadFromFile(CurrentFile);

 }        

}

//---------------------------------------------------------------------------

void __fastcall TForm14::sButton2Click(TObject *Sender)

{

DataModule2->ADOTable1->Edit();

      TMemoryStream* strm = new TMemoryStream();

      Image1->Picture->Graphic->SaveToStream(strm);

      ((TGraphicField*)DataModule2->ADOTable1->FieldByName("Фотография"))->LoadFromStream(strm);

      delete strm;

      DataModule2->ADOTable1->Post();

}

//---------------------------------------------------------------------------


 

А также другие работы, которые могут Вас заинтересовать

56307. Життя – можливість. Скористайся нею! 64 KB
  Мета: знайомити учнів з людськими чеснотами, дати можливість дітям впевнитися, що успіх залежить від власних зусиль, від того, наскільки вони будуть людяними, гуманними, толерантними у стосунках, виховувати повагу до людей різного віку та статусу, почуття милосердя.
56308. Сценарий эстрадной миниатюры дружины юных пожарных «Данко» 221.5 KB
  Выезжаем Команда поехали На припев песни группы Банда Андрюха Пожарная команда выбегает вся команда Владислав. Владислав. Звучит музыкальный проигрыш Владислав. Владислав.
56309. Сценарий внеклассного мероприятия «Энергосбережение – первый шаг к устойчивому развитию» 44 KB
  Оборудование: компьютер проектор ватманы клей маркеры шаблоны мультимедийные презентации фильм Экологические катастрофы иллюстрированные макеты лампочек рисунки фото макет школы. Прошу обратить внимание на фотоработы рисунки...
56310. Борис Грінченко – наш земляк 73.5 KB
  Якби людей відзначали номінаціями за вподобання та особисті якості то комусь би дістались вродливість співучість комусь ледарство байдужість честолюбство а Грінченкові ймовірно працелюбність.
56311. Кращої, ніж рідна, мови не буває 125.5 KB
  Мета заходу: донести до студентів красу і багатство української мови; формувати відчуття краси рідної мови; розвивати мовленнєві здібності учнів, збагачувати словниковий склад; виховувати любов до української мови...
56312. Сценарій міської спартакіади серед дітей старшого дошкільного віку присвяченої ЄВРО 2012 73 KB
  Ведуча: Увага Увага Спішіть поспішайте Спортивного свята Ви не минайте. Ведуча: Увага командам Шикуйтеся в ряд. Ведуча: Парад кроком руш Зустрічаємо команду Дошкільного навчального закладу №2. Ведуча: Парад на місті стій наліво...
56313. В поисках украденного счастья 51 KB
  Баба Яга Соловей разбойник Змей Горыныч украли счастье из страны Сказок и теперь все сказки будут заканчиваться плохо в них не будет счастливого конца.: Что же делать Кто нам поможет спасти страну сказок Дети а кто может спасти сказки добрая фея волшебница цветик семицветик...
56314. Tabagisme-l’ENNEMI de l’homme 102 KB
  Tous les participants recoivent les feuilles de papier. Le professeur dit: «Le soleil au centre - c’est le centre de l’univers. Il doit être lié par des lignes avec des étoiles autour du soleil. Ces lignes portent les noms : ma couleur préférée ;