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

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Міністерство освіти і науки Республіки Казахстан
Карагандинський державний технічний університет
Кафедра
ПОЯСНЮВАЛЬНА ЗАПИСКА
До КУРСОВОМУ ПРОЕКТУ
Дисципліна: Технологія розробки баз даних
Тема: Розробка бази даних і прикладного програмного забезпечення для автобусного парку
Прийняв:
___________________________
Виконав: студент гр. ________
___________________________
Караганда 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: = '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.
Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
56.9кб. | скачати


Схожі роботи:
Аналіз прикладного програмного забезпечення що для розробки бізнесплан
Аналіз прикладного програмного забезпечення що для розробки бізнес плану
Аналіз прикладного програмного забезпечення
Розробка бази даних для готелю
Розробка бази даних для програми Радіодеталі
Розробка бази даних для розкладу занять
Історія розвитку прикладного програмного забезпечення персонального компютера
Розробка проекту бази даних для АІС Облік Проектів 2
Розробка проекту бази даних для АІС Облік Проектів
© Усі права захищені
написати до нас