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

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

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

  Dialogs, StdCtrls, ComCtrls, Buttons; 

type

  TfmDiapason = class(TForm)

    Label1: TLabel;

    Label2: TLabel;

    dtpDateFrom: TDateTimePicker;

    dtpDateTo: TDateTimePicker;

    bbtCancel: TBitBtn;

    bbtOK: TBitBtn;

  private

    { Private declarations }

  public

    { Public declarations }

  end;

  function GetDiapason(var DateFrom, DateTo: TDate): Boolean; 

var

  fmDiapason: TfmDiapason; 

implementation 

{$R *.dfm} 

//Функция возвращает  диапазон дат, заданный пользователем:

function GetDiapason(var DateFrom, DateTo: TDate): Boolean;

begin

  fmDiapason.dtpDateFrom.Date := DateFrom;

  fmDiapason.dtpDateTo.Date := DateTo;

  if fmDiapason.ShowModal = mrOK then begin

    DateFrom := fmDiapason.dtpDateFrom.Date;

    DateTo := fmDiapason.dtpDateTo.Date;

    Result := True;

    end

  else

    Result := False;

end; 

end. 
 

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

unit uDM; 

interface 

uses

  SysUtils, Classes, DB, DBTables, Variants, Forms, Windows; 

type

  TDM = class(TDataModule)

    Database1: TDatabase;

    tbGoodsGroup: TTable;

    dsGoodsGroup: TDataSource;

    tbGoodsGroupID: TAutoIncField;

    tbGoodsGroupTypeName: TStringField;

    tbGoods: TTable;

    dsGoods: TDataSource;

    tbGoodsID: TAutoIncField;

    tbGoodsGroupID2: TFloatField;

    tbGoodsName: TStringField;

    tbGoodsUnit: TStringField;

    tbGoodsPricePurch: TCurrencyField;

    tbGoodsPriceRealiz: TCurrencyField;

    tbGoodsGroup2: TStringField;

    tbIncome: TTable;

    dsIncome: TDataSource;

    tbIncomeID: TAutoIncField;

    tbIncomeDDate: TDateField;

    tbIncomeComp: TTable;

    dsIncomeComp: TDataSource;

    tbIncomeCompID: TAutoIncField;

    tbIncomeCompIncomeID: TFloatField;

    tbIncomeCompGoodsID: TFloatField;

    tbIncomeCompQuantityInc: TFloatField;

    tbIncomeCompQuantityRealiz: TFloatField;

    tbIncomeCompPricePurch: TCurrencyField;

    tbIncomeCompGoodsName: TStringField;

    tbIncomeCompGoodsUnit: TStringField;

    tbIncomeCompGoodsIDList: TIntegerField;

    tbIncomeSum: TCurrencyField;

    tbIncomeCompSum: TCurrencyField;

    qrIncomeSum: TQuery;

    qrStore: TQuery; 

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

    dsStore: TDataSource;

    qrStoreGoodsID: TFloatField;

    qrStoreName: TStringField;

    qrStoreUnit: TStringField;

    qrStoreQuantity: TFloatField;

   qrStoreGroupID: TFloatField;

    qrStoreTypeName: TStringField;

    qrStorePrice: TCurrencyField;

    qrStoreSum: TCurrencyField;

    tbRealiz: TTable;

    dsRealiz: TDataSource;

    tbRealizComp: TTable;

    AutoIncField2: TAutoIncField;

    tbRealizCompGoodsID: TFloatField;

    tbRealizCompGoodsName: TStringField;

    tbRealizCompGoodsUnit: TStringField;

    tbRealizCompGoodsIDList: TIntegerField;

    tbRealizCompSum: TCurrencyField;

    dsRealizComp: TDataSource;

    tbRealizCompRealizID: TFloatField;

    tbRealizCompQuantity: TFloatField;

    tbRealizCompPriceRealiz: TCurrencyField;

    qrRealizSum: TQuery;

    tbRealizID: TAutoIncField;

    tbRealizDDate: TDateField;

    tbRealizSum: TCurrencyField;

    qrStoreFree: TQuery;

    tbRealizComp2: TTable;

    AutoIncField1: TAutoIncField;

    FloatField1: TFloatField;

    FloatField2: TFloatField;

    FloatField3: TFloatField;

    CurrencyField1: TCurrencyField;

    dsRealizComp2: TDataSource;

    qrStoreSold: TQuery;

    qrStoreFreeID: TAutoIncField;

    qrStoreFreeIncomeID: TFloatField;

    qrStoreFreeGoodsID: TFloatField;

    qrStoreFreeQuantityInc: TFloatField;

    qrStoreFreeQuantityRealiz: TFloatField;

    qrStoreFreePricePurch: TCurrencyField;

    dsContrag: TDataSource;

    tbContrag: TTable;

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

    tbContragID: TAutoIncField;

    tbContragName: TStringField;

    tbContragContrType: TBooleanField;

    tbContragOrganiz: TBooleanField;

    tbContragAdress: TStringField;

    tbContragPhone: TStringField;

    tbContragPassport: TStringField;

    tbContragBank: TStringField;

    tbContragINN: TStringField;

    tbContragKPP: TStringField;

    dsRequisit: TDataSource;

    tbRequisit: TTable;

    tbRequisitName: TStringField;

    tbRequisitAdress: TStringField;

    tbRequisitPhone: TStringField;

    tbRequisitBank: TStringField;

    tbRequisitINN: TStringField;

    tbRequisitKPP: TStringField;

    tbIncomeContrID: TFloatField;

    tbRealizContrID: TFloatField;

    tbIncomeContrName: TStringField;

    tbRealizContrName: TStringField;

    dsContract: TDataSource;

    tbContract: TTable;

    tbContractNContr: TAutoIncField;

    tbContractContrID: TFloatField;

    tbContractDate1: TDateField;

    tbContractDate2: TDateField;

    tbContractInfo: TStringField;

    tbContractContrName: TStringField;

    procedure tbIncomeCompCalcFields(DataSet: TDataSet);

    procedure tbIncomeCompBeforePost(DataSet: TDataSet);

    procedure tbIncomeCompGoodsIDChange(Sender: TField);

    procedure tbIncomeCalcFields(DataSet: TDataSet);

    procedure tbIncomeCompAfterPost(DataSet: TDataSet);

    procedure qrStoreCalcFields(DataSet: TDataSet);

    procedure tbRealizCompCalcFields(DataSet: TDataSet);

    procedure tbRealizCompGoodsIDChange(Sender: TField);

    procedure tbRealizCompAfterPost(DataSet: TDataSet);

    procedure tbRealizCompQuantityValidate(Sender: TField);

    procedure tbRealizCompGoodsIDValidate(Sender: TField);

    procedure tbRealizCompPostError(DataSet: TDataSet; E: EDatabaseError;

      var Action: TDataAction);

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

    procedure tbRealizCalcFields(DataSet: TDataSet);

    procedure DataModuleCreate(Sender: TObject);

    procedure tbRealizCompBeforePost(DataSet: TDataSet);

  private

    { Private declarations }

  public

    { Public declarations }

  end; 

var

  DM: TDM; 

implementation 

uses uIncome, uRealiz, uStore; 

{$R *.dfm} 

//Подсчет суммы  для каждой позиции товара  в списке прихода:

procedure TDM.tbIncomeCompCalcFields(DataSet: TDataSet);

begin

  DataSet.FieldByName('Sum').AsCurrency :=

    DataSet.FieldByName('PricePurch').AsCurrency * DataSet.FieldByName('QuantityInc').AsCurrency;

end; 

//Подсчет итоговой  суммы по приходу:

procedure TDM.tbIncomeCalcFields(DataSet: TDataSet);

begin

  qrIncomeSum.Close;

  qrIncomeSum.ParamByName('pIncomeID').AsInteger := DataSet.FieldByName('ID').AsInteger;

  qrIncomeSum.Open;

  DataSet.FieldByName('Sum').AsCurrency := qrIncomeSum.FieldByName('Itogo').AsCurrency;

end; 

//Перед сохранением  новой позиции товара в приходе  кол-во реализованного товара=0:

procedure TDM.tbIncomeCompBeforePost(DataSet: TDataSet);

begin

  DataSet.FieldByName('QuantityRealiz').AsInteger := 0;

end;

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

//При выборе  товара в составе прихода обновляется  его цена:

procedure TDM.tbIncomeCompGoodsIDChange(Sender: TField);

begin

  tbIncomeComp.FieldByName('PricePurch').AsCurrency :=

    tbGoods.FieldByName('PricePurch').AsCurrency;

end; 

//Подсчет итоговой  суммы по приходу и вывод  ее на форму Приход:

procedure TDM.tbIncomeCompAfterPost(DataSet: TDataSet);

begin

  fmIncome.CalcSum;

end; 

procedure TDM.qrStoreCalcFields(DataSet: TDataSet);

begin

  DataSet.FieldByName('Sum').AsCurrency :=

    DataSet.FieldByName('Price').AsCurrency * DataSet.FieldByName('Quantity').AsCurrency;

end; 

//Подсчет суммы  для каждой позиции товара  в списке расхода:

procedure TDM.tbRealizCompCalcFields(DataSet: TDataSet);

begin

  DataSet.FieldByName('Sum').AsCurrency :=

    DataSet.FieldByName('PriceRealiz').AsCurrency * DataSet.FieldByName('Quantity').AsCurrency;

end; 

//При выборе  товара в составе расхода обновляется  его цена продажи:

procedure TDM.tbRealizCompGoodsIDChange(Sender: TField);

begin

  if tbGoods.Locate('ID', qrStoreGoodsID.AsInteger, []) then

    tbRealizComp.FieldByName('PriceRealiz').AsCurrency :=

      tbGoods.FieldByName('PriceRealiz').AsCurrency;

end; 

procedure TDM.tbRealizCompAfterPost(DataSet: TDataSet);

begin

  //Отмена  фильтрации данных по складу (при  фильтрации в списке товаров  в

  //расход  не отображаются товары, не входящие  в группу по фильтру):

  fmStore.CheckBox1.Checked := False;

  qrStore.Filtered := False;

  tbRealizComp.Refresh;

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

  //Подсчет  итоговой суммы по расходу  и вывод ее на форму Продажа  товара:

  fmRealiz.CalcSum;

end; 

//Проверка введенного  количества в каждой позиции  товара, введенной в

//составе расхода:

procedure TDM.tbRealizCompQuantityValidate(Sender: TField);

begin

  //Если введенное  количество превышает общий запас  товара заданного 

  // артикула на складе, то генерируется ошибка:

  if qrStore.Locate('GoodsID', tbRealizCompGoodsID.AsInteger, []) then

    if Sender.Value > qrStoreQuantity.AsInteger then begin

      Application.MessageBox('Введенное количество превышает запас на складе!',

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

      Abort;

      end;

end; 

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

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