Автоматизация рабочего места кассира автовокзала
Системный анализ предметной области. Построение схемы функциональных зависимостей. Процесс создания таблиц базы данных в Database Desktop. Разработка алгоритма работы программы. Создание псевдонима в BDE Administrator. Разработка приложения пользователя.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 28.04.2016 |
Размер файла | 1,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
В наше время информация играет ключевую роль в любой области жизнедеятельности человека. Цель исследований курсового проекта состоит в разработке информационного банка данных, который поможет любому пользователю легко найти нужную информацию о любом рейсе автовокзала. Разработанный проект демонстрирует то, как работу с данными можно сделать удобной и интересной, используя базу данных. Программа является очень актуальной на сегодняшний день, она автоматизирует работу с базой данных любого автовокзала и предоставляет кассиру (оператору) понятный и дружественный интерфейс.
Мощность информационного банка данных обусловлена возможностью его постоянного пополнения новыми данными, причем в неограниченном количестве информации. Это является очень удобным для кассира. Таким образом, создание информационного банка данных, обладающего такими свойствами, задача достаточно актуальная и полезная.
1. Системный анализ предметной области
Предметной областью данной курсовой работы является реализация базы данных для автовокзала. Потребителем информации из БД является оператор (кассир).
Входная информация поступает в БД в виде:
- информация о пассажирах;
- информация об автобусы;
- информация о № рейса;
На выходе пользователи системы получают информацию в виде:
- фильтрацию № рейсов по станции прибытия;
- сортировку билетов по:
1) № билета
2) по дате
3) по станции прибытия;
- поиск клиента по ФИО;
- автоматический расчет суммы билетов;
Каждому номеру рейса соответствует расписание, которое имеет свой номер расписания, ст.отправления, ст.прибытия, время в пути и цену. Каждому № рейса соответствует автобус, в котором указывается его гос. номер, марка, модель, кол-во мест и Ф.И.О водителя. Каждому гос. номеру автобуса относится водитель, имеющий Ф.И.О, телефон и адрес.
Каждому номеру билета соответствует пассажир, имеющий номер паспорта, Ф.И.О и адрес.
Каждому номеру билета соответствует рейс, причем номер билета характеризуется датой, местом, суммой, номером рейса и номером паспорта, а рейс включает в себя номер рейса, время, гос.номер авто и номер расписания.
На информацию в БД накладываются следующие ограничения:
- в одно и то же время пассажир не может иметь билеты на разные рейсы;
- в одно и то же время водитель не может обслуживать автобус в разных рейсах;
- на каждый билет приходится единственный пассажир.
В результате БД должна обеспечивать решение следующих основных задач:
- печать электронного билета;
- статистика (график) проданных билетов;
- печать расписания автобусов по выбранному рейсу;
- печать графика (статистика) продаж билетов;
- поддержание базы данных в адекватном состоянии при появлении новых пассажиров;
- снабжение пользователя оперативной и достоверной информацией о текущем состоянии рейса
2. Разработка концептуальной модели БД
таблица база данные administrator
2.1 Построение схемы функциональных зависимостей
На основе проведенного анализа предметной области строится схема функциональных зависимостей, включающая в себя все атрибуты, определенные на предыдущем этапе, и зависимости объединяющие их.
На рисунке 1 представлена схема функциональных зависимостей, которая содержит следующие атрибуты.
- «Номер билета»;
- «Номер паспорта»;
- «Ф.И.О. пассажира»;
- «Адрес»;
- «Дата»;
- «Место»;
- «Стоимость»;
- «Номер рейса»;
- «Гос.номер авто»;
- «Номер расписания»;
- «Время»;
- «Ф.И.О. водителя»;
- «Марка»;
- «Модель»;
- «Кол-во мест»;
- «Телефон»;
- «Адрес»;
-«Станция отправления»;
- «Станция прибытия»;
- «Время в пути»;
- «Цена»;
Рисунок 1 - Схема функциональных зависимостей
Из приведенной схемы видно, что атрибуты, «станция отправления», «станция прибытия», «время в пути» и «цена» функционально зависят от атрибута «№ расписания». Это объясняется тем, что «№ расписания» никогда не будет повторяться и будет иметь одну станцию отправления, одну станцию прибытия, одно время в пути и одну цену.
Аналогично атрибуты, «Гос.№ автобуса», «время» и «№ расписания» функционально зависят от атрибута «№ рейса». Это объясняется тем, что «№ рейса» расположен только по одному «№ расписания» и относится только к одному «Гос.№ автобуса», т.е. каждый рейс имеет свой неповторяющийся уникальный номер. Из приведенной схемы видно, что атрибуты «Ф.И.О. водителя», «Марка», «Модель» и «Кол-во мест» функционально зависят от атрибута «Гос.№ автобуса», а атрибуты «адрес» и «конт.телефон» функционально зависят от атрибута «Ф.И.О.водителя». Это объясняется тем, что атрибуты «Ф.И.О.водителя», «Марка», «Модель» и «Кол-во мест» относится только к одному «Гос.№ автобуса», т.к. каждый автобус имеет свой неповторяющийся номер. Аналогично атрибуты «Ф.И.О. пассажира» и «Адрес» функционально зависят от атрибута «№ паспорта», т.к. у каждого пассажира есть свой определенный неповторяющийся номер паспорта.
2.2 Формирование формы 1НФ
Отношение находится в 1НФ, если все его атрибуты являются простыми (имеют единственное значение). Исходное отношение строится из всех выделенных атрибутов, выделенных в предметной области (рисунок 1).
Первичным ключом исходного отношения является объект «№ билета», так как от этого объекта зависят все последующие атрибуты. Несложно заметить, что все атрибуты вошедшие в первичный ключ, непосредственно или транзитивно, полностью или частично зависят от первичного ключа.
№ билета * |
|
Дата |
|
Место |
|
Стоимость |
|
№ рейса |
|
№ расписания |
|
Станция отправления |
|
Станция прибытия |
|
Время в пути |
|
Цена |
|
Время |
|
Гос.№ авто |
|
Кол-во мест |
|
Модель |
|
Марка |
|
Ф.И.О.водителя |
|
Телефон |
|
Адрес водителя |
|
Адрес пассажира |
|
№ паспорта |
|
Ф.И.О. пассажира |
Рисунок 2 - Исходное отношение в 1НФ
2.3 Формирование 2НФ
Для перевода отношения 1НФ в 2НФ необходимо исключить из исходного отношения частичные функциональные зависимости неключевых атрибутов от первичного ключа. В представленном рисунке 2 в соответствии со схемой функциональных зависимостей отсутствуют частичные зависимости, следовательно, 1НФ=2НФ.
2.4 Формирование 3НФ и 3НФБК
Полученное отношение R удовлетворяют требованиям 2НФ, но необходимо привести его к 3НФ.. В отношении R атрибуты «Дата», «Место», «Стоимость», «№ рейса», «№ расписания», «Станция отправления», «Станция прибытия», «Время в пути», «Цена», «Время отправления», «Гос.№ авто», «Кол-во мест», «Модель», «Марка», «Ф.И.О водителя», «Телефон», «Адрес», «Адрес пассажира», «№ паспорта», «Ф.И.О пассажира» транзитивно зависят от атрибута «№ билета». Следующим шагом требуется исключить присутствующие в нем транзитивные зависимости для этого исходное отношение R разбивается на 6 отношений R1 («№ расписания», «Станция отправления», «Станция прибытия», «Время в пути»,«Цена»), R2 («Гос.№ авто», «Марка», «Модель», «Кол-во мест»,«Ф.И.О. водителя»), R3(«№ паспорта», «Ф.И.О. пассажира», «Адрес»), R4(«№ рейса», «Время», «Гос.№ авто», «№ расписания»), R5(«№ билета», «Дата», «Место», «Сумма», «№ рейса», «№ паспорта»), R6 («Ф.И.О. водителя», «телефон», «Адрес»).
В результате схема БД, доведенная до 3НФ выглядит, как представлено как рисунке 3. Более того, поскольку во всех полученных отношениях все функциональные зависимости сводятся к полной нетранзитивной зависимости от первичного ключа (т.е. отсутствуют зависимости частей составных первичных ключей от неключевых атрибутов), эта схема удовлетворяет всем требованиям НФБК и является конечным результатом концептуального проектирования.
Рисунок 3 - Схема отношений в 3НФ (НФБК)
3. Реализация БД
3.1 Создание таблиц базы данных в Database Desktop
Database Desktop - это утилита, во многом похожая на Paradox, которая поставляется вместе с Delphi для интерактивной работы с таблицами различных форматов локальных баз данных - Paradox и dBase, а также SQL-серверных баз данных InterBase, Oracle, Informix, Sybase (с использованием SQL Links).
Для создания новой таблицы следует выбрать пункт меню File > New > Table. При этом будет предложено выбрать тип создаваемой страницы, по умолчанию предлагается формат Paradox 7. Сразу после подтверждения выбранного типа откроется окно определения структуры таблицы, в котором и производятся все необходимые действия, связанные с созданием и определением параметров таблицы, включая ее поля, индексы, пароли, условия и ограничения на значения и для ссылочной целостности.
Процесс создания таблиц и результаты показаны на рисунке 4.
Рисунок 4 - Database Desktop
В БД содержится 6 таблиц, связанных между собой:
1. Расписание (Raspisanie)
2. Автобусы (Avtobusy)
3. Клиенты (Klienty)
4. Рейсы (Reisy)
5. Билеты (Bilety)
6. Водители (Voditeli)
Для создания таблиц использовались типы:
1. Alpha -- строковое поле (A);
2. Autoincrement - поле счетчик (+);
3. Short - вещественные числа (S);
4. Date- дата(D);
5. Number - числовые значения (N);
Для создания связей между таблицами используется:
Меню «Referential Integrity» в выпадающем списке «Table Properties» . Далее необходимо нажать кнопку «Define» и в открывшемся окне выбрать слева связываемое поле, а справа нажать по файлу таблицы
Таблица Расписание (Raspisanie) содержит поля:
1. № расписания;
2. Станция отправления;
3. Станция прибытия;
4. Время в пути;
5. Цена;
Таблица Автобусы (Avtobusy) содержит поля:
1. Гос.№ авто;
2. Ф.И.О. водителя;
3. - Марка;
4. - Модель;
5. - Количество мест;
Таблица Клиенты (Klienty) содержит поля:
1. № паспорта;
2. - Ф.И.О;
3. - Адрес;
Таблица Рейсы (Reisy) содержит поля:
1. № рейса;
2. Время;
3. Гос.№ авто;
Таблица Билеты (Bilety) содержит поля:
1. № билета;
2.Дата;
3. Место;
4.Цена;
5.Ф.И.О;
6.Ст.прибытия;
7.Ст.отбытия;
Таблица Водители (Voditeli) содержит поля:
1. Ф.И.О. водителя;
2. Телефон;
3. Адрес;
Рисунок 5 - Создание таблицы «Raspisanie»
Рисунок 6 - Создание таблицы «Avtobusy»
Рисунок 7 - Создание таблицы «Klienty»
Рисунок 8 - Создание таблицы «Reisy»
Рисунок 9 - Создание таблицы «Voditeli»
Рисунок 10 - Создание таблицы «Bilety»
Для создания вторичных индексов используется меню «Secondary Indexes» в выпадающем списке «Table Properties».
Здесь же, с помощью свойства таблицы создается связь между таблицами R2.db и R6.db. Выбирается вкладка Referential Integrity и нажимается кнопка Define. Затем из списка Fields двойным щелчком мыши выбирается значение FIO_voditel. В списке Table выбирается значение таблицы R6.db. Далее нажимается кнопка ОК и созданной связи присваивается имя FIO_voditel. Работа во вкладке Referential Integrity представлена на рисунке 11.
Рисунок 11 - Связь ФИО водитель
Аналогичным образом создаются связи между таблицами Raspisanie и Reis по полю «№ raspisaniya», Passajir и Bilet по полю «№ pasporta», Bilet и Reis по полю «№ reisa», Reis и Avtobus по полю «Gos № avto». В базе данных используются всего пять связей.
3.2 Создание псевдонима в BDE Administrator
В Delphi проблема передачи в программу информации о месте нахождения файлов базы данных решается путем использования псевдонима базы данных. Псевдоним (Alias) - это короткое имя, поставленное в соответствие реальному, полному имени каталога базы данных. Такой псевдоним должен быть зарегистрирован в файле конфигурации конкретного компьютера при помощи утилиты BDE Administrator.
Для доступа к информации программа, обеспечивающая работу с базой данных, подключается библиотека Borland Database Engine (BDE), которая, в свою очередь, использует конфигурационный файл, содержащий информацию обо всех зарегистрированных в системе псевдонимах.
Создается новый псевдоним базы данных. Запускается утилиту BDE Administrator. Выбирается в главном меню элемент Object | New. В появившемся окне оставляется тип создаваемой БД без изменений (STANDARD) и нажимается OK. Задается имя псевдонима - baza.
4. Разработка алгоритмов работы программы
Данная программа предназначена для разных пользователей. После запуска программы происходит подключение модулей (блок 1). Вход в БД происходит открытием экранной формы (блок 2) и запуском программы(блок 3) . Если нажата кнопка «Автобусы» (блок 4), тогда можно открыть форму «Автобусы» (блок 5), либо по нажатию кнопки «Водители» открывается база «Водители» (блок 6,7). Если же происходит нажатие кнопки «Билеты» ( блок 8), то осуществляется открытие формы «Билеты» (блок 9) и здесь возможна сортировка билета по дате (блок 10,11) или по номеру билета (блок 12,13) или же по станции прибытия (блок 14,15). Если нажата кнопка «Печать» (блок 16), то производится печать электронного билета (блок 17) иначе переход к кнопке «Клиенты». Если нажата кнопка «Клиенты» (блок 18), тогда можно открыть форму «Клиенты» (блок 19), либо по нажатию на кнопку «Статистика» (блок 20) производится расчет, построение и печать графика (блок 21).
Если нажата кнопка «Печать расписания» (блок 22), то формируется отчет по выбранному рейсу (блок 23). При нажатии кнопки «Фильтрация» (блок 24), осуществляется фильтрация расписания по станции прибытия (блок 25), иначе выход из программы (блок 26). Если выхода из программы не произошло, то производится переход на блок 3. Блок-схема данного процесса представлена в приложении А на рисунках А.1 и А.2.
5. Разработка приложения пользователя
Разработка приложений баз данных осуществляется посредством использования среды программирования Delphi7.
Главная форма имеет семь кнопок управления: “Фильтрация”, “Автобусы”, «Водители», «Билеты», «Клиенты», «Статистика» и кнопка «Печать расписания». На рисунке 12 представлена главная форма.
Рисунок 12 - Главная форма
Для того чтобы добавить новый рейс, необходимо добавить запись в поле «Рейсы выбранного маршрута». В этом поле располагается группа компонентов TTable, DataSource, DBGrid1и DBNavigator1.
Для того чтобы добавить расписание, необходимо добавить запись в поле «Расписания автобусов». В этом поле располагается группа компонентов TTable, DataSource, DBGrid1и DBNavigator1.
Для того чтобы добавить новый автобус, необходимо нажать кнопку «Автобусы». В этой форме располагается группа компонентов TTable, DataSource, DBGrid1и DBNavigator1. На рисунке 13 представлена форма «Avtobus».
Рисунок 13 - Форма «Avtobus»
Для того, чтобы просмотреть все имеющиеся билеты необходимо нажать на кнопку «Билеты». В этой форме располагается группа компонентов BitBtn, DBGrid, DataSource, Query, СomboBox. Можно произвести сортировку билетов по № билета. На рисунке 15 представлена форма заказа билета.
Рисунок 14 - Форма заказа билета
Для Bilet в свойствах указывается DatabaseName, которая связывает наборы данных с псевдонимом BDE (имя псевдонима baza) и TableName задается Bilet.db. Далее активизируется компонент, т.е. Active=True.
Для DataSource в свойствах указывается DataSet = Table1 для связи визуальных компонентов с набором записей.
Компонент DBGrid1 отображает содержимое таблицы БД в виде сетки, в которой столбцы соответствуют полям, а строки - записям. По умолчанию пользователь может просматривать и редактировать данные. Компонент DBNavigator1 предоставляет возможность перемещаться по таблице, редактировать, вставлять и удалять записи. Компоненты DBGrid1 и DBNavigator1 связываются со своим источником данных - компонентом DataSourse1 через свои свойства DataSource.
По выбранному рейсу на форме заказа билета возможна печать электронного билета. На рисунке 15 представлен электронный билет.
Рисунок 15 - Электронный билет
Для того чтобы посмотреть информацию о всех водителях необходимо нажать на кнопку «Водители». Здесь располагается группа компонентов DBGrid1и Navigator1. Результат нажатия кнопки «Водители» представлен на рисунке 16.
Рисунок 16 - После нажатия кнопки «Водители»
Для того чтобы посмотреть информацию о всех клиентах необходимо нажать на кнопку «Клиенты». Здесь располагается группа компонентов DBGrid1, Navigator1, Edit и Label. Форма «Клиенты» представлена на рисунке 17.
Рисунок 17 - Форма «Клиенты»
На этой же форме расположен поиск клиентов по ФИО, которому соответствует процедура Table3.Locate.
Для реализации поиска по значениям неиндексированных полей применяется метод Locate. Свойство Caption кнопки BitBtn1 устанавливается равным «Поиск». Далее в обработчике события OnClick кнопки BitBtn1 организуется вызов метода Locate.
Поиск по ФИО представлен на рисунке 18.
Рисунок 18 - Поиск клиента по ФИО.
Для того, чтобы построить график необходимо нажать на кнопку «Статистика». В этой форме располагается группа компонентов BitBtn, DBGrid, DataSource, Query, DateTimePicker, DBChart, SaveDialog. Статистика по продажам билетов представлена на рисунке 20.
Рисунок 19 - Статистика по продажам билетов
Для настройки внешнего вида компоненты DBGrid1 используется встроенный редактор столбцов Columns Editor, который вызывается двойным щелчком по компоненту DBGrid1, команда Add All Fields контекстного меню, для каждого поля меняется значение на кириллицу.
Для реализации фильтрации по станции прибытия на форме располагаются компоненты BitBtn, Edit и Lable. Для Table3 установлено свойство Filtered=true, для Lable3 установлено свойство Caption=Станция прибытия. В Edit необходимо ввести станцию прибытия по которой нужно отфильтровать.
Фильтрация по станции прибытия представлена на рисунке 20.
Рисунок 20 - Фильтрация по станции прибытия
Для Table1 в свойствах указывается DatabaseName, которая связывает наборы данных с псевдонимом BDE (имя псевдонима Lab3) и TableName задается Komnats.db. Далее активизируется компонент, т.е. Active=True.
Для DataSource в свойствах указывается DataSet=Table1 для связи визуальных компонентов с набором записей.
Для связи между таблицами «Расписания» и «Рейсы» по ключевому полю используются свойства MasterSource и MasterFields подчиненного набора данных. При этом в свойстве MasterSource подчиненного компонента Table1, который находится на главной форме в ней указывается источник данных Form1.DataSource1, соответствующей главной таблице, на записи которой ссылается подчиненная таблица( в данной базе всего шесть связей). При обращении в инспекторе объектов к свойству MasterFields подчиненного компонента Table1, который находится на главной форме, вызывается специальный редактор отношений, изображенный на рисунке 21.
Рисунок 21 - Редактор отношений
На этой же форме применяется поиск методом Lookup. Двойным щелчком мыши на компоненте Table1, командой AddallFields/NewFields появляется окно, представленная на рисунке 23, в котором устанавливаются следующие значения:
- поле Name - имя нового поля (avto);
-поле Type - тип создаваемого поля (String);
-поле Field type - значение lookup;
-в выпадающем списке KeyFields выбирается ключевое поле (ID_avto);
- в выпадающем списке Dataset выбирается - связываемый набор данных (Table2);
- в выпадающем списке Lookup Keys выбирается ключевое поле (ID_avto);
- в выпадающем списке Result Field выбирается просматриваемое поле (Gos_nom).
Аналогичным образом создается поиск методом Lookup для других полей.
Рисунок 22 - Окно NewFields
На форме «Статистика по рейсам» расположена таблица, которая осуществляется подсчет количества проданных билетов по рейсам. Подсчет производиться при помощи SQL-запроса.
Окно SQL-запроса представлен на рисунке 23.
Рисунок 23-Окно SQL запроса
При нажатии на «Печать расписания» осуществляется переход отчету (рисунок 24). На данной форме можно просмотреть возможное количество рейсов в выбранное направление. Основным компонентом, на котором строится весь отчет, является QuickRep. Он предоставляет ряд возможностей по управлению создаваемым отчетом, включая формирование заголовка.
Компонент QuickRep имеет ряд свойств, определяющих характеристики печати отчета:
- Printer - задает число копий отчета и диапазон печатаемых страниц;
- Page - задает размер страницы;
- Zoom - масштаб печати в процентах.
Рисунок 24 - Форма «Отчет»
Листинг программы представлен в приложении Б.
Заключение
Данный курсовая работа является актуальным и отвечает предъявленым к нему требованиям. Была разработана и написана, на языке программирования высокого уровня Borland Delphi 7.0, с использованием баз данных
Программа "Автовокзал", предназначена для кассира (оператора) автовокзала.
Программа предназначена для ведения базы данных рейсов, осуществляемых в разные города и в область. В базе можно добавлять и удалять записи, выводить статистику (график) о продаже билетах, выводить готовый электронный билет на печать, в файл или просто просмотреть.
В теоретической части работы было установлено, что в общем случае база данных - это систематизированный набор любых данных. В простейшем случае систематизация строится так, чтобы облегчить поиск требуемых данных.
Список использованной литературы
1) Базы данных: модели, разработка, реализация/Т.С.Карпова. - СПб.:Питер,2002.
2) Базы данных: Учебник для ВУЗов/Под ред.проф.А.Д.Хоменко. - СПб. КОРОНА принт,2004.
Приложение А
Рисунок А.1 - Общая блок-схема алгоритма работы программы
Рисунок А.2 - Общая блок-схема алгоритма работы программы
Приложение Б
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, DB, DBTables,
Buttons;
type
TForm1 = class(TForm)
Table1: TTable;
DataSource1: TDataSource;
Table2: TTable;
DataSource2: TDataSource;
Table3: TTable;
DataSource3: TDataSource;
Table4: TTable;
DataSource4: TDataSource;
Table5: TTable;
DataSource5: TDataSource;
Table6: TTable;
DataSource6: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
Label1: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
Table2ID_avto: TAutoIncField;
Table2Gos_nom: TFloatField;
Table2Marka: TStringField;
Table2Model: TStringField;
Table2Kol_mest: TFloatField;
Table2FIO_voditel: TStringField;
Table2Voditel: TStringField;
DBGrid2: TDBGrid;
DBNavigator2: TDBNavigator;
Table4ID_reisa: TAutoIncField;
Table4ID_avto: TIntegerField;
Table4ID_rasp: TIntegerField;
Table4Avtobus: TStringField;
Table5ID_zakaz: TAutoIncField;
Table5Data: TDateField;
Table5St_otpr: TStringField;
Table5St_prib: TStringField;
Table5Kol_mest: TFloatField;
Table5Summa: TCurrencyField;
Table5Nom_pasp: TFloatField;
Table5ID_reis: TIntegerField;
Table5Client: TStringField;
Table1ID_rasp: TAutoIncField;
Table1St_otpr: TStringField;
Table1St_prib: TStringField;
Table1Vremya: TFloatField;
Table1Price: TCurrencyField;
Edit1: TEdit;
BitBtn5: TBitBtn;
Label2: TLabel;
Label3: TLabel;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
Table3Nom_pasp: TFloatField;
Table3FIO_client: TStringField;
Table3Telefon: TFloatField;
Table3Adres: TStringField;
Table6FIO_voditel: TStringField;
Table6Telefon: TFloatField;
Table6Adres: TStringField;
BitBtn8: TBitBtn;
Table4Timel: TTimeField;
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure Table5AfterInsert(DataSet: TDataSet);
procedure Table5AfterPost(DataSet: TDataSet);
procedure BitBtn5Click(Sender: TObject);
procedure DBGrid2DblClick(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure BitBtn8Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8;
{$R *.dfm}
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Voditel.ShowModal;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Avtobus.Showmodal;
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
Client.ShowModal;
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
Zakaz.ShowModal;
end;
procedure TForm1.Table5AfterInsert(DataSet: TDataSet);
begin
Form1.Table5St_otpr.Value:=Form1.Table1St_otpr.Value;
Form1.Table5St_prib.Value:=Form1.Table1St_prib.Value;
end;
procedure TForm1.Table5AfterPost(DataSet: TDataSet);
begin
Form1.Table5.Edit;
Form1.Table5Summa.Value:=Form1.Table1Price.Value*Form1.Table5Kol_mest.Value;
end;
procedure TForm1.BitBtn5Click(Sender: TObject);
begin
if Form1.Edit1.Text<>'' then
Form1.Table1.Filter:='St_prib='+chr(39)+Form1.Edit1.Text+chr(39)
else Form1.Table1.Filter:='';
end;
procedure TForm1.DBGrid2DblClick(Sender: TObject);
begin
Zakaz.ShowModal;
end;
procedure TForm1.BitBtn6Click(Sender: TObject);
begin
Form6.Showmodal;
end;
procedure TForm1.BitBtn7Click(Sender: TObject);
begin
Form7.QuickRep1.Preview;
end;
procedure TForm1.BitBtn8Click(Sender: TObject);
begin
Form8.Query1.Active:=false;
Form8.Query1.Active:=true ;
Form8.ShowModal;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids;
Type
TVoditel = class(TForm)
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Voditel: TVoditel;
implementation
uses Unit1;
{$R *.dfm}
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids;
type
TAvtobus = class(TForm)
DBGrid1: TDBGrid;
public
{ Public declarations }
end;
var
Avtobus: TAvtobus;
implementation
uses Unit1, Unit2;
{$R *.dfm}
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls;
type
TClient = class(TForm)
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
Edit1: TEdit;
Label1: TLabel;
procedure Edit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Client: TClient;
implementation
uses Unit1,DB;
{$R *.dfm}
procedure TClient.Edit1Change(Sender: TObject);
begin
if Client.Edit1.Text<>'' then
if not Form1.Table3.Locate('FIO_client',Client.Edit1.Text,[loCaseInsensitive, loPartialKey]) then
ShowMessage('Такого клиента не было');
end;
end.
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls, Buttons, DB,
DBTables, QRCtrls, QuickRpt;
type
TZakaz = class(TForm)
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
Query1: TQuery;
DataSource1: TDataSource;
Query1ID_reisa: TIntegerField;
Query1Timel: TTimeField;
Query1Gos_nom: TFloatField;
Query1FIO_voditel: TStringField;
QuickRep1: TQuickRep;
ColumnHeaderBand1: TQRBand;
TitleBand1: TQRBand;
DBNavigator1: TDBNavigator;
private
{ Private declarations }
QRLabel1: TQRLabel;
QRDBText1: TQRDBText;
QRLabel2: TQRLabel;
QRDBText2: TQRDBText;
QRLabel3: TQRLabel;
QRDBText3: TQRDBText;
QRLabel4: TQRLabel;
QRDBText4: TQRDBText;
QRLabel5: TQRLabel;
QRDBText5: TQRDBText;
Query1Vremya: TFloatField;
Query1Price: TCurrencyField;
QRLabel6: TQRLabel;
QRDBText6: TQRDBText;
QRLabel7: TQRLabel;
QRDBText7: TQRDBText;
QRLabel8: TQRLabel;
QRDBText8: TQRDBText;
QRLabel9: TQRLabel;
QRDBText9: TQRDBText;
QRLabel10: TQRLabel;
QRDBText10: TQRDBText;
QRLabel11: TQRLabel;
QRDBText11: TQRDBText;
QRLabel12: TQRLabel;
QRDBText12: TQRDBText;
GroupBox1: TGroupBox;
ComboBox1: TComboBox;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
procedure ComboBox1Change(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Zakaz: TZakaz;
implementation
uses Unit1;
{$R *.dfm}
procedure TZakaz.ComboBox1Change(Sender: TObject);
var i:integer;
begin
i:=Zakaz.ComboBox1.ItemIndex;
case i of
0:Form1.Table5.IndexName:='1';
1:Form1.Table5.IndexName:='2';
2:Form1.Table5.IndexName:='3';
end;
end;
procedure TZakaz.BitBtn2Click(Sender: TObject);
begin
Form1.Table5.MasterFields:='ID_reisa';
end;
procedure TZakaz.BitBtn1Click(Sender: TObject);
begin
Form1.Table5.MasterFields:='';
end;
procedure TZakaz.BitBtn3Click(Sender: TObject);
begin
Zakaz.QuickRep1.Preview;
end;
end.
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, CheckLst, ComCtrls, Buttons, DB, DBGrids,
DBTables, TeEngine, Series, ExtCtrls, TeeProcs, Chart, DbChart;
type
TForm6 = class(TForm)
Query1: TQuery;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
DBChart1: TDBChart;
Series2: TBarSeries;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
BitBtn1: TBitBtn;
Query1St_otpr: TStringField;
Query1St_prib: TStringField;
Query1SUMOFKol_mest: TFloatField;
BitBtn2: TBitBtn;
SaveDialog1: TSaveDialog;
procedure FormActivate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm6.FormActivate(Sender: TObject);
begin
Form6.Query1.Active:=false;
Form6.Query1.Active:=true;
end;
procedure TForm6.BitBtn1Click(Sender: TObject);
var i,j:integer;
begin
Form6.Query1.Active:=false;
Form6.Query1.ParamByName('param1').Value:=Form6.DateTimePicker1.Date;
Form6.Query1.ParamByName('param2').Value:=Form6.DateTimePicker2.Date;
Form6.Query1.Active:=true;
Form6.Query1.First;
For i:=1 to Form6.Query1.RecordCount do
begin
Form6.Series2.Add(Form6.Query1SUMOFKol_mest.Value,Form6.Query1St_otpr.Value+'-'+Form6.Query1St_prib.Value);
Form6.Query1.Next;
end;
Form6.Query1.First;
end;
procedure TForm6.BitBtn2Click(Sender: TObject);
begin
if Form6.SaveDialog1.Execute then
Form6.DBChart1.SaveToBitmapFile(Form6.SaveDialog1.FileName+'.bmp');
end;
end.
unit Unit7;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, QRCtrls, QuickRpt, ExtCtrls;
type
TForm7 = class(TForm)
QuickRep1: TQuickRep;
ColumnHeaderBand1: TQRBand;
DetailBand1: TQRBand;
TitleBand1: TQRBand;
QRLabel1: TQRLabel;
QRLabel2: TQRLabel;
QRLabel3: TQRLabel;
QRLabel4: TQRLabel;
QRLabel5: TQRLabel;
QRLabel6: TQRLabel;
QRDBText2: TQRDBText;
QRDBText1: TQRDBText;
QRDBText3: TQRDBText;
QRDBText4: TQRDBText;
QRDBText5: TQRDBText;
QRLabel7: TQRLabel;
QRLabel8: TQRLabel;
QRLabel9: TQRLabel;
QRDBText6: TQRDBText;
QRDBText7: TQRDBText;
QRDBText8: TQRDBText;
QRLabel10: TQRLabel;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form7: TForm7;
implementation
uses Unit1;
{$R *.dfm}
end.
unit Unit8;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ExtCtrls, DBCtrls, Grids, DBGrids, TeEngine, Series,
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ExtCtrls, DBCtrls, Grids, DBGrids, TeEngine, Series
TeeProcs, Chart, DbChart, DBTables;
type
TForm8 = class(TForm)
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
DataSource1: TDataSource;
Query1: TQuery;
DBChart1: TDBChart;
Series1: TBarSeries;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form8: TForm8;
implementation
uses Unit1;
{$R *.dfm}
end.
Размещено на Allbest.ur
Подобные документы
Системный анализ предметной области. Разработка концептуальной модели базы данных. Построение схемы функциональных зависимостей. Создание таблиц базы данных в Database Desktop и псевдонима в BDE Administrator. Разработка алгоритма работы программы.
курсовая работа [911,3 K], добавлен 20.12.2014Создание баз данных с использованием Database Desktop. Проведение автоматизации рабочего места кассира. Описание входной и выходной информации. Выбор среды реализации, состава и параметров технических средств. Проектирование интерфейса программы.
курсовая работа [1021,5 K], добавлен 22.01.2015Словесное описание предметной области. Построение схемы функциональных зависимостей. Реализация базы данных средствами утилиты Enterprise Manager в формате SQL Server Management Studio. Разработка алгоритмов работы программы и приложения пользователя.
дипломная работа [1,8 M], добавлен 26.03.2015Понятие баз данных и принципы проектирования информационных систем. Разработка программы для отслеживания финансовой стороны работы компании в среде Delphi 7. Создание таблиц и схемы данных. Разработка клиентского приложения и процедуры добавления данных.
курсовая работа [1,4 M], добавлен 25.04.2012Основные инструменты построения Web-приложения. Язык сценариев PHP. Системный анализ предметной области базы данных. Коды SQL запросов на создание таблиц. Разработка Web-приложения. Описание функциональности модулей. Система управления содержимым статей.
курсовая работа [4,8 M], добавлен 28.04.2014Рассмотрение теоретических основ проектирования. Анализ предметной области и разработка таблиц базы данных. Заполнение таблиц, поиск данных с помощью фильтра. Создание форм, разработка запросов. Создание и настройка отчетов, составление приложения.
курсовая работа [2,8 M], добавлен 01.06.2014Проектирование базы данных в среде СУБД MS Access. Автоматизация учета информации о товаре в магазине. Определение требований и функций системы. Анализ предметной области. Разработка, создание таблиц, запросов, форм и отчетов. Инструкция для пользователя.
отчет по практике [523,6 K], добавлен 21.04.2014Описание предметной области, техническое задание на разработку программного продукта. Проектирование структуры базы данных: ER-диаграмм, диаграммы функциональных зависимостей, набор основных таблиц и описание полей. Разработка руководства пользователя.
курсовая работа [2,9 M], добавлен 25.11.2013Разработка базы данных с целью автоматизации процессов составления, ведения и распространения информации об расписании занятий в спортивном комплексе "Маяк". Анализ предметной области. Разработка алгоритмов работы программы и приложения пользователя.
дипломная работа [1,0 M], добавлен 12.07.2015Разработка приложения, позволяющего автоматизировать документооборот предприятия по списанию основных средств. Мероприятия по защите и обеспечению целостности базы данных. Разработка клиентского приложения. Запросы к базе данных, руководство пользователя.
курсовая работа [700,0 K], добавлен 14.01.2015