Содержание:
Описание таблиц Базы Данных. 3
Взаимосвязь между таблицами Базы Данных. 4
Описание внешнего вида пользовательского интерфейса. 5
Основные цели данного курсового проекта:
1. Разработать АИС по автосалону «Автомаркет».
2. Закрепить знания программирования в среде Delphi.
3. Познакомится со всеми этапами создания готового продукта.
Результат проекта – готовый продукт (программа), которую в дальнейшем можно использовать в магазинах специализированных на продаже автомобилей.
При создании проекта будет использоваться механизм доступа к данным Borland Database Engine (BDE). Этот механизм доступа к данным позволяет обращаться к локальным и файл-серверным форматам баз данных dBase, FoxPro и Paradox, к различным серверам SQL и ко многим другим источникам данных, доступ которых поддерживался при помощи драйверов ODBC. Например, с помощью BDE можно напрямую работать с табличными файлами MS Excel.
1) Catalog.db – таблица содержит каталог автомобилей (Acura, BMW и т.д.).
2) Characteristic.db – таблица содержит в себе данные о характеристиках автомобилей.
3) The.Characteristic.db – в таблицу входят подробное описание характеристик каждого автомобиля.
4) Zakaz.db – в таблице отображается наименование автомобиля который был куплен, то есть добавлен в «Архив».
Взаимосвязь между таблицами Базы Данных
Описание внешнего вида пользовательского интерфейса
В данном случае оформление программы производилось добавлением основных элементов как DbGrid, ComboBox и т.д., а присвоение их значение производилось в самом коде.
1) Form1.dfm
Рис.1 Общее окно
2) Form2.dfm
Рис.2 Окно оформления автомобиля
3) Form3.dfm
Рис.3 Окно Архива клиентов (тех кто купил автомобиль)
ER диаграмма
1
1) Unit1.pas
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, Grids, DBGrids, DBTables, DBCtrls, StdCtrls, XPMan, ComCtrls,
Buttons, Menus, ExtCtrls;
type
TForm1 = class(TForm)
Query1: TQuery;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
XPManifest1: TXPManifest;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
CB1: TComboBox;
CB2: TComboBox;
GroupBox2: TGroupBox;
Label3: TLabel;
txtOt: TEdit;
txtDo: TEdit;
RB1: TRadioButton;
Label4: TLabel;
RB2: TRadioButton;
Label5: TLabel;
txtYear: TEdit;
cmdApply: TButton;
cmdAll: TButton;
PM1: TPopupMenu;
N1: TMenuItem;
DBNavigator1: TDBNavigator;
MainMenu1: TMainMenu;
N2: TMenuItem;
N3: TMenuItem;
Bevel1: TBevel;
procedure FormCreate(Sender: TObject);
procedure CB1Change(Sender: TObject);
procedure CB2Change(Sender: TObject);
procedure RB1Click(Sender: TObject);
procedure RB2Click(Sender: TObject);
procedure cmdApplyClick(Sender: TObject);
procedure cmdAllClick(Sender: TObject);
procedure DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure N1Click(Sender: TObject);
procedure N3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2, Unit3;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
sql_str:string;
begin
sql_str:='SELECT * FROM Katalog';
Query1.SQL.Clear;
Query1.SQL.Add(sql_str);
Query1.Open;
Query1.First;
while not Query1.Eof do
begin
CB1.Items.Add(Query1.FieldByName('AVTO').AsString);
Query1.Next;
end;
CB1.ItemIndex:=0;
CB1Change(Sender);
end;
procedure TForm1.CB1Change(Sender: TObject);
var
sql_str,tip:string;
i:byte;
bFind:bool;
begin
CB2.Clear;
CB2.Items.Add('Все типы');
sql_str:='SELECT * FROM '+CB1.Text;
Query1.SQL.Clear;
Query1.SQL.Add(sql_str);
try
Query1.Open;
except
on EDBEngineError do
exit;
end;
Query1.First;
while not Query1.Eof do
begin
bFind:=false;
tip:=Query1.FieldByName('Tip_kyzova').AsString;
for i:=0 to CB2.Items.Count-1 do
if CB2.Items.Strings[i]=tip then
begin
bFind:=true;
break;
end;
if bFind=false then CB2.Items.Add(tip);
Query1.Next;
end;
CB2.ItemIndex:=0;
end;
procedure TForm1.CB2Change(Sender: TObject);
var
sql_str:string;
begin
if CB2.Text='Все типы' then
sql_str:='SELECT * FROM '+CB1.Text
else
sql_str:='SELECT * FROM '+CB1.Text+' WHERE Tip_kyzova='+QuotedStr(CB2.Text);
Query1.SQL.Clear;
Query1.SQL.Add(sql_str);
Query1.Open;
end;
procedure TForm1.RB1Click(Sender: TObject);
begin
txtYear.Enabled:=false;
Label5.Enabled:=false;
txtOt.Enabled:=true;
txtDo.Enabled:=true;
Label3.Enabled:=true;
Label4.Enabled:=true;
txtOt.SetFocus;
end;
procedure TForm1.RB2Click(Sender: TObject);
begin
txtOt.Enabled:=false;
txtDo.Enabled:=false;
Label3.Enabled:=false;
Label4.Enabled:=false;
txtYear.Enabled:=true;
Label5.Enabled:=true;
txtYear.SetFocus;
end;
procedure TForm1.cmdApplyClick(Sender: TObject);
var
sql_str:string;
begin
Query1.SQL.Clear;
if RB1.Checked then
if CB2.Text='Все типы' then
sql_str:='SELECT * FROM '+CB1.Text+
' WHERE Data_vipyska BETWEEN '+QuotedStr(txtOt.Text)+' AND '+QuotedStr(txtDo.Text)
else
sql_str:='SELECT * FROM '+CB1.Text+' WHERE Tip_kyzova='+QuotedStr(CB2.Text)+
'AND Data_vipyska BETWEEN '+QuotedStr(txtOt.Text)+' AND '+QuotedStr(txtDo.Text)
else
if CB2.Text='Все типы' then
sql_str:='SELECT * FROM '+CB1.Text+' WHERE Data_vipyska='+QuotedStr(txtYear.Text)
else
sql_str:='SELECT * FROM '+CB1.Text+' WHERE Tip_kyzova='+QuotedStr(CB2.Text)+
'AND Data_vipyska='+QuotedStr(txtYear.Text);
Query1.SQL.Add(sql_str);
Query1.Open;
end;
procedure TForm1.cmdAllClick(Sender: TObject);
begin
CB2Change(Sender);
end;
procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
p:TPoint;
begin
GetCursorPos(p);
if Button=mbRight then PM1.Popup(p.X,p.Y);
end;
procedure TForm1.N1Click(Sender: TObject);
begin
Form2.ShowModal;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
Form3.ShowModal;
end;
end.
2) Unit2.pas
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables;
type
TForm2 = class(TForm)
Label1: TLabel;
txtFam: TEdit;
Label2: TLabel;
lblMarka: TLabel;
Label4: TLabel;
lblModel: TLabel;
cmdOk: TButton;
cmdClose: TButton;
Label3: TLabel;
lblCena: TLabel;
Query1: TQuery;
procedure FormShow(Sender: TObject);
procedure cmdCloseClick(Sender: TObject);
procedure cmdOkClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.FormShow(Sender: TObject);
begin
lblMarka.Caption:=Form1.CB1.Text;
lblModel.Caption:=Form1.DBGrid1.Fields[0].Text;
lblCena.Caption:=Form1.DBGrid1.Fields[5].Text;
end;
procedure TForm2.cmdCloseClick(Sender: TObject);
begin
Close;
end;
procedure TForm2.cmdOkClick(Sender: TObject);
var
sql_str:string;
begin
sql_str:='INSERT INTO Zakaz(Marka,Model,Cena,Fam) VALUES('+QuotedStr(lblMarka.Caption)+
','+QuotedStr(lblModel.Caption)+','+QuotedStr(copy(lblCena.Caption,0,length(lblCena.Caption)-3))+','+QuotedStr(txtFam.Text)+')';
Query1.SQL.Clear;
Query1.SQL.Add(sql_str);
Query1.ExecSQL;
MessageDlg('Поздравляем с покупкой нового автомобиля!',mtInformation,[mbOk],0);
Close;
end;
end.
3) Unit3.pas
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, DBTables, StdCtrls, Mask, DBCtrls;
type
TForm3 = class(TForm)
DBGrid1: TDBGrid;
Query1: TQuery;
DataSource1: TDataSource;
txtFilter: TEdit;
Label1: TLabel;
procedure txtFilterChange(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.txtFilterChange(Sender: TObject);
begin
Query1.Filter:='';
if txtFilter.Text='' then
Query1.Filtered:=false
else
begin
Query1.Filter:='Fam='+QuotedStr(txtFilter.Text+'*');
Query1.Filtered:=true;
end;
end;
procedure TForm3.FormShow(Sender: TObject);
var
sql_str:string;
begin
sql_str:='SELECT * FROM Zakaz';
Query1.SQL.Clear;
Query1.SQL.Add(sql_str);
Query1.Open;
end;
end.
При проектировании данной курсовой работы, были использованы материалы по теоретической части, а именно SQL запросы. Которая дает возможность ссылаться на единую базу, как через локальную сеть, так и через Интернет. Так как сейчас Интернет имеет глобальную значимость, то ее вероятности безграничны, и всегда можно быть в курсе данных. На примере, сеть компьютерных магазинов, которая основана в нескольких городах. Если заказчик, требует подборку «железа», которой в данный момент не присутствует в магазине, то есть возможность произвести его заказ из основного склада, например с другого города, которую должны, в короткие сроки, доставит к заказчику.
В данной курсовой работе, так же были учтены такие услуги как, «Архив», где идет учет продаваемой продукции.
Данную программу можно уже полномасштабно использовать в сетях магазинах или в начальном бизнесе, но со временем как появятся новые требования, и с течением времени эта программа избавиться от некоторых изъян, перейдя на новый уровень, и станет приносить хот, какую либо пользу в виде финансов и сэкономленного времени.
1. Галисеев Г. В. “Компоненты в Delphi 7.”