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

Содержание:

 

Введение

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

  1. Разработать АИС по автосалону «Автомаркет».
  2. Закрепить знания программирования в среде Delphi.
  3. Познакомится со всеми этапами создания готового продукта.
 

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

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

 

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

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

     

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

     

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

     

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

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

 

 
 
 
 
 

 
 
 
 
 

 

 
 
 
 

 
 
 

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

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

  1. Form1.dfm
 

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

  1. Form2.dfm
 

    

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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