Мебельный салон

Содержание

1. Постановка задачи ……………………………………………………..…….3

2. Описание предметной  области……………………………………………….4

3. Проектирование интерфейса

3.1. Выбор и назначение  визуальных компонентов………………….…5

3.2. Формы проекта ..…………………………………………….…..……6

4. Разработка программного  обеспечения

4.1. основные процедуры……………………………………..……….…11

4.2. Текст программы……………………………………………….……12

5. Визуальное представление  результатов………………………………..….30

6. Список литературы……………………………………………………..…...32

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Постановка задачи

Задачей данного проекта  является разработка программного обеспечения  в среде визуального программирования Delphi для информационной системы в конкретной предметной области. Программа рассчитана на пользование сотрудниками салона мебели, и предназначена для хранения информации об имеющихся товарах, их количестве, качестве, о производителе, цене, также возможен поиск товара, сортировка, построение диаграмм для наглядности представления данных. Также возможен ввод, корректировка и сохранение данных.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Описание предметной области

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

В настоящее время мебельные  салоны имеют очень большой и  разнообразный ассортимент товаров, а, следовательно, и документации. Хранение информации в бумажной форме не всегда удобно, так как зачастую сложно найти информацию о необходимом товаре в большом количестве каталогов. Так же возникают проблемы с редактированием информации. Отличным, на мой взгляд, выходом из этой ситуации является создание  электронных баз данных. Такие базы данных позволяют облегчить работу персонала и увеличить ее продуктивность.

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

Структура базы данных:

  1. Товар
  2. Материал
  3. Количество
  4. Цена
  5. Страна производителя

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

 

 

 

 

 

 

 

 

 

 

 

3. Проектирование интерфейса

3.1. Выбор и назначение  визуальных компонентов

Button (командная кнопка) - компонент меню Standard, используемый для создания кнопок, которыми пользователь выполняет команды в приложении.

Edit (окно редактирования) - компонент меню Standard, предназначенный для ввода/вывода и редактирования однострочных текстов. Основное свойство — Text. Это свойство можно устанавливать в процессе проектирования или задавать программно.

Label (метка) - компонент меню Standard, используемый для отображения надписи на форме, которая не изменяется пользователем. Никакого оформления текста не предусмотрено, кроме цвета метки и текста. Основное свойство — Caption.

StringGrid (таблица строк) — компонент меню Additional, отображающий информацию в таблице из строк и столбцов с возможностью перемещаться по строкам и столбцам и осуществлять выбор. Основные свойства: RowCount и ColCount  — определяют соответственно число строк и столбцов (доступны и в ходе выполнения и на этапе проектирования программы); за содержимое всего столбца или всей строки отвечают свойства Cols и Rows — отвечает за работу с отдельными ячейками (доступно только в ходе выполнения программы).

Image (изображение) — компонент меню Additional. Используется для отображения графики: пиктограмм, битовых матриц, и метафайлов.

MainMenu (главное меню) — невизуальный компонент страницы Standard. Основное свойство — Items(добавление пунктов меню). Свойство Visible отвечает за видимость/невидимость элементов меню на экране.

Chart (диаграммы и графики) – компонент меню Additional. Используется для создания диаграмм и графиков.

TabControl – вкладка, компонент меню  вкладка Win32 Палитры компонентов.

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

3.2. Формы проекта.

Работа с данными в  Microsoft Access осуществляется в основном с помощью форм. Любая форма содержит окна - поля, которые предназначены для ввода информации.

Были созданы следующие формы:

  1. Form1 (главная форма).

Главная форма позволяет добавлять товары, редактировать, удалять и сохранять все изменения в БД. Также можно отсортировать, имеющиеся данные по цене, материалу и количеству.

Рис.1 Главная  форма.

 

Рис.2 Элементы меню «Файл».

 

 

 

 

 

 

 

 

 

 

 

 

Рис.3 Элементы меню «Сортировка».

 

 

 

 

  1. Form2 (форма поиска).

Данная форма позволяет выполнить  поиск по трем категориям товару, материалу и стране производителя.

Рис.4 Окно поиска.

 

  1. Form4 (диаграммы)

Представлены диаграммы по товару, материалу и стране производителя.

Рис.5 Окно с диаграммой по товару.

Рис.6 Окно с диаграммой по материалу.

 

 


Рис.7 Окно с диаграммой по стране производителя.

 

 

4. Разработка программного  обеспечения

Основные процедуры.

procedure TForm1.btn1Click(Sender: TObject);- добавление информации в таблицу;

procedure TForm1.N3Click(Sender: TObject); - удаление записи ;

procedure TForm1.N4Click(Sender: TObject); - сохранение изменений;

procedure TForm1.N6Click(Sender: TObject); - сортировка по цене;

procedure TForm1.N10Click(Sender: TObject); - сортировка по материалу;

procedure TForm1.N11Click(Sender: TObject); - сортировка по количеству;

procedure TForm1.N9Click(Sender: TObject) ,

procedure TForm3.Button2Click(Sender: TObject),

procedure TForm4.Button5Click(Sender: TObject); - закрывает программы;

procedure TForm1.N7Click(Sender: TObject); - скрывает главное окно и открывает окно поиска;

procedure TForm1.N8Click(Sender: TObject); - закрывает главную форму и открывает форду с диаграммами;

procedure TForm2.btn1Click(Sender: TObject); - выполняет поиск по заданной категории;

procedure TForm2.btn2Click(Sender: TObject); - скрывает окно поиска и открывает главное окно;

procedure TForm3.Button1Click(Sender: TObject); - скрывает титульный лист и открывает главное окно;

procedure TForm4.Button2Click(Sender: TObject); - открывает диаграмму по материалу;

procedure TForm4.Button3Click(Sender: TObject); - открывает диаграмму по стране производителя;

procedure TForm4.Button1Click(Sender: TObject); - диаграмму по товару;

procedure TForm4.Button4Click(Sender: TObject); - скрывает окно диаграмм и открывает главное окно.

 

 4.2. Текст программы

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, Menus, DB, Grids, DBGrids, ADODB, jpeg, ExtCtrls;

type

  TForm1 = class(TForm)

    DBGrid1: TDBGrid;

    MainMenu1: TMainMenu;

    N1: TMenuItem;

    N2: TMenuItem;

    N3: TMenuItem;

    N4: TMenuItem;

    N5: TMenuItem;

    N6: TMenuItem;

    N7: TMenuItem;

    N8: TMenuItem;

    N9: TMenuItem;

    N10: TMenuItem;

    N11: TMenuItem;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    Label5: TLabel;

    Edit1: TEdit;

    Edit2: TEdit;

    Edit3: TEdit;

    Edit4: TEdit;

    Edit5: TEdit;

    btn1: TButton;

    MebelName: TADOTable;

    DataSource1: TDataSource;

    ADOConnection1: TADOConnection;

    MebelNameКод: TAutoIncField;

    MebelNameТовар: TWideStringField;

    MebelNameМатериал: TWideStringField;

    MebelNameКоличество: TIntegerField;

    MebelNameЦена: TIntegerField;

    MebelNameСтрана_производитель: TWideStringField;

    Image1: TImage;

    Image2: TImage;

    Image3: TImage;

    Image4: TImage;

    Image5: TImage;

    procedure N3Click(Sender: TObject);

    procedure N4Click(Sender: TObject);

    procedure N6Click(Sender: TObject);

    procedure N10Click(Sender: TObject);

    procedure N11Click(Sender: TObject);

    procedure N9Click(Sender: TObject);

    procedure btn1Click(Sender: TObject);

    procedure N7Click(Sender: TObject);

    procedure N8Click(Sender: TObject);

 

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

implementation

uses Unit2, Unit4;

{$R *.dfm}

 

procedure TForm1.btn1Click(Sender: TObject); {добавление товара}

begin

Form1.MebelName.Insert;

Form1.MebelName.FieldByName(DBGrid1.Columns.Items[1].DisplayName)

.AsString := Self.Edit1.Text;

Form1.MebelName.FieldByName(DBGrid1.Columns.Items[2].DisplayName)

.AsString := Self.Edit2.Text;

Form1.MebelName.FieldByName(DBGrid1.Columns.Items[3].DisplayName)

.AsString := Self.Edit3.Text;

Form1.MebelName.FieldByName(DBGrid1.Columns.Items[4].DisplayName)

.AsString := Self.Edit4.Text;

Form1.MebelName.FieldByName(DBGrid1.Columns.Items[5].DisplayName)

.AsString := Self.Edit5.Text;

  Form1.MebelName.Post;

end;

 

procedure TForm1.N3Click(Sender: TObject);  {удаление товара}

begin

  if MessageDlg ('Удалить запись?', mtConfirmation, [mbYes, mbNo], 0)

= mrNO then Abort;

Form1.MebelName.Delete;

end;

 

procedure TForm1.N4Click(Sender: TObject);   {сохранение изменений}

begin

   if MessageDlg ('Сохранить изменения?', mtConfirmation, [mbYes, mbNo], 0)

= mrNO then Abort;

if Form1.MebelName.Modified then

Form1.MebelName.Post;

end;

procedure TForm1.N6Click(Sender: TObject); {сортировка по цене}

begin

Form1.MebelName.IndexFieldNames:= 'Цена';

end;

 

procedure TForm1.N10Click(Sender: TObject);   {сортировка по материалу}

begin

Form1.MebelName.IndexFieldNames:= 'Материал';

end;

 

procedure TForm1.N11Click(Sender: TObject);     {сортировка по количеству}

begin

Form1.MebelName.IndexFieldNames:= 'Количество';

end;

 

procedure TForm1.N9Click(Sender: TObject);   {закрытие программы}

begin

close;

end;

 

procedure TForm1.N7Click(Sender: TObject);

begin

{Открытие окна поиска:}

Form2.Show;

{Вызов панели поиска:}

Form2.pnl1.Show;

{скрытие главного окна:}

Form1.Hide;

end;

 

procedure TForm1.N8Click(Sender: TObject); {закрывает  главное окно, открывает окно  с диаграммами}

begin

form1.Hide;

form4.Show;

end;

end.

 

unit Unit2;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, DB, Grids, DBGrids, ADODB, ExtCtrls, StdCtrls, jpeg;

 

type

  TForm2 = class(TForm)

    pnl1: TPanel;

    con1: TADOConnection;

    tblMebelName: TADOTable;

    ds1: TDataSource;

    dbgrd1: TDBGrid;

    atncfldMebelNameDSDesigner: TAutoIncField;

    tblMebelNameDSDesigner2: TWideStringField;

    tblMebelNameDSDesigner3: TWideStringField;

    tblMebelNameDSDesigner4: TIntegerField;

    tblMebelNameDSDesigner5: TIntegerField;

    tblMebelName_: TWideStringField;

    Label1: TLabel;

    edt1: TEdit;

    Label2: TLabel;

    rb1: TRadioButton;

    rb2: TRadioButton;

    rb3: TRadioButton;

    btn1: TButton;

    btn2: TButton;

    Image1: TImage;

    Button1: TButton;

    procedure btn1Click(Sender: TObject);

    procedure btn2Click(Sender: TObject);

 

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form2: TForm2;

implementation

 

uses Unit1;

{$R *.dfm}

 

procedure TForm2.btn1Click(Sender: TObject);

begin

  {поиск по материалу}

if rb1.Checked then

begin

if Edt1.Text='' then exit;

  Form2.tblMebelName.Filtered := false;

  Form2.tblMebelName.Filter := 'Материал LIKE ''*' + Edt1.Text + '*''';

  Form2.tblMebelName.Filtered := true;

end;

 

{поиск по цене}

if rb2.Checked then

begin

if Edt1.Text='' then exit;

  Form2.tblMebelName.Filtered := false;

  Form2.tblMebelName.Filter := 'Товар LIKE ''*' + Edt1.Text + '*''';

  Form2.tblMebelName.Filtered := true;

end;

 

 {поиск по стране производителя:}

if rb3.Checked then

 begin

if Edt1.Text='' then exit;

  Form2.tblMebelName.Filtered := false;

  Form2.tblMebelName.Filter := 'Страна_производитель LIKE ''*' + Edt1.Text + '*''';

  Form2.tblMebelName.Filtered := true;

end;

end;

 

procedure TForm2.btn2Click(Sender: TObject);

begin

{скрываем окно поиска  и открываем главное окно}

form2.Hide;

form1.Show;

end;

end.

 

unit Unit3;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, jpeg, ExtCtrls;

 

type

  TForm3 = class(TForm)

    Image1: TImage;

    Button1: TButton;

    Label8: TLabel;

    Label7: TLabel;

    Label6: TLabel;

    Label5: TLabel;

    Label4: TLabel;

    Label3: TLabel;

    Label2: TLabel;

    Label1: TLabel;

    Button2: TButton;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

 

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form3: TForm3;

implementation

uses Unit1, Unit2;

{$R *.dfm}

 

procedure TForm3.Button1Click(Sender: TObject);

begin

{скрытие титульной формы}

Form3.Hide;

{открытие главного окна:}

Form1.Show;

end;

 

procedure TForm3.Button2Click(Sender: TObject);

begin

close;

end;

end.

 

unit Unit4;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, Series, BubbleCh, TeEngine, ExtCtrls, TeeProcs, Chart, DB,

  ADODB, Grids, DBGrids, GanttCh;

 

type

  TForm4 = class(TForm)

    DBGrid1: TDBGrid;

    MebelName: TADOTable;

    MebelNameКод: TAutoIncField;

    MebelNameТовар: TWideStringField;

    MebelNameМатериал: TWideStringField;

    MebelNameКоличество: TIntegerField;

    MebelNameЦена: TIntegerField;

    MebelNameСтрана_производитель: TWideStringField;

    DataSource1: TDataSource;

    ADOConnection1: TADOConnection;

    Chart1: TChart;

    Chart2: TChart;

    Chart3: TChart;

    Series1: TPieSeries;

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    Button4: TButton;

    Series3: TGanttSeries;

    Label1: TLabel;

    Button5: TButton;

    Series2: TBarSeries;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form4: TForm4;

implementation

uses Unit1;

{$R *.dfm}

 

procedure TForm4.Button1Click(Sender: TObject); {диаграммf по товару}

  var

  kat: array of string;

  kol: array of integer;

  I,f: integer;

  n:boolean;

begin

   chart3.hide;

   chart2.hide;

   chart1.show;

  Chart1.Series[0].Clear;

   SetLength(kat, Form4.MebelName.RecordCount);

   SetLength(kol, Form4.MebelName.RecordCount);

 

  for I := 0 to length(kat)-1 do

  begin

    kat[I] := '';

    kol[I] := 0;

  end;

 

  Form4.MebelName.First;

   I := 0;

  while not  Form4.MebelName.Eof do

  begin

    if Form4.MebelName.FieldByName('товар').AsString <> '' then

    begin

      n:=false;

      for f := 0 to length(kat)-1 do

      if kat[f] = Form4.MebelName.FieldByName

        ('товар').AsString then

        begin

        n:=true;

        end;

        if n=false then

        begin

      kat[I] := Form4.MebelName.FieldByName('товар').AsString;

      kol[I] := 0;

        end;

 

      I := I + 1;

    end;

     Form4.MebelName.Next;

  end;

  Form4.MebelName.First;

  I := 0;

  Form4.MebelName.First;

  while not Form4.MebelName.Eof do

  begin

    for I := 0 to length(kat)-1 do

          if kat[I] = Form4.MebelName.FieldByName

        ('товар').AsString then

       kol[I] := kol[I] + Form4.MebelName.FieldByName

          (Form4.DBGrid1.Columns.Items[3].DisplayName).AsInteger;

    Form4.MebelName.Next;

  end;

  Form4.MebelName.First;

  for I := 0 to length(kat)-1 do

    if kat[I] <> '' then

    begin

      Chart1.Series[0].Add(kol[I], kat[I], clTeeColor);

    end;

end;

 

procedure TForm4.Button2Click(Sender: TObject); {диаграмма по материалу;}

 

  var

  kat: array of string;

  kol: array of integer;

  I,f: integer;

  n:boolean;

begin

chart1.hide;

chart3.hide;

Chart2.show;

  Chart1.Series[0].Clear;

   SetLength(kat, Form4.MebelName.RecordCount);

   SetLength(kol, Form4.MebelName.RecordCount);

 

  for I := 0 to length(kat)-1 do

  begin

    kat[I] := '';

    kol[I] := 0;

  end;

 

  Form4.MebelName.First;

   I := 0;

  while not  Form4.MebelName.Eof do

  begin

    if Form4.MebelName.FieldByName('материал').AsString <> '' then

    begin

      n:=false;

      for f := 0 to length(kat)-1 do

      if kat[f] = Form4.MebelName.FieldByName

        ('материал').AsString then

        begin

        n:=true;

        end;

        if n=false then

        begin

      kat[I] := Form4.MebelName.FieldByName('материал').AsString;

      kol[I] := 0;

        end;

      I := I + 1;

    end;

     Form4.MebelName.Next;

  end;

  Form4.MebelName.First;

  I := 0;

  Form4.MebelName.First;

  while not Form4.MebelName.Eof do

  begin

    for I := 0 to length(kat)-1 do

          if kat[I] = Form4.MebelName.FieldByName

        ('материал').AsString then

       kol[I] := kol[I] + Form4.MebelName.FieldByName

          (Form4.DBGrid1.Columns.Items[3].DisplayName).AsInteger;

    Form4.MebelName.Next;

  end;

  Form4.MebelName.First;

  for I := 0 to length(kat)-1 do

    if kat[I] <> '' then

    begin

      Chart2.Series[0].Add(kol[I], kat[I], clTeeColor);

    end;

end;

 

procedure TForm4.Button3Click(Sender: TObject); {диаграмма по стране производителя}

 

  var

  kat: array of string;

  kol: array of integer;

  I,f: integer;

  n:boolean;

begin

chart1.hide;

chart2.hide;

Chart3.show;

  Chart1.Series[0].Clear;

   SetLength(kat, Form4.MebelName.RecordCount);

   SetLength(kol, Form4.MebelName.RecordCount);

 

  for I := 0 to length(kat)-1 do

  begin

    kat[I] := '';

    kol[I] := 0;

  end;

 

  Form4.MebelName.First;

   I := 0;

  while not  Form4.MebelName.Eof do

  begin

    if Form4.MebelName.FieldByName('страна_производитель').AsString <> '' then

    begin

      n:=false;

      for f := 0 to length(kat)-1 do

      if kat[f] = Form4.MebelName.FieldByName

        ('страна_производитель').AsString then

        begin

        n:=true;

        end;

        if n=false then

        begin

      kat[I] := Form4.MebelName.FieldByName('страна_производитель').AsString;

      kol[I] := 0;

        end;

 

      I := I + 1;

    end;

     Form4.MebelName.Next;

  end;

  Form4.MebelName.First;

  I := 0;

  Form4.MebelName.First;

  while not Form4.MebelName.Eof do

  begin

    for I := 0 to length(kat)-1 do

          if kat[I] = Form4.MebelName.FieldByName

        ('страна_производитель').AsString then

       kol[I] := kol[I] + Form4.MebelName.FieldByName

          (Form4.DBGrid1.Columns.Items[3].DisplayName).AsInteger;

    Form4.MebelName.Next;

  end;

  Form4.MebelName.First;

  for I := 0 to length(kat)-1 do

    if kat[I] <> '' then

    begin

      Chart3.Series[0].Add(kol[I], kat[I], clTeeColor);

    end;

end;

 

procedure TForm4.Button4Click(Sender: TObject);

{скрывает окно диаграмм  и открывает главное окно}

begin

form4.Hide;

form1.Show;

end;

 

procedure TForm4.Button5Click(Sender: TObject);

{закрытие программы}

begin

close;

end;

end.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5. Визуальное представление результатов

Рис.8 Окно с диаграммой по товару.

Рис.9 Окно с диаграммой по материалу.

 

Рис.10 Окно с диаграммой по стране производителя.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6. Список литературы

1. Гофман В., Хомоненко  А. Delphi 7. - Спб.: “BHV”, 2008..

5. Фленов М. Программирование в Delphi глазами Хакера.

3. http://firefox.yandex.ru/

 

 

 




Мебельный салон