Файл: Проектирование реализации операций бизнес-процесса «Складской учет» («Электротовары»).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 01.04.2023

Просмотров: 45

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. ТЕХНИКО-ЭКОНОМИЧЕСКАЯ ХАРАКТЕРИСТИКА ПРЕДМЕТНОЙ ОБЛАСТИ И ПРЕДПРИЯТИЯ

1.1. Характеристика предприятия и его деятельности

1.2. Организационная структура управления предприятием

1.3. Выбор комплекса задач автоматизации и характеристика существующих бизнес процессов

2. ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ ЗАДАЧИ

2.1. Информационная модель и её описание

2.2. Используемые классификаторы и системы кодирования

2.3. Характеристика нормативно-справочной, входной и оперативной информации

2.4. Характеристика результатной информации

3. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ЗАДАЧИ

3.1. Общие положения (дерево функций и сценарий диалога)

3.2. Характеристика базы данных

3.3. Структурная схема пакета (дерево вызова программных модулей)

3.4. Описание программных модулей

4. КОНТРОЛЬНЫЙ ПРИМЕР РЕАЛИЗАЦИИ И ЕГО ОПИСАНИЕ

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

ПРИЛОЖЕНИЕ Исходный код программы

ПРИЛОЖЕНИЕ
Исходный код программы

unit Main;

interface

uses

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

Dialogs, Menus, DB, ADODB, XPMan, ComObj;

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

ADOConnection1: TADOConnection;

Auto: TADOTable;

driver: TADOTable;

gsm: TADOTable;

gsmauto: TADOTable;

marka: TADOTable;

postupgsm: TADOTable;

trip: TADOTable;

vidachagsm: TADOTable;

Autoid: TAutoIncField;

Autogosnomer: TWideStringField;

Autocolor: TWideStringField;

Autodriverid: TIntegerField;

Automarkaid: TIntegerField;

AutomarkaL: TStringField;

AutodriverL: TStringField;

gsmid: TAutoIncField;

gsmcaption: TWideStringField;

gsmostatok: TIntegerField;

driverid: TAutoIncField;

driverfio: TWideStringField;

driverphone: TWideStringField;

markaid: TAutoIncField;

markacaption: TWideStringField;

markamotor: TFloatField;

XPManifest1: TXPManifest;

N11: TMenuItem;

N12: TMenuItem;

ADOQuery1: TADOQuery;

gsmautoid: TAutoIncField;

gsmautonorma: TFloatField;

gsmautoautoid: TIntegerField;

gsmautogsmid: TIntegerField;

gsmautoautoL: TStringField;

gsmautogsmL: TStringField;

N13: TMenuItem;

procedure N2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure N8Click(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure N12Click(Sender: TObject);

procedure CreateSpravForm(const childName, id: string;

table: TDataset);

procedure CreateListForm(mode: string);

procedure CreateOtchetForm(const childName: String; p: integer);

procedure Othet(const Data: TADOQUERY; Otchetname: string);

procedure N13Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

Uses Sprav, List, ListTrip, Otchet;

{$R *.dfm}

//создание формы для работы со справочником

procedure TForm1.CreateSpravForm(const childName, id : string; table: TDataset);

var

Child: TForm3;

i,k :integer;

f : boolean;

begin

f:=False; //влаг-ложь

k:=0;

for i:=0 to Form1.MDIChildCount-1 do

begin //проверяем создан ли экземнляр такого окна

if (Form1.MDIChildren[i] is TForm3) then

begin

f:=True;

k:=i;

end;

end;

if (f) then Form1.MDIChildren[k].close; //переносим его вперед

Child := TForm3.Create(Application);

Child.Caption := childName; //задаем название

Child.DBGrid1.DataSource.DataSet:=table; //задаем таблицу справочник, с которой будем работать

table.active:=true; //делаем таблицу активной

Child.Setgridcolumnwidths; //выравниваем ширину столбцов

Child.Label1.Caption:=id; //передаем ид

end;

//создание формы со списком поступлений/расходов

procedure TForm1.CreateListForm(mode :string);

var

Child: TForm2;

i,k :integer;

f : boolean;

begin

f:=False; //влаг-ложь

k:=0;

for i:=0 to Form1.MDIChildCount-1 do //проверяем создан ли экземнляр такого окна

if (Form1.MDIChildren[i] is TForm2) then

begin

f:=True;


k:=i;

end;

if (f) then //если создан, то

Form1.MDIChildren[k].close; //закрываем

Child := TForm2.Create(Application);

Child.DBLookupComboBox1.ListSource.DataSet.Open;

if mode='Поступления' then

begin

With Child.ADOQuery1 do

begin

close;

SQL.Clear;

SQL.Add('SELECT postupgsm.id AS Код, postupgsm.postupdate AS [Дата поступления], gsm.caption AS ГСМ, postupgsm.quantity As [Количество]' );

SQL.Add(' FROM gsm INNER JOIN postupgsm ON gsm.id = postupgsm.gsmid WHERE 1=1');

SQL.Add(' ');

SQL.Add(' ');

SQL.Add(' ORDER BY postupdate DESC');

open;

end;

end

else

begin

With Child.ADOQuery1 do

begin

close;

SQL.Clear;

SQL.Add('SELECT vidachagsm.id As Код, vidachagsm.vidachadate AS [Дата выдачи], gsm.caption AS ГСМ, vidachagsm.quantity AS Количество, marka.caption AS Авто, Auto.gosnomer AS Номер ');

SQL.Add('FROM gsm INNER JOIN (marka INNER JOIN (vidachagsm INNER JOIN Auto ON vidachagsm.autoid = Auto.id) ON marka.id = Auto.markaid) ON gsm.id = vidachagsm.gsmid WHERE 1=1 ');

SQL.Add(' ');

SQL.Add(' ');

SQL.Add('ORDER BY vidachagsm.vidachadate DESC');

open;

end;

end;

Child.Caption:=mode;

Child.Setgridcolumnwidths;

end;

//процедура для создания формы для ввода параметров отчета

procedure TForm1.CreateOtchetForm(const childName:String; p: integer); //параметры - название формы и индекс отчета

var

Child: TForm9;

i,k :integer;

f : boolean;

begin

f:=False; //влаг-ложь

k:=0;

for i:=0 to Form1.MDIChildCount-1 do //проверяем создан ли экземнляр такого окна

if (Form1.MDIChildren[i] is TForm9) then

begin

f:=True;

k:=i;

end;

if (f) then //если создан, то

Form1.MDIChildren[k].Close; //переносим его вперед

Child := TForm9.Create(Application);

Child.Caption := childName; //задаем название формы

Child.DateTimePicker1.DateTime:=StrToDateTime(DateToStr(now-30)+ ' 00:00:01'); //устанавливаем дату на 30 дней меньше текущей

Child.DateTimePicker2.datetime:=StrToDateTime(DateToStr(now)+ ' 23:59:59'); //устанавливаем текущую дату

Child.Label3.Caption:=IntTOStr(p); //индекс отчета

end;

procedure TForm1.N3Click(Sender: TObject);

begin

CreateSpravForm('Список контрагентов','',Form1.gsm); //Вызов процедуры для работы со Справочником контрагенты

end;

procedure TForm1.N4Click(Sender: TObject);

begin

CreateSpravForm('Список пользователей','',Form1.driver); //Вызов процедуры для работы со Справочником пользователей

end;

procedure TForm1.N5Click(Sender: TObject);

begin

CreateSpravForm('Список товаров','',Form1.auto); //Вызов процедуры для работы со Справочником товаров

end;

procedure TForm1.N7Click(Sender: TObject);

begin

CreateListForm('Поступления');

end;

procedure TForm1.N8Click(Sender: TObject);

begin

CreateListForm('Выдачи');

end;

procedure TForm1.N9Click(Sender: TObject);

var

Child: TForm4;

i,k :integer;

f : boolean;

begin

f:=False; //влаг-ложь

k:=0;

for i:=0 to Form1.MDIChildCount-1 do //проверяем создан ли экземнляр такого окна

if (Form1.MDIChildren[i] is TForm4) then

begin

f:=True;

k:=i;

end;

if (f) then //если создан, то

Form1.MDIChildren[k].close; //закрываем

Child := TForm4.Create(Application);

Child.DBLookupComboBox1.ListSource.DataSet.Open;

With Child.ADOQuery1 do

begin

close;

SQL.Clear;

SQL.Add('SELECT gsm.caption AS ГСМ, postupgsm.postupdate AS [Дата поступления], postupgsm.quantity As [Количество]' );


SQL.Add(' FROM gsm INNER JOIN postupgsm ON gsm.id = postupgsm.gsmid WHERE 1=1');

SQL.Add(' ');

SQL.Add(' ');

SQL.Add(' ORDER BY postupdate DESC');

open;

end;

Child.Caption:='Поездки';

Child.Setgridcolumnwidths;

end;

Function IndToCol(const ind:integer):String; //функция для перевода номер столбца Excel в его текстовой индекс

begin

case ind of

0: result:='A';

1: result:='B';

2: result:='C';

3: result:='D';

4: result:='E';

5: result:='F';

6: result:='G';

7: result:='H';

8: result:='J';

9: result:='K';

10: result:='L';

11: result:='M';

12: result:='N';

13: result:='O';

14: result:='P';

15: result:='Q';

16: result:='R';

17: result:='S';

18: result:='T';

19: result:='U';

end;

end;

Procedure TForm1.Othet(const Data: TADOQUERY; Otchetname: string); //процедура для выгрузки отчета в Excel на основании запроса к БД

var

Excel:Variant;

i,j,k:integer;

begin

//Обновляем данные

Data.close;

Data.open;

Excel := CreateOleObject('Excel.Application');

//Открываем его для работы

Excel.Workbooks.Add;

//задаем имя отчета

Excel.Range['A1']:=OtchetName;

//Задаем шапку таблицы

For j:=0 to Data.FieldCount-1 do

begin

Excel.Range[IndToCol(j+1)+'2']:=Data.Fields[j].FullName;

end;

//передаем результаты запроса в виде таблицы

if Data.RecordCount<>0 then

begin

k:=1;

For j:=0 to Data.FieldCount-1 do

begin

Data.First;

for i:=1 to Data.RecordCount do

begin

Excel.range['A'+IntTOStr(i+2)]:=IntTOStr(i);

Excel.Range[indToCol(j+1)+IntToStr(i+2) ]:=Data.Fields[j].Value;

Data.Next;

end;

end;

//задаем границы таблицы

Excel.Range['A2:'+indToCol(j)+IntTOStr(i+1)].Borders[5].LineStyle:= 0;

Excel.Range['A2:'+indToCol(j)+IntTOStr(i+1)].Borders[6].LineStyle:= 0;

Excel.Range['A2:'+indToCol(j)+IntTOStr(i+1)].Borders[7].LineStyle:= 1;

Excel.Range['A2:'+indToCol(j)+IntTOStr(i+1)].Borders[8].LineStyle:= 1;

Excel.Range['A2:'+indToCol(j)+IntTOStr(i+1)].Borders[9].LineStyle:= 1;

Excel.Range['A2:'+indToCol(j)+IntTOStr(i+1)].Borders[10].LineStyle:= 1;

Excel.Range['A2:'+indToCol(j)+IntTOStr(i+1)].Borders[11].LineStyle:= 1;

Excel.Range['A2:'+indToCol(j)+IntTOStr(i+1)].Borders[12].LineStyle:= 1;

//строка итого

Excel.Range[indToCol(j-1)+IntTOStr(i+2)]:='ИТОГО';

Excel.Range[indToCol(j)+IntTOStr(i+2)].Value:='=SUM('+indToCol(j)+'3:'+indToCol(j)+IntTOStr(i+1)+')';

if j<2 then j:=2;

//Задаем дату формирования отчета

Excel.Range[indToCol(j-1)+IntTOStr(i+4)].Value:='Отчет сформирован:';

Excel.Range[indToCol(j)+IntTOStr(i+4)].Value:=dateToStr(Now);

Excel.Range['A2:'+indToCol(j)+IntTOStr(i+4)].Columns.AutoFit;

end;

//отображаем отчет

Excel.visible:=true;

end;

procedure TForm1.N11Click(Sender: TObject);

begin

CreateOtchetForm('Задайте интервал',1);

end;

procedure TForm1.N12Click(Sender: TObject);

begin

CreateOtchetForm('Задайте интервал',2);

end;

procedure TForm1.N13Click(Sender: TObject);

begin

CreateSpravForm('Категории','',Form1.gsmauto); end;

end.

unit Sprav;

interface

uses

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

Dialogs, StdCtrls, Buttons, Grids, DBGrids, ExtCtrls, DB, Menus, ADODB;

type

TForm3 = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

DBGrid1: TDBGrid;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

Label1: TLabel;

DataSource1: TDataSource;

PopupMenu1: TPopupMenu;

N1: TMenuItem;

ADOQuery1: TADOQuery;

N2: TMenuItem;

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