Автор работы: Пользователь скрыл имя, 28 Февраля 2013 в 09:23, дипломная работа
Целью дипломного проекта является разработка программного продукта для автоматизации складского учета Регионального отделения ФСС РФ по РХ. Одним из необходимых требований, предъявленных руководством организации, является минимизация затрат на ввод программы в эксплуатацию и сопровождение. Новая программа позволит оптимизировать складской учет в Региональном отделении ФСС РФ по РХ.
В ходе проведенной работы были сформулированы и решены следующие задачи:
Изучение предметной области;
Анализ входных и выходных данных;
Разработка подсистемы ввода документов, обработки и вывода отчетной информации;
Анализ рынка программных продуктов, для решения задач складского учета;
ВВЕДЕНИЕ 6
1. ХАРАКТЕРИСТИКА СИСТЕМЫ СОЦИАЛЬНОГО СТРАХОВАНИЯ 9
1.1. История развития системы социального страхования в России 9
1.2. Общие положения 10
1.3. Структура Фонда социального страхования РФ 11
1.4. Характеристика организации 12
1.5. Основные задачи Регионального отделения ФСС РФ по РХ 13
1.8. Аппаратное обеспечение Регионального отделения 18
1.9. Единая интегрированная информационная система (ЕИИС) «Соцстрах» 19
1.10. Структура ЕИИС «Соцстрах» 23
Выводы 25
2. ПРОЕКТИРОВАНИЕ И РЕАЛИЗАЦИЯ ПРОГРАММЫ АВТОМАТИЗАЦИИ СКЛАДСКОГО УЧЕТА 26
2.1. Задачи и общие принципы учета материалов 26
2.2. Постановка задачи 29
2.3. Обзор программного обеспечения автоматизации складского учета 29
2.4. Программа Sklad v. 1.00 34
2.5. Описание программы 34
Выводы 41
3. ТЕХНИКА БЕЗОПАСНОСТИ И САНИТАРНЫЕ НОРМЫ 42
3.1. Описание рабочих мест 42
3.2. Расчет освещенности 42
3.3. Расчет вентиляции 46
3.4. Расчет для помещения 46
3.5. Оценка технических условий труда 48
Выводы 50
4. ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ ЭФФЕКТИВНОСТИ ПРОГРАММНОГО ПРОДУКТА 51
Выводы 55
ЗАКЛЮЧЕНИЕ 56
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 57
ГЛОССАРИЙ 59
СПИСОК АББРЕВИАТУР 61
ПРИЛОЖЕНИЯ 62
П.1. Комплексы задач, реализуемые подсистемами ЕИИС «Соцстрах» 62
П.2. Листинг программы 71
П. 3. Материалы внедрения дипломного проекта 101
П. 4 Демонстрационный материал 103
StatusBar1: TStatusBar;
Panel2: TPanel;
ADOQueryMat: TADOQuery;
DataSource1: TDataSource;
ADOQueryFindNom: TADOQuery;
ADOQueryMatDSDesigner2: TSmallintField;
ADOQueryMatDSDesigner4: TWideStringField;
ADOQueryMatDSDesigner5: TBCDField;
ADOQueryMatDSDesigner6: TWideStringField;
ADOQueryMatDSDesigner7: TWideStringField;
ADOQueryNom: TADOQuery;
ADOQueryMatDSDesigner: TIntegerField;
ADOQueryMatField: TStringField;
Panel3: TPanel;
ToolBar1: TToolBar;
EditFind: TEdit;
tbFilter: TToolButton;
ToolBar2: TToolBar;
tbAdd: TToolButton;
tbDelete: TToolButton;
tbEdit: TToolButton;
tbSave: TToolButton;
ToolButton2: TToolButton;
DBGridEh1: TDBGridEh;
ImageList1: TImageList;
ADOQueryColor: TADOQuery;
ADOQueryMatColor: TWordField;
tbSeparator: TToolButton;
tbSelect: TToolButton;
ADOQueryMatDSDesigner3: TAutoIncField;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ADOQueryMatAfterScroll(
procedure FormCreate(Sender: TObject);
procedure ADOQueryMatDSDesigner2Change(
procedure tbFilterMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure DBGridEh1GetCellParams(Sender: TObject; Column: TColumnEh;
AFont: TFont; var Background: TColor; State: TGridDrawState);
procedure tbSelectClick(Sender: TObject);
procedure DBGridEh1DblClick(Sender: TObject);
procedure DBGridEh1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmSprMat: TfrmSprMat;
implementation
uses untMain, untMoveMat;
{$R *.dfm}
procedure TfrmSprMat.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TfrmSprMat.
begin
if ADOQueryMat.RecNo<>-1 then
StatusBar1.Panels[0].Text:=
else
StatusBar1.Panels[0].Text:='
end;
procedure TfrmSprMat.FormCreate(Sender: TObject);
begin
Self.Top:=10;
Self.Width:=frmMain.
Self.Height:=frmMain.
Self.Left:=(Screen.Width-Self.
ADOQueryMat.Active:=True;
end;
procedure TfrmSprMat.
begin
ADOQueryFindNom.Active:=False;
ADOQueryFindNom.SQL.Clear;
ADOQueryFindNom.SQL.Add('
ADOQueryFindNom.Active:=True;
ADOQueryMat.FieldByName('
end;
procedure TfrmSprMat.tbFilterMouseUp(
Shift: TShiftState; X, Y: Integer);
begin
if not tbFilter.Down then
begin
ADOQueryMat.Active:=False;
ADOQueryMat.SQL.Clear;
ADOQueryMat.SQL.Add('select * from Материалы order by Шифр,Наименование;');
ADOQueryMat.Active:=True;
end
else
begin
ADOQueryMat.Active:=False;
ADOQueryMat.SQL.Clear;
ADOQueryMat.SQL.Add('SELECT
* FROM Материалы WHERE (InStr(1,Наименование,"'+
ADOQueryMat.Active:=True;
end;
end;
procedure TfrmSprMat.
Column: TColumnEh; AFont: TFont; var Background: TColor;
State: TGridDrawState);
begin
if DBGridEh1.DataSource.DataSet.
begin
AFont.Color:=clBlack;
Background:=clAqua;
end
else
if DBGridEh1.DataSource.DataSet.
begin
AFont.Color:=clBlack;
Background:=clCream;
end;
end;
procedure TfrmSprMat.tbSelectClick(
begin
tbSave.Click;
frmMain.MatSelect:=
frmMain.Price:=ADOQueryMat.
frmMain.Edinica:=ADOQueryMat.
Self.Close;
end;
procedure TfrmSprMat.DBGridEh1DblClick(
begin
if tbSelect.Visible then tbSelect.Click;
end;
procedure TfrmSprMat.DBGridEh1KeyDown(
Shift: TShiftState);
begin
if (Key=VK_RETURN) and (Shift=[ssCtrl]) and (tbSelect.Visible=True) then tbSelect.Click
else if (Key=VK_ESCAPE) and (tbSelect.Visible=True) then Self.Close;
end;
procedure TfrmSprMat.FormShow(Sender: TObject);
begin
DBGridEh1.SetFocus;
end;
end.
unit untMoveMat;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, Grids, ValEdit, ToolWin, DB, ADODB, DBGridEh,
ActnList, DBActns, StdCtrls, ImgList, Mask, DBCtrlsEh, DBCtrls;
type
TfrmMoveMat = class(TForm)
StatusBar1: TStatusBar;
Panel1: TPanel;
ToolBar1: TToolBar;
tbAdd: TToolButton;
tbDelete: TToolButton;
tbEdit: TToolButton;
DataSource1: TDataSource;
ADOQueryMove: TADOQuery;
tbSave: TToolButton;
ADOQueryMoveDSDesigner: TAutoIncField;
ADOQueryMoveDSDesigner3: TWideStringField;
ADOQueryMoveDSDesigner4: TDateTimeField;
ADOQueryMoveDSDesigner5: TBCDField;
ADOQueryMoveDSDesigner6: TIntegerField;
ADOQueryMoveDSDesigner7: TWideStringField;
ToolButton5: TToolButton;
tbContenst: TToolButton;
ADOQueryTypes: TADOQuery;
ADOQueryOtvet: TADOQuery;
ADOQueryMoveDSDesigner2: TIntegerField;
ADOQueryMoveIntegerField: TStringField;
ADOQueryMoveIntegerField2: TStringField;
ImageListFilter: TImageList;
Panel2: TPanel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
DBGridEh1: TDBGridEh;
TabSheet2: TTabSheet;
ToolBar2: TToolBar;
DBDate1: TDBDateTimeEditEh;
DBDate2: TDBDateTimeEditEh;
tbFilter: TToolButton;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
DBGridEhContenst: TDBGridEh;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
DataSourceContenst: TDataSource;
ADOQueryMat: TADOQuery;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
ADOQueryMoveField: TIntegerField;
ADODataSetContenst: TADODataSet;
ADODataSetContenstDSDesigner: TIntegerField;
ADODataSetContenstDSDesigner2: TIntegerField;
ADODataSetContenstDSDesigner3: TBCDField;
ADODataSetContenstDSDesigner4: TWideStringField;
ADODataSetContenstDSDesigner5: TFloatField;
ADODataSetContenstDSDesigner6: TBCDField;
ADODataSetContenstDSDesigner7: TWideStringField;
ADODataSetContenstMat: TStringField;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ADOQueryMoveAfterScroll(
procedure tbContenstClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure DBGridEh1GetCellParams(Sender: TObject; Column: TColumnEh;
AFont: TFont; var Background: TColor; State: TGridDrawState);
procedure tbFilterClick(Sender: TObject);
procedure DBGridEhContenstColumns0EditBu
var Handled: Boolean);
procedure DBGridEhContenstKeyDown(
Shift: TShiftState);
procedure DBGridEh1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DBGridEh1Columns3EditButtons0C
var Handled: Boolean);
procedure ADOQueryMoveBeforePost(
procedure ADODataSetContenstAfterPost(
procedure ADODataSetContenstAfterScroll(
procedure ADODataSetContenstBeforePost(
procedure ADOQueryMoveAfterPost(DataSet: TDataSet);
procedure tbDeleteClick(Sender: TObject);
private
{ Private declarations }
function isClosePeriod(DatePeriod:
procedure ItogFoterContenst;
public
{ Public declarations }
end;
var
frmMoveMat: TfrmMoveMat;
implementation
uses untMain, untSprMat;
{$R *.dfm}
procedure TfrmMoveMat.FormClose(Sender: TObject; var Action: TCloseAction);
var Rs:TADOQuery;
begin
//Заполняем поля фильтра в базу
Rs:=TADOQuery.Create(
Rs.Connection:=frmMain.
Rs.SQL.Add('select * from options');
Rs.Active:=True;
Rs.Edit;
Rs.FieldByName('Date1').Value:
Rs.FieldByName('Date2').Value:
Rs.Post;
Rs.Active:=False;
Rs.Close;
Action:=caFree;
end;
procedure TfrmMoveMat.
begin
if ADOQueryMove.RecNo<>-1 then
StatusBar1.Panels[0].Text:=
else
StatusBar1.Panels[0].Text:='
end;
procedure TfrmMoveMat.tbContenstClick(
begin
if PageControl1.Pages[1].Showing=
begin
PageControl1.Pages[0].Show;
tbContenst.ImageIndex:=15;
tbContenst.Hint:='Содержание документа (Alt+Enter)';
end
else
begin
if ADOQueryMove.RecNo=-1 then ADOQueryMove.Post;
ItogFoterContenst;
Edit1.Text:=ADOQueryMove.
Edit2.Text:=ADOQueryMove.
Edit3.Text:=ADOQueryMove.
Edit4.Text:=ADOQueryMove.
Edit5.Text:=ADOQueryMove.
PageControl1.Pages[1].Show;
tbContenst.ImageIndex:=16;
tbContenst.Hint:='Список документов (Alt+Enter)';
end;
end;
procedure TfrmMoveMat.FormCreate(Sender: TObject);
var Rs:TADOQuery;
begin
Self.Top:=10;
Self.Width:=frmMain.
Self.Height:=frmMain.
Self.Left:=(Screen.Width-Self.
ADOQueryMove.Active:=True;
ADODataSetContenst.Active:=
//Заполняем поля фильтра
Rs:=TADOQuery.Create(
Rs.Connection:=frmMain.
Rs.SQL.Add('select * from options');
Rs.Active:=True;
DBDate1.Value:=Rs.FieldByName(
DBDate2.Value:=Rs.FieldByName(
Rs.Active:=False;
Rs.Close;
PageControl1.Pages[0].Show;
end;
procedure TfrmMoveMat.
Column: TColumnEh; AFont: TFont; var Background: TColor;
State: TGridDrawState);
begin
AFont.Color:=clBlack;
if DBGridEh1.DataSource.DataSet.
Background:=clAqua
else
if DBGridEh1.DataSource.DataSet.
Background:=clCream;
end;
procedure TfrmMoveMat.tbFilterClick(
begin
if tbFilter.Down=True then
begin
ADOQueryMove.SQL.Clear;
ADOQueryMove.SQL.Add('SELECT')
ADOQueryMove.SQL.Add(' Движение.Код AS Код,');
ADOQueryMove.SQL.Add(' Движение.Тип AS Тип,');
ADOQueryMove.SQL.Add(' Движение.Документ AS Документ,');
ADOQueryMove.SQL.Add(' Движение.Дата AS Дата,');
ADOQueryMove.SQL.Add(' Движение.Сумма AS Сумма,');
ADOQueryMove.SQL.Add(' Движение.Ответственный AS Ответственный,');
ADOQueryMove.SQL.Add(' Движение.Примечания AS Примечания,');
ADOQueryMove.SQL.Add(' Типы.Статус AS Статус');
ADOQueryMove.SQL.Add('FROM');
ADOQueryMove.SQL.Add(' Движение INNER JOIN Типы ON Типы.Код = Движение.Тип');
ADOQueryMove.SQL.Add('WHERE
Движение.Дата>=#'+Copy(
ADOQueryMove.SQL.Add('
ADOQueryMove.SQL.Add('ORDER BY Движение.Дата, Движение.Документ;');
ADOQueryMove.Active:=True;
end
else
begin
ADOQueryMove.SQL.Clear;
ADOQueryMove.SQL.Add('SELECT')
ADOQueryMove.SQL.Add(' Движение.Код AS Код,');
ADOQueryMove.SQL.Add(' Движение.Тип AS Тип,');
ADOQueryMove.SQL.Add(' Движение.Документ AS Документ,');
ADOQueryMove.SQL.Add(' Движение.Дата AS Дата,');
ADOQueryMove.SQL.Add(' Движение.Сумма AS Сумма,');
ADOQueryMove.SQL.Add(' Движение.Ответственный AS Ответственный,');
ADOQueryMove.SQL.Add(' Движение.Примечания AS Примечания,');
ADOQueryMove.SQL.Add(' Типы.Статус AS Статус');
ADOQueryMove.SQL.Add('FROM');
ADOQueryMove.SQL.Add(' Движение INNER JOIN Типы ON Типы.Код = Движение.Тип');
ADOQueryMove.SQL.Add('ORDER BY Движение.Дата, Движение.Документ;');
ADOQueryMove.Active:=True;
end;
end;
procedure TfrmMoveMat.
Sender: TObject; var Handled: Boolean);
var FormMat:TfrmSprMat;
begin
frmMain.MatSelect:=0;
FormMat:=TfrmSprMat.Create(
FormMat.tbSeparator.Visible:=
FormMat.tbSelect.Visible:=
FormMat.FormStyle:=fsNormal;
FormMat.Visible:=False;
FormMat.ShowModal;
if frmMain.MatSelect<>0 then
begin
ADODataSetContenst.Edit;
ADODataSetContenst.
ADODataSetContenst.
ADODataSetContenst.
ADODataSetContenst.
ADODataSetContenst.
DBGridEhContenst.
end;
end;
procedure TfrmMoveMat.
var Key: Word; Shift: TShiftState);
begin
if (Key=VK_RETURN) and (Shift=[ssAlt]) then tbContenst.Click;
end;
procedure TfrmMoveMat.DBGridEh1KeyDown(
Shift: TShiftState);
begin
if (Key=VK_RETURN) and (Shift=[ssAlt]) then tbContenst.Click;
end;
procedure TfrmMoveMat.
var Handled: Boolean);
var Rs:TADOQuery;
begin
Rs:=TADOQuery.Create(
Rs.Connection:=frmMain.
Rs.SQL.Add('SELECT Sum(Состояние.Сумма)
AS Итог FROM Состояние WHERE Документ='+ADOQueryMove.
Rs.Active:=True;
ADOQueryMove.Edit;
if Rs.FieldByName('Итог').IsNull then
ADOQueryMove.FieldByName('
else
ADOQueryMove.FieldByName('
Rs.Active:=False;
Rs.Close;
end;
procedure TfrmMoveMat.ADOQueryMoveBefore
begin
if isClosePeriod(DataSet.
Raise Exception.Create('Период закрыт для редактирования');
end;
function TfrmMoveMat.isClosePeriod(
var Year,Month,Day:Word;
Rs:TADOQuery;
begin
Result:=True;
DecodeDate(DatePeriod,Year,
Rs:=TADOQuery.Create(
Rs.Connection:=frmMain.
Rs.SQL.Clear;
Rs.SQL.Add('select * from Периоды
where Year(Период)='+IntToStr(Year)+
Rs.Active:=True;
if Rs.RecordCount<>0 then
if Rs.FieldByName('Доступ').
Rs.Close;
Rs.Free;
end;
procedure TfrmMoveMat.
var Rs:TADOQuery;
begin
Rs:=TADOQuery.Create(
Rs.Connection:=frmMain.
Rs.SQL.Add('SELECT Sum(Состояние.Сумма)
AS Итог FROM Состояние WHERE Документ='+ADOQueryMove.
Rs.Active:=True;
ADOQueryMove.Edit;
ADOQueryMove.FieldByName('
ADOQueryMove.Post;
Rs.Active:=False;
Rs.Close;
ItogFoterContenst;
end;
procedure TfrmMoveMat.
begin
if ADODataSetContenst.RecNo<>-1 then
StatusBar1.Panels[0].Text:=
else
StatusBar1.Panels[0].Text:='
end;
procedure TfrmMoveMat.
begin
if isClosePeriod(ADOQueryMove.
Raise Exception.Create('Период закрыт для редактирования')
else
ADODataSetContenst.
end;
procedure TfrmMoveMat.
begin
DataSet.Refresh;
end;
procedure TfrmMoveMat.ItogFoterContenst;
var ADOQ:TADOQuery;
begin
ADOQ:=TADOQuery.Create(
ADOQ.Connection:=frmMain.
ADOQ.SQL.Add('select count(Документ)
as Кол, sum(Сумма) as Итог from Состояние
where Документ='+ADOQueryMove.
ADOQ.Active:=True;
DBGridEhContenst.Columns[1].
DBGridEhContenst.Columns[4].