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

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

fmMain.BitBtn8.Enabled:=True ; 

if ((Edit1.Text='Admin') or (Edit1.Text='admin')) and ((Edit2.Text='Arman') or (Edit2.Text='arman'))  then

fmMain.ActionMainMenuBar1.Enabled:=True ;

end;

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

end.

unit uRealiz; 

interface 

uses

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

  Dialogs, ExtCtrls, StdCtrls, Mask, DBCtrls, ComCtrls, Buttons, Grids,

  DBGrids, DB, ComObj; 

type

  TfmRealiz = class(TForm)

    Panel1: TPanel;

    Label1: TLabel;

    DBEdit1: TDBEdit;

    Label2: TLabel;

    dtpDate: TDateTimePicker;

    DBGrid1: TDBGrid;

    Panel2: TPanel;

    bbtClose: TBitBtn;

    bbtOK: TBitBtn;

    Label3: TLabel;

    edItogo: TEdit;

    Label4: TLabel;

    bbtGoods: TBitBtn;

    bbtBill: TBitBtn;

    bbtNakl: TBitBtn;

    bbtCheck: TBitBtn;

    DBNavigator1: TDBNavigator;

    Label5: TLabel;

    dblcbContr: TDBLookupComboBox;

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    procedure bbtOKClick(Sender: TObject);

    procedure DBGrid1EditButtonClick(Sender: TObject);

    procedure CalcSum;

    procedure FormShow(Sender: TObject);

    procedure bbtBillClick(Sender: TObject);

    procedure bbtNaklClick(Sender: TObject);

    procedure bbtCheckClick(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

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

  end; 

var

  fmRealiz: TfmRealiz; 

implementation 

uses uDM, uMain, uStore, uRep; 

{$R *.dfm} 

//Функция осуществляет  подсчет итоговой суммы по расходу с заданным шифром:

procedure TfmRealiz.CalcSum;

begin

  DM.qrRealizSum.Close;

  DM.qrRealizSum.ParamByName('pRealizID').AsInteger := DM.tbRealiz.FieldByName('ID').AsInteger;

  DM.qrRealizSum.Open;

  fmRealiz.edItogo.Text := Format('%m', [DM.qrRealizSum.FieldByName('Itogo').AsCurrency]);

end; 

procedure TfmRealiz.FormClose(Sender: TObject; var Action: TCloseAction);

begin

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

    DM.tbRealizComp.Cancel;

  if DM.tbRealiz.State = dsEdit then

    DM.tbRealiz.Cancel;

  //Если пользователь  закрыл форму или нажал кнопку  Отмена, то все введенные

  //данные  удаляются завершением транзакции:

  if DM.Database1.InTransaction then

    DM.Database1.Rollback; 

  DM.tbRealiz.Refresh;

  DM.tbContrag.Filtered := False;

end; 

//Сохранение  введенных данных о расходе:

procedure TfmRealiz.bbtOKClick(Sender: TObject); 

//Для каждой  записи таблицы расхода товара  изменяем количество

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

//соответствующего  товара на складе (табло приход). Продажа товара ведется

//по принципу FIFO (первый в приходе - первый  в расходе):

procedure RealizIncome;

var Quantity: Integer;

begin

  with DM do begin

    tbRealizComp.First;

    while not tbRealizComp.Eof do begin

      Quantity := tbRealizCompQuantity.AsInteger; //Кол-во проданного товара

      //Отбор всех записей о приходе текущего товара, при условии, что этот

      // товар еще не продан:

      qrStoreFree.Close;

      qrStoreFree.ParamByName('pGoodsID').AsInteger := tbRealizCompGoodsID.AsInteger;

      qrStoreFree.Open;

      //По окончании цикла все кол-во  проданного товара учитывается  в 

      // таблице прихода (склад):

      repeat

        qrStoreFree.Edit;

        //Если по текущей записи о  приходе товара кол-во >= проданного:

        if qrStoreFree.FieldByName('QuantityInc').AsInteger -

           qrStoreFree.FieldByName('QuantityRealiz').AsInteger >= Quantity then begin

          qrStoreFree.FieldByName('QuantityRealiz').AsInteger :=

            qrStoreFree.FieldByName('QuantityRealiz').AsInteger + Quantity;

          Quantity := 0;

          end

        //Если по текущей записи о  приходе товара кол-во < проданного:

        else begin

          Quantity := Quantity -

                      (qrStoreFree.FieldByName('QuantityInc').AsInteger -

                       qrStoreFree.FieldByName('QuantityRealiz').AsInteger);

          qrStoreFree.FieldByName('QuantityRealiz').AsInteger :=

            qrStoreFree.FieldByName('QuantityInc').AsInteger;

          end;

        qrStoreFree.Post;

      until Quantity = 0; 

      tbRealizComp.Next;

      end;

    end; //with 

end; 

begin

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

  with DM do begin

    if tbRealizComp.State in [dsEdit, dsInsert] then

      tbRealizComp.Post; 

    if tbRealizComp.RecordCount = 0 then

      Application.MessageBox('Не указано ни одного товара в расход!',

        'Ошибка', MB_OK + MB_ICONERROR)

    else begin

      //Если пользователь указал не  текущую дату в качестве даты расхода, изменяем ее:

      if dtpDate.Date <> tbRealizDDate.AsDateTime then begin

        tbRealiz.Edit;

        tbRealizDDate.AsDateTime := dtpDate.Date;

        tbRealiz.Post;

        end; 

      RealizIncome; 

      //Завершение транзакции с сохранением  всех введенных данных по приходу:

      if Database1.InTransaction then

        Database1.Commit;

      Close;

      end; //else if tbRealizComp.RecordCount = 0

    end; //with

end; 

//При щелчке  по кнопке "..." в ячейке "Артикул"  в DBGrid1 на экран 

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

procedure TfmRealiz.DBGrid1EditButtonClick(Sender: TObject);

begin

  fmStore.bbtGo.Caption := 'К форме реализации';

  fmStore.bbtGo.Visible := True;

  if fmStore.ShowModal = mrOK then begin

    if not (DM.tbRealizComp.State in [dsEdit, dsInsert]) then

      DM.tbRealizComp.Edit;

    DM.tbRealizCompGoodsID.Value := DM.qrStoreGoodsID.Value;

    end;

  fmStore.bbtGo.Visible := False;

end; 

procedure TfmRealiz.FormShow(Sender: TObject);

begin

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

  CalcSum;

  //В списке  контрагентов доступны только  клиенты:

  DM.tbContrag.Filter := 'ContrType = False';

  DM.tbContrag.Filtered := True;

end; 

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

procedure TfmRealiz.bbtBillClick(Sender: TObject);

begin

  Rep_Bill('Счет');

end; 

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

procedure TfmRealiz.bbtNaklClick(Sender: TObject);

begin

  Rep_Bill('Накладная');

end; 

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

procedure TfmRealiz.bbtCheckClick(Sender: TObject);

begin

  Rep_Check;

end; 

end. 
 

unit uRealizAll; 

interface 

uses

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

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

type

  TfmRealizAll = class(TForm)

    DBGrid1: TDBGrid;

    Panel2: TPanel;

    DBGrid2: TDBGrid;

    Panel1: TPanel;

    DBNavigator1: TDBNavigator;

    GroupBox1: TGroupBox;

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

    CheckBox1: TCheckBox;

    CheckBox2: TCheckBox;

    dtpDateFrom: TDateTimePicker;

    dtpDateTo: TDateTimePicker;

    bbtClose: TBitBtn;

    DBNavigator2: TDBNavigator;

    bbtRealiz: TBitBtn;

    bbtSellBook: TBitBtn;

    procedure CheckBox1Click(Sender: TObject);

    procedure bbtRealizClick(Sender: TObject);

    procedure FormShow(Sender: TObject);

    procedure bbtSellBookClick(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end; 

var

  fmRealizAll: TfmRealizAll; 

implementation 

uses uDM, uRealiz, DB, uDiapason, uRep; 

{$R *.dfm} 

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

procedure TfmRealizAll.CheckBox1Click(Sender: TObject);

var Filter: string;

begin

  Filter := '';

  if CheckBox1.Checked then

    Filter := '(DDate >= ' + QuotedStr(DateToStr(dtpDateFrom.Date)) + ')';

  if CheckBox2.Checked then begin

    if Filter <> '' then

      Filter := Filter + ' and ';

    Filter := Filter + '(DDate <= ' + QuotedStr(DateToStr(dtpDateTo.Date)) + ')';

    end; 

  if (CheckBox1.Checked) or (CheckBox2.Checked) then begin

    DM.tbRealiz.Filter := Filter;

    DM.tbRealiz.Filtered := True;

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

    end

  else

    DM.tbRealiz.Filtered := False;

end; 

//Просмотр информации  о выбранном расходе:

procedure TfmRealizAll.bbtRealizClick(Sender: TObject);

begin

  //Форма расхода  отображается в режиме только  для чтения:

  with fmRealiz do begin

    bbtOK.Visible := False;

    dtpDate.Date := DM.tbRealizDDate.AsDateTime;

    dtpDate.Enabled := False;

    DBGrid1.ReadOnly := True;

    DBGrid2.ReadOnly := True;

    dblcbContr.ReadOnly := True;

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

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

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

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

    DBNavigator1.VisibleButtons := [nbFirst,nbPrior,nbNext,nbLast];

    ShowModal;

    DBNavigator1.VisibleButtons := [nbFirst,nbPrior,nbNext,nbLast,nbInsert,nbDelete,nbEdit,nbPost,nbCancel,nbRefresh];

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