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 := 'ERETIK\SQLEXPRESS';

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.


Информация о работе «Разработка базы данных и прикладного программного обеспечения для автобусного парка»
Раздел: Информатика, программирование
Количество знаков с пробелами: 24502
Количество таблиц: 4
Количество изображений: 5

Похожие работы

Скачать
54157
0
0

... программ в единый информационный и программный продукт, а также всесторонним применением современных приемов манипулирования такими продуктами с использованием средств вычислительной техники. К середине 90-ых годов в РФ в области фактографических баз данных в науке сложилась ситуация, характеризующая следующими особенностями: 1. Существует значительное количество практически не связанных друг с ...

Скачать
209765
15
2

... предусмотрены Законом о республиканском бюджете в сумме 2689432779 тыс. р. и расходы в сумме 3222042888 тыс. р.   2.3 Практика налогообложения инновационной деятельности в Республике Беларусь На примере четырех предприятий Железнодорожного района г. Витебска разных форм собственности и осуществляющих различные виды деятельности, рассмотрим порядок налогообложения инновационной деятельности. ...

Скачать
273302
51
24

... мира (2,17 млн. кв. км.). Общая площадь "материковой" части страны - 42,9 тыс. кв. км. ПОГОДА Город to воды пн, 19.1 вт, 20.1 ср, 21.1 чт, 22.1 Дания Копенгаген - +2 / -1 частичная облачность -4 / -8 дождь со снегом -3 / -8 Эсбъерг +2 +5 / 0 +1 / -3 преимущественная облачность -1 / -5 преимущественная облачность ...

Скачать
116976
12
8

... изложенным в таблице №8. Установка программного обеспечения так же входит в стоимость поставки комплекта. Таким образом, внедрение системы мониторинга автотранспорта на предприятии ГУП РМЭ "Пассажирские Перевозки" не требует снятия транспорта с линии и появления в структуре организации нового отдела. 5. Безопасность жизнедеятельности при внедрении и использовании системы мониторинга "WEB-GPS ...

0 комментариев


Наверх