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

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

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

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

Добавлен: 15.06.2023

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

Скачиваний: 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. Контрольный пример реализации проекта и его описание

ЗАКЛЮЧЕНИЕ

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

Приложение

//Форматированиезаголовка:

Width := Min(30, Trunc(ADBGrid.Columns[i].Width * 0.2));

Excel.Cells[5,i+1].ColumnWidth := Width;

Excel.Cells[5,i+1].Font.Bold := True;

end;

Excel.Cells[1,1] := Date;

Excel.Cells[3,1] := ACaption;

Excel.Cells[3,1].Font.Bold := True;

Excel.Cells[3,1].Font.Size := 12;

i := 5;

//Экспорт данных из таблиц БД:

with ADBGrid.DataSource.DataSet do

begin

DisableControls; //Отключаем сетку на время формирования отчета

First;

while not Eof do

begin

Inc(i);

//Выводятся NumCol первых полей таблицы, отображенных в DBGrid'е:

for j:=0 to NumCol-1 do

Excel.Cells[i,j+1] := FieldByName(ADBGrid.Columns[j].FieldName).AsString;

Next;

end;

end; //with

Excel.Application.EnableEvents := True;

Excel.Visible := True;

except

Excel.Quit;

end;

finally

ADBGrid.DataSource.DataSet.EnableControls;

Screen.Cursor := crDefault;

ADBGrid.Enabled := True;

end;

end;

//Формирование приказа о приеме на работу для текущей выбранной должности

//работника (если у него несколько должностей):

procedure Rep_Receive;

var

Excel: Variant;

WorkbookName: string;

begin

//ШаблонхранитсявпапкеШаблоны:

WorkbookName := GetCurrentDir + '\Шаблоны\' + 'Приказоприеме.xlt';

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

try

Excel.Workbooks.Open(WorkbookName);

//Экспорт данных из таблицы БД:

with DM do

begin

dstRequisite.Open;

dstEmpPosts.Open;

dstDepartments.Open;

//Выводреквизитов:

Excel.Cells[9,2] := dstRequisite.FieldByName('НаименованиеОрг').AsString;

Excel.Cells[41,5] := dstRequisite.FieldByName('РукДолжн').AsString;

Excel.Cells[41,10] := dstRequisite.FieldByName('РукФИО').AsString;

Excel.Cells[13,10] := Date;

Excel.Cells[44,10] := GetRightDate(Date);

Excel.Cells[13,8] := dstEmployee.FieldByName('ТабN').AsString + '1';

Excel.Cells[17,9] := dstEmpPosts.FieldByName('ПринятС').AsString;

Excel.Cells[21,2] := dstEmployee.FieldByName('Фамилия').AsString + ' ' +

dstEmployee.FieldByName('Имя').AsString + ' ' +

dstEmployee.FieldByName('Отчество').AsString;

Excel.Cells[21,10] := FormatFloat('0000', dstEmployee.FieldByName('ТабN').AsInteger);

if dstDepartments.Locate('ID', dstEmpPosts.FieldByName('ОтделID').AsInteger, []) then

Excel.Cells[23,3] := dstDepartments.FieldByName('Отдел').AsString;

Excel.Cells[25,2] := dstEmpPosts.FieldByName('Должность').AsString;

Excel.Cells[28,2] := dstEmpPosts.FieldByName('ХарактерРаботы').AsString;

Excel.Cells[31,5] := dstStaff.FieldByName('Ставка').AsFloat * dstStaff.FieldByName('Оклад').AsFloat;

Excel.Cells[32,5] := dstEmpPosts.FieldByName('Надбавка').AsString;

Excel.Cells[36,5] := dstEmpPosts.FieldByName('Основание').AsString;

Excel.Cells[37,5] := dstEmpPosts.FieldByName('ДоговорДата').AsString;

Excel.Cells[37,8] := dstEmpPosts.FieldByName('ДоговорN').AsString;

dstRequisite.Close;

dstDepartments.Close;

//Набор данных закрываем только если нет других открытых форм, связанных с данным набором:

if not fmEmpCard.Showing then

dstEmpPosts.Close;

end; //with

Excel.Visible := True;

except

Excel.Quit;

end;

end;

//Формирование приказа об увольнении:

procedureRep_Release;

var

Excel: Variant;

WorkbookName: string;

begin

//ШаблонхранитсявпапкеШаблоны:

WorkbookName := GetCurrentDir + '\Шаблоны\' + 'Приказобувольнении.xlt';

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

try

Excel.Workbooks.Open(WorkbookName);


//Экспорт данных из таблиц БД:

with DM do

begin

dstRequisite.Open;

dstEmpPosts.Open;

dstDepartments.Open;

//Выводреквизитов:

Excel.Cells[9,2] := dstRequisite.FieldByName('НаименованиеОрг').AsString;

Excel.Cells[40,5] := dstRequisite.FieldByName('РукДолжн').AsString;

Excel.Cells[40,11] := dstRequisite.FieldByName('РукФИО').AsString;

Excel.Cells[15,10] := Date;

Excel.Cells[42,11] := GetRightDate(Date);

Excel.Cells[15,9] := dstEmployee.FieldByName('ТабN').AsString + '2';

Excel.Cells[18,6] := dstEmpPosts.FieldByName('ДоговорДата').AsString;

Excel.Cells[18,8] := dstEmpPosts.FieldByName('ДоговорN').AsString;

Excel.Cells[10,12] := dstEmpPosts.FieldByName('ДоговорN').AsString;

Excel.Cells[11,12] := dstEmpPosts.FieldByName('ДоговорДата').AsString;

Excel.Cells[19,6] := dstEmpPosts.FieldByName('ПринятПо').AsString;

Excel.Cells[21,2] := dstEmployee.FieldByName('Фамилия').AsString + ' ' +

dstEmployee.FieldByName('Имя').AsString + ' ' +

dstEmployee.FieldByName('Отчество').AsString;

Excel.Cells[21,12] := FormatFloat('0000', dstEmployee.FieldByName('ТабN').AsInteger);

if dstDepartments.Locate('ID', dstEmpPosts.FieldByName('ОтделID').AsInteger, []) then

Excel.Cells[23,2] := dstDepartments.FieldByName('Отдел').AsString;

Excel.Cells[25,2] := dstEmpPosts.FieldByName('Должность').AsString;

dstRequisite.Close;

dstDepartments.Close;

//Набор данных закрываем только если нет других открытых форм, связанных с данным набором:

if not fmEmpCard.Showing then

dstEmpPosts.Close;

end; //with

Excel.Visible := True;

except

Excel.Quit;

end;

end;

//Формирование штатного расписания:

procedureRep_Staff;

var

Excel: Variant;

WorkbookName: string;

i, PosInc, Count: Integer;

Pay1, Pay2: Currency;

begin

//Шаблон хранится в папке Шаблоны:

WorkbookName := GetCurrentDir + '\Шаблоны\Штатное расписание.xlt';

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

try

Excel.Workbooks.Open(WorkbookName);

Excel.Cells[12,12] := 1;

Excel.Cells[12,13] := Date;

Excel.Cells[12,4] := Date;

Excel.Cells[12,7] := IncYear(Date);

//Экспорт данных из таблицы БД:

with DM do

begin

dstDepartments.Open;

//Формирование таблицы:

i := 0;

PosInc := 20;

Count := 0;

Pay1 := 0;

Pay2 := 0;

dstDepartments.First;

//Циклпоотделам:

while not dstDepartments.Eof do

begin

DM.dstStaff.Filter := 'ОтделID = ' + dstDepartments.FieldByName('ID').AsString;

//Цикл по должностям в отделе:

dstStaff.First;

while not dstStaff.Eof do

begin

//Добавление новой строки:

ifi<> 0 then

begin

Excel.Rows.Item[PosInc+i].Select;

Excel.Selection.Insert;

Excel.Rows.Item[PosInc].Select;

Excel.Selection.Copy;

Excel.Rows.Item[PosInc+i].Select;

Excel.ActiveSheet.Paste;

Excel.Application.CutCopyMode := False;

end;

Excel.Cells[i+PosInc,2] := dstDepartments.FieldByName('Отдел').AsString;

Excel.Cells[i+PosInc,5] := dstStaff.FieldByName('Должность').AsString;

Excel.Cells[i+PosInc,8] := dstStaff.FieldByName('ШтатныхЕд').AsInteger;

Excel.Cells[i+PosInc,9] :=

dstStaff.FieldByName('Ставка').AsFloat * dstStaff.FieldByName('Оклад').AsFloat;

Excel.Cells[i+PosInc,12] := dstStaff.FieldByName('Надбавка').AsFloat;

Excel.Cells[i+PosInc,16] := dstStaff.FieldByName('Надбавка').AsFloat +

dstStaff.FieldByName('Ставка').AsFloat * dstStaff.FieldByName('Оклад').AsFloat;

Inc(Count, dstStaff.FieldByName('ШтатныхЕд').AsInteger);

Pay1 := Pay1 + dstStaff.FieldByName('Ставка').AsFloat * dstStaff.FieldByName('Оклад').AsCurrency;

Pay2 := Pay2 + dstStaff.FieldByName('Надбавка').AsInteger;


dstStaff.Next;

Inc(i);

end;

dstDepartments.Next;

end;

//Выводреквизитов:

dstRequisite.Open;

Excel.Cells[9,2] := dstRequisite.FieldByName('НаименованиеОрг').AsString;

Excel.Cells[i+27,15] := dstRequisite.FieldByName('ГлБухФИО').AsString;

dstRequisite.Close;

dstDepartments.Close;

end; //with

Excel.Cells[i+20,8] := Count; //Кол-вочеловеквштате

Excel.Cells[i+20,9] := Pay1;

Excel.Cells[i+20,12] := Pay2;

Excel.Cells[i+20,16] := Pay1 + Pay2;

Excel.Cells[13,16] := Count; //Кол-во человек в штате

Excel.Visible := True;

except

Excel.Quit;

end;

end;

procedure Rep_Card;

var

Excel: Variant;

WorkbookName: string;

i: Integer;

PlaceOfBirth: string;

begin

//ШаблонхранитсявпапкеШаблоны:

WorkbookName := GetCurrentDir + '\Шаблоны\' + 'Личнаякарточка.xlt';

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

try

Excel.Workbooks.Open(WorkbookName);

//Экспорт данных из таблиц БД:

with DM do

begin

dstRequisite.Open;

dstEmpPosts.Open;

dstDepartments.Open;

//Лист 1------------------------------------------------------------------

Excel.Worksheets[1].Activate;

//Выводреквизитов:

Excel.Cells[9,2] := dstRequisite.FieldByName('НаименованиеОрг').AsString;

Excel.Cells[13,2] := Date;

Excel.Cells[13,3] := FormatFloat('0000', dstEmployee.FieldByName('ТабN').AsInteger);

Excel.Cells[13,4] := dstEmployee.FieldByName('ИНН').AsString;

Excel.Cells[13,5] := dstEmployee.FieldByName('ПенсСвид').AsString;

Excel.Cells[13,7] := dstEmpPosts.FieldByName('ХарактерРаботы').AsString;

Excel.Cells[13,9] := dstEmployee.FieldByName('Пол').AsString;

Excel.Cells[18,8] := dstEmpPosts.FieldByName('ДоговорN').AsString;

Excel.Cells[19,8] := dstEmpPosts.FieldByName('ДоговорДата').AsString;

Excel.Cells[20,3] := dstEmployee.FieldByName('Фамилия').AsString;

Excel.Cells[20,6] := dstEmployee.FieldByName('Имя').AsString;

Excel.Cells[20,9] := dstEmployee.FieldByName('Отчество').AsString;

Excel.Cells[21,4] := dstEmployee.FieldByName('ДатаРождения').AsString;

//Формирование строки места рождения:

PlaceOfBirth := '';

if (not dstEmployee.FieldByName('РождСтрана').IsNull) and

(dstEmployee.FieldByName('РождСтрана').AsString <> 'Россия') then

PlaceOfBirth := dstEmployee.FieldByName('РождСтрана').AsString;

if (not dstEmployee.FieldByName('РождОбласть').IsNull) and

(dstEmployee.FieldByName('РождОбласть').AsString <> '') then

begin

if PlaceOfBirth <> '' then

PlaceOfBirth := PlaceOfBirth + ', ';

PlaceOfBirth := PlaceOfBirth + dstEmployee.FieldByName('РождОбласть').AsString;

end;

if (not dstEmployee.FieldByName('РождРайон').IsNull) and

(dstEmployee.FieldByName('РождРайон').AsString <> '') then

begin

if PlaceOfBirth <> '' then

PlaceOfBirth := PlaceOfBirth + ', ';

PlaceOfBirth := PlaceOfBirth + dstEmployee.FieldByName('РождРайон').AsString;

end;

if (not dstEmployee.FieldByName('РождГород').IsNull) and

(dstEmployee.FieldByName('РождГород').AsString <> '') then

begin

if PlaceOfBirth <> '' then

PlaceOfBirth := PlaceOfBirth + ', ';

PlaceOfBirth := PlaceOfBirth + dstEmployee.FieldByName('РождГород').AsString;

end;

Excel.Cells[23,4] := PlaceOfBirth;

Excel.Cells[29,4] := dstEmployee.FieldByName('Образование').AsString;

//Лист 2------------------------------------------------------------------

Excel.Worksheets[2].Activate;

Excel.Cells[4,5] := Date;

Excel.Cells[10,5] := dstEmployee.FieldByName('СемПоложение').AsString;

//Списокродственников:

dstFamily.Open;

dstFamily.First;

i := 15;

while not dstFamily.Eof do


begin

Excel.Cells[i,2] := dstFamily.FieldByName('Родство').AsString;

Excel.Cells[i,5] := dstFamily.FieldByName('ФИО').AsString;

Excel.Cells[i,9] := YearOf(dstFamily.FieldByName('ДатаРождения').AsDateTime);

Inc(i);

dstFamily.Next;

end;

dstFamily.Close;

Excel.Cells[20,4] := dstEmployee.FieldByName('ДокументСерия').AsString

+ ' ' + dstEmployee.FieldByName('ДокументНомер').AsString;

Excel.Cells[20,9] := dstEmployee.FieldByName('ДокументДата').AsString;

Excel.Cells[21,3] := dstEmployee.FieldByName('ДокументВыдан').AsString;

Excel.Cells[33,4] := dstEmployee.FieldByName('Телефон').AsString;

//Лист 3------------------------------------------------------------------

Excel.Worksheets[3].Activate;

//Список занимаемых должностей:

dstEmpPosts.First;

i := 9;

while not dstEmpPosts.Eof do

begin

Excel.Cells[i,2] := dstEmpPosts.FieldByName('ПринятС').AsString;

Excel.Cells[i,3] := dstEmpPosts.FieldByName('Отдел').AsString;

Excel.Cells[i,5] := dstEmpPosts.FieldByName('Должность').AsString;

Excel.Cells[i,7] := dstEmpPosts.FieldByName('Надбавка').AsFloat +

dstEmpPosts.FieldByName('Ставка').AsFloat * dstEmpPosts.FieldByName('Оклад').AsFloat;

Excel.Cells[i,9] := dstEmpPosts.FieldByName('Основание').AsString;

Inc(i);

dstEmpPosts.Next;

end;

//Лист 4------------------------------------------------------------------

Excel.Worksheets[4].Activate;

//Списокотпусков:

dstVacation.Open;

dstVacation.First;

i := 21;

while not dstVacation.Eof do

begin

Excel.Cells[i,2] := dstVacation.FieldByName('ВидОтпуска').AsString;

Excel.Cells[i,4] := dstVacation.FieldByName('ПериодС').AsString;

Excel.Cells[i,6] := dstVacation.FieldByName('ПериодПо').AsString;

Excel.Cells[i,7] := dstVacation.FieldByName('Дней').AsString;

Excel.Cells[i,8] := dstVacation.FieldByName('ДатаС').AsString;

Excel.Cells[i,9] := dstVacation.FieldByName('ДатаПо').AsString;

Excel.Cells[i,10] := dstVacation.FieldByName('Основание').AsString;

Inc(i);

dstVacation.Next;

end;

dstVacation.Close;

dstRequisite.Close;

//Набор данных закрываем только если нет других открытых форм, связанных с данным набором:

if not fmEmpCard.Showing then

dstEmpPosts.Close;

end; //with

Excel.Visible := True;

except

Excel.Quit;

end;

end;

//Формирование приказа о предоставлении отпуска:

procedure Rep_Vacation;

var

Excel: Variant;

WorkbookName: string;

begin

//ШаблонхранитсявпапкеШаблоны:

WorkbookName := GetCurrentDir + '\Шаблоны\' + 'Приказоботпуске.xlt';

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

try

Excel.Workbooks.Open(WorkbookName);

//Экспорт данных из таблицы БД:

with DM do

begin

dstRequisite.Open;

dstEmpPosts.Open;

dstDepartments.Open;

//Выводреквизитов:

Excel.Cells[10,2] := dstRequisite.FieldByName('НаименованиеОрг').AsString;

Excel.Cells[46,11] := dstRequisite.FieldByName('РукДолжн').AsString;

Excel.Cells[46,25] := dstRequisite.FieldByName('РукФИО').AsString;

Excel.Cells[16,25] := Date;

Excel.Cells[50,22] := GetRightDate(Date);

Excel.Cells[16,21] := dstEmployee.FieldByName('ТабN').AsString + '3';

Excel.Cells[21,2] := dstEmployee.FieldByName('Фамилия').AsString + ' ' +

dstEmployee.FieldByName('Имя').AsString + ' ' +

dstEmployee.FieldByName('Отчество').AsString;

Excel.Cells[21,28] := FormatFloat('0000', dstEmployee.FieldByName('ТабN').AsInteger);

if dstDepartments.Locate('ID', dstEmpPosts.FieldByName('ОтделID').AsInteger, []) then

Excel.Cells[23,2] := dstDepartments.FieldByName('Отдел').AsString;

Excel.Cells[25,2] := dstEmpPosts.FieldByName('Должность').AsString;


Excel.Cells[29,8] := GetRightDate(dstVacation.FieldByName('ПериодС').AsDateTime) +

' по ' + GetRightDate(dstVacation.FieldByName('ПериодПо').AsDateTime);

if dstVacation.FieldByName('ВидОтпуска').AsString = 'Ежегодныйотпуск' then

begin

Excel.Cells[31,18] := dstVacation.FieldByName('Дней').AsString;

Excel.Cells[32,3] := GetRightDate(dstVacation.FieldByName('ДатаС').AsDateTime) +

' по ' + GetRightDate(dstVacation.FieldByName('ДатаПо').AsDateTime);

end

else

begin

Excel.Cells[35,2] := dstVacation.FieldByName('ВидОтпуска').AsString;

Excel.Cells[37,3] := dstVacation.FieldByName('Дней').AsString;

Excel.Cells[38,3] := GetRightDate(dstVacation.FieldByName('ДатаС').AsDateTime) +

' по ' + GetRightDate(dstVacation.FieldByName('ДатаПо').AsDateTime);

end;

Excel.Cells[40,9] := dstVacation.FieldByName('Дней').AsString;

Excel.Cells[41,3] := GetRightDate(dstVacation.FieldByName('ДатаС').AsDateTime) +

' по ' + GetRightDate(dstVacation.FieldByName('ДатаПо').AsDateTime);

dstRequisite.Close;

dstDepartments.Close;

//Набор данных закрываем только если нет других открытых форм, связанных с данным набором:

if not fmEmpCard.Showing then

dstEmpPosts.Close;

end; //with

Excel.Visible := True;

except

Excel.Quit;

end;

end;

//Формирование трудового договора:

procedureRep_Contract;

var

Excel: Variant;

WorkbookName: string;

begin

//ШаблонхранитсявпапкеШаблоны:

WorkbookName := GetCurrentDir + '\Шаблоны\' + 'Трудовойдоговор.xlt';

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

try

Excel.Workbooks.Open(WorkbookName);

//Экспорт данных из таблицы БД:

with DM do

begin

dstRequisite.Open;

dstEmpPosts.Open;

dstDepartments.Open;

//Лист 1------------------------------------------------------------------

Excel.Worksheets[1].Activate;

//Выводреквизитов:

Excel.Cells[9,2] := dstRequisite.FieldByName('НаименованиеОрг').AsString;

Excel.Cells[15,2] := dstRequisite.FieldByName('НаименованиеОрг').AsString;

Excel.Cells[17,3] := dstRequisite.FieldByName('РукДолжн').AsString;

Excel.Cells[17,8] := dstRequisite.FieldByName('РукФИО').AsString;

Excel.Cells[13,8] := dstEmployee.FieldByName('ТабN').AsString + '4';

Excel.Cells[13,9] := Date;

Excel.Cells[20,2] := dstEmployee.FieldByName('Фамилия').AsString + ' ' +

dstEmployee.FieldByName('Имя').AsString + ' ' +

dstEmployee.FieldByName('Отчество').AsString;

if dstDepartments.Locate('ID', dstEmpPosts.FieldByName('ОтделID').AsInteger, []) then

Excel.Cells[31,3] := dstDepartments.FieldByName('Отдел').AsString;

Excel.Cells[26,5] := dstEmpPosts.FieldByName('Должность').AsString;

Excel.Cells[46,7] := dstEmpPosts.FieldByName('ПринятС').AsString;

Excel.Cells[47,7] := dstEmpPosts.FieldByName('ПринятПо').AsString;

//Лист 3------------------------------------------------------------------

Excel.Worksheets[3].Activate;

Excel.Cells[46,2] := 'Оклад';

Excel.Cells[46,9] := dstStaff.FieldByName('Ставка').AsFloat * dstStaff.FieldByName('Оклад').AsCurrency;

Excel.Cells[47,2] := 'Надбавка';

Excel.Cells[47,9] := dstEmpPosts.FieldByName('Надбавка').AsString;

Excel.Cells[54,9] := dstEmpPosts.FieldByName('Надбавка').AsCurrency +

dstStaff.FieldByName('Ставка').AsFloat * dstStaff.FieldByName('Оклад').AsCurrency;

//Лист 4------------------------------------------------------------------

Excel.Worksheets[4].Activate;

//Выводреквизитов:

Excel.Cells[37,2] := dstRequisite.FieldByName('ЮрАдрес').AsString;

Excel.Cells[48,2] := dstRequisite.FieldByName('РукДолжн').AsString;

Excel.Cells[51,2] := dstRequisite.FieldByName('РукФИО').AsString;

//Выводреквизитов: