Delphi – это среда разработки приложений с использованием графического интерфейса Windows. Программирование является:
а) Объектно-ориентированным (программирование осуществляется над объектами и с помощью объектов)
б) Событийно-ориентированным (раз есть объект, то должно быть и событие на которое реагирует объект). Программирование в Delphi осуществляется с помощью объектов, каждый объект имеет свойства.
Средства Delphi для разработки приложений, использующих базы данных:
BDE (BorlandDatabaseEngine).
Взаимодействие приложения, созданного в среде разработке Delphi, и базы данных обеспечивает процессор баз данных BorlandDatabaseEngine. Он представляет собой набор динамических библиотек, функции которых позволяют не только обращаться к данным, но и эффективно управлять ими на стороне приложения. Компоненты доступа к данным Delphi для работы с базами данных используют возможности BDE, обращаясь к его функциям и процедурам. Механизм доступа к BDEинкапсулирован в базовом классе TBDEDataSet. BDE взаимодействует с базами данных посредствам драйверов. Для наиболее распространенных СУБД разработан набор стандартных драйверов. Однако при всех преимуществах BDE не претендует на всеобъемлющую универсальность и имеет некоторые недостатки. К ним, например, относится снижение скорости работы приложения, недостатки реализации некоторых драйверов.
SQLLinks.
Приложения Delphi обращаются к данным при помощи BDE, при этом способы доступа к данным различаются в зависимости от типа базы данных. К локальным БД Paradox, dBASE, MSAccess, FoxProBDE обращается посредствам стандартных драйверов. Данные от серверов SQL поступают благодаря использованию специальной системы драйверов SQLLinks. Важнейшую роль при обработке и отправлении запроса играет составная часть процессора БД-система обработки запросов. Локальные СУБД не используют язык SQL в качестве основного при работе с данными. Тем не менее, BDE при помощи соответствующего стандартного драйвера транслирует поступающие от приложений запросы в понятный для локальной СУБД вид и принимает ответы. Так как запрос к любой локальной БД выполняется одним механизмом, то существует и единый синтаксис SQL для работы с такими данными. Этот вариант носит название локальный SQL и является подмножеством стандарта SQL 92. Все серверы БД, работающие через SQLLinks, являются серьезными промышленными системами и работают на собственных расширениях языка.
BDEAdministrator.
Для успешного доступа к данным приложение и BDE должны обладать информацией о местоположении файлов требуемой базы данных. Самый простой способ заключается в явном задании полного пути к каталогу, в котором хранятся файлы БД. Но в случае изменения пути, что случается не так уж редко (например, при переносе готового приложения на компьютер заказчика), разработчик должен перекомпилировать проект с учетом будущего местонахождения БД или предусмотреть специальные элементы управления, в которых можно задать путь к БД. Для решения такого рода проблем разработчик может использовать псевдоним базы данных, который представляет собой именованную структуру, содержащую путь к файлам БД и некоторые дополнительные параметры. Помимо маршрута к файлам базы данных, псевдоним BDE обязательно содержит информацию о драйвере БД, который используется для доступа к данным. Наличие других параметров зависит от типа драйвера, а значит от типа СУБД. Для управления псевдонима баз данных, настройки стандартных и дополнительных драйверов в составе BDE имеется специальная утилита - ВDЕ Adminstrator (см. выше, исполняемый файл BDEADMIN.EXE). Стандартная конфигурация BDE сохраняется в файле IDAPI.CFG.
DatabaseDesktop.
Это программа для создания, редактирования, удаления, изменения логической структуры таблиц баз данных.
3.1 Конфигурация системы с помощью утилиты
BDEADMINISTRATOR
Данная курсовая работа не нуждается в создании псевдонима. Она лишь требует следующего:
а) Наличия на компьютере BDEAdministrator-a.
б) Папка, где хранятся таблицы баз дынных, не должна переименовываться.
3.2 Создание таблиц базы данных с помощью утилиты
DATABASEDESKTOP
Таблица 4: Торговый чек
Примечание: Таблица “Автомобили” и “Счет-фактура” связаны связью 1:M (один-ко-многим), следовательно, прежде чем удалять поле из таблицы “Счет-фактура”, сначала следует удалить соответствующее поле в таблице “Aвтомобили”. Таблица “Торговый чек” и ”Покупатель” также связаны связью 1:M, следовательно, прежде чем удалять поле из таблицы “Торговый чек”, сначала следует удалить соответствующее поле в таблице “Покупатель”, для сохранения ссылочной целостности.
3.3 Организация пользовательского интерфейса
3.3.1 Создание меню, реализующего основные функции информационной системы
После загрузки приложения появляется первая форма ввода пароля:
После успешной идентификации пользователя загружается следующая форма:
При помощи этой формы можно корректировать цену автомобилей с
учетом роста (падения) курса доллара. После того как курс доллара был установлен, загружается следующая форма.
Данная форма является формой-заставкой.
После успешной загрузки этой формы появляется главная форма.
На главной форме находится пять кнопок, четыре из которых указывают на таблицы. Нажатием пятой кнопки осуществляется выход из программы.
Также, на этой форме еще присутствуют кнопки изменения времени сохранения, установив которые на нужной цифре, можно установить период, через который программа будет осуществлять автосохранение.
3.3.2 Проектирование форм для работы с базой данных
Рассмотрим одну из форм (меню у всех форм практически одинаковы) автомобили. Она имеет вид:
Рассмотрим все меню по порядку:
Меню - здесь осуществляется выход из программы. По сочетанию клавиш Alt+F4 или непосредственно нажатием.
Текст процедуры:
IfMessageDlg('Подтверждение?',MtConfirmation,[mbYes,mbNo,mbCancel],
0)=mrYes then
Form1.Close;
Form4.Table1.FlushBuffers;
Form5.Table1.FlushBuffers;
Form6.Table1.FlushBuffers;
Form7.Table1.FlushBuffers;
Формы – здесь осуществляется навигация по формам.
Текстпроцедуры:
form5.visible:=false;
form3.visible:=true;
Примечание: Для остальных форм текст такой же только изменяется номер форм.
Действия – здесь организованы различные режимы работы с базой данных (ввод, редактирование, поиск, поиск и замена, фильтрация).
Организация формы ввода нового автомобиля осуществляется следующим образом:
form11.visible:=true;
form11.Edit3.clear;
form11.Edit4.clear;
form11.Edit5.clear;
form11.Edit6.clear;
form11.Edit7.clear;
Внешний вид этой формы:
Марка автомобиля и цена добавляются автоматически.
Процедура кнопки добавить:
form5.Table1.insert;
form5.Table1.edit;
form5.Table1Color.Asstring:=edit4.text;
form5.Table1Kol_vo_door.Asstring:=edit5.text;
form5.Table1Engine_power.Asstring:=edit6.text;
form5.Table1Type_Salon.Asstring:=edit7.text;
form5.table1.post;
Form5.Table1.FlushBuffers;
form11.visible:=false;
Организация формы поиска осуществляется следующим образом:
Form5.Table1.FlushBuffers;
Form5.Visible:=false;
Form24.visible:=true;
Form24.Table1.Refresh;
Form24.DBGrid3.Visible:=false;
Процедура кнопки “Поиск”:
procedure TForm24.Button1Click(Sender: TObject);
Label s,d;
begin
if (Form24.Edit1.text='')or (Form24.Edit2.text='') or (Form24.Edit3.text='')
then
BEGIN
Showmessage('Значения не введены, возможен неправильный поиск!');
goto s;
END;
with Form24.table1 do
begin
locate('Name_Modeli',edit1.text,[]);
locate('Predlag_Zena',edit2.text,[]);
locate('Color',edit3.text,[]);
if (locate('Name_Modeli',edit1.text,[])=false) and
(locate('Predlag_Zena',edit2.text,[])=false) and
(locate('Color',edit3.text,[])=false)
then
begin
Showmessage('Такого автомобиля нет!');
Form24.Edit1.clear;
Form24.table1.first;
s: Form24.DBGrid3.Visible:=false;
end
else
d: Form24.DBGrid3.Visible:=True;
end;
Form24.Table1.Refresh;
Form24.Query1.active:=true;
end;
Пример поиска автомобиля:
Такой автомобиль программа не нашла, но после поиска было задано условие, найти по цвету. Также можно задать еще два других условия, или все сразу, поставив галочку в соответствующем окошке.
Следующий компонент меню – это поиск и замена данных об автомобиле.
Организация формы поиска:
form13.visible:=true;
form13.edit1.clear;form13.edit2.clear;form13.edit3.clear;
form13.edit4.clear;form13.edit5.clear;form13.edit6.clear;
form13.edit7.clear;
form13.edit10.clear;form13.edit11.clear;form13.edit12.clear;
form13.edit13.clear;form13.edit14.clear;form13.edit15.clear;