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

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

Министерство
образования и науки Республики Казахстан


Карагандинский
государственный технический университет


Кафедра


ПОЯСНИТЕЛЬНАЯ
ЗАПИСКА


К КУРСОВОМУ
ПРОЕКТУ


Дисциплина:
Технология разработки баз данных


Тема: Разработка
базы данных и прикладного ПО для автобусного парка


Принял:


___________________________


Выполнил: студент гр. ________


___________________________


Караганда 2009

















 

Содержание


Введение


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


2.        
Теоретическая часть


3.        
Программное обеспечение


4.        
Концептуальная модель данных


5.        
Логическая модель базы данных


6.        
Руководство пользователю


7.        
SQL Запросы


Заключение


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


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


Введение


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


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


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


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


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


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


2 Теоретическая часть


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


БД бывают нескольких типов:


Картотеки


Сетевые


Иерархические


Реляционные


Объектно-ориентированные


Многомерные


Дедуктивные


На уровне физической модели электронная БД представляет
собой файл или их набор в формате TXT, CSV, Excel, DBF, XML либо в
специализированном формате конкретной СУБД. Также в СУБД в понятие физической
модели включают специализированные виртуальные понятия, существующие в ёё
рамках — таблица, табличное пространство, сегмент, куб, кластер и т.д.


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


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


Основные функции СУБД:


управление данными во внешней памяти (на дисках);


управление данными в оперативной памяти;


журнализация изменений и восстановление базы данных после
сбоев;


поддержка языков БД (язык определения данных, язык
манипулирования данными).


Обычно современная СУБД содержит следующие компоненты:


ядро, которое отвечает за управление данными во внешней и
оперативной памяти и журнализацию,


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


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


3 Программное обеспечение


Для разработки курсового проекта выбрана среда
объектно-ориентированного программирования Borland Delphi 7 под управление
операционной системы Windows.


Для обеспечения возможности удаленной работы сервера БД,
предлагается использовать СУБД MS SQL Server. Работа с данной СУБД довольно
удобна, о писана в большом количестве литературы. Провайдеры для работы с этой
СУБД поставляются вместе с операционной системой Windows.


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


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


4 Концептуальная модель данных



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


Таблица маршрутов routes содержит список маршрутов, обслуживаемых
автобусным парком


>















Имя поля Тип поля Описание
id INT UNSIGNED AUTO_INCREMENT KEY Уникальный идентификатор маршрута
name NVARCHAR(50) NOT NULL Название маршрута

Таблица остановок stations содержит информацию об
остановках маршрута


>




















Имя поля Тип поля Описание
id INT UNSIGNED AUTO_INCREMENT KEY Уникальный идентификатор остановки
name NVARCHAR(100) NOT NULL Название остановки
routeid INT UNSIGNED NOT NULL Идентификатор маршрута

Таблица stoppoints содержит информацию об остановочных
пунктах


>






























Имя поля Тип поля Описание
id INT UNSIGNED AUTO_INCREMENT KEY Уникальный идентификатор остановочного пункта
name NVARCHAR(100) NOT NULL Название остановочного пункта
direction NVARCHAR(7) NOT NULL Прямому или обратному маршруту принадлежит остановочный
пункт (forward/return)
stationid INT UNSIGNED NOT NULL Идентификатор остановки
routeid INT UNSIGNED NOT NULL Идентификатор маршрута

Информация об автобусах парка хранится в таблице buses


>

























Имя поля Тип поля Описание
id INT UNSIGNED AUTO_INCREMENT KEY Уникальный идентификатор автобуса
model NVARCHAR(50) NOT NULL Модель автобуса
issue NVARCHAR(7) NOT NULL Государственный регистрационный номер автобуса
routeid INT UNSIGNED NOT NULL Идентификатор маршрута

6 Руководство пользователю


Запустив программу, пользователь попадает в основное её
окно.


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


Выбрать в основном меню пункт DB -> Connection Options
(Рисунок 2). Откроется окно настроек соединения с сервером базу данных (Рисунок
3).












Рисунок 2 — Пункт меню настроек соединения с сервером БД












Рисунок 3 — Окно настроек соединения с сервером базы данных


Здесь нужно задать название сервера базы данных, название
самой базы данных, а также пару логин/пароль для подключения к серверу базы
данных. Задав правильные параметры и нажав на кнопку «OK» пользователь снова
попадает в основное окно программы. Теперь необходимо соединиться с сервером базы
данных. Для этого нужно выбрать пункт меню DB -> Connect. Если настройки
были заданы верно и не возникло никаких проблем в сети, будет установлено
соединение с сервером, о чём будет свидетельствовать надпись «Connected» в
статусной строке и данные, отображённые на вкладках программы (Рисунок 4).




Рисунок 4 — Главное окно программы после подключения к
серверу БД


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


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












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


Рисунок 5 — Окно добавления/редактирования остановочного
пункта


Чтобы подтвердить изменение/добавление данных нужно
нажать на кнопку «OK». Чтобы отменить их — на кнопку «Cancel».


Выбрав пункт основного меню Info -> Help можно увидеть
это руководство.


Чтобы завершить работу с программой. просто закройте её
основное окно.


8 SQL Запросы


Выборка государственных номеров автобусов марок Lifan и
Mudan, обслуживающих определённый маршрут


SELECT issue


FROM buses


WHERE routeid = 12 AND model IN
('Lifan', 'Mudan')


Выборка автобусов, проезжающих через определённый
остановочный пункт


SELECT model, issue


FROM buses


WHERE routeid =


ANY (SELECT routeid


FROM stoppoints


WHERE stationid = 2)


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


SELECT name


FROM stoppoints


WHERE direction = 'return' AND routeid =
1


Выборка 5 остановочных пунктов, через которые проходит
наибольшее количество маршрутов


SELECT name, Count(routeid) AS
RouteCount


FROM stoppoints


GROUP BY name


ORDER BY RouteCount


limit 5


Заключение


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


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


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


1.        
Структуризированный язык запросов (SQL). Учебное пособие


2.        
А.М. Терлецкая БД. Лекции.


3.        
П. Дарахвелидзе, Е. Марков. Программирование в Delphi 7. СПб.:
«БХВ-Петербург». 2003. 784 с: ил.


4.        
М. Фленов. Библия программистов в среде Delphi. 2002. 636 с.


5.        
С. Лукьяненко. Спектр. М.: ООО «Издательство АСТ», ОАО «Люкс». 2004. 490
с.


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


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


var


DBHost, DBLogin, DBPassword, DBDatabase:
string;


implementation


uses uConnectOptions, uRoutes,
uStations, uStopPoints, uBuses;


{$R *.dfm}


procedure TfmMain.mmDBOptionsClick(Sender:
TObject);


begin


Application.CreateForm(TfmConnectOptions,
fmConnectOptions);


fmConnectOptions.ShowModal;


end;


procedure
TfmMain.mmDBConnectClick(Sender: TObject);


begin


try


fmMain.ADOConnection.Open;


StatusBar.Panels[0].Text := 'Connected';


mmDBConnect.Enabled := false;


mmDBDisconnect.Enabled := true;


ADOTableRoutes.Active := true;


ADOQueryStations.Active := true;


ADOQueryStopPoints.Active := true;


ADOQueryBuses.Active := true;


btnRoutesAdd.Enabled := true;


btnStationsAdd.Enabled := true;


btnStopPointsAdd.Enabled := true;


btnBusesAdd.Enabled := true;


ppmnRoutesAdd.Enabled := true;


ppmnStationsAdd.Enabled := true;


ppmnStopPointsAdd.Enabled := true;


ppmnBusesAdd.Enabled := true;


except


/>

ShowMessage('Connection error!');


StatusBar.Panels[0].Text :=
'Disconnected';


end;


end;


procedure TfmMain.FormCreate(Sender:
TObject);


begin


fmMain.DBHost := 'ERETIKSQLEXPRESS';


fmMain.DBLogin := 'sa';


fmMain.DBPassword := '1';


fmMain.DBDatabase := 'Buzzz';


end;


procedure
TfmMain.mmDBDisconnectClick(Sender: TObject);


begin


ADOConnection.Close;


mmDBDisconnect.Enabled := false;


mmDBConnect.Enabled := true;


StatusBar.Panels[0].Text :=
'Disconnected';


ADOTableRoutes.Active := false;


ADOQueryStations.Active := false;


ADOQueryStopPoints.Active := false;


ADOQueryBuses.Active := false;


btnRoutesAdd.Enabled := false;


btnStationsAdd.Enabled := false;


btnStopPointsAdd.Enabled := false;


btnBusesAdd.Enabled := false;


btnRoutesEdit.Enabled := false;


btnStationsEdit.Enabled := false;


btnStopPointsEdit.Enabled := false;


btnBusesEdit.Enabled := false;


btnRoutesDelete.Enabled := false;


btnStationsDelete.Enabled := false;


btnStopPointsDelete.Enabled := false;


ppmnRoutesAdd.Enabled := false;


ppmnStationsAdd.Enabled := false;


ppmnStopPointsAdd.Enabled := false;


ppmnBusesAdd.Enabled := false;


ppmnRoutesEdit.Enabled := false;


ppmnStationsEdit.Enabled := false;


ppmnStopPointsEdit.Enabled := false;


ppmnBusesEdit.Enabled := false;


ppmnRoutesDelete.Enabled := false;


ppmnStationsDelete.Enabled := false;


ppmnStopPointsDelete.Enabled := false;


end;


procedure
TfmMain.btnRoutesAddClick(Sender: TObject);


begin


Application.CreateForm(TfmRoutes,
fmRoutes);


fmRoutes.EditFlag := false;


fmRoutes.ShowModal;


end;


procedure
TfmMain.dtsrcRoutesDataChange(Sender: TObject; Field: TField);


begin


btnRoutesEdit.Enabled :=
ADOTableRoutes.RecordCount <> 0;


btnRoutesDelete.Enabled :=
ADOTableRoutes.RecordCount <> 0;


ppmnRoutesEdit.Enabled :=
ADOTableRoutes.RecordCount <> 0;


ppmnRoutesDelete.Enabled :=
ADOTableRoutes.RecordCount <> 0;


end;


procedure
TfmMain.dtsrcStationsDataChange(Sender: TObject; Field: TField);


begin


btnStationsEdit.Enabled :=
ADOQueryStations.RecordCount <> 0;


btnStationsDelete.Enabled :=
ADOQueryStations.RecordCount <> 0;


ppmnStationsEdit.Enabled :=
ADOQueryStations.RecordCount <> 0;


ppmnStationsDelete.Enabled :=
ADOQueryStations.RecordCount <> 0;


end;


procedure
TfmMain.dtsrcStopPointsDataChange(Sender: TObject; Field: TField);


begin


btnStopPointsEdit.Enabled :=
ADOQueryStopPoints.RecordCount <> 0;


btnStopPointsDelete.Enabled :=
ADOQueryStopPoints.RecordCount <> 0;


ppmnStopPointsEdit.Enabled :=
ADOQueryStopPoints.RecordCount <> 0;


ppmnStopPointsDelete.Enabled :=
ADOQueryStopPoints.RecordCount <> 0;


end;


procedure
TfmMain.dtsrcBusesDataChange(Sender: TObject; Field: TField);


begin


btnBusesEdit.Enabled :=
ADOQueryBuses.RecordCount <> 0;


btnBusesDelete.Enabled :=
ADOQueryBuses.RecordCount <> 0;


ppmnBusesEdit.Enabled :=
ADOQueryBuses.RecordCount <> 0;


ppmnBusesDelete.Enabled :=
ADOQueryBuses.RecordCount <> 0;


end;


procedure
TfmMain.btnRoutesDeleteClick(Sender: TObject);


begin


ADOCommand.CommandText := 'DELETE FROM
routes WHERE id='+DBGridRoutes.DataSource.DataSet.Fields[0].AsString;;


ADOCommand.Execute;


ADOCommand.CommandText := 'DELETE FROM
stations WHERE routeid='+DBGridRoutes.DataSource.DataSet.Fields[0].AsString;;


ADOCommand.Execute;


ADOCommand.CommandText := 'DELETE FROM
stoppoints WHERE routeid='+DBGridRoutes.DataSource.DataSet.Fields[0].AsString;;


ADOCommand.Execute;


ADOTableRoutes.Requery();


ADOQueryStations.Requery;


ADOQueryStopPoints.Requery;


end;


procedure
TfmMain.btnStationsDeleteClick(Sender: TObject);


begin


ADOCommand.CommandText := 'DELETE FROM
stations WHERE id='+DBGridStations.DataSource.DataSet.Fields[0].AsString;;


ADOCommand.Execute;


ADOCommand.CommandText := 'DELETE FROM
stoppoints WHERE
stationid='+DBGridStations.DataSource.DataSet.Fields[0].AsString;;


ADOCommand.Execute;


ADOQueryStations.Requery;


ADOQueryStopPoints.Requery;


end;


procedure
TfmMain.btnStopPointsDeleteClick(Sender: TObject);


begin


ADOCommand.CommandText := 'DELETE FROM
stoppoints WHERE id='+DBGridStopPoints.DataSource.DataSet.Fields[0].AsString;;


ADOCommand.Execute;


ADOQueryStopPoints.Requery;


end;


procedure TfmMain.btnBusesDeleteClick(Sender:
TObject);


begin


ADOCommand.CommandText := 'DELETE FROM
buses WHERE id='+DBGridBuses.DataSource.DataSet.Fields[0].AsString;;


ADOCommand.Execute;


ADOQueryBuses.Requery;


end;


procedure
TfmMain.btnRoutesEditClick(Sender: TObject);


begin


Application.CreateForm(TfmRoutes,
fmRoutes);


fmRoutes.EditFlag := true;


fmRoutes.ShowModal;


end;


procedure
TfmMain.btnStationsAddClick(Sender: TObject);


begin


Application.CreateForm(TfmStations,
fmStations);


fmStations.EditFlag := false;


fmStations.ShowModal;


end;


procedure
TfmMain.btnStationsEditClick(Sender: TObject);


begin


Application.CreateForm(TfmStations,
fmStations);


fmStations.EditFlag := true;


fmStations.ShowModal;


end;


procedure
TfmMain.btnStopPointsEditClick(Sender: TObject);


begin


Application.CreateForm(TfmStopPoints,
fmStopPoints);


fmStopPoints.EditFlag := true;


fmStopPoints.ShowModal;


end;


procedure
TfmMain.btnStopPointsAddClick(Sender: TObject);


begin


Application.CreateForm(TfmStopPoints,
fmStopPoints);


fmStopPoints.EditFlag := false;


fmStopPoints.ShowModal;


end;


procedure
TfmMain.btnBusesAddClick(Sender: TObject);


begin


Application.CreateForm(TfmBuses,
fmBuses);


fmBuses.EditFlag := false;


fmBuses.ShowModal;


end;


procedure
TfmMain.btnBusesEditClick(Sender: TObject);


begin


Application.CreateForm(TfmBuses,
fmBuses);


fmBuses.EditFlag := true;


fmBuses.ShowModal;


end;


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


begin


ADOConnection.Connected := false;


end;


end.


настройки подключения


procedure TfmConnectOptions.btnOKClick(Sender:
TObject);


begin


fmMain.ADOConnection.ConnectionString :=


'Provider=SQLOLEDB.1;Password=' +
medPassword.Text +


';Persist Security Info=False;User ID='
+ edLogin.Text +


';Initial Catalog=' + edDatabase.Text +
';Data Source=' + edHost.Text;


fmMain.DBHost := edHost.Text;


fmMain.DBLogin := edLogin.Text;


fmMain.DBPassword := medPassword.Text;


fmMain.DBDatabase := edDatabase.Text;


Close;


end;


procedure
TfmConnectOptions.btnCancelClick(Sender: TObject);


begin


Close;


end;


procedure
TfmConnectOptions.FormCreate(Sender: TObject);


begin


edHost.Text := fmMain.DBHost;


edLogin.Text := fmMain.DBLogin;


medPassword.Text := fmMain.DBPassword;


edDatabase.Text := fmMain.DBDatabase;


end;


добавление/редактирование автобусов


private


{ Private declarations }


public


{ Public declarations }


EditFlag: boolean;


end;


var


fmBuses: TfmBuses;


implementation


uses uMain;


{$R *.dfm}


procedure TfmBuses.FormShow(Sender:
TObject);


begin


if EditFlag then


begin


Caption := 'Edit bus';


ledModel.Text :=
fmMain.DBGridBuses.DataSource.DataSet.Fields[1].AsString;


ledIssue.Text :=
fmMain.DBGridBuses.DataSource.DataSet.Fields[2].AsString;


lcmbbxRoute.KeyValue :=
fmMain.DBGridBuses.DataSource.DataSet.Fields[3].AsInteger;


end


else


begin


Caption := 'Add bus';


ledModel.Clear;


ledIssue.Clear;


lcmbbxRoute.KeyValue := 1;


end;


end;


procedure
TfmBuses.btnCancelClick(Sender: TObject);


begin


Close;


end;


procedure TfmBuses.btnOKClick(Sender:
TObject);


begin


if (ledModel.Text <> '') and
(lcmbbxRoute.Text <> '') and (ledIssue.Text <> '') then


begin


if EditFlag then


begin


fmMain.ADOCommand.CommandText := 'UPDATE
buses SET model=''' + ledModel.Text


+''', issue=''' + ledIssue.Text + ''',
routeid=' +


IntToStr(lcmbbxRoute.KeyValue) + ' WHERE
id=' +


fmMain.DBGridBuses.DataSource.DataSet.Fields[0].AsString;


fmMain.ADOQueryBuses.Requery;


end


else


begin


fmMain.ADOCommand.CommandText :=


'INSERT INTO buses (model, issue,
routeid) VALUES (''' +


ledModel.Text + ''', ''' + ledIssue.Text
+ ''', ' +


IntToStr(lcmbbxRoute.KeyValue) + ')';


end;


fmMain.ADOCommand.Execute;


fmMain.ADOQueryBuses.Requery;


close;


end


else


ShowMessage('Incorrect parameters!');


end;


end.


добавление/редактирование маршрутов


private


{ Private declarations }


public


{ Public declarations }


EditFlag: boolean;


end;


var


fmRoutes: TfmRoutes;


implementation


uses uMain;


{$R *.dfm}


procedure
TfmRoutes.btnCancelClick(Sender: TObject);


begin


Close;


end;


procedure TfmRoutes.btnOKClick(Sender:
TObject);


begin


if ledName.Text <> '' then


begin


if EditFlag then


begin


fmMain.ADOCommand.CommandText := 'UPDATE
routes SET name=''' + ledName.Text


+ ''' WHERE id=' +
fmMain.DBGridRoutes.DataSource.DataSet.Fields[0].AsString;


fmMain.ADOQueryStations.Requery;


fmMain.ADOQueryStopPoints.Requery;


fmMain.ADOQueryBuses.Requery;


end


else


begin


fmMain.ADOCommand.CommandText := 'INSERT
INTO routes (name) VALUES (''' + ledName.Text + ''')';


end;


fmMain.ADOCommand.Execute;


fmMain.ADOTableRoutes.Requery;


close;


end


else


ShowMessage('Incorrect parameters!');


end;


procedure TfmRoutes.FormShow(Sender:
TObject);


begin


if EditFlag then


begin


Caption := 'Edit route';


ledName.Text :=
fmMain.DBGridRoutes.DataSource.DataSet.Fields[1].AsString;


end


else


begin


Caption := 'Add route';


ledName.Clear;


end;


end;


end.


добавление/редактирование остановок


private


{ Private declarations }


public


{ Public declarations }


EditFlag: boolean;


end;


var


fmStations: TfmStations;


implementation


uses uMain, DB;


{$R *.dfm}


procedure TfmStations.FormShow(Sender:
TObject);


begin


if EditFlag then


begin


Caption := 'Edit station';


ledName.Text :=
fmMain.DBGridStations.DataSource.DataSet.Fields[1].AsString;


lcmbbxRoute.KeyValue :=
fmMain.DBGridStations.DataSource.DataSet.Fields[2].AsInteger;


end


else


begin


Caption := 'Add station';


ledName.Clear;


lcmbbxRoute.KeyValue := 1;


end;


end;


procedure
TfmStations.btnCancelClick(Sender: TObject);


begin


close;


end;


procedure TfmStations.btnOKClick(Sender:
TObject);


begin


if (ledName.Text <> '') and
(lcmbbxRoute.Text <> '') then


begin


if EditFlag then


begin


fmMain.ADOCommand.CommandText := 'UPDATE
stations SET name=''' + ledName.Text


+ ''', routeid=' +
IntToStr(lcmbbxRoute.KeyValue) + ' WHERE id=' +


fmMain.DBGridStations.DataSource.DataSet.Fields[0].AsString;


fmMain.ADOQueryStopPoints.Requery;


end


else


begin


fmMain.ADOCommand.CommandText := 'INSERT
INTO stations (name, routeid) VALUES (''' + ledName.Text + ''', ' +
IntToStr(lcmbbxRoute.KeyValue) + ')';


end;


fmMain.ADOCommand.Execute;


fmMain.ADOQueryStations.Requery;


close;


end


else


ShowMessage('Incorrect parameters!');


end;


end.


добавление/редактирование остановочных пунктов


private


{ Private declarations }


public


{ Public declarations }


EditFlag: boolean;


end;


var


fmStopPoints: TfmStopPoints;


implementation


uses uMain;


{$R *.dfm}


procedure
TfmStopPoints.btnCancelClick(Sender: TObject);


begin


Close;


end;


procedure TfmStopPoints.FormShow(Sender:
TObject);


begin


if EditFlag then


begin


Caption := 'Edit stop point';


with
fmMain.DBGridStopPoints.DataSource.DataSet do


begin


ADOQueryRoutes.SQL.Text := 'SELECT *
FROM routes WHERE id = ' +


'ANY (SELECT routeid FROM stations WHERE
id = ' +


Fields[3].AsString + ')';


ADOQueryRoutes.Active := true;


ADOQueryRoutes.Requery;


ledName.Text := Fields[1].AsString;


lcmbbxRoute.KeyValue := dtsrcRoutes.DataSet.Fields[0].AsInteger;


lcmbbxStation.KeyValue :=
Fields[3].AsInteger;


if Fields[2].AsString = 'forward' then
cmbbxDirection.ItemIndex := 0 else


cmbbxDirection.ItemIndex := 1;


end;


end


else


begin


Caption := 'Add stop point';


ledName.Clear;


lcmbbxStation.KeyValue := 1;


ADOQueryRoutes.SQL.Text := 'SELECT *
FROM routes WHERE id = ' +


'ANY (SELECT routeid FROM stations WHERE
id = 1)';


ADOQueryRoutes.Active := true;


ADOQueryRoutes.Requery;


end;


end;


procedure
TfmStopPoints.lcmbbxStationCloseUp(Sender: TObject);


begin


ADOQueryRoutes.SQL.Text := 'SELECT *
FROM routes WHERE id = ' +


'ANY (SELECT routeid FROM stations WHERE
stations.id = ' +


IntToStr(lcmbbxStation.KeyValue) + ')';


ADOQueryRoutes.Open;


ADOQueryRoutes.Requery;


lcmbbxRoute.DropDown;


end;


procedure
TfmStopPoints.btnOKClick(Sender: TObject);


begin


if (ledName.Text <> '') and
(lcmbbxRoute.Text <> '') and (lcmbbxStation.Text <> '') then


begin


if EditFlag then


begin


fmMain.ADOCommand.CommandText := 'UPDATE
stoppoints SET name=''' + ledName.Text


+ ''', routeid=' +
IntToStr(lcmbbxRoute.KeyValue) + ', direction=''' +


cmbbxDirection.Text + ''', stationid=' +
IntToStr(lcmbbxStation.KeyValue)


+ ' WHERE id=' +
fmMain.DBGridStopPoints.DataSource.DataSet.Fields[0].AsString;


end


else


begin


fmMain.ADOCommand.CommandText :=


'INSERT INTO stoppoints (name,
direction, stationid, routeid) VALUES ('''


+ ledName.Text + ''', ''' +
cmbbxDirection.Text + ''', ' +


IntToStr(lcmbbxStation.KeyValue) + ', '
+ IntToStr(lcmbbxRoute.KeyValue) + ')';


end;


fmMain.ADOCommand.Execute;


fmMain.ADOQueryStopPoints.Requery;


close;


end


else


ShowMessage('Incorrect parameters!');


end;


end.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Разработка базы данных и прикладного программного обеспечения для автобусного парка

Слов:3126
Символов:37702
Размер:73.64 Кб.