Автоматизация автосалона 2

Содержание:

	Введение	2

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

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

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

	ER диаграмма	7

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

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

	Заключение	20

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

	


Введение

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

Разработать АИС по автосалону «Автомаркет».

Закрепить знания программирования в среде Delphi.

Познакомится со всеми этапами создания готового продукта.



Результат проекта – готовый продукт (программа), которую в дальнейшем можно использовать в магазинах специализированных на продаже автомобилей.

При создании проекта будет использоваться механизм доступа к данным Borland Database Engine (BDE). Этот механизм доступа к данным позволяет обращаться к локальным и файл-серверным форматам баз данных dBase, FoxPro и Paradox, к различным серверам SQL и ко многим другим источникам данных, доступ которых поддерживался при помощи драйверов ODBC. Например, с помощью BDE можно напрямую работать с табличными файлами MS Excel.




























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

Catalog.db – таблица содержит каталог автомобилей (Acura, BMW и т.д.).







Characteristic.db – таблица содержит в себе данные о характеристиках автомобилей.







The.Characteristic.db – в таблицу входят подробное описание характеристик каждого автомобиля.







Zakaz.db – в таблице отображается наименование автомобиля который был куплен, то есть добавлен в «Архив».







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



















































	

	

	

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

	В данном случае оформление программы производилось добавлением основных элементов как DbGrid, ComboBox и т.д., а присвоение их значение производилось в самом коде.

	

	Form1.dfm

	

	

	Рис.1 Общее окно

	

	

	

	

	

	

	Form2.dfm

	

	

	Рис.2 Окно оформления автомобиля 

	

	Form3.dfm

	

	

	Рис.3 Окно Архива клиентов (тех кто купил автомобиль)

	

	

	

	

	

	

ER диаграмма

	

	

	

*ID

Фамилия

Марка

	

Объем двигателя

*ID

Модель

Модель

База авто

Цена

Архив





	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.

	

	

	

	

	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.

	

	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 запросы. Которая дает возможность ссылаться на единую базу, как через локальную сеть, так и через Интернет. Так как сейчас Интернет  имеет глобальную значимость, то ее вероятности безграничны, и всегда можно быть в курсе данных. На примере, сеть компьютерных магазинов, которая основана в нескольких городах. Если заказчик, требует подборку «железа», которой в данный момент не присутствует в магазине, то есть возможность произвести его заказ из основного склада, например с другого города, которую должны, в короткие сроки, доставит к заказчику.

	В данной курсовой работе, так же были учтены такие услуги как,  «Архив», где идет учет продаваемой продукции.

	Данную программу можно уже полномасштабно использовать в сетях магазинах или в начальном бизнесе, но со временем как появятся новые требования, и с течением времени эта программа избавиться от некоторых изъян, перейдя на новый уровень, и станет приносить хот, какую либо пользу в виде финансов и сэкономленного времени.


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



Галисеев Г. В. “Компоненты в Delphi 7.”

Санкт-Петербург: “Вильямс”, 2004 год. - 642 стр.



Коржинский С.Н. “Изучаем Delphi” 

 SNK Press Online (электронное издание), 2007год. cтр.- 344



Петров К.Д.  “Delphi.Help.” 

 Казань: “Пром”, 2004 год. - 230 cтр.



Пиренеев А.Н. “Delphi:Самоучитель.”

Казань: “Абри”, 2005 год. - 120 стр.



Поган А. “Delphi: Руководство программиста.”

 Москва: “Эксмо”, 2006. - 480 cтр.



Стив Тейксейр, Ксавье Пачеко “Borland Delphi 6. Руководство разработчика.“

Санкт-Петербург: “Вильямс”, 2002 год. - 1120 стр.



Хомкин Б.А. “Delphi: Сделай сам.”

Москва “Эксмо”, 2005 год. - 110 стр.



Чиртик А. “Delphi: Трюки и эффекты”

Санкт-Петербург: “Питер”; 2007 год. – 400 стр.



Шабров В.Н. “Delphi: Программируй сам.”

Казань: “Абри”; 2006 год. -  200 стр.







2