Разработка автоматизированной системы управления учета и товара оптового магазина

Автор: Пользователь скрыл имя, 04 Мая 2012 в 18:19, дипломная работа

Описание работы

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

Содержание

Введение
1 Обследование предметной области
1.1 Автоматизация работы оптового магазина
1.1.1 Обоснование необходимости совершенствования системы
1.1.2 Выбор и обоснование варианта реализации задачи учета товара и услуг
1.1.3 Цели и задачи автоматизации учета товара
1.2 Проектирование системы
1.2.1 ER-диаграмма системы в нотации Чена
1.2.2 Проектирование БД
1.2.3 Описание структуры таблиц БД
2 Анализ целесообразности использования заданных средств
разработки
2.1 Приоритетный язык программирования
2.1.1 Программный продукт Delphi
2.1.2 Высокопроизводительный компилятор в машинный код
2.1.3 Мощный объектно-ориентированный язык
2.1.4 Объектно-ориентированная модель программных компонент
2.1.5 Библиотека визуальных компонент
2.2 Приоритетная СУБД
3 Описание и применение программы
3.1 Общие сведения
3.2 Функциональное назначение
3.3 Описание логической структуры
3.4 Системные требования
3.5 Вызов и загрузка
3.6 Входные и выходные данные
3.7 Работа с готовой программой
4 Оценка экономической эффективности инвестиционного проекта
4.1 Расчет затрат на разработку системы
4.2 Формирование денежного потока
4.2.1 Расчет поступлений денежных средств
4.2.2 Финансирование проекта по этапам разработки
4.3 Анализ рисков
5 Охрана труда
6 Охрана окружающей среды
Заключение
Список использованных источников
Приложение А Выходные формы документов
Приложение Б Исходный код модуля главного окна программы

Работа содержит 1 файл

Diplom.doc

— 1.23 Мб (Скачать)

        Excel.Cells[i+PosInc,1] := tbRealizComp.FieldByName('GoodsName').AsString;

        Excel.Cells[i+PosInc,2] := tbRealizComp.FieldByName('Quantity').AsInteger;

        Excel.Cells[i+PosInc,3] := tbRealizComp.FieldByName('PriceRealiz').AsCurrency/1.18;

        Sum := Sum + tbRealizComp.FieldByName('PriceRealiz').AsCurrency/1.18 *

                     tbRealizComp.FieldByName('Quantity').AsInteger;

        Inc(i);

        tbRealizComp.Next;

        end; 

      end; //with

    Excel.Cells[i+PosInc,4] := Sum;

    Excel.Cells[i+PosInc+1,4] := Sum*0.18;

    Excel.Cells[i+PosInc+2,4] := Sum*1.18;

    Excel.Cells[i+PosInc+2,1] := SumToTxt(Format('%.2f', [Sum*1.18]));

    Excel.Visible := True;

  except

     Продолжение приложения Б 

    Excel.Quit;

  end;

end; 

//Формирование  книги продаж:

procedure Rep_SellBook(DateFrom, DateTo: TDate);

var Excel: Variant;

    WorkbookName: string;

    i, PosInc: Integer;

    Sum: Currency;

begin

  //Фильтрация  данных по расходу товара по  диапазону дат:

  DM.tbRealiz.Filter := '(DDate >= ' + QuotedStr(DateToStr(DateFrom)) + ')' +

    ' and (DDate <= ' + QuotedStr(DateToStr(DateTo)) + ')';

  DM.tbRealiz.Filtered := True; 

  //Шаблон хранится в папке Шаблоны:

  WorkbookName := GetCurrentDir + '\Шаблоны\Книга продаж.xlt';

  Excel := CreateOleObject('Excel.Application');

  try

    Excel.Workbooks.Open(WorkbookName);

    //Экспорт данных из таблиц БД:

    PosInc := 15;

    Sum := 0; //Сумма Итого

    with DM do begin

      Excel.Cells[6,2] := DM.tbRequisitName.AsString;

      Excel.Cells[8,1] := string(Excel.Cells[8,1]) + DateToStr(DateFrom) + ' по ' +

        DateToStr(DateTo); 

      //Экспорт в таблицу списка товаров по расходу:

      tbRealiz.First;

      i := 0;

      while not tbRealiz.Eof do begin

        //Добавление новой строки:

        if i <> 0 then begin

          Excel.Rows.Item[PosInc+i].Select;

          Excel.Selection.Insert;

          Excel.Rows.Item[PosInc].Select;

          Excel.Selection.Copy;

          Excel.Rows.Item[PosInc+i].Select;

          Excel.ActiveSheet.Paste;

          Excel.Application.CutCopyMode := False;

          end;

     Продолжение приложения Б 

        //Экспорт данных:

        Excel.Cells[i+PosInc,1] := FormatFloat('00000', tbRealizID.AsFloat) +

          ' ' + tbRealizDDate.AsString;

        Excel.Cells[i+PosInc,5] := tbRealizDDate.AsString;

        Excel.Cells[i+PosInc,6] := tbRealizSum.AsCurrency;

        Excel.Cells[i+PosInc,7] := tbRealizSum.AsCurrency/1.18;

        Excel.Cells[i+PosInc,8] := tbRealizSum.AsCurrency/118*18;

        Sum := Sum + tbRealizSum.AsCurrency;

        Inc(i);

        tbRealiz.Next;

        end;

      end; //with

    Excel.Cells[i+PosInc,6] := Sum;

    Excel.Cells[i+PosInc,7] := Sum/1.18;

    Excel.Cells[i+PosInc,8] := Sum/118*18;

    Excel.Visible := True;

  except

    Excel.Quit;

  end;

end; 

//Формирование книги покупок:

procedure Rep_PurchBook(DateFrom, DateTo: TDate);

var Excel: Variant;

    WorkbookName: string;

    i, PosInc: Integer;

    Sum: Currency;

begin

  //Фильтрация  данных по расходу товара по  диапазону дат:

  DM.tbIncome.Filter := '(DDate >= ' + QuotedStr(DateToStr(DateFrom)) + ')' +

    ' and (DDate <= ' + QuotedStr(DateToStr(DateTo)) + ')';

  DM.tbIncome.Filtered := True; 

  //Шаблон хранится в папке Шаблоны:

  WorkbookName := GetCurrentDir + '\Шаблоны\Книга покупок.xlt';

  Excel := CreateOleObject('Excel.Application');

  try

    Excel.Workbooks.Open(WorkbookName);

    //Экспорт данных из таблиц БД:

    PosInc := 15;

    Sum := 0; //Сумма Итого

    with DM do begin

      Excel.Cells[6,3] := DM.tbRequisitName.AsString;

     Продолжение приложения Б 

      Excel.Cells[8,1] := string(Excel.Cells[8,1]) + DateToStr(DateFrom) + ' по ' +

        DateToStr(DateTo); 

      //Экспорт в таблицу списка  товаров по расходу:

      tbIncome.First;

      i := 0;

      while not tbIncome.Eof do begin

        //Добавление новой строки:

        if i <> 0 then begin

          Excel.Rows.Item[PosInc+i].Select;

          Excel.Selection.Insert;

          Excel.Rows.Item[PosInc].Select;

          Excel.Selection.Copy;

          Excel.Rows.Item[PosInc+i].Select;

          Excel.ActiveSheet.Paste;

          Excel.Application.CutCopyMode := False;

          end;

        //Экспорт данных:

        Excel.Cells[i+PosInc,1] := i+1;

        Excel.Cells[i+PosInc,2] := FormatFloat('00000', tbIncomeID.AsFloat) +

          ' ' + tbIncomeDDate.AsString;

        Excel.Cells[i+PosInc,3] := tbIncomeDDate.AsString;

        Excel.Cells[i+PosInc,4] := tbIncomeDDate.AsString;

        Excel.Cells[i+PosInc,9] := tbIncomeSum.AsCurrency;

        Excel.Cells[i+PosInc,10] := tbIncomeSum.AsCurrency/1.18;

        Excel.Cells[i+PosInc,11] := tbIncomeSum.AsCurrency/118*18;

        Sum := Sum + tbIncomeSum.AsCurrency;

        Inc(i);

        tbIncome.Next;

        end;

      end; //with

    Excel.Cells[i+PosInc,9] := Sum;

    Excel.Cells[i+PosInc,10] := Sum/1.18;

    Excel.Cells[i+PosInc,11] := Sum/118*18;

    Excel.Visible := True;

  except

    Excel.Quit;

  end;

end; 

end. 
 

     Продолжение приложения Б 

unit uRequisit; 

interface 

uses

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

  Dialogs, StdCtrls, Mask, DBCtrls, Buttons, DB; 

type

  TfmRequisit = class(TForm)

    Label1: TLabel;

    DBEdit1: TDBEdit;

    Label2: TLabel;

    DBEdit2: TDBEdit;

    Label3: TLabel;

    DBEdit3: TDBEdit;

    Label4: TLabel;

    DBEdit4: TDBEdit;

    Label5: TLabel;

    DBEdit5: TDBEdit;

    Label6: TLabel;

    DBEdit6: TDBEdit;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    procedure BitBtn1Click(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end; 

var

  fmRequisit: TfmRequisit; 

implementation 

uses uDM; 

{$R *.dfm} 

procedure TfmRequisit.BitBtn1Click(Sender: TObject);

begin

     Продолжение приложения Б 

  if DM.tbRequisit.State in [dsInsert, dsEdit] then

    DM.tbRequisit.Post;

end; 

procedure TfmRequisit.BitBtn2Click(Sender: TObject);

begin

  if DM.tbRequisit.State in [dsInsert, dsEdit] then

    DM.tbRequisit.Cancel;

end; 

end. 
 

unit uStore; 

interface 

uses

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

  Dialogs, StdCtrls, DBCtrls, Buttons, ExtCtrls, Grids, DBGrids; 

type

  TfmStore = class(TForm)

    DBGrid1: TDBGrid;

    Panel1: TPanel;

    DBNavigator1: TDBNavigator;

    bbtClose: TBitBtn;

    bbtGroup: TBitBtn;

    bbtGo: TBitBtn;

    bbtGoods: TBitBtn;

    bbtStore: TBitBtn;

    GroupBox1: TGroupBox;

    dblcbGroupName: TDBLookupComboBox;

    CheckBox1: TCheckBox;

    CheckBox3: TCheckBox;

    edName: TEdit;

    procedure CheckBox1Click(Sender: TObject);

    procedure DBGrid1TitleClick(Column: TColumn);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

     Продолжение приложения Б 

var

  fmStore: TfmStore; 

implementation 

uses uDM, uMain; 

{$R *.dfm} 

//Отбор товара  по выбранной группе и производителю:

procedure TfmStore.CheckBox1Click(Sender: TObject);

var Filter: string;

begin

  Filter := '';

  if (CheckBox1.Checked) and (dblcbGroupName.KeyValue<>Null) then

    Filter := '(GroupID = ' + IntToStr(dblcbGroupName.KeyValue) + ')';

  if (CheckBox3.Checked) and (edName.Text<>'') then begin

    if Filter <> '' then

      Filter := Filter + ' and ';

    Filter := Filter + '(Name = ' + QuotedStr(edName.Text + '*') + ')';

    end; 

  if Filter <> '' then begin

    DM.qrStore.Filter := Filter;

    DM.qrStore.Filtered := True;

    end

  else

    DM.qrStore.Filtered := False;

end; 

//Сортировка  данных по выбранному столбцу:

procedure TfmStore.DBGrid1TitleClick(Column: TColumn);

begin

  //По столбцу  Итого сортировать нельзя, т.к.  поле Sum - вычисляемое:

  if Column.FieldName <> 'Sum' then begin

    DM.qrStore.SQL[8] := 'ORDER BY ' + Column.FieldName;

    DM.qrStore.Open;

    end;

end; 

end. 
 

     Продолжение приложения Б 

unit uSumToStr;

//Модуль для  перевода числового представления  суммы в строковое 

interface 

uses

SysUtils, StrUtils; 

function SumToTxt(Value: String) : string; //Функция для перевода (аргумент - строка, содержащая сумму) 

implementation 

const a:array[0..8,0..9] of string=(

('','один ','два  ','три ','четыре ','пять ','шесть ','семь ','восемь ','девять '),

Информация о работе Разработка автоматизированной системы управления учета и товара оптового магазина