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

Автор: Пользователь скрыл имя, 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 Мб (Скачать)

    DBGrid1.ReadOnly := False;

    DBGrid2.ReadOnly := False;

    dblcbContr.ReadOnly := False;

    DBGrid1.Columns[0].ButtonStyle := cbsEllipsis;

    DBGrid1.Columns[1].ButtonStyle := cbsAuto;

    DBGrid2.Columns[0].ButtonStyle := cbsEllipsis;

    DBGrid2.Columns[1].ButtonStyle := cbsAuto;

    dtpDate.Enabled := True;

    bbtOK.Visible := True;

    end;

end; 

procedure TfmRealizAll.FormShow(Sender: TObject);

begin

  dtpDateFrom.Date := Date;

  dtpDateTo.Date := Date;

end; 

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

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

procedure TfmRealizAll.bbtSellBookClick(Sender: TObject);

var DateFrom, DateTo: TDate;

begin

  //По умолчанию (если на форме не задан диапазон дат) книга продаж

  // формируется в диапазоне "дата первого расхода"..."дата последнего //расхода":

  if CheckBox1.Checked then

    DateFrom := dtpDateFrom.Date

  else begin

    DM.tbRealiz.First;

    DateFrom := DM.tbRealizDDate.AsDateTime;

    end;

  if CheckBox2.Checked then

    DateTo := dtpDateTo.Date

  else begin

    DM.tbRealiz.Last;

    DateTo := DM.tbRealizDDate.AsDateTime;

    end; 

  if GetDiapason(DateFrom, DateTo) then

    Rep_SellBook(DateFrom, DateTo);

end; 

end. 
 

unit uRep;

//Модуль для  формирования отчетов и документов 

interface

uses

  Windows, SysUtils, Classes, ComObj, DB, Controls; 

procedure Rep_Price_Store(Form: string; Table: TDataSet);

procedure Rep_Bill(Form: string);

procedure Rep_Check;

procedure Rep_SellBook(DateFrom, DateTo: TDate);

procedure Rep_PurchBook(DateFrom, DateTo: TDate); 

implementation

uses

  uGoods, uDM, uStore, uSumToStr;

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

//Процедура формирует  отчет по товару на складе (в  наличии), либо прайс-

// лист в зависимости от переданного в качестве аргумента набора данных:

procedure Rep_Price_Store(Form: string; Table: TDataSet);

var Excel: Variant;

    WorkbookName: string;

    i, j: Integer;

    Sum: Currency;

begin

  //Отключаем  сетку на время формирования  отчета:

  if fmGoods.Showing then

    DM.dsGoods.Enabled := False;

  if fmStore.Showing then

    DM.dsStore.Enabled := False;

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

  WorkbookName := GetCurrentDir + '\Шаблоны\' + Form + '.xlt';

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

  try

    Excel.Workbooks.Open(WorkbookName);

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

    i := 5;

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

    with DM do begin

      Excel.Cells[1,1] := Date;

      Excel.Cells[1,8] := DM.tbRequisitName.AsString; 

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

      tbGoodsGroup.First;

      //Цикл по группам товаров:

      while not tbGoodsGroup.Eof do begin

        Table.Filter := 'GroupID = ' + tbGoodsGroup.FieldByName('ID').AsString;

        Table.Filtered := True; 

        //Если в текущей группе есть товары:

        if Table.RecordCount>0 then begin

          //Добавление новой строки для  имени группы товара:

          if i > 5 then begin

            Excel.Rows.Item[5].Select;

            Excel.Selection.Copy;

            Excel.Rows.Item[i].Select;

            Excel.ActiveSheet.Paste;

            Excel.Application.CutCopyMode := False;

            end; 

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

          Excel.Cells[i,1] := tbGoodsGroupTypeName.AsString;;

          Inc(i); 

          Table.First;

          //Цикл по товарам в текущей группе:

          for j:=i to Table.RecordCount+i-1 do begin

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

            Excel.Rows.Item[6].Select;

            Excel.Selection.Copy;

            Excel.Rows.Item[j].Select;

           Excel.ActiveSheet.Paste;

            Excel.Application.CutCopyMode := False;

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

            Excel.Cells[j,2] := Table.FieldByName('Name').AsString;

            Excel.Cells[j,11] := Table.FieldByName('Unit').AsString;

           if Table = tbGoods then begin

              Excel.Cells[j,1] := FormatFloat('00000', Table.FieldByName('ID').AsFloat);

              Excel.Cells[j,12] := Table.FieldByName('PriceRealiz').AsCurrency

              end

            else begin

              Excel.Cells[j,1] := FormatFloat('00000', Table.FieldByName('GoodsID').AsFloat);

              Excel.Cells[j,12] := Table.FieldByName('Quantity').AsInteger;

              Excel.Cells[j,13] := Table.FieldByName('Price').AsCurrency;

              Excel.Cells[j,14] := Table.FieldByName('Price').AsCurrency *

                                   Table.FieldByName('Quantity').AsInteger;

              Sum := Sum + Table.FieldByName('Price').AsCurrency *

                     Table.FieldByName('Quantity').AsInteger;

              end;

            Table.Next;

            i := j+1;

            end; //for

          end; //if Table.RecordCount>0

        tbGoodsGroup.Next;

        end; //while not tbGoodsGroup.Eof 

      Table.Filtered := False;

      end; //with

    if Table = DM.qrStore then begin

      Excel.Cells[i+1,13] := 'Итого:';

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

      end;

    Excel.Visible := True;

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

  except

    Excel.Quit;

  end;

  //Отключаем  сетку на время формирования  отчета:

  if fmGoods.Showing then

    DM.dsGoods.Enabled := True;

  if fmStore.Showing then

    DM.dsStore.Enabled := True;

end; 

//Формирование  счета, либо расходной накладной:

procedure Rep_Bill(Form: string);

var Excel: Variant;

    WorkbookName: string;

    i, PosInc: Integer;

    Sum: Currency;

begin

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

  WorkbookName := GetCurrentDir + '\Шаблоны\' + Form + '.xlt';

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

  try

    Excel.Workbooks.Open(WorkbookName);

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

    PosInc := 8;

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

    with DM do begin

      Excel.Cells[1,8] := DM.tbRequisitName.AsString;

      Excel.Cells[2,8] := DM.tbRequisitAdress.AsString;

      Excel.Cells[3,2] := FormatFloat('00000', tbRealizID.AsFloat);

      Excel.Cells[4,2] := tbRealizDDate.AsString;

      Excel.Cells[5,4] := tbRealizContrName.AsString; 

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

      tbRealizComp.First;

      i := 0;

      while not tbRealizComp.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] := tbRealizComp.FieldByName('GoodsName').AsString;

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

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

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

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

                                    tbRealizComp.FieldByName('Quantity').AsInteger;

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

                     tbRealizComp.FieldByName('Quantity').AsInteger;

        Inc(i);

        tbRealizComp.Next;

        end;

      end; //with

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

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

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

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

    Excel.Visible := True;

  except

    Excel.Quit;

  end;

end; 

//Формирование  товарного чека:

procedure Rep_Check;

var Excel: Variant;

    WorkbookName: string;

    i, PosInc: Integer;

    Sum: Currency;

begin

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

  WorkbookName := GetCurrentDir + '\Шаблоны\Чек.xlt';

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

  try

    Excel.Workbooks.Open(WorkbookName);

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

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

    PosInc := 8;

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

    with DM do begin

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

      Excel.Cells[2,1] := DM.tbRequisitAdress.AsString;

      Excel.Cells[4,2] := FormatFloat('00000', tbRealizID.AsFloat);

      Excel.Cells[5,2] := tbRealizDDate.AsString;

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

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

      tbRealizComp.First;

      i := 0;

      while not tbRealizComp.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;

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

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