Автор: Пользователь скрыл имя, 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 Охрана окружающей среды
Заключение
Список использованных источников
Приложение А Выходные формы документов
Приложение Б Исходный код модуля главного окна программы
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(
procedure
tbIncomeCompBeforePost(
procedure
tbIncomeCompGoodsIDChange(
procedure tbIncomeCalcFields(DataSet: TDataSet);
procedure tbIncomeCompAfterPost(DataSet: TDataSet);
procedure qrStoreCalcFields(DataSet: TDataSet);
procedure
tbRealizCompCalcFields(
procedure
tbRealizCompGoodsIDChange(
procedure tbRealizCompAfterPost(DataSet: TDataSet);
procedure
tbRealizCompQuantityValidate(
procedure
tbRealizCompGoodsIDValidate(
procedure tbRealizCompPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
Продолжение
приложения Б
procedure tbRealizCalcFields(DataSet: TDataSet);
procedure DataModuleCreate(Sender: TObject);
procedure
tbRealizCompBeforePost(
private
{ Private declarations }
public
{ Public declarations }
end;
var
DM: TDM;
implementation
uses uIncome, uRealiz, uStore;
{$R *.dfm}
//Подсчет суммы для каждой позиции товара в списке прихода:
procedure TDM.tbIncomeCompCalcFields(
begin
DataSet.FieldByName('Sum').
DataSet.FieldByName('
end;
//Подсчет итоговой суммы по приходу:
procedure TDM.tbIncomeCalcFields(
begin
qrIncomeSum.Close;
qrIncomeSum.ParamByName('
qrIncomeSum.Open;
DataSet.FieldByName('Sum').
end;
//Перед сохранением
новой позиции товара в
procedure TDM.tbIncomeCompBeforePost(
begin
DataSet.FieldByName('
end;
Продолжение
приложения Б
//При выборе
товара в составе прихода
procedure TDM.tbIncomeCompGoodsIDChange(
begin
tbIncomeComp.FieldByName('
tbGoods.FieldByName('
end;
//Подсчет итоговой суммы по приходу и вывод ее на форму Приход:
procedure TDM.tbIncomeCompAfterPost(
begin
fmIncome.CalcSum;
end;
procedure TDM.qrStoreCalcFields(DataSet: TDataSet);
begin
DataSet.FieldByName('Sum').
DataSet.FieldByName('Price').
end;
//Подсчет суммы для каждой позиции товара в списке расхода:
procedure TDM.tbRealizCompCalcFields(
begin
DataSet.FieldByName('Sum').
DataSet.FieldByName('
end;
//При выборе
товара в составе расхода
procedure TDM.tbRealizCompGoodsIDChange(
begin
if tbGoods.Locate('ID', qrStoreGoodsID.AsInteger, []) then
tbRealizComp.FieldByName('
tbGoods.FieldByName('
end;
procedure TDM.tbRealizCompAfterPost(
begin
//Отмена фильтрации данных по складу (при фильтрации в списке товаров в
//расход не отображаются товары, не входящие в группу по фильтру):
fmStore.CheckBox1.Checked := False;
qrStore.Filtered := False;
tbRealizComp.Refresh;
Продолжение
приложения Б
//Подсчет итоговой суммы по расходу и вывод ее на форму Продажа товара:
fmRealiz.CalcSum;
end;
//Проверка введенного количества в каждой позиции товара, введенной в
//составе расхода:
procedure TDM.
begin
//Если введенное
количество превышает общий
// артикула на складе, то генерируется ошибка:
if qrStore.Locate('GoodsID', tbRealizCompGoodsID.AsInteger, []) then
if Sender.Value > qrStoreQuantity.AsInteger then begin
Application.MessageBox('
'Ошибка', MB_OK + MB_ICONERROR);
Abort;
end;
end;
//Перед сохранением очередной позиции товара в расходе выполняется