Автор работы: Пользователь скрыл имя, 14 Января 2014 в 15:09, дипломная работа
Целью исследования является обоснование необходимости и разработка информационной системы планирования закупок для предприятия химической отрасли. Предметом исследования в дипломной работе является деятельность компании по планированию закупок. Объектом исследования дипломной работы является научно-производственная фирма «АгроЛидер». ООО «НПФ «АгроЛидер» ― перспективная и динамично развивающаяся компания, занимающаяся производством и поставкой средств защиты растений по всей территории России.
ВВЕДЕНИЕ 3
1 АНАЛИТИЧЕСКАЯ ЧАСТЬ 5
1.1 ТЕХНИКО-ЭКОНОМИЧЕСКАЯ ХАРАКТЕРИСТИКА ПРЕДМЕТНОЙ ОБЛАСТИ 5
1.1.1 Характеристика предприятия 5
1.1.2 Краткая характеристика подразделения и его видов деятельности 9
1.2 ЭКОНОМИЧЕСКАЯ СУЩНОСТЬ ЗАДАЧИ 14
1.3 ОБОСНОВАНИЕ НЕОБХОДИМОСТИ И ЦЕЛИ ИСПОЛЬЗОВАНИЯ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ ДЛЯ РЕШЕНИЯ ЗАДАЧИ 19
1.4 ПОСТАНОВКА ЗАДАЧИ 22
1.5 АНАЛИЗ СУЩЕСТВУЮЩИХ РАЗРАБОТОК 25
1.5.1 Информационная система « Управление снабжением 8» 25
1.5.2 Информационная система «1С: Управление производственным предприятием» 27
1.5.3 Информационная система “Oracle Retail Invoice Matching” 29
1.5.4 Информационная система «Галактика» 30
1.6 ОБОСНОВАНИЕ ВЫБОРА ТЕХНОЛОГИИ ПРОЕКТИРОВАНИЯ 35
1.7 ОБОСНОВАНИЕ ПРОЕКТНЫХ РЕШЕНИЙ ПО ВИДАМ ОБЕСПЕЧЕНИЯ 36
1.7.1 Техническое обеспечение 36
1.7.2 Информационное обеспечение 38
1.7.3 Программное обеспечение 40
1.7.4 Технологическое обеспечение 49
1.7.5 Математическое обеспечение 50
2 ПРОЕКТНАЯ ЧАСТЬ 53
2.1 ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ ЗАДАЧИ 53
2.1.1 Используемые классификаторы и системы кодирования 53
2.1.2 Характеристика нормативно-справочной и входной информации 53
2.1.3 Характеристика результатной информации 55
2.1.4 Информационная модель и ее описание 55
2.1.5 Физическая модель 60
2.2 ПРОГРАММНАЯ РЕАЛИЗАЦИЯ ЗАДАЧИ 61
2.2.1 Общие положения (дерево функций и сценарий диалога) 61
2.2.2 Структурная схема пакета 65
2.2.3 Описание программных модулей 67
2.3 РЕАЛИЗАЦИЯ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА 68
3 ОБОСНОВАНИЕ ЭКОНОМИЧЕСКОЙ ЭФФЕКТИВНОСТИ ПРОЕКТА 78
ЗАКЛЮЧЕНИЕ 86
БИБЛИОГРАФИЧЕСКИЙ СПИСОК 88
ПРИЛОЖЕНИЯ 91
begin
MT.Post ;
MT.CLOSE ;
MT.Open;
end;
end;
Procedure TMAT.Filter_Gr ;
var
str: string ;
SORTFIELD : STRING ;
Current_Pos : string ;
begin
if MT.Active = false then MT.Open;
Filter(Grid ,str , SORTFIELD);
Current_Pos := MTID_MAT.asstring ;
if Current_Pos ='' then Current_Pos := '0' ;
Grid.DataSource := nil ;
MT.Close ;
DD.SelectSQL.Clear;
DD.SelectSQL.Add('Select * from MAT where 7=7 ' + Str + SORTFIELD ) ;
MT.Open ;
Grid.DataSource := DS ;
MT.Locate('ID_MAT' ,Current_Pos, [loCaseInsensitive] ) ;
end ;
end.
unit U_MAT_ADD;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, ExtCtrls, StdCtrls, Mask, DBCtrls;
type
TMAT_ADD = class(TForm)
Panel1: TPanel;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MAT_ADD: TMAT_ADD;
implementation
uses U_MAT;
{$R *.dfm}
procedure TMAT_ADD.SpeedButton3Click(
begin
ModalResult := mrOk ;
end;
procedure TMAT_ADD.SpeedButton4Click(
begin
ModalResult := mrCancel ;
end;
end.
unit U_CLIENT;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MemTableDataEh, Db, ADODB, MemTableEh, DataDriverEh, ADODataDriverEh,
Buttons, GridsEh, DBGridEh, ExtCtrls, StdCtrls;
type
TCLIENT = class(TForm)
GroupBox1: TGroupBox;
Panel1: TPanel;
Grid: TDBGridEh;
BTN_INS: TSpeedButton;
BTN_ED: TSpeedButton;
BTN_DEL: TSpeedButton;
BTN_CLOSE: TSpeedButton;
DD: TADODataDriverEh;
MT: TMemTableEh;
DS: TDataSource;
MTID_CL: TAutoIncField;
MTINN: TStringField;
MTKPP: TStringField;
MTNAIM: TStringField;
MTADR: TStringField;
MTBANK_R: TStringField;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Filter_Gr ;
procedure GridApplyFilter(Sender: TObject);
procedure BTN_CLOSEClick(Sender: TObject);
procedure BTN_INSClick(Sender: TObject);
procedure BTN_EDClick(Sender: TObject);
procedure BTN_DELClick(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
CLIENT: TCLIENT;
implementation
uses U_DM, Automate, U_CLIENT_ADD;
{$R *.dfm}
procedure TCLIENT.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action := cafree;
CLIENT := nil ;
end;
procedure TCLIENT.FormShow(Sender: TObject);
begin
DataSourceIni(client_ADD, DS) ;
end;
procedure TCLIENT.GridApplyFilter(
begin
Filter_Gr;
end;
procedure TCLIENT.BTN_CLOSEClick(Sender: TObject);
begin
CLOSE ;
end;
procedure TCLIENT.BTN_DELClick(Sender: TObject);
begin
if MT.State in [dsInsert, dsEdit] then MT.Post ;
If MessageDlg('Удалить запись',MTCONFIRMATION , [MBYES, MBNO], 0)= mrYes then
MT.Delete ;
MT.CLOSE ;
MT.Open;
end;
procedure TCLIENT.BTN_EDClick(Sender: TObject);
begin
if MT.State in [dsInsert, dsEdit] then MT.Post ;
MT.EDIT ;
if CLIENT_ADD.ShowModal = mrOk then
begin
MT.Post ;
MT.CLOSE ;
MT.Open;
end;
end;
procedure TCLIENT.BTN_INSClick(Sender: TObject);
begin
if MT.State in [dsInsert, dsEdit] then MT.Post ;
MT.Insert ;
if CLIENT_ADD.ShowModal = mrOk then
begin
MT.Post ;
MT.CLOSE ;
MT.Open;
end;
end;
Procedure TCLIENT.Filter_Gr ;
var
str: string ;
SORTFIELD : STRING ;
Current_Pos : string ;
begin
if MT.Active = false then MT.Open;
Filter(Grid ,str , SORTFIELD);
Current_Pos := MTID_CL.asstring ;
if Current_Pos ='' then Current_Pos := '0' ;
Grid.DataSource := nil ;
MT.Close ;
DD.SelectSQL.Clear;
DD.SelectSQL.Add('Select * from CLIENT where 7=7 ' + Str + SORTFIELD ) ;
MT.Open ;
Grid.DataSource := DS ;
MT.Locate('ID_CL' ,Current_Pos, [loCaseInsensitive] ) ;
end ;
end.
unit U_CLIENT_ADD;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, ExtCtrls, StdCtrls, Mask, DBCtrls;
type
TCLIENT_ADD = class(TForm)
Panel1: TPanel;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
Label5: TLabel;
DBEdit5: TDBEdit;
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
CLIENT_ADD: TCLIENT_ADD;
implementation
uses U_CLIENT;
{$R *.dfm}
procedure TCLIENT_ADD.SpeedButton3Click(
begin
ModalResult := mrOk ;
end;
procedure TCLIENT_ADD.SpeedButton4Click(
begin
ModalResult := mrCancel ;
end;
end.
unit Automate;
interface
uses db,Sysutils, dbgrideh, Dialogs,controls, forms, DBCtrls, DBCtrlsEh, DBLookupEh, ComObj, Variants;
type
TWordReplaceFlags = set of (wrfReplaceAll, wrfMatchCase, wrfMatchWildcards);
TArrayString = array of string;
function Pars_Str(Str: string; D_T: TFieldType): string ; // разбор строки из фильтра для поиска знаков сравнения
Function Error_text(Error_in: string ): String; // Обработчик ошибок. Возвращает нормальный комментарий
Procedure Filter(Grid: TDBGridEh ; Var Str, SORTFIELD : string ) ; // фильтр + сортировка //
procedure Error_f(Sender: TObject) ; // обработка ошибок
function DATE_ADD(DATE: TDatetime; Part: string; AddValue: integer) : TDateTime ; // Добавляет значение к дате
Procedure DataSourceIni(FORM : TFORM; DS: TDataSource ); // выполняется инициализация DataSource на форме (если DataSource принадлежить другой форме)
function Word_StringReplace(ADocument: TFileName; SearchString, ReplaceString: TArrayString; Flags: TWordReplaceFlags): Boolean;// Заменяет в WORD одно слово на другое
implementation
function Word_StringReplace(ADocument: TFileName; SearchString, ReplaceString: TArrayString; Flags: TWordReplaceFlags): Boolean;
const
wdFindContinue = 1;
wdReplaceOne = 1;
wdReplaceAll = 2;
wdDoNotSaveChanges = 0;
var
WordApp: OLEVariant;
I: INTEGER;
begin
Result := False;
ADocument := ExtractFilePath(application.
{ Check if file exists }
if not FileExists(ADocument) then
begin
ShowMessage('Specified Document not found.');
Exit;
end;
{ Create the OLE Object }
try
WordApp := CreateOLEObject('Word.
except
on E: Exception do
begin
E.Message := 'Word is not available.';
raise;
end;
end;
try
{ Hide Word }
WordApp.Visible := TRUE;
{ Open the document }
WordApp.Documents.Add(Template := ADocument);
// WordApp.Documents.Open(
FOR I := 0 TO LENGTH(SearchString)-1 DO
BEGIN
WordApp.Selection.Find.
WordApp.Selection.Find.Text := SearchString[I];
WordApp.Selection.Find.
WordApp.Selection.Find.Forward := True;
WordApp.Selection.Find.Wrap := wdFindContinue;
WordApp.Selection.Find.Format := False;
WordApp.Selection.Find.
WordApp.Selection.Find.
WordApp.Selection.Find.
WordApp.Selection.Find.
WordApp.Selection.Find.
{ Perform the search}
if wrfReplaceAll in Flags then
WordApp.Selection.Find.
else
WordApp.Selection.Find.
END;
{ Save word }
// WordApp.ActiveDocument.SaveAs(
{ Assume that successful }
Result := True;
{ Close the document }
// WordApp.ActiveDocument.Close(
finally
{ Quit Word }
// WordApp.Quit;
WordApp := Unassigned;
end;
end;
procedure Error_f(Sender: TObject) ; // обработка ошибок
Begin
ShowMessage('Правильно введите реквизиты документа !!! ') ;
(sender as TWinControl).SetFocus ;
Abort ;
end ;
Function Error_text(Error_in: string ): String;
var Error_Array: Array[1..3, 1..2] of string ;
i: integer;
Begin
{ Функция сравнивает системный текст ошибки и заменяет на понятный юзеру :)
Надо бы поискать, как вернуть код ошибки ... }
Error_Array[1, 1] := 'Violation of PRIMARY KEY constraint' ;
Error_Array[1, 2] := 'Ключевое поле не уникально.' ;
Error_Array[2, 1] := 'Cannot insert the value NULL into column' ;
Error_Array[2, 2] := 'Поле не может содержать пустое значение.' ;
Error_Array[3, 1] := 'DELETE statement conflicted with COLUMN REFERENCE constraint' ;
Error_Array[3, 2] := 'Удаление не возможно пока существуют зависимые данные в других таблицах.' ;
Result := '' ;
For i := 1 to 3 do
Begin
if Pos( Error_Array[i, 1] ,Error_in) >0 then // если в тексте ошибки найдена подстрока
Begin
Result := Error_Array[i, 2];
Break ;
End;
End;
end;
function Pars_Str(Str: string; D_T: TFieldType): string ; // разбор строки из фильтра для поиска знаков сравнения
var
A: array[1..5] of string ;
i : integer;
Zn, Str_c : string ;
Begin
A[1] := '>' ; A[2] := '<' ; A[3] := '>=' ; A[4] := '<=' ; A[5] := '<>' ;
Zn := '' ;
for i := 1 to 5 do
Begin
if pos(A[i],Str) <> 0 then
Begin
Zn := A[i] ;
if i >2 then // обрезает знак
else
end ;
end;
if Zn = '' then
Begin // если нет знака
if (D_T = ftString) or (D_T = ftwideString) then result := ' like ' + QuotedStr('%'+Str+'%')
else
if D_T = ftDateTime then result := ' = ' + QuotedStr(Str)
else
result := ' = ' + (Str) ;
end
else
Begin // если есть знак
if D_T = ftDateTime then result := Zn + QuotedStr(Str_c)
else
if (D_T = ftString) or (D_T = ftwideString) then result := Zn + QuotedStr(Str_c)
else
result := Zn + (Str_c) ;
end ;
end ;
Procedure Filter(Grid: TDBGridEh ; Var Str , SORTFIELD : string ) ; // фильтр + сортировка //
var
i : integer ;
begin
// Фильтр
str := '' ;
for i := 0 to Grid.Columns.Count-1 do
Begin
if Grid.Columns[i].STFilter.
Begin
if Grid.Columns[i].STFilter.
else
if Grid.Columns[i].STFilter.
else
end ;
end ;
// сортировка
SORTFIELD := '';
for i := 0 to Grid.SortMarkedColumns.Count-1 do
Begin
if Grid.SortMarkedColumns[i].
else
end;
if SORTFIELD <> '' then
SORTFIELD := ' ORDER BY ' + Copy(SORTFIELD,1,Length(
end ;
function DATE_ADD(DATE: TDatetime; Part: string; AddValue: integer) : TDateTime ;
var
YEAR, MONTH, DAY : word ;
Begin
DecodeDate(DATE,YEAR,MONTH,
if Part = 'YEAR' then YEAR := YEAR + AddValue ;
// Сюда добавить остальные
Result := EncodeDate(Year,MONTH,DAY);
End;
Procedure DataSourceIni(FORM : TFORM; DS: TDataSource );
var i : integer ;
begin
//
for I := 0 to FORM.ComponentCount - 1 do
begin
if FORM.Components[i] is Tdbedit then
(FORM.Components[i] as Tdbedit).DataSource := DS ;
if FORM.Components[i] is TDBDateTimeEditEh then
(FORM.Components[i] as TDBDateTimeEditEh).DataSource := DS ;
if FORM.Components[i] is TDBNumberEditEh then
(FORM.Components[i] as TDBNumberEditEh).DataSource := DS ;
if FORM.Components[i] is TDBLookupComboboxEh then
(FORM.Components[i] as
TDBLookupComboboxEh).
if FORM.Components[i] is TDBComboBoxEh then
(FORM.Components[i] as TDBComboBoxEh).DataSource := DS ;
end;
End;
end.
unit U_GP;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MemTableDataEh, Db, ADODB, MemTableEh, DataDriverEh, ADODataDriverEh,
Buttons, GridsEh, DBGridEh, ExtCtrls, StdCtrls;
type
TGP = class(TForm)
GroupBox1: TGroupBox;
Panel1: TPanel;
Grid: TDBGridEh;
BTN_INS: TSpeedButton;
BTN_ED: TSpeedButton;
BTN_DEL: TSpeedButton;
BTN_CLOSE: TSpeedButton;
DD: TADODataDriverEh;
MT: TMemTableEh;
DS: TDataSource;
MTID_PROD: TAutoIncField;
MTNAIM: TStringField;
MTEI: TStringField;
MTHAR: TStringField;
GroupBox2: TGroupBox;
Panel2: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
GRID1: TDBGridEh;
DD1: TADODataDriverEh;
MT1: TMemTableEh;
DS1: TDataSource;
MT1ID_SOST: TAutoIncField;
MT1ID_PROD: TIntegerField;
MT1ID_MAT: TIntegerField;
MT1KOL: TFloatField;
MT1NAIM: TStringField;
MT1EI: TStringField;
MemTableEh1: TMemTableEh;
ADODataDriverEh1: TADODataDriverEh;
DataSource1: TDataSource;
MemTableEh1ID_MAT: TAutoIncField;
MemTableEh1EI: TStringField;
MemTableEh1NAIM: TStringField;
MemTableEh1HAR: TStringField;
MT1NAIM_MAT: TStringField;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Filter_Gr ;
procedure GridApplyFilter(Sender: TObject);
procedure BTN_CLOSEClick(Sender: TObject);
procedure BTN_INSClick(Sender: TObject);
procedure BTN_EDClick(Sender: TObject);
procedure BTN_DELClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure MT1AfterInsert(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;
var
GP: TGP;
implementation
uses U_DM, Automate, U_GP_ADD;
{$R *.dfm}
procedure TGP.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action := cafree;
GP := nil ;
end;
procedure TGP.FormShow(Sender: TObject);
begin
DataSourceIni(GP_ADD, DS) ;
end;
procedure TGP.GridApplyFilter(Sender: TObject);
begin
Filter_Gr;
end;
procedure TGP.MT1AfterInsert(DataSet: TDataSet);
begin
MT1ID_PROD.AsInteger := MTID_PROD.AsInteger;
end;
procedure TGP.SpeedButton1Click(Sender: TObject);
begin
if MT1.State in [dsInsert, dsEdit] then MT1.Post ;
MT1.Insert ;
end;
procedure TGP.SpeedButton2Click(Sender: TObject);
begin
if MT1.State in [dsInsert, dsEdit] then MT1.Post ;
MT1.edit ;
end;
procedure TGP.SpeedButton3Click(Sender: TObject);
begin
if MT1.State in [dsInsert, dsEdit] then MT1.Post ;
If MessageDlg('Удалить запись',MTCONFIRMATION , [MBYES, MBNO], 0)= mrYes then
MT1.Delete ;
MT1.CLOSE ;
MT1.Open;
end;
procedure TGP.BTN_CLOSEClick(Sender: TObject);
begin
CLOSE ;
end;
procedure TGP.BTN_DELClick(Sender: TObject);
begin
if MT.State in [dsInsert, dsEdit] then MT.Post ;
If MessageDlg('Удалить запись',MTCONFIRMATION , [MBYES, MBNO], 0)= mrYes then
MT.Delete ;
MT.CLOSE ;
MT.Open;
end;
procedure TGP.BTN_EDClick(Sender: TObject);
begin
if MT.State in [dsInsert, dsEdit] then MT.Post ;
MT.EDIT ;
if GP_ADD.ShowModal = mrOk then
begin
MT.Post ;
MT.CLOSE ;
MT.Open;
Информация о работе Разработка ЭИС планирования закупок для предприятия химической отрасли