Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

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

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


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

Тип Реферат
Предмет Информатика и программирование
Просмотров
1705
Размер файла
76 б
Поделиться

Ознакомительный фрагмент работы:

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

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

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

Кафедра

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

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

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

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

Принял:

___________________________

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

___________________________

Караганда 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.


Нет нужной работы в каталоге?

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

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

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

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Филиал государственного бюджетного образовательного учреждения высшего образования Московской област
Спасибо Елизавете за оперативность. Так как это было важно для нас! Замечаний особых не бы...
star star star star star
РУТ
Огромное спасибо за уважительное отношение к заказчикам, быстроту и качество работы
star star star star star
ТГПУ
спасибо за помощь, работа сделана в срок и без замечаний, в полном объеме!
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

решить 6 практических

Решение задач, Спортивные сооружения

Срок сдачи к 17 дек.

только что

Задание в microsoft project

Лабораторная, Программирование

Срок сдачи к 14 дек.

только что

Решить две задачи №13 и №23

Решение задач, Теоретические основы электротехники

Срок сдачи к 15 дек.

только что

Решить 4задачи

Решение задач, Прикладная механика

Срок сдачи к 31 дек.

только что

Выполнить 2 задачи

Контрольная, Конституционное право

Срок сдачи к 12 дек.

2 минуты назад

6 заданий

Контрольная, Ветеринарная вирусология и иммунология

Срок сдачи к 6 дек.

4 минуты назад

Требуется разобрать ст. 135 Налогового кодекса по составу напогового...

Решение задач, Налоговое право

Срок сдачи к 5 дек.

4 минуты назад

ТЭД, теории кислот и оснований

Решение задач, Химия

Срок сдачи к 5 дек.

5 минут назад

Решить задание в эксель

Решение задач, Эконометрика

Срок сдачи к 6 дек.

5 минут назад

Нужно проходить тесты на сайте

Тест дистанционно, Детская психология

Срок сдачи к 31 янв.

6 минут назад

Решить 7 лабораторных

Решение задач, визуализация данных в экономике

Срок сдачи к 6 дек.

7 минут назад

Вариационные ряды

Другое, Статистика

Срок сдачи к 9 дек.

8 минут назад

Школьный кабинет химии и его роль в химико-образовательном процессе

Курсовая, Методика преподавания химии

Срок сдачи к 26 дек.

8 минут назад

Вариант 9

Решение задач, Теоретическая механика

Срок сдачи к 7 дек.

8 минут назад

9 задач по тех меху ,к 16:20

Решение задач, Техническая механика

Срок сдачи к 5 дек.

9 минут назад
9 минут назад
10 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно