Смекни!
smekni.com

Автоматизация автосалона 2 (стр. 1 из 2)

Содержание:

Введение. 2

Описание таблиц Базы Данных. 3

Взаимосвязь между таблицами Базы Данных. 4

Описание внешнего вида пользовательского интерфейса. 5

ER диаграмма. 7

Программный код. 7

Программный код. 8

Заключение. 20

Использованная литература. 21

Введение

Основные цели данного курсового проекта:

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.”