Автор: Пользователь скрыл имя, 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 Охрана окружающей среды
Заключение
Список использованных источников
Приложение А Выходные формы документов
Приложение Б Исходный код модуля главного окна программы
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(
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.
try
Excel.Workbooks.Open(
//Экспорт данных из таблиц БД:
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')
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').
Excel.Cells[j,11] := Table.FieldByName('Unit').
if Table = tbGoods then begin
Excel.Cells[j,1] := FormatFloat('00000', Table.FieldByName('ID').
Excel.Cells[j,12] := Table.FieldByName('
end
else begin
Excel.Cells[j,1] := FormatFloat('00000', Table.FieldByName('GoodsID').
Excel.Cells[j,12] := Table.FieldByName('Quantity').
Excel.Cells[j,13] := Table.FieldByName('Price').
Excel.Cells[j,14] := Table.FieldByName('Price').
Sum := Sum + Table.FieldByName('Price').
Table.FieldByName('Quantity').
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.
try
Excel.Workbooks.Open(
//Экспорт данных из таблиц БД:
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].
Excel.Selection.Insert;
Excel.Rows.Item[PosInc].
Excel.Selection.Copy;
Excel.Rows.Item[PosInc+i].
Продолжение
приложения Б
Excel.ActiveSheet.Paste;
Excel.Application.CutCopyMode := False;
end;
//Экспорт данных:
Excel.Cells[i+PosInc,1] := i+1;
Excel.Cells[i+PosInc,2] := tbRealizComp.FieldByName('
Excel.Cells[i+PosInc,10] := tbRealizComp.FieldByName('
Excel.Cells[i+PosInc,11] := tbRealizComp.FieldByName('
Excel.Cells[i+PosInc,12] := tbRealizComp.FieldByName('
Excel.Cells[i+PosInc,13] := tbRealizComp.FieldByName('
Sum := Sum + tbRealizComp.FieldByName('
tbRealizComp.FieldByName('
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.
try
Excel.Workbooks.Open(
Продолжение
приложения Б
//Экспорт данных из таблиц БД:
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].
Excel.Selection.Insert;
Excel.Rows.Item[PosInc].
Excel.Selection.Copy;
Excel.Rows.Item[PosInc+i].
Excel.ActiveSheet.Paste;
Excel.Application.CutCopyMode := False;
end;
//Экспорт данных: