Разработка информационной системы туристического агентства

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 21.11.2011
Размер файла 3,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

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

Рисунок 3.11 -- Полная декомпозиция задачи

3.4 Разработка структуры хранения данных [4]

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

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

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

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

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

· Тип поля -- определяет тип данных, которые могут содержаться в данном поле.

· Размер поля -- определяет предельную длину (в символах) данных, которые могут размещаться в данном поле.

· Формат поля -- определяет способ форматирования данных в ячейках, принадлежащих полю.

· Маска ввода -- определяет форму, в которой вводятся данные в поле (средство автоматизации ввода данных).

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

В таблицах баз данных для работы используются следующие типы данных.

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

· Числовой -- тип данных для хранения действительных чисел.

· Поле Мемо -- специальный тип данных для хранения больших объемов текста (до 65 535 символов). Физически текст не хранится в поле. Он храниться в другом месте базы данных, а в поле храниться указатель на него, но для пользователя такое разделение заметно не всегда.

· Дата/время -- тип данных для хранения календарных дат и текущего времени.

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

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

· Графическое изображение -- тип для хранения графического изображения.

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

Таблица «Страны» -- TabStran.db

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

Тип данных

Размер

Ключ

Название страны

Текстовый

25

*

Описание страны

поле Мемо

240

Фото

Графическое изображение

Стоимость путевок (min значение)

Числовой

Количество путевок (min значение)

Числовой

Таблица «Туры» -- TabTurov.db

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

Тип данных

Размер

Ключ

Код

Счетчик

+/-

*

Название страны

Текстовый

25

Название тура

Текстовый

50

Вид тура

Текстовый

30

Код отеля

Текстовый

10

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

Текстовый

25

Дата заезда

Дата/время

Длительность тура

Числовой

Сведения о туре

поле Мемо

240

Стоимость

Денежный

Количество путевок

Числовой

Таблица «Заказы» -- TabBrony.db

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

Тип данных

Размер

Ключ

Код

Счетчик

+/-

*

Номер заказа

Текстовый

30

Название тура

Текстовый

50

Фамилия

Текстовый

20

Имя

Текстовый

10

Отчество

Текстовый

20

Возраст

Текстовый

4

Пол

Текстовый

2

Номер загранпаспорта

Числовой

Серия загранпаспорта

Текстовый

10

День рождения

Числовой

Месяц рождения

Текстовый

10

Год рождения

Числовой

Телефон

Текстовый

15

Таблица «Отели» -- TabHotel.db -- справочная таблица.

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

Тип данных

Размер

Ключ

Код

Текстовый

10

*

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

Текстовый

25

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

поле Мемо

240

Фото отеля

Графическое изображение

Название страны

Текстовый

25

Таблица «Билеты» -- TabReys.db

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

Тип данных

Размер

Ключ

Код

Счетчик

+/-

*

Номер заказа

Текстовый

30

Номер транспорта

Текстовый

10

Вид транспорта

Текстовый

8

Пункт отправления

Текстовый

20

Пункт назначения

Текстовый

25

Дата отправления

Дата

Время отправления

Время

Дата прибытия

Дата

Время прибытия

Время

Таблица «Отели2» -- TabNameHotelLookUp.db -- временная таблица, которая служит для хранения промежуточных значений данных.

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

Тип данных

Размер

Ключ

Код

Счетчик

+/-

*

Код отеля

Текстовый

10

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

Текстовый

25

3.5 Инфологическая модель структуры хранения данных

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

1. Таблица «Страны»

Название страны

*

Описание

Фото

Стоимость путевок (min значение)

Всего туров

2. Таблица «Туры»

Код

*

Название страны

Название тура

Вид тура

Код отеля

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

Дата заезда

Длительность

Сведения о туре

Стоимость

Количество путевок

3. Таблица «Заказы»

Код

*

Номер заказа

Название тура

Фамилия

Имя

Отчество

Возраст

Пол

№ загранпаспорта

Серия загранпаспорта

День рождения

Месяц рождения

Год рождения

Телефон

4. Таблица «Отели»

Код

*

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

Описание

Фото

Название страны

5. Таблица «Отели2»

Npp

*

Код отеля

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

6. Таблица «Билеты»

Код

*

Номер заказа

Номер транспорта

Вид транспорта

Пункт отправления

Пункт назначения

Дата отправления

Время отправления

Дата прибытия

Время прибытия

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

Рассмотрим подробнее.

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

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

Таблица «Туры» связана с тура таблицей «Заказы» связью один -ко-многим -- в такой связи каждому названию тура из таблицы «Туры» соответствует несколько записей о клиентах в таблице «Заказы». Связь установлена по полю Название тура. В таблице «Туры» оно является вторичным индексом и в таблице «Заказы» -- вторичным индексом.

Таблица «Заказы» связана с таблицей «Билеты» связью один -ко-многим -- в такой связи каждой записи номера заказа из таблицы «Заказы» соответствует несколько записей о билетах из таблице «Билеты». Связь установлена по полю Номер заказа. В таблице «Заказы» и в таблице «Туры» оно является вторичным индексом.

Таблица «Отели2» связана с таблицей «Отели» методом LookUp. Организация метода LookUp подробно описана в пункте 4.2.

3.6 Разработка интерфейса программы

3.6.1 Разработка общего интерфейса [5,6]

Borland C++ Builder 5 является визуальной средой программирования. Вся работа производится в Интегрированной Среде Программирования (IDE -- Integrated DevElopment). Особенностью IDE является то, что проектируемый графический интерфейс сразу отображается на экране и разработчик имеет возможность сразу видеть результат своей разработки. Во время разработки будем руководствоваться следующими основными принципами построения интерфейса:

а) соответствия ожиданиям пользователя. Если интерфейс соответствует этим ожиданиям, им очень удобно пользоваться;

б) простота и ясность интерфейса. Простой и ясный интерфейс не отвлекает пользователя от решения ключевых задач;

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

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

д) справочная служба. Для предотвращения попадания пользователя в затруднительную ситуацию нужно предусмотреть один из способов:

- организовать службу поддержки;

- предложить достаточно полную документацию.

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

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

Основные:

1) форма «Каталог стран»;

2) форма «Каталог туров»;

3) форма «Бронирование туров»;

Вспомогательные:

1) форма «Добавление / редактирование сведений о турах;

2) форма «Поиск»

3) форма «О клиентах»;

4) форма «Подбор тура»;

5) форма «Запрос на отбор данных по дате»;

6) форма «Запрос на отбор данных по цене»;

7) форма «Отчет о бронирование туров»;

8) форма «Туристическая путевка».

3.6.2 Форма «Каталог стран»

На форме «Каталог стран» расположено:

- таблица стран, с кратким описанием и фотографией страны;

- добавление / редактирование / удаление страны и сведений о ней;

- быстрый поиск названия страны в списке стран;

на вкладке «Поиск»:

- быстрый поиск туров по предложенным критериям;

на вкладке «Операции»:

- кнопка «Уровень продаж за период»;

- кнопка «Уровень продаж по странам»;

- кнопка «Прибыль за период»;

- кнопка «Количество продаж за период»;

- кнопка «Маршруты со скидкой»;

- кнопка «Популярные маршруты».

Просмотр сведений о стране осуществляется на вкладке «О стране».

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

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

Кнопка «Справка» предлагает пользователю ознакомиться со справкой по работе с программой.

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

По нажатию кнопки «Выход» происходит окончание работы программы.

3.6.3 Форма «Каталог туров»

Форма «Каталог туров» отражает перечень всех туров для выбранной страны.

На форме «Каталог туров» расположено:

- главное меню;

- поиск по критериям;

- упорядочивание данных по виду тура;

- фильтрация данных по отелю;

- отбор туров по количеству мест с указанием даты;

- кнопка «Заказать»;

- кнопка «Динамика продаж»;

- кнопка «Другой выбор».

Главное меню формы «Каталог туров» включает в себя следующие пункты:

1) Редактирование:

- добавить / редактировать сведения о туре. При выборе этого пункта, открывается вспомогательная форма «Добавление / редактирование сведений о туре»;

- удалить тур -- удаление выбранного тура с предварительным сообщением на удаление;

2) Функции:

- подобрать тур. При выборе этого пункта, открывается вспомогательная форма «Подбор тура», где необходимо указать параметры для отбора тура;

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

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

- сведения о туристах. При выборе этого пункта открывается форма «О туристах», где представлены сведения о туристах забронировавших тур;

- постоянные клиенты;

- горящие туры;

- невостребованные туры.

3) Справка включает в себя:

- справку по работе с базой данных;

- спарвку о программе;

- об авторе.

Кнопка «Другой выбор» открывает форму «Каталог стран».

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

3.6.4 Форма «Бронирование туров»

Общий вид формы «Бронирование туров» представлен на рисунке 3.17.

Рисунок 3.17

Кнопки «Добавить», «Изменить», «Сохранить», «Удалить» -- соответственно, добавляют, редактируют, сохраняют и удаляют сведения о клиентах.

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

Кнопка «Каталог туров» открывает форму «Каталог туров», которая предоставляет возможность выбора нового тура.

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

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

При нажатии кнопки «Справка» -- выводится справочная информация по работе с программой.

Кнопи «Новый билет», «Бронировать», «Удалить бронь», «Изменить бронь» служат, соответственно, для введения данных о новом билете, занесения данных о забронированном билете в базу данных, удаления брони билета, редактирования данных брони билета.

3.6.5 Форма «Добавление / редактирование сведений о турах»

Форма «Добавление / редактирование сведений о турах» представлена на рисунке 3.18.

Рисунок 3.18

Форма разделена на 2 части. Левая часть -- добавление / редактирование сведений о туре, правая часть -- работа с данными таблицы «Отели».

При заполнении поля «Код отеля» правой части формы достаточно ввести код выбранного отеля, и в поле «Наименование отеля» название отеля отобразится автоматически (технология LookUp подробно рассмотрена в пункте 4.2).

Кнопка «Новая запись» служит для добавления нового тура и сведений о нем.

Кнопка «Отменить» служит для отмены всех действий и возвращает на форму «Каталог туров».

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

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

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

3.6.6 Форма «О клиентах»

Форма «О клиентах» представлена на рисунке 3.19.

Рисунок 3.19

Форма «О клиентах» отражает сведения обо всех клиентах, которые забронировали тур.

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

Кнопка «ОК» служит для закрытия формы «О клиентах» и открытия формы «Каталог туров».

3.6.7 Форма «Подбор тура»

Форма «Подбор тура» представлена на рисунке 3.20.

Рисунок 3.20

В форме «Подбор тура» предлагается ввести параметры для отбора сведений о турах.

Кнопка «Найти» служит для нахождения сведений о турах согласно введенным параметрам.

Кнопка «Отменить» служит для отмены всех действий.

3.6.8 Форма «Запрос на выборку в диапазоне дат»

Форма «Запрос на выборку по дате» представлена на рисунке 3.21.

Рисунок 3.21

В данной форме необходимо указать начальную и конечную даты и нажать кнопку «ОК».

Кнопка «Отмена» отменяет все действия.

3.6.9 Форма «Запрос на выборку в диапазоне цен»

Форма «Запрос на выборку по цене» представлена на рисунке 3.22.

Рисунок 3.22

В данную форму необходимо ввести начальное и конечное значение цены и нажать кнопку «ОК».

Кнопка «Отмена» отменяет все действия.

3.6.10 Форма «Отчет о бронировании туров»

Форма «Отчет о бронировании туров» представлена на рисунке 3.23.

Рисунок 3.23

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

3.6.11 Форма «Туристическая путевка»

Форма «Туристическая путевка» представлена на рисунке 3.24.

Рисунок 3.24

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

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

3.6.12 Компоненты интерфейса

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

Компоненты Borland Builder делятся на два вида: визуальные - видимые во время разработки и работы программы, и невизуальные - видимые только во время разработки.

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

Визуальные

- TEdit (окно редактирования) -- служит для отображения, редактирования и ввода небольших однострочных текстов.

- TLabel (метка) -- служит для отображения текста, не изменяемого пользователем.

- TPanel (панель) -- контейнер для группирования органов управления и других контейнеров. Также используется для построения полос состояния палитры инструментов и т.д.

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

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

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

- TBitBtn -- это управляющая кнопка, на поверхности которой можно располагать изображение.

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

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

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

- TDBEdit -- представляет собой окно редактирования, которое может отображать и редактировать поле набора данных.

- TDBImage -- компонент предназначен для вывода изображений, содержащихся в графических полях базы данных.

- TDBMemo -- позволяет отображать и редактировать данные поля, в частности, типа MEMO и BLOB.

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

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

- TQRLabel -- надпись, содержащая текст (аналог надписи Label), может размещаться на любой полосе.

- TQRDBText -- значение поля записи, обычно размещается в полосе данных.

- TQRDBRichEdit -- обеспечивает быстрый доступ к полям базы данных.

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

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

- TDBLookUpComboBox -- компонент, предназначенный для выбора значения из выпадающего списка. Компонент связывается с полем «своего» набора данных через инспектр объектов.

Невизуальные

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

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

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

- TOpenPictureDialog -- вызывает стандартные диалоги Windows открытия и сохранения файлов изображений.

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

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

- TQRBand -- это контейнеры для помещения в них различных данных; заголовка, верхнего и нижнего колонтитулов страницы, верхнего и нижнего колонтитулов группы данных, компонентов, через которые и выводятся данные, и т.д.

4. Технический проект

4.1 Разработка технического проекта [4]

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

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

Для работы с таблицами баз данных при проектировании приложения используем программу Database Desktop, которая позволяет:

- создавать таблицы;

- изменять структуры;

- редактировать записи.

В начале создания новой таблицы в окне Create Table программы Database Desktop выбирается ее формат. Затем, определяется структура таблицы, в которой выполняются следующие действия:

- описание полей;

- создание ключа;

- задание индексов;

- определение ограничений на значение полей;

- определение условий (ограничений) ссылочной целостности;

- задание паролей;

- задание языкового драйвера;

- задание таблицы для выбора значений.

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

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

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

- отделить управление базой данных от обработки данных;

- создать модуль, совместно используемый несколькими приложениями;

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

При разработке программы дипломного проекта рассматривался простой модуль данных, который представлен объектом DataModule -- DataModulTurAg на котором размещены компоненты доступа к данным --

TVibStrani, DataSVibStrani,

TTuri, DataSTuri,

TZakaz, DataSZakaz,

TLookUpOtely, DataSLookUpOtely,

THotelLookUp, DataSHotelLookUp,

TBilet, DataSBilet.

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

DataModulTurAg->TTuri->Refresh();

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

1) добавление данных. Добавление данных происходит при использовании метода Insert() -- вставляет новую пустую запись в таблицу, и делает ее активной. После вставки пустой записи в ее поля можно вводить данные.

void __fastcall TForm2::InsertTurClick(TObject *Sender)

{

DataModulTurAg->TTuri->Insert();

FormDobav->Tag=0;

FormDobav->ShowModal();

if (FormDobav->Tag)

{

DataModulTurAg->TTuri->Refresh();

}

}

2) редактирование данных. Редактирование происходит при помощи метода Edit() -- разрешает редактирование данных в таблице.

void __fastcall TFormBrony::BitEditClick(TObject *Sender)

{

DataModulTurAg->TZakaz->Edit();

DataModulTurAg->TZakaz->FieldByName("Zakaz")->AsString=EZakaz->Text;

}

3) удаление данных. Удаление данных происходит при помощи метода Delete() -- удаляет активную запись и устанавливает указатель записи на следующую запись таблицы.

DataModulTurAg->TVibStrani->Delete();

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

void __fastcall TFormDobav::BSaveAndExitClick(TObject *Sender)

{

DataModulTurAg->TTuri->Edit();

DataModulTurAg->TTuri->FieldByName("VidTura")->AsString=CBVidTura->Text;

DataModulTurAg->TTuri->FieldByName("Hotel")->AsString=

DataModulTurAg->THotelLookUp->FieldByName("NameHotel")->AsString;

DataModulTurAg->TTuri->Post();

}

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

void __fastcall TForm3::BitBNaytiClick(TObject *Sender)

{ //Организация поиска методом Locate поиск по названию страны

TLocateOptions Options;

Options.Clear();

if (!DataModulTurAg->TVibStrani->Locate("Strana",Edit2- >Text,Options))

ShowMessage ("Такой страны не найдено" + Edit2->Text);

}

6) вычисление текущей даты

void __fastcall TForm3::FormShow(TObject *Sender)

{

int n;

AnsiString stDay[7] = {"воскреcенье","понедельник","вторник","среда",

"четверг","пятница","суббота"};

AnsiString stMonth[12] = {"января", “февраля","марта","апреля",

"мая","июня","июля","августа","сентября",

"октября","ноября","декабря"};

TDateTime Todey;

Word Year, Month, Day;

Todey = Now();

DecodeDate(Todey, Year, Month, Day);

Label8-> Caption = "Сегодня: " + IntToStr(Day) + " " + stMonth[Month-1] + " " +

IntToStr(Year) + " года, " + stDay[DayOfWeek(Todey) -1];

7) вычисление min стоимости тура из списка туров для указанной страны.

Для технической реализации данной функции используем компонент Query с параметром, где вместо параметра указывается название страны. Компонент Query [4] представляет собой набор данных, записи которого формируются в результате выполнения SQL-запроса. Текст запроса, на основании которого в набор данных отбираются записи, содержится в свойстве SQL типа TStrings. Запрос включает в себя команды на языке SQL и выполняется при открытии набора данных с помощью вызова его методов ExecSQL или Open.

SQL-текст

SELECT min(Cena)

FROM TabTurov

WHERE (Strana=:Strana)

Builder-код

void __fastcall TForm3::FormShow(TObject *Sender)

{

DataModulTurAg->TVibStrani->Refresh();

DataModulTurAg->TTuri->Refresh();

DataModulTurAg->TVibStrani->First();

for (int i=0;i<DataModulTurAg->TVibStrani->RecordCount;i++)

{

QMin->Close();

QMin->Params->Items[0]->AsString=DataModulTurAg->TVibStrani

->FieldByName("Strana")->AsString;

if (QMin->Prepared)

QMin->Prepare();

QMin->Open();

DataModulTurAg->TVibStrani->Edit();

DataModulTurAg->TVibStrani->FieldByName("Stoim")

->AsCurrency=QMin->FieldByName("MIN OF Cena")->AsCurrency;

DataModulTurAg->TVibStrani->Post();

DataModulTurAg->TVibStrani->Next();

}

DataModulTurAg->TVibStrani->First();

}

8) вычисление общего числа туров для страны.

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

SQL-текст

SELECT COUNT(*)

FROM TabTurov

WHERE Strana=:Strana

Builder-код

void __fastcall TForm2::FormShow(TObject *Sender)

{

QTurov->Close();

QTurov->Params->Items[0]->AsString=

DataModulTurAg->TVibStrani->FieldByName("Strana")->AsString;

QTurov->Open();

DataModulTurAg->TVibStrani->Edit();

DataModulTurAg->TVibStrani->FieldByName("Putev")

->AsInteger=QTurov->FieldByName("COUNT(*)")->AsInteger;

DataModulTurAg->TVibStrani->Post();

DataModulTurAg->TTuri->Refresh();

DataModulTurAg->TVibStrani->Refresh();

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

void __fastcall TForm3::FormShow(TObject *Sender)

{

int n;

DataModulTurAg->TVibStrani->First();

DataModulTurAg->TTuri->First();

for (int i=0;i<DataModulTurAg->TVibStrani->RecordCount;i++)

{

for (int j=0;j<DataModulTurAg->TTuri->RecordCount;j++)

{

n=DataModulTurAg->TVibStrani->FieldByName("Putev")->AsInteger;

DataModulTurAg->TVibStrani->Edit();

DataModulTurAg->TVibStrani->FieldByName("Putev")->AsInteger=n;

DataModulTurAg->TVibStrani->Post();

DataModulTurAg->TVibStrani->Next();

}

}

DataModulTurAg->TVibStrani->First();

}

9) фильтрация данных.

void __fastcall TForm2::BitVypClick(TObject *Sender)

{

AnsiString s=0,t=0;

DataModulTurAg->TTuri->Cancel();

s=DataModulTurAg->TVibStrani->FieldByName("Strana")->AsString;

t=DataModulTurAg->TTuri->FieldByName("Strana")->AsString;

DataModulTurAg->TTuri->Filtered=false;

if (s == t)

{

DataModulTurAg->TTuri->Filtered=true;

DataModulTurAg->TTuri->Filter="((KolMest>="+(EKol1

->Text)+")and(KolMest<="+(EKol2->Text)+

"))and((DataZaezda>='"+DateToStr(DTData1

->Date)+"')and(DataZaezda<='"+DateToStr(DTData2->Date)+"'))";

}

else return;

}

10) подбор тура.

void __fastcall TForm2::NParamClick(TObject *Sender)

{

FormPodborTura->Tag=0;

FormPodborTura->ShowModal();

if (FormPodborTura->Tag)

{

DataModulTurAg->TTuri->Filtered=false;

DataModulTurAg->TTuri->Filter=

"(((DataZaezda>='"+DateToStr(FormPodborTura->DData1->Date)+

"')AND(DataZaezda<='"+DateToStr(FormPodborTura->DData2

->Date)+

"'))AND((KolDney>='"+StrToInt(FormPodborTura->Edit4

->Text)+"')AND(KolDney<='"+

StrToInt(FormPodborTura->Edit3

->Text)+"'))AND((Cena>="+CurrToStr(FormPodborTura->Edit6

->Text)+

")AND(Cena<="+CurrToStr(FormPodborTura->Edit5->Text)+")))";

DataModulTurAg->TTuri->Filtered=true;

}

QTurov->Close();

QTurov->Params->Items[0]->AsString=DataModulTurAg->TVibStran

i->FieldByName("Strana")->AsString;

QTurov->Open();

DataModulTurAg->TTuri->Refresh();

}

11) сведения о туристах забронировавших тур.

Для технической реализации данной функции используем компонент Query с параметром, где вместо параметра указывается название тура. Запрос формируется на форме «Каталог туров», результаты запроса передаются на форму «О клиентах».

SQL-текст

SELECT *

FROM TabBrony

WHERE Tur=:Tur

Builder-код

void __fastcall TFormZapOTuristah::FormShow(TObject *Sender)

{

QueryOTuristah->Close();

QueryOTuristah->Params->Items[0]->AsString=DataModulTurAg->TTuri

->FieldByName("Tur")->AsString;

if (! QueryOTuristah->Prepared)

{

QueryOTuristah->Prepare();

}

QueryOTuristah->Open();

if (QueryOTuristah->RecordCount!=0)

DataSOTuristah->DataSet=QueryOTuristah;

else {ShowMessage ("По вашему запросу ничего не найдено");

return;

}

Edit1->Text=IntToStr(DataModulTurAg->TZakaz->RecordCount);

}

12) вычисление свободного количества путевок.

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

SQL-текст

SELECT COUNT(*)

FROM TabBrony

WHERE Tur=:Tur

Builder-код

void __fastcall TForm2::FormShow(TObject *Sender)

{

DataModulTurAg->TTuri->Refresh();

DataModulTurAg->TTuri->First();

for (int i=0;i<DataModulTurAg->TTuri->RecordCount;i++)

{

Form2->QueryTurist->Close();

Form2->QueryTurist->Cancel();

Form2->QueryTurist->Params->Items[0]->AsString=

DataModulTurAg->TTuri->FieldByName("Tur")->AsString;

if (Form2->QueryTurist->Prepared)

Form2->QueryTurist->Prepare();

Form2->QueryTurist->Open();

DataModulTurAg->TZakaz->Edit();

DataModulTurAg->TZakaz->FieldByName("Vsego")->AsInteger=

Form2->QueryTurist->FieldByName("COUNT(*)")->AsInteger;

DataModulTurAg->TTuri->Edit();

DataModulTurAg->TTuri->FieldByName("Ost") ->AsInteger=

DataModulTurAg->TTuri->FieldByName("KolMest")->AsInteger

- DataModulTurAg->TZakaz->FieldByName("Vsego")->AsInteger;

DataModulTurAg->TTuri->Post();

DataModulTurAg->TTuri->Next();

}

DataModulTurAg->TTuri->First();

}

13) калькуляция расчетов для группы клиентов.

Если необходимо рассчитать тур для группы клиентов, предлагается калькуляция расчетов. Пользователю предлагается выбрать для каждого из группы клиентов возрастной уровень (взрослый / ребенок от 5-10 лет / ребенок от 11-16 лет). Уровень взрослый предполагает оплату стоимости тура в полном объеме, уровень ребенок от 5-10 лет предполагает оплату стоимости тура со скидкой 20%, уровень ребенок от 11-16 лет предполагает оплату стоимости тура со скидкой 5%. Организация калькуляции расчетов представлена на рисунке 4.1.

Рисунок 4.1 -- Калькуляция расчетов

void __fastcall TFormBrony::BitRaschetClick(TObject *Sender)

{

Currency Summ;

Summ=KonCena1+KonCena2+KonCena3+KonCena4;

ECenaSumm->Text=Summ;

}

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

void __fastcall TFormBrony::CBox1Click(TObject *Sender)

{

cena=0,cenaPr20=0,cenaPr5=0;

ECena2->Text=

DataModulTurAg->TTuri->FieldByName("Cena")->AsCurrency;

switch (CBox1->ItemIndex)

{

case 0:{ cena=StrToCurr(ECena2->Text);

ECena2->Text=cena;break; }

case 1:{ cena=StrToCurr(ECena2->Text);

cenaPr20=cena-((cena*20)/100);

ECena2->Text=cenaPr20; break; }

case 2:{ cena=StrToCurr(ECena2->Text);

cenaPr5=cena-((cena*5)/100);

ECena2->Text=cenaPr5;break; }

}

KonCena1=ECena2->Text;

}

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

void __fastcall TFormBrony::CBox2Click(TObject *Sender)

{

cena=0,cenaPr20=0,cenaPr5=0;

ECena3->Text=

DataModulTurAg->TTuri->FieldByName("Cena")->AsCurrency;

switch (CBox2->ItemIndex)

{

case 0:{ cena=StrToCurr(ECena3->Text);

ECena3->Text=cena;break; }

case 1:{ cena=StrToCurr(ECena3->Text);

cenaPr20=cena-((cena*20)/100);

ECena3->Text=cenaPr20; break;}

case 2:{ cena=StrToCurr(ECena3->Text);

cenaPr5=cena-((cena*5)/100);

ECena3->Text=cenaPr5;break;}

}

KonCena2=ECena3->Text;

}

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

void __fastcall TFormBrony::CBox3Click(TObject *Sender)

{

cena=0,cenaPr20=0,cenaPr5=0;

ECena4->Text=

DataModulTurAg->TTuri->FieldByName("Cena")->AsCurrency;

switch (CBox3->ItemIndex)

{

case 0:{ cena=StrToCurr(ECena4->Text);

ECena4->Text=cena;break; }

case 1:{ cena=StrToCurr(ECena4->Text);

cenaPr20=cena-((cena*20)/100);

ECena4->Text=cenaPr20; break ;}

case 2:{ cena=StrToCurr(ECena4->Text);

cenaPr5=cena-((cena*5)/100);

ECena4->Text=cenaPr5;break;}

}

KonCena3=ECena4->Text;

}

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

void __fastcall TFormBrony::CBox4Click(TObject *Sender)

{

cena=0,cenaPr20=0,cenaPr5=0;

ECena5->Text=

DataModulTurAg->TTuri->FieldByName("Cena")->AsCurrency;

switch (CBox4->ItemIndex)

{

case 0:{ cena=StrToCurr(ECena5->Text);

ECena5->Text=cena;break; }

case 1:{ cena=StrToCurr(ECena5->Text);

cenaPr20=cena-((cena*20)/100);

ECena5->Text=cenaPr20; break;}

case 2:{ cena=StrToCurr(ECena5->Text);

cenaPr5=cena-((cena*5)/100);

ECena5->Text=cenaPr5;break;}

}

KonCena4=ECena5->Text;

}

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

void __fastcall TFormBrony::BitBtn4Click(TObject *Sender)

{

DataModulTurAg->TZakaz->Cancel();

ECena2->Clear();

ECena3->Clear();

ECena4->Clear();

ECena5->Clear();

ECenaSumm->Clear();

}

14) поиск тура с главной формы «Каталог стран».

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

Компонент Query с текстом SQL размещен на модуле DataModulTurAg, а вызов осуществляется с формы «Каталог стран» при нажатии кнопки «Найти». Результатом является перечень туров, отобранных в соответствии с указанными критериями, на форме «Каталог туров».

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

Рисунок 4.2 -- Организация поиска

SQL-текст

SELECT *

FROM TabTurov

WHERE (Strana=:Strana) AND

(DataZaezda BETWEEN :Data1 AND :Data2) AND

(KolDney BETWEEN :Dn1 AND :Dn2) AND

(Cena BETWEEN :Cena1 AND :Cena2)

Builder-код

void __fastcall TForm3::BNaytiClick(TObject *Sender)

{

DataModulTurAg->QSort2->Close();

DataModulTurAg->QSort2->Params->Items[0]->AsString=Edit3->Text;

DataModulTurAg->QSort2->Params->Items[1]->AsDateTime=Date1->Date;

DataModulTurAg->QSort2->Params->Items[2]->AsDateTime=Date2->Date;

DataModulTurAg->QSort2->Params->Items[3]->AsInteger=StrToInt(Edit4->Text);

DataModulTurAg->QSort2->Params->Items[4]->AsInteger=StrToInt(Edit5->Text);

DataModulTurAg->QSort2->Params->Items[5]->AsCurrency=StrToCurr(Edit6->Text);

DataModulTurAg->QSort2->Params->Items[6]->AsCurrency=StrToCurr(Edit11->Text);

DataModulTurAg->QSort2->Open();

if (DataModulTurAg->QSort2->RecordCount!=0)

DataModulTurAg->DataSTuri->DataSet=DataModulTurAg->QSort2;

else { ShowMessage ("По Вашему запросу ничего не найдено");

return;

}

Form2->Show();

}

15) программирование кнопки «Оформить туристическую путевку».

Формирование отчета для кнопки «Оформить туристическую путевку» происходит после нажатия кнопки на форме «Бронирование туров».

Builder-код

void __fastcall TFormBrony::BKartaTuristaClick(TObject *Sender)

{

DataModulTurAg->QKartaTurista->Close();

DataModulTurAg->QKartaTurista->Params->Items[0]->AsString=

DataModulTurAg->TZakaz->FieldByName("Zakaz")->AsString;

DataModulTurAg->QKartaTurista->Open();

FormKartaTurista->QRKartaTurista->Preview();

FormKartaTurista->QRKartaTurista->Print();

}

В процессе программирования в контейнер DataModulTurAg был добавлен компонент Query и в SQL был сформирован запрос.

SQL-текст

“SELECT a.Strana, a.Tur,a.VidTura,a.Hotel,a.DataZaezda,a.KolDney,

a.Cena,c.Fam,c.Imy,c.Otchestvo,c.Pol,c.Vozr,c.Den,c.Mes,c.God,

c.ZPnom,c.ZPser,b.Zakaz, b.Nomer, b.PunktOtprav, b.PunktNaznach,

b.DataOyprav,b.DataPrib, b.VremOtprav, b.VremNaznach, b.Transport

FROM TabReys b, TabTurov a

LEFT OUTER JOIN TabBrony c ON ((a.Tur=c.Tur) AND (b.Zakaz=c.Zakaz))

WHERE (c.Zakaz=:Zakaz)”

Далее формируется отчет и в режиме предварительно просмотра выводится на экран. На отдельной форме разрабатывается отчет, компоненты которого подключаются к Query через инспектор объектов. Форма разработки отчета представлена на рисунке 4.3.

Рисунок 4.3

16) формирование отчета «Отчет о бронировании туров».

На форме разрабатывается отчет, элементы которого, через инспектор объектов, подключаются к соответствующим компонентам таблиц базы данных (рисунок 4.4).

Рисунок 4.4 -- Форма разработки «Отчет о бронировании туров»

Builder-код

void __fastcall TFormBrony::BitOtchetClick(TObject *Sender)

{

FormOtchet->QROtchet->Preview();

FormOtchet->QROtchet->Print();

}

Полный листинг программы представлен в Приложении А.

4.2 Разработка рабочего проекта

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

1. Зашита ввода данных.

В поля Название страны, Название тура, Фамилия, Имя, Отчество клиента разрешается вводить только русские буквы и символ «» (для двойных фамилий и названий туров), иначе программа запрещает ввод с клавиатуры. Идея защиты состоит в том, что перед тем, как отобразится в поле нажатый символ, он анализируется на принадлежность к разрешенному диапазону. Если символ разрешен -- символ выводится в окно, если нет -- состояние окна не изменяется (символ не отображается).

Ниже приведен соответствующий фрагмент кода для поля Название тура

void __fastcall TFormDobav::DBETurKeyPress(TObject *Sender, char &Key)

{

if ((Key>='А')&&(Key<='я')|| (Key='-') || (Key=' '))

return;

else Key=0;

}

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

Рисунок 4.5 -- Проверка полного ввода

void __fastcall TForm3::BNaytiClick(TObject *Sender)

{

if ((Edit4->Text).Length() == 0)

{

MessageDlg("Укажите длительность 'от' ", mtInformation, TMsgDlgButtons() << mbOK, 0);

::SetFocus(Edit4->Handle);

return;

}

if ((Edit5->Text).Length() == 0)

{

MessageDlg("Укажите длительность 'до' ", mtInformation, TMsgDlgButtons() << mbOK, 0);

::SetFocus(Edit5->Handle);

return;

}

if ((Edit6->Text).Length() == 0)

{

MessageDlg("Укажите начальную цену", mtInformation, TMsgDlgButtons() << mbOK, 0);

::SetFocus(Edit6->Handle);

return;

}

if ((Edit11->Text).Length() == 0)

{

MessageDlg("Укажите конечную цену", mtInformation, TMsgDlgButtons() << mbOK, 0);

::SetFocus(Edit11->Handle);

return;

}

3. Для обеспечения корректного ввода даты используется компонент TDateTimePicker [6], который предназначен для ввода и отображения даты и времени. Компонент очень эффективен за счет появления выпадающего календаря и обеспечивает безошибочный ввод дат и времени.

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

Организация метода LookUp -- поле выбора [2,4].

Чтобы создать поле выбора типа LookUp, требуется:

1) в Редактор полей для таблицы THotelLookUp выбрать пункт New Field.

2) создать в редакторе полей новое поле NameHotel, указав для него тип и размер.

3) в группе радиокнопок Field Type указать кнопку LookUp.

4) в выпадающем списке Key Fields выбирать ключевое поле из таблицы THotelLookUp. Это поле, по которому установлена связь с другой таблицей. Выбираем поле KodOtely.

5) в выпадающем списке DataSet выбрать таблицу, которую будем просматривать -- TLookUpOtely.

6) в выпадающем списке LookUpKeys выбрать ключевое поле просматриваемой таблицы -- Npp.

7) в выпадающем списке Result Field выбрать просматриваемое поле -- Otely.

Использование поля выбора заключается в том, что пользователь выбирает значение в поле связи KodOtely, содержащем список, который построен на основании значения поля связи Npp. После выбора для поля связи KodOtely из результирующего поля Otely автоматически заносятся соответствующие значения в поле NameHotel. Таким образом, поле связи KodOtely, содержащее список, используется для выбора, а поле NameHotel -- для занесения в него значения. На рисунке 4.7 приведена форма создания поля выбора LookUp.

Рисунок 4.7

Это поле содержат значения только для чтения, поэтому, для того, чтобы оперировать в дальнейшем со значениями LookUp-поля, будем эти значения, переписывать в поле Название отеля таблицы Туры.

void __fastcall TFormDobav::BSaveAndExitClick(TObject *Sender)

{

DataModulTurAg->TTuri->Edit();

DataModulTurAg->TTuri->FieldByName("Hotel")->AsString=

DataModulTurAg->THotelLookUp->FieldByName("NameHotel")->AsString;

DataModulTurAg->TTuri->Post();

}

5. Для удобного ввода чисел используется компонент TUpDown [4] представляющий собой счетчик. С помощью TUpDown создается спаренная кнопка, с помощью которой прокручивается некоторый компонент, например TEdit, имя прокручиваемого компонента указывают в свойстве Associate. Пример создание спаренных кнопок представлен на рисунке 4.8.

Рисунок 4.8

6. При удалении записи выводится сообщение для подтверждения действий пользователя. Вид формы сообщения представлен на рисунке 4.9.

Рисунок 4.9

void __fastcall TDataModulTurAg::TVibStraniBeforeDelete(TDataSet *DataSet)

{

if (Application->MessageBox ("Вы действительно хотите удалить запись?",

"Подтвердите Ваши действия",

MB_YESNOCANCEL + MB_ICONQUESTION) != IDYES)

Abort () ;

}

7. При изменении записи выводится сообщение для подтверждения действий пользователя на внесения изменения. Вид формы сообщения представлен на рисунке 4.10.

Рисунок 4.10

8. При завершении работы программы выводится предупреждающее сообщение. Вид формы сообщения представлен на рисунке 4.11.

Рисунок 4.11

9. От неверного ввода данных предусмотрен компонент TComboBox [4], который позволяет пользователю выбирать данные из выпадающего списка, обеспечивая тем самым правильный ввод данных.

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

void __fastcall TFormBrony::EZakazChange(TObject *Sender)

{

int RecordNumber;

AnsiString as=EZakaz->Text;

AnsiString bs;

DataModulTurAg->TZakaz->Edit();

if (EZakaz->Modified)

{

DataModulTurAg->TZakaz->First();

for (int i=0;i<DataModulTurAg->TZakaz->RecordCount;i++)

{

bs=DataModulTurAg->TZakaz->FieldByName("Zakaz")->AsString;

if (as != bs)

{

DataModulTurAg->TZakaz->Next();

}

else { MessageDlg("Запись с таким номером есть", mtInformation, TMsgDlgButtons() << mbOK, 0);

::SetFocus(EZakaz->Handle);

RecordNumber=DataModulTurAg->TZakaz->RecNo;

DataModulTurAg->TZakaz->Edit();

return;

}

}

}

DataModulTurAg->TZakaz->RecNo=RecordNumber;

}

5. Организационно-экономический раздел

5.1 Определение трудозатрат на разработку программного продукта

5.1.1 Общие положения

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

Себестоимость продукта определяется затратами на изготовление продукта:

- трудозатраты;

- материальные затраты.

Трудозатраты определяются типовыми нормами времени [3], предназначенными для нормирования труда специалистов, занятых разработкой программного обеспечения, установления численности исполнителей, а также обоснования трудоемкости разработки проекта.

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

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

1) техническое задание;

2) эскизный проект;

3) технический проект;

4) рабочий проект;

5) внедрение.

Нормы времени рассчитаны на комплексы задач (задачи) и указаны в человеко-днях при пятидневной рабочей неделе с продолжительностью рабочего дня 8 ч 12 мин. В случае изменения продолжительности рабочего дня нормы времени пересчитываются.

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

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

Наименования комплексов задач определены Общесоюзным классификатором подсистем и комплексов задач АСУ (ОКПКЗ), утвержденным постановлением Госстандарта СССР. 154 от 20 марта 1985 г.

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


Подобные документы

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

    дипломная работа [4,4 M], добавлен 03.05.2012

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

    курсовая работа [1,3 M], добавлен 17.05.2013

  • Разработка информационной системы административного управления. Выбор языка и среды программирования. Структура взаимодействия информации. Требования к программно-аппаратному окружению. Создание программы в Delphi и связывание ее с базой данных.

    курсовая работа [1010,9 K], добавлен 08.10.2015

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

    контрольная работа [881,5 K], добавлен 08.06.2014

  • Появление системы управления базами данных. Этапы проектирования базы данных "Строительная фирма". Инфологическая и даталогическая модель данных. Требования к информационной и программной совместимости для работы с базой данных "Строительная фирма".

    курсовая работа [93,0 K], добавлен 31.03.2010

  • Системный анализ и анализ требований к базе данных. Концептуальная и инфологическая модель предметной области. Типы атрибутов в логической модели базы. Физическая модель проектируемой базы данных в методологии IDEF1X. Требования к пользователям системы.

    курсовая работа [2,3 M], добавлен 21.11.2013

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

    курсовая работа [383,8 K], добавлен 26.03.2015

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

    курсовая работа [85,9 K], добавлен 31.10.2014

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

    дипломная работа [1,5 M], добавлен 22.11.2015

  • Разработка пособия для специальности "Вычислительная техника и программное обеспечение", ее алгоритм. Технические характеристики и требования к интерфейсу. Минимальные требования программы. Описание процедуры создания и вывода информации в WebBrowser.

    курсовая работа [3,4 M], добавлен 04.01.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.