Автор: Пользователь скрыл имя, 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 Охрана окружающей среды
Заключение
Список использованных источников
Приложение А Выходные формы документов
Приложение Б Исходный код модуля главного окна программы
Excel.Cells[i+PosInc,1] := tbRealizComp.FieldByName('
Excel.Cells[i+PosInc,2] := tbRealizComp.FieldByName('
Excel.Cells[i+PosInc,3] := tbRealizComp.FieldByName('
Sum := Sum + tbRealizComp.FieldByName('
tbRealizComp.FieldByName('
Inc(i);
tbRealizComp.Next;
end;
end; //with
Excel.Cells[i+PosInc,4] := Sum;
Excel.Cells[i+PosInc+1,4] := Sum*0.18;
Excel.Cells[i+PosInc+2,4] := Sum*1.18;
Excel.Cells[i+PosInc+2,1] := SumToTxt(Format('%.2f', [Sum*1.18]));
Excel.Visible := True;
except
Продолжение
приложения Б
Excel.Quit;
end;
end;
//Формирование книги продаж:
procedure Rep_SellBook(DateFrom, DateTo: TDate);
var Excel: Variant;
WorkbookName: string;
i, PosInc: Integer;
Sum: Currency;
begin
//Фильтрация данных по расходу товара по диапазону дат:
DM.tbRealiz.Filter := '(DDate >= ' + QuotedStr(DateToStr(DateFrom)) + ')' +
' and (DDate <= ' + QuotedStr(DateToStr(DateTo)) + ')';
DM.tbRealiz.Filtered
:= True;
//Шаблон хранится в папке Шаблоны:
WorkbookName := GetCurrentDir + '\Шаблоны\Книга продаж.xlt';
Excel := CreateOleObject('Excel.
try
Excel.Workbooks.Open(
//Экспорт данных из таблиц БД:
PosInc := 15;
Sum := 0; //Сумма Итого
with DM do begin
Excel.Cells[6,2] := DM.tbRequisitName.AsString;
Excel.Cells[8,1] := string(Excel.Cells[8,1]) + DateToStr(DateFrom) + ' по ' +
DateToStr(DateTo);
//Экспорт в таблицу списка товаров по расходу:
tbRealiz.First;
i := 0;
while not tbRealiz.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] := FormatFloat('00000', tbRealizID.AsFloat) +
' ' + tbRealizDDate.AsString;
Excel.Cells[i+PosInc,5] := tbRealizDDate.AsString;
Excel.Cells[i+PosInc,6] := tbRealizSum.AsCurrency;
Excel.Cells[i+PosInc,7] := tbRealizSum.AsCurrency/1.18;
Excel.Cells[i+PosInc,8] := tbRealizSum.AsCurrency/118*18;
Sum := Sum + tbRealizSum.AsCurrency;
Inc(i);
tbRealiz.Next;
end;
end; //with
Excel.Cells[i+PosInc,6] := Sum;
Excel.Cells[i+PosInc,7] := Sum/1.18;
Excel.Cells[i+PosInc,8] := Sum/118*18;
Excel.Visible := True;
except
Excel.Quit;
end;
end;
//Формирование книги покупок:
procedure Rep_PurchBook(DateFrom, DateTo: TDate);
var Excel: Variant;
WorkbookName: string;
i, PosInc: Integer;
Sum: Currency;
begin
//Фильтрация данных по расходу товара по диапазону дат:
DM.tbIncome.Filter := '(DDate >= ' + QuotedStr(DateToStr(DateFrom)) + ')' +
' and (DDate <= ' + QuotedStr(DateToStr(DateTo)) + ')';
DM.tbIncome.Filtered
:= True;
//Шаблон хранится в папке Шаблоны:
WorkbookName := GetCurrentDir + '\Шаблоны\Книга покупок.xlt';
Excel := CreateOleObject('Excel.
try
Excel.Workbooks.Open(
//Экспорт данных из таблиц БД:
PosInc := 15;
Sum := 0; //Сумма Итого
with DM do begin
Excel.Cells[6,3] := DM.tbRequisitName.AsString;
Продолжение
приложения Б
Excel.Cells[8,1] := string(Excel.Cells[8,1]) + DateToStr(DateFrom) + ' по ' +
DateToStr(DateTo);
//Экспорт в таблицу списка товаров по расходу:
tbIncome.First;
i := 0;
while not tbIncome.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] := FormatFloat('00000', tbIncomeID.AsFloat) +
' ' + tbIncomeDDate.AsString;
Excel.Cells[i+PosInc,3] := tbIncomeDDate.AsString;
Excel.Cells[i+PosInc,4] := tbIncomeDDate.AsString;
Excel.Cells[i+PosInc,9] := tbIncomeSum.AsCurrency;
Excel.Cells[i+PosInc,10] := tbIncomeSum.AsCurrency/1.18;
Excel.Cells[i+PosInc,11] := tbIncomeSum.AsCurrency/118*18;
Sum := Sum + tbIncomeSum.AsCurrency;
Inc(i);
tbIncome.Next;
end;
end; //with
Excel.Cells[i+PosInc,9] := Sum;
Excel.Cells[i+PosInc,10] := Sum/1.18;
Excel.Cells[i+PosInc,11] := Sum/118*18;
Excel.Visible := True;
except
Excel.Quit;
end;
end;
end.
Продолжение
приложения Б
unit uRequisit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask,
DBCtrls, Buttons, DB;
type
TfmRequisit = class(TForm)
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
Label5: TLabel;
DBEdit5: TDBEdit;
Label6: TLabel;
DBEdit6: TDBEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmRequisit: TfmRequisit;
implementation
uses uDM;
{$R *.dfm}
procedure TfmRequisit.BitBtn1Click(
begin
Продолжение
приложения Б
if DM.tbRequisit.State in [dsInsert, dsEdit] then
DM.tbRequisit.Post;
end;
procedure TfmRequisit.BitBtn2Click(
begin
if DM.tbRequisit.State in [dsInsert, dsEdit] then
DM.tbRequisit.Cancel;
end;
end.
unit uStore;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls,
Buttons, ExtCtrls, Grids, DBGrids;
type
TfmStore = class(TForm)
DBGrid1: TDBGrid;
Panel1: TPanel;
DBNavigator1: TDBNavigator;
bbtClose: TBitBtn;
bbtGroup: TBitBtn;
bbtGo: TBitBtn;
bbtGoods: TBitBtn;
bbtStore: TBitBtn;
GroupBox1: TGroupBox;
dblcbGroupName: TDBLookupComboBox;
CheckBox1: TCheckBox;
CheckBox3: TCheckBox;
edName: TEdit;
procedure CheckBox1Click(Sender: TObject);
procedure DBGrid1TitleClick(Column: TColumn);
private
{ Private declarations }
public
{ Public declarations }
end;
Продолжение
приложения Б
var
fmStore: TfmStore;
implementation
uses uDM, uMain;
{$R *.dfm}
//Отбор товара
по выбранной группе и
procedure TfmStore.CheckBox1Click(
var Filter: string;
begin
Filter := '';
if (CheckBox1.Checked)
and (dblcbGroupName.KeyValue<>
Filter :=
'(GroupID = ' + IntToStr(dblcbGroupName.
if (CheckBox3.Checked) and (edName.Text<>'') then begin
if Filter <> '' then
Filter := Filter + ' and ';
Filter := Filter + '(Name = ' + QuotedStr(edName.Text + '*') + ')';
end;
if Filter <> '' then begin
DM.qrStore.Filter := Filter;
DM.qrStore.Filtered := True;
end
else
DM.qrStore.Filtered := False;
end;
//Сортировка данных по выбранному столбцу:
procedure TfmStore.DBGrid1TitleClick(
begin
//По столбцу Итого сортировать нельзя, т.к. поле Sum - вычисляемое:
if Column.FieldName <> 'Sum' then begin
DM.qrStore.SQL[8] := 'ORDER BY ' + Column.FieldName;
DM.qrStore.Open;
end;
end;
end.
Продолжение
приложения Б
unit uSumToStr;
//Модуль для
перевода числового
interface
uses
SysUtils, StrUtils;
function SumToTxt(Value: String)
: string; //Функция для перевода (аргумент
- строка, содержащая сумму)
implementation
const a:array[0..8,0..9] of string=(
('','один ','два ','три ','четыре ','пять ','шесть ','семь ','восемь ','девять '),