Курсовая работа «Туристическое агенство» (MSAccess+Delphi) (Часть 2)

Здравствуйте уважаемые коллеги!

Продолжаем писать программу по заданию «Турестическое агенство»

В своем примере я буду использовать Delphi XE3, но указанный подход может быть использован в любой версии начиная от Delphi6 и далее. (возможно это будет актуально и для более ранних версий, но я с ними, увы, не работал и не могу точно сказать…)

Запускаем Delphi и начинаем новый VCL проект:

Новый VCL проект

Созданную по умолчанию форму определим главной и в заголовке (свойство Caption) напишем «База данных «Туристическое агенство».
Имя формы (name) = fmMain.
Ширина (width) = 800.
Высота (Height) = 600.
Позиция на экране (Position) = poScreenCenter — это что бы после запуска программы первая форма появлялась в центре экрана, а не так, как ей захочется.
Сохраним наш проект. Имя файла главной формы — Main.pas. Имя проекта Travel.dpr.

На главную форму добавим следующие компоненты:
TADOConnection — для соединение с БД Access. назовем ADOConnection. Свойство LoginPromt установить в False. Данное свойство отвечает за показ окна авторизации при соединении с БД. А так как никаких пользователей в нашей БД не предусмотрено, то и свойство нам это не нужно.
TADOQuery — для отображения сводного запроса «view_trips» имя qTrips и в свойстве Connection выберем соединение ADOConnection.
TDataSource — для соединения запроса qTrips и таблицы gTrips. Имя dsTrips.
TDBGrid — для вывода на экран данных из qTrips. Назовем gTrips и свойство Align зададим alClient, что бы таблица растянулась на всю форму. Свойство ReadOnly установим True, что бы нельзя было редактировать записи напрямую и в свойстве DataSource укажем ссылку на dsTrips.
TImageList — для хранения картинок. Имя ImageList
TActionList — для созданий набора функций. Имя ActionList. В свойстве Images выберем ImageList.
TMainMenu — для отображения главного меню. Имя MainMenu. В свойстве Images выберем ImageList.
TToolBar — для отображения кнопок управления. Имя ToolBar. В свойстве Images выберем ImageList.

Настроим соединение с базой данных.
В свойстве ConnectionString компонента TADOConnection нажимаем кнопку с тремя точками для настройки подключения.

Строка соединения

В появившемся окне выбираем «Use connection string» и нажимаем кнопку Build…

Поставщик данных

В качестве поставщика данных выбираем Microsoft Jet 4.0 OLE DB Provider и жмем кнопку Далее >>

Путь к БД

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

Проверка выполнена

Теперь загрузим картинки для кнопок в ImageList.
— Добавить
— Редактировать
— Удалить
— Обновить

Создадим функции в ActionList:
aExit — Выход из программы. Caption = Выход.
aClients — Переход к справочнику клиентов. Caption = Клиенты.
aRoutes — Переход к справочнику маршрутов. Caption = Маршруты.
aAddTrip — Добавить поездку. Caption = Добавить поездку. В ImageIndex выбираем иконку добавления.
aEditTrip — Редактировать поездку. Caption = Редактировать поездку. В ImageIndex выбираем иконку редактирования.
aDeleteTrip — Удалить поездку. Caption = Удалить поездку. В ImageIndex выбираем иконку удаления.
aRefresh — Обновить данные. Caption = Обновить. В ImageIndex выбираем иконку обновления.

Список функций

Добавим кнопки главного меню (MainMenu).
Функции разделим на 3 раздела: Программа, Правка и Справочники.
В раздел «Программа» поместим кнопку выход.
В раздел «Правка» Добавить, Редактировать и удалить поездку.
И оставшиеся справочники клиентов и маршрутов в раздел «Справочники».
Для добавленных кнопок в свойстве Action нужно указать соответствующие функции.

main_menu1 main_menu2 main_menu3

Добавим кнопки на ToolBar.
Нажимаем на ToolBar‘e правой кнопкой мыши и выбираем New button.
Сделаем кнопки «Добавить», «Редактировать», «Удалить» и «Обновить». Для каждой выберем соответствующую функцию из ActionList.
Добавляем разделитель — правой кнопкой мыши на ToolBar‘e и выбираем New separator.
После разделителя добавим компоненты для задания условий выбора данных:
TLabelCaption = Период С:
TDateTimePicker — Имя = dtpBegin.
TLabelCaption = По:
TDateTimePicker — Имя = dtpEnd.
TLabelCaption = Клиент:
TComboBox — Имя = cbClients. Свойство Style = csDropDownList.
TLabelCaption = Маршрут:
TComboBox — Имя = cbRoutes. Свойство Style = csDropDownList.
После чего форма должна приобрести вот такой вид:

Главная форма

Теперь добавим 3 компонента TADOTable и 3 компонента TDataSource:

Первая таблица: имя = tClients — для работы с таблицей клиентов. В свойстве Connection выбираем ADOConnection. В поле TableName выбираем таблицу Clients.
Теперь кликаем 2 раза по tClients и в появившемся окне нажимаем правой кнопкой мыши — > Add all fields. Должен появиться список полей из таблицы БД:

fields

Нажимаем на каждое поле и настраиваем свойства:
client_idDisplayLabel = Код клиента — Заголовок столбца при отображении в таблице.
last_nameDisplayLabel = Фамилия, DisplayWidth = 20 — ширина заголовка столбца в таблице.
first_nameDisplayLabel = Имя, DisplayWidth = 20.
second_nameDisplayLabel = Отчество, DisplayWidth = 20.
pasport_infoDisplayLabel = Паспортные данные, Visible установим False.
Добавляем TDataSource — имя = dsClients, DataSet выбираем tClients, AutoEdit устанавливаем в False что бы режим редактирования включался только по нажатию кнопки.

Вторая таблица: имя = tRoutes — для работы с таблицей маршрутов. В свойстве Connection выбираем ADOConnection. В поле TableName выбираем таблицу Routes.
Аналогично предыдущей таблицы кликаем 2 раза и добавляем все поля из таблицы.
Настраиваем свойства полей:
route_idDisplayLabel = Код маршрута.
countryDisplayLabel = Страна, DisplayWidth = 20.
transit_costDisplayLabel = Стоимость перезда, Visible устанавливаем False.
day_stay_costDisplayLabel = Стоимость 1го дня пребывания, Visible устанавливаем False.
TDataSource — имя = dsRoutes, DataSet выбираем tRoutes, AutoEdit устанавливаем в False.

Третья таблица: имя = tTrip — для работы с таблицей поездок. В свойстве Connection выбираем ADOConnection. В поле TableName выбираем таблицу Trips.
Аналогично предыдущим таблицам кликаем 2 раза и добавляем все поля из таблицы.
Настраиваем свойства полей:
trip_idDisplayLabel = Код поездки.
client_idDisplayLabel = Код клиента, Visible устанавливаем False.
route_idDisplayLabel = Код маршрута, Visible устанавливаем False.
start_dateDisplayLabel = Дата отъезда.
stay_countDisplayLabel = Кол-во дней пребывания.
TDataSource — имя = dsTrip, DataSet выбираем tTrip.

После того, как мы закончили с внешним видом и данными основной формы, добавим еще 3:
fmClients — для работы со справочником клиентов.
fmRoutes — для работы со справочником маршрутов.
fmTrip — для добавления/редактирования поездок.

Нажимаем FileVCL Form — Delphi

Новая форма

Сохраним файл как Clients.pas. В заголовок напишем «Справочник Клиентов», свойство BorderStyle зададим bsDialog что бы пользователь не мог изменять её размеры и в свойстве Position выставим poScreenCenter, что бы при вызове форма появлялась по центру экрана.
Перейдем в код формы и добавим строку uses Main; после implementation.

type
  TfmClients = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fmClients: TfmClients;

implementation

uses Main;

{$R *.dfm}

end.

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

Добавим и настроим компоненты для формы fmClients:
TDBNavigator — имя = DBNavigator, DataSource выбираем fmMain.dsClients. В свойстве VisibleButtons убираем все галочки кроме: nbInsert, nbDelete, nbEdit, nbPost.
TDBGrid — имя = gClients, DataSource выбираем fmMain.dsClients, ReadOnly устанавливаем в True.

Переходим на главную форму fmMain, кликаем на tClients 2 раза чтобы вызвать список полей, возвращаемся обратно на форму fmClients, выделяем колонки last_name, first_name, second_name, pasport_info в окне списка колонок и перетаскиваем на форму fmClients. Среда разработки создаст нам 4 компонента редактирования с заголовками и проставит все необходимые связи.
Удаляем последний, который относится к паспортным данным и вместо него добавляем TDBMemo. В свойстве DataSource выбираем fmMain.dsClients, в свойстве DataField выбираем pasport_info и свойство ScrollBars задаем ssVertical — что бы включить вертикальную полосу прокрутки.
Теперь форма справочника клиентов должна выглядеть примерно вот так:

Справочник клиентов

Переходим к созданию формы fmRoutes.
Нажимаем FileVCL Form — Delphi. Сохраняем как Routes.pas. В заголовок напишем «Справочник Маршрутов». И аналогично fnClients настроим форму: свойство BorderStyle зададим bsDialog, в свойстве Position выставим poScreenCenter, в коде формы добавим строку uses Main; после implementation.

Добавляем и настраиваем компоненты:
TDBNavigator — имя = DBNavigator, DataSource выбираем fmMain.dsRoutes. В свойстве VisibleButtons убираем все галочки кроме: nbInsert, nbDelete, nbEdit, nbPost.
TDBGrid — имя = gRoutes, DataSource выбираем fmMain.dsRoutes, ReadOnly устанавливаем в True.

Так же как и на fmClients перетаскиваем на форму country, transit_cost, day_stay_cost из списка полей таблицы tRoutes для получения полей редактирования.

В итоге получается форма следующего содержания:

Справочник маршрутов

Создаем третью форму fmTrip.
Сохраняем под имененм Trip.pas. В заголовок напишем «Поездка». И аналогично предыдущим формам настроим: свойство BorderStyle зададим bsDialog, в свойстве Position выставим poScreenCenter, в коде формы добавим строку uses Main; после implementation.

TDBNavigator и TDBGrid на этой форме добавлять не будем. Эта форма будет только для редактирования данных таблицы tTrip.

Поля редактирования для данной формы настроем вручную:

TLabelCaption = Клиент.
TDBLookupComboBox — Выпадающий список, который будет брать данные из таблицы Clients и записывать выбранное значение в таблицу Trips. В свойстве DataSource выбираем fmMain.dsTrip, DataField выбираем client_id. Для свойства ListSource, в котором мы задаем таблицу, из которой будем брать значения, выберем fmMain.dsClients, свойство ListField — поле, которое будет отображаться в списке, выберем last_name, и в свойстве KeyField, которое будет содержать выбранное значение, указываем client_id.
TLabelCaption = Маршрут.
Аналогично справочнику клиента добавим TDBLookupComboBox. В свойстве DataSource выбираем fmMain.dsTrip, DataField выбираем route_id. Свойство ListSource выберем fmMain.dsRoutes, свойство ListField выбираем country, и в свойстве KeyField указываем route_id.

В нижней части добавим 2 кнопки TButton с именами bOk и bCancel и заголовками «ОК» и «Отмена».

Форма редактирования поездки:

Поездка

На этом закончим с созданием графического интерфейса и перейдем к третьей и последней части статьи: написание кода.

Курсовая работа «Туристическое агенство» (MSAccess+Delphi) (Часть 3)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *