Файл: Проектирование реализации операций бизнес-процесса.pdf

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

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

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

Добавлен: 15.06.2023

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

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

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

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. АНАЛИТИЧЕСКАЯ ЧАСТЬ

1.1. Выбор комплекса задач автоматизации

1.2. Характеристика существующих бизнес-процессов

1.3. Характеристика документооборота, возникающего при решении задачи

Функции и задачи создаваемой АС:

Ожидаемые технико-экономические результаты создания АС:

1.4. Обоснование проектных решений по информационному обеспечению

1.5. Обоснование проектных решений по программному обеспечению

2. ПРОЕКТНАЯ ЧАСТЬ

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

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

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

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

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

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

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

2.8. Контрольный пример реализации проекта и его описание

ЗАКЛЮЧЕНИЕ

СПИСОК ЛИТЕРАТУРЫ

Приложение

end;

procedure TfmMain.acDocEmpListExecute(Sender: TObject);

begin

Rep_EmpList;

TreeView1Change(Self, TreeView1.Selected);

end;

procedure TfmMain.acEmpVacancyListExecute(Sender: TObject);

begin

fmVacancyList.Show;

end;

end.

unit uDepartments;

interface

uses

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

Dialogs, DBCtrls, Grids, DBGrids, ExtCtrls, StdCtrls, Buttons;

type

TfmDepartments = class(TForm)

Panel1: TPanel;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

bbtPrint: TBitBtn;

BitBtn1: TBitBtn;

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

procedure FormShow(Sender: TObject);

procedure bbtPrintClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmDepartments: TfmDepartments;

implementation

uses uDM, uRep;

{$R *.dfm}

procedure TfmDepartments.FormShow(Sender: TObject);

begin

DM.dstDepartments.Open;

DM.dstDepartments.Sort := 'Отдел';

end;

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

begin

DM.dstDepartments.Close;

end;

procedure TfmDepartments.bbtPrintClick(Sender: TObject);

begin

Rep_Universal(DBGrid1, 1, 'Отделы');

end;

end.

unit uDM;

interface

uses

SysUtils, Classes, DB, ADODB;

type

TDM = class(TDataModule)

ADOConnection1: TADOConnection;

dstDepartments: TADODataSet;

dsDepartments: TDataSource;

dstPosts: TADODataSet;

dsPosts: TDataSource;

dstVacationTypes: TADODataSet;

dsVacationTypes: TDataSource;

dstFamilyStatus: TADODataSet;

dsFamilyStatus: TDataSource;

dstEducation: TADODataSet;

dsEducation: TDataSource;

dstDocTypes: TADODataSet;

dsDocTypes: TDataSource;

dstJobTypes: TADODataSet;

dsJobTypes: TDataSource;

dstRequisite: TADODataSet;

dsRequisite: TDataSource;

dstRequisiteDSDesigner: TWideStringField;

dstRequisiteDSDesigner2: TWideStringField;

dstRequisiteDSDesigner3: TWideStringField;

dstRequisiteDSDesigner4: TWideStringField;

dstRequisiteDSDesigner5: TWideStringField;

dstRequisiteDSDesigner6: TWideStringField;

dstRequisiteDSDesigner7: TWideStringField;

dstRequisiteDSDesigner8: TWideStringField;

dstRequisiteDSDesigner9: TWideStringField;

dstRequisiteDSDesigner10: TWideStringField;

dstStaff: TADODataSet;

dsStaff: TDataSource;

dstStaffID: TAutoIncField;

dstStaffID2: TIntegerField;

dstStaffID3: TIntegerField;

dstStaffDSDesigner: TWordField;

dstStaffDSDesigner2: TFloatField;

dstStaffDSDesigner3: TBCDField;

dstStaffDSDesigner4: TBCDField;

dstStaffField: TStringField;

dstStaffField2: TStringField;

dstEmployee: TADODataSet;

dsEmployee: TDataSource;

dstEmployeeN: TAutoIncField;

dstEmployeeDSDesigner: TWideStringField;

dstEmployeeDSDesigner2: TWideStringField;

dstEmployeeDSDesigner3: TWideStringField;

dstEmployeeDSDesigner4: TBooleanField;

dstEmployeeDSDesigner5: TDateTimeField;

dstEmployeeDSDesigner6: TWideStringField;

dstEmployeeDSDesigner7: TWideStringField;

dstEmployeeDSDesigner8: TWideStringField;

dstEmployeeDSDesigner9: TWideStringField;

dstEmployeeID: TIntegerField;

dstEmployeeID2: TIntegerField;

dstEmployeeDSDesigner1ID: TIntegerField;

dstEmployeeDSDesigner2ID: TIntegerField;

dstEmployeeID3: TIntegerField;

dstEmployeeDSDesigner10: TWideStringField;

dstEmployeeDSDesigner11: TWideStringField;

dstEmployeeDSDesigner12: TDateTimeField;

dstEmployeeDSDesigner13: TWideStringField;

dstEmployeeDSDesigner14: TWideStringField;

dstEmployeeDSDesigner15: TWideStringField;

dstEmployeeDSDesigner16: TWideStringField;

dstEmployeeDSDesigner17: TWideStringField;

dstEmployeeDSDesigner18: TWideStringField;

dstEmployeeDSDesigner19: TWideStringField;

dstEmployeeDSDesigner20: TWideStringField;

dstEmployeeDSDesigner21: TWideStringField;

dstEmployeeDSDesigner22: TBlobField;


dstEmployeeIntegerField: TStringField;

dstEmployeeIntegerField2: TStringField;

dstEmployeeIntegerField1: TStringField;

dstEmployeeIntegerField22: TStringField;

dstEmployeeIntegerField3: TStringField;

dstFamily: TADODataSet;

dsFamily: TDataSource;

dstFamilyID: TIntegerField;

dstFamilyDSDesigner: TWideStringField;

dstFamilyDSDesigner2: TWideStringField;

dstFamilyDSDesigner3: TDateTimeField;

dstFamilyDSDesigner4: TWideStringField;

dstFamilyDSDesigner5: TWideStringField;

dstEmpPosts: TADODataSet;

dsEmpPosts: TDataSource;

dstEmpPostsID2: TIntegerField;

dstEmpPostsID3: TIntegerField;

dstEmpPostsDSDesigner: TFloatField;

dstEmpPostsDSDesigner2: TBCDField;

dstEmpPostsDSDesigner3: TBCDField;

dstEmpPostsDSDesigner4: TDateTimeField;

dstEmpPostsDSDesigner5: TDateTimeField;

dstEmpPostsID4: TIntegerField;

dstEmpPostsN: TWideStringField;

dstEmpPostsDSDesigner6: TDateTimeField;

dstEmpPostsDSDesigner7: TWideStringField;

dstEmpPostsDSDesigner8: TBooleanField;

dstEmpPostsID5: TIntegerField;

dstEmpPostsID6: TIntegerField;

dstEmpPostsStringField: TStringField;

dstEmpPostsField: TStringField;

dstEmpPostsIntegerField: TStringField;

dstEmployeeByDep: TADODataSet;

AutoIncField1: TAutoIncField;

IntegerField1: TIntegerField;

IntegerField2: TIntegerField;

WideStringField18: TWideStringField;

StringField1: TStringField;

StringField2: TStringField;

dsEmployeeByDep: TDataSource;

dstVacancy: TADODataSet;

dstStaffField3: TIntegerField;

dstVacation: TADODataSet;

dsVacation: TDataSource;

dstVacationID: TIntegerField;

dstVacationDSDesigner: TDateTimeField;

dstVacationDSDesigner2: TDateTimeField;

dstVacationDSDesigner3: TWordField;

dstVacationDSDesigner4: TDateTimeField;

dstVacationDSDesigner5: TDateTimeField;

dstVacationID2: TIntegerField;

dstVacationDSDesigner6: TWideStringField;

dstVacationStringField: TStringField;

dstMission: TADODataSet;

dsMission: TDataSource;

dstMissionID: TIntegerField;

dstMissionDSDesigner: TDateTimeField;

dstMissionDSDesigner2: TWideStringField;

dstMissionDSDesigner3: TDateTimeField;

dstMissionDSDesigner4: TWideStringField;

dstMissionDSDesigner5: TWideStringField;

dstEmpPostsField2: TCurrencyField;

dstEmployeeByDepDSDesigner: TWideStringField;

dstEmployeeByDepDSDesigner2: TWideStringField;

dstVacancyList: TADODataSet;

dsVacancyList: TDataSource;

dstVacancyListDSDesigner: TWideStringField;

dstVacancyListDSDesigner2: TWideStringField;

dstVacancyListDSDesigner3: TWordField;

dstVacancyListDSDesigner4: TFloatField;

dstVacancyListDSDesigner5: TBCDField;

dstVacancyListDSDesigner6: TBCDField;

dstVacancyListDSDesigner7: TIntegerField;

dstVacancyListDSDesigner8: TIntegerField;

procedure DataModuleDestroy(Sender: TObject);

procedure dstEmployeeByDepAfterScroll(DataSet: TDataSet);

procedure dstStaffCalcFields(DataSet: TDataSet);

procedure dstEmpPostsCalcFields(DataSet: TDataSet);

private

{ Private declarations }

public

{ Public declarations }

end;

var

DM: TDM;

implementation

{$R *.dfm}

procedure TDM.DataModuleDestroy(Sender: TObject);

begin

ADOConnection1.Close;

end;

//Синхронизация наборов данных для выбранного на главной форме работника:

procedure TDM.dstEmployeeByDepAfterScroll(DataSet: TDataSet);

begin

dstEmployee.Locate('ТабN', dstEmployeeByDep.FieldByName('ТабN').AsInteger, []);

end;

//Расчет кол-ва вакансий для текущей позиции в штатном расписании:

procedure TDM.dstStaffCalcFields(DataSet: TDataSet);

var

Num: Integer;

begin

dstVacancy.Parameters.ParamByName('pStaffID').Value := DataSet.FieldByName('ID').Value;

dstVacancy.Open;

if dstVacancy.FieldByName('Колво').IsNull then

Num := 0

else

Num := dstVacancy.FieldByName('Колво').Value;

DataSet.FieldByName('Вакансий').Value := DataSet.FieldByName('ШтатныхЕд').Value - Num;


dstVacancy.Close;

end;

//Расчет зарплаты работника:

procedure TDM.dstEmpPostsCalcFields(DataSet: TDataSet);

begin

DataSet.FieldByName('Зарплата').AsCurrency := DataSet.FieldByName('Оклад').AsCurrency *

DataSet.FieldByName('Ставка').AsFloat + DataSet.FieldByName('Надбавка').AsCurrency;

end;

end.

unit uEmpCard;

interface

uses

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

Dialogs, ComCtrls, ExtDlgs, StdCtrls, DBCtrls, Mask, ExtCtrls, Grids,

DBGrids, Buttons;

type

TfmEmpCard = class(TForm)

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

TabSheet3: TTabSheet;

DBImage1: TDBImage;

btFoto: TButton;

OpenPictureDialog1: TOpenPictureDialog;

Label1: TLabel;

DBEdit1: TDBEdit;

Label2: TLabel;

DBEdit2: TDBEdit;

Label3: TLabel;

DBEdit3: TDBEdit;

Label4: TLabel;

DBEdit4: TDBEdit;

Label5: TLabel;

DBEdit5: TDBEdit;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

GroupBox1: TGroupBox;

DBEdit9: TDBEdit;

Label9: TLabel;

DBEdit8: TDBEdit;

Label8: TLabel;

DBEdit7: TDBEdit;

Label7: TLabel;

DBEdit6: TDBEdit;

Label6: TLabel;

DBLookupComboBox1: TDBLookupComboBox;

DBLookupComboBox2: TDBLookupComboBox;

DBLookupComboBox3: TDBLookupComboBox;

DBLookupComboBox4: TDBLookupComboBox;

Label15: TLabel;

Label16: TLabel;

DBEdit11: TDBEdit;

Label17: TLabel;

DBEdit12: TDBEdit;

Label18: TLabel;

DBEdit13: TDBEdit;

Label19: TLabel;

DBEdit14: TDBEdit;

Label20: TLabel;

DBEdit15: TDBEdit;

Label21: TLabel;

DBEdit16: TDBEdit;

Label22: TLabel;

DBEdit17: TDBEdit;

DBLookupComboBox5: TDBLookupComboBox;

GroupBox2: TGroupBox;

Label23: TLabel;

DBEdit18: TDBEdit;

Label24: TLabel;

DBEdit19: TDBEdit;

GroupBox3: TGroupBox;

Label28: TLabel;

Label29: TLabel;

DBEdit10: TDBEdit;

DBEdit23: TDBEdit;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

TabSheet4: TTabSheet;

Label25: TLabel;

Label26: TLabel;

DBEdit21: TDBEdit;

Label30: TLabel;

DBEdit24: TDBEdit;

Label31: TLabel;

DBEdit25: TDBEdit;

Label32: TLabel;

DBEdit26: TDBEdit;

Label33: TLabel;

DBEdit27: TDBEdit;

Label34: TLabel;

Label35: TLabel;

DBEdit29: TDBEdit;

Label36: TLabel;

DBEdit30: TDBEdit;

Label37: TLabel;

DBEdit31: TDBEdit;

DBCheckBox1: TDBCheckBox;

DBLookupComboBox6: TDBLookupComboBox;

DBLookupComboBox7: TDBLookupComboBox;

Label27: TLabel;

DBEdit22: TDBEdit;

DBNavigator2: TDBNavigator;

bbtOK: TBitBtn;

bbtCancel: TBitBtn;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

Label38: TLabel;

Label39: TLabel;

Label40: TLabel;

DBEdit20: TDBEdit;

Label41: TLabel;

BitBtn5: TBitBtn;

procedure btFotoClick(Sender: TObject);

procedure RadioButton1Click(Sender: TObject);

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

procedure FormShow(Sender: TObject);

procedure DBLookupComboBox6Click(Sender: TObject);

procedure bbtCancelClick(Sender: TObject);

procedure bbtOKClick(Sender: TObject);

procedure PageControl1Change(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmEmpCard: TfmEmpCard;

implementation

uses uDM, DB, uMain;

{$R *.dfm}

procedure TfmEmpCard.btFotoClick(Sender: TObject);

begin

if OpenPictureDialog1.Execute then

DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

end;

procedure TfmEmpCard.RadioButton1Click(Sender: TObject);

begin

if not (DM.dstEmployee.State in [dsEdit, dsInsert]) then

DM.dstEmployee.Edit;

DM.dstEmployee.FieldByName('Пол').Value := RadioButton1.Checked


end;

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

begin

if DM.dstEmployee.State = dsInsert then

DM.dstEmployee.Cancel;

if DM.dstEmpPosts.RecordCount = 0 then

begin

Application.MessageBox('Не указана должность работника!',

'Ошибка сохранения', MB_OK + MB_ICONERROR);

Abort;

end

else

begin

DM.dstFamily.Close;

DM.dstEmpPosts.Close;

DM.dstStaff.Close;

DM.dstJobTypes.Close;

end;

end;

procedure TfmEmpCard.FormShow(Sender: TObject);

begin

DM.dstFamily.Open;

DM.dstEmpPosts.Open;

DM.dstStaff.Open;

DM.dstJobTypes.Open;

//Определениеполаработника:

if DM.dstEmployee.FieldByName('Пол').Value <> Null then

begin

RadioButton1.Checked := DM.dstEmployee.FieldByName('Пол').Value;

RadioButton2.Checked := not DM.dstEmployee.FieldByName('Пол').Value;

end

else

RadioButton1.Checked := False;

end;

//При выборе штатной должности автоматически подставляются данные по зарплате:

procedure TfmEmpCard.DBLookupComboBox6Click(Sender: TObject);

begin

DM.dstEmpPosts.FieldByName('Ставка').Value := DM.dstStaff.FieldByName('Ставка').Value;

DM.dstEmpPosts.FieldByName('Оклад').Value := DM.dstStaff.FieldByName('Оклад').Value;

DM.dstEmpPosts.FieldByName('Надбавка').Value := DM.dstStaff.FieldByName('Надбавка').Value;

end;

procedure TfmEmpCard.bbtCancelClick(Sender: TObject);

begin

if DM.dstEmployee.State = dsInsert then

DM.dstEmployee.Cancel

else

Application.MessageBox('Отменаневозможна! Данные были сохранены ранее.',

'Информация', MB_OK + MB_ICONINFORMATION);

Close;

end;

//Сохранениезаписи:

procedure TfmEmpCard.bbtOKClick(Sender: TObject);

begin

if DM.dstEmpPosts.RecordCount = 0 then

Application.MessageBox('Не указана должность работника!',

'Ошибка сохранения', MB_OK + MB_ICONERROR)

else

begin

try

if DM.dstEmployee.State in [dsEdit, dsInsert] then

DM.dstEmployee.Post;

except

Application.MessageBox('Незаданывсенеобходимыеданные!',

'Ошибкасохранения', MB_OK + MB_ICONERROR);

end;

Close;

end;

end;

//Перед вводом данных о семье и должности, запись о работнике сохраняется:

procedure TfmEmpCard.PageControl1Change(Sender: TObject);

begin

if PageControl1.ActivePageIndex in [2,3] then

try

if DM.dstEmployee.State in [dsEdit, dsInsert] then

DM.dstEmployee.Post;

except

Application.MessageBox('Незаданывсенеобходимыеданные!',

'Ошибкасохранения', MB_OK + MB_ICONERROR);

end;

end;

end.

unit uFamily;

interface

uses

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

Dialogs, DBCtrls, Grids, DBGrids, ExtCtrls, StdCtrls, Buttons;

type

TfmFamily = class(TForm)

Panel1: TPanel;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

BitBtn1: TBitBtn;

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

procedure FormShow(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmFamily: TfmFamily;

implementation

uses uDM, uRep;

{$R *.dfm}

procedure TfmFamily.FormShow(Sender: TObject);

begin

DM.dstDepartments.Open;

end;

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

begin

DM.dstDepartments.Close;

end;

end.

unit uMission;

interface

uses

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

Dialogs, DBCtrls, Grids, DBGrids, ExtCtrls, StdCtrls, Buttons;

type

TfmMission = class(TForm)

Panel1: TPanel;


DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

bbtPrint: TBitBtn;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

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

procedure FormShow(Sender: TObject);

procedure bbtPrintClick(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmMission: TfmMission;

implementation

uses uDM, uRep;

{$R *.dfm}

procedure TfmMission.FormShow(Sender: TObject);

begin

DM.dstMission.Open;

end;

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

begin

DM.dstMission.Close;

end;

procedure TfmMission.bbtPrintClick(Sender: TObject);

begin

Rep_Universal(DBGrid1, 5, fmMission.Caption);

end;

procedure TfmMission.BitBtn2Click(Sender: TObject);

begin

Rep_Mission;

end;

end.

unit uPosts;

interface

uses

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

Dialogs, DBCtrls, Grids, DBGrids, ExtCtrls, StdCtrls, Buttons;

type

TfmPosts = class(TForm)

Panel1: TPanel;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

bbtPrint: TBitBtn;

BitBtn1: TBitBtn;

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

procedure FormShow(Sender: TObject);

procedure bbtPrintClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmPosts: TfmPosts;

implementation

uses uDM, uRep, uEmpCard, uStaff;

{$R *.dfm}

procedure TfmPosts.FormShow(Sender: TObject);

begin

DM.dstPosts.Open;

DM.dstPosts.Sort := 'Должность';

end;

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

begin

if not (fmStaff.Showing or fmEmpCard.Showing) then

DM.dstPosts.Close;

end;

procedure TfmPosts.bbtPrintClick(Sender: TObject);

begin

Rep_Universal(DBGrid1, 1, 'Справочникпрофессий');

end;

end.

unituRep;

//Модуль для формирования отчетов и документов

interface

uses

Windows, SysUtils, Classes, ComObj, DB, Controls, Forms, ADODB, Math, DBGrids;

procedure Rep_Universal(ADBGrid: TDBGrid; NumCol: Integer; ACaption: string);

procedure Rep_Receive;

procedure Rep_Release;

procedure Rep_Staff;

procedure Rep_Card;

procedure Rep_Vacation;

procedure Rep_Contract;

procedure Rep_Mission;

procedure Rep_Insurance;

procedure Rep_DocumentsPFR;

procedure Rep_EmpList;

function GetRightDate(ADate: TDateTime): string;

implementation

uses

uDM, DateUtils, Dialogs, uEmpCard;

//Функция возвращает дату формата "xx месяца xxxx г."

function GetRightDate(ADate: TDateTime): string;

var

Month: string;

begin

case MonthOf(ADate) of

1: Month := 'января';

2: Month := 'февраля';

3: Month := 'марта';

4: Month := 'апреля';

5: Month := 'мая';

6: Month := 'июня';

7: Month := 'июля';

8: Month := 'августа';

9: Month := 'сентября';

10: Month := 'октября';

11: Month := 'ноября';

12: Month := 'декабря';

end;

Result := FormatDateTime('dd ' + Month + ' yyyy г.', ADate);

end;

//Формирование отчета по выбранному набору данных (вывод заголовков видимых

//полейиихзначений):

procedure Rep_Universal(ADBGrid: TDBGrid; NumCol: Integer; ACaption: string);

var

Excel: Variant;

i, j, Width: Integer;

begin

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

Screen.Cursor := crHourGlass;

try

try

Excel.Application.EnableEvents := False;

Excel.Workbooks.Add;

for i:=0 to NumCol-1 do

begin

//Вывод в шапку таблицы названий полей из DBGrid'а:

Excel.Cells[5,i+1] := ADBGrid.Columns[i].Title.Caption;