Файл: Проектирование реализации операций бизнес-процесса «Управление персоналом (Глава. Аналитическая часть).pdf

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

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

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

Добавлен: 30.03.2023

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

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

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

Форма работы со справочниками системы работает напрямую с таблицами базы данных, поэтому для её работы используется компонент Adotable. Данный компонент представляет собой виртуальную копию таблицы базы данных, изменения в которой сразу передаются в связанную таблицу БД.

Для работы с данными сотрудников и выгрузки их в шаблоны документов используется компонент AdoQuery. Данный компонент предназначен для отправки запросов к базе данных и обработки ответов на них. В приложении используются 3 вида запросов:

  • запросы на выборку;
  • запросы на добавление данных;
  • запросы на обновление данных.

Для получения практически любых данных любого количества таблиц базы данных используется оператор запроса SELECT. Этот оператор выбирает записи из базы данных и имеет самую сложную структуру, по сравнению с другими операторами языка SQL. Данный оператор позволяет не только выбирать записи из базы данных, удовлетворяющие заданному условию, но также и настраивать параметры отображения этих записей, таких как сортировка и группировка. А использование агрегатных функций позволяет подсчитывать необходимые данные.

Для обновления данных, хранящихся в базе данных используется оператор UPDATE, для добавления новых – оператор INSERT.

Программные модули состоят из процедур, которые обрабатывают различные действия пользователя (нажатия на кнопки, ввод текста в поля и т.д.) нужным образом.

На рисунке 14 приведен алгоритм процедуры формирования трудового договора на основе шаблона, пусть к которому указан в должности, для которой формируется договор (для каждой должности можно задать свой шаблон договора).

Рисунок 14.Блок-схема алгоритма формирования отчета

После запуска процедуры обязательно происходит проверка наличия файла шаблона договора, имя которого сохранено в настройках программы. Если файл на жестком диске пользователя не найден, то выводится соответствующее сообщение об ошибке и процедура завершает свое выполнение. Если же файл найден, то отправляет запрос к базе данных на выборку данных выбранного сотрудника, файл шаблона открывается для редактирования. Затем данные из запроса подставляются в шаблон путем замены ключевых слов, расставленных в шаблоне в требуемых местах. Например, везде где требуется указывать должность работника, указывается ключевое слово <Должность>. Процедура ищет все вхождения данного ключевого слова в документе и заменяет их на значение для выбранного работника.


Остальные процедуры в программном коде имеют простую линейную структуру, поэтому подробно они рассмотрены не будут. Исходный код всех процедур с комментариями представлен в приложении.

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

После запуска программы пользователю отображается главная форма программы, на которой отображен список всех сотрудников компании. Над таблицей со списком расположены элементы для поиска работника по ФИО и фильтрации их по статусу (уволен или нет) и по занимаемой должности(Рисунок 15).

Рисунок 15. Главная форма

Для добавления нового сотрудника необходимо щелкнуть по кнопку Добавить, откроется форма добавления сотрудника (Рисунок 16).

Рисунок 16. Форма добавления сотрудника

После ввода данных по сотруднику и нажатия на кнопку «Сохранить» становится активной кнопка формирования договора. После того, как договор сформирован, становится активной кнопка формирования приказа о приеме на работу.

При двойном нажатии на сотрудника в списке на главной форме открывается аналогичная форма, с помощью которой можно работать с данными сотрудника. После того, как сотрудник уволен (сформирован приказ об увольнении), то его данные уже нельзя изменить. Кнопка сохранения данных становятся недоступной (Рисунок 17).

Рисунок 17. Форма работы с данными сотрудника после увольнения

Для работы со записями справочника необходимо его выбрать в главном меню программы, откроется форма для работы со справочниками. Данная форма для всех справочников одинакова: в верней части расположена панель с кнопками управления записями, а под это панелью – таблица с записями справочника (Рисунок 18).

Рисунок 18. Форма работы со справочником

ЗАКЛЮЧЕНИЕ

В ходе проделанной работы были решены следующие задачи:

  • была проанализирована текущая организация бизнес-процесса управления персоналом в компании «Fit-Studio», были выделены основные этапы выполнения бизнес-процесса, изучен возникающий документооборот;
  • были выбран проектные решения по информационному обеспечению и программному, в качестве среды разработки была выбрана Delphi7, а в качестве СУБД – MySQL;
  • была составлена информационная модель информационной системы, которая отражает пути преобразования входной информации в выходную;
  • была разработана база данных и программные модули, реализующие работу ИС.
  • был описан контрольный пример реализации проекта.

Таким образом, все задачи, поставленные перед данным курсовым проектом выполнены, а значит и основная цель достигнута.

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

  • ГОСТ 2.105 – 95. Общие требования к текстовым документам.
  • ГОСТ 7.32 – 2001. Отчет по научно-исследовательской работе. Структура и правила оформления.
  • ГОСТ 7.82-2001. Библиографическое описание электронных ресурсов.
  • ГОСТ 24.702-85 Эффективность автоматизированных систем управления.
  • ГОСТ Р 7.0.5-2008. Библиографическая запись. Библиографическое описание.
  • Агальцов В.П. Базы данных. В 2-х т. Т. 2. Распределенные и удаленные базы данных: Учебник. М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2013. 272 с.
  • Гагарина Л.Г. Разработка и эксплуатация автоматизированных информационных систем: учебное пособие. М.: ИД «ФОРУМ»: ИНФРА-М, 2013. 384 с.
  • Горбаченко В.И., Убиенных Г.Ф. Бобрышева Г.В. Проектирование информационных систем с СА ErwinModelingSuite 7.3. Пенза: Изд-во ПГУ, 2012, 154 c.
  1. Зуев Е.А. Программирование на языке Delphi 6.0,7.0. – М.: Радио и связь, Веста, 2016. - 186 с.
  • Калмыков Ю.В. Учебно-методичское пособие по обучению программированию на языке Delphiдля школ, 2014. – 100 с.
  • Карпова И.П. Базы данных: Учебное пособие. – Спб.: Питер, 2013. – 240 с.
  • Кузин А.В., Левонисова С.В. Базы данных: Учебное пособие для студ. высш. учеб. заведений. – М.: ИЦ Академия, 2012. – 320с.
  • Культин Никита – Основы программирования в Delphi, 2015 – 232 с.
  • Маклаков С. В. Моделирование бизнес-процессов с AllFusion Process Modeler (BPwin 4.1) / С.В. Маклаков. – М. : ДИАЛОГ-МИФИ, 2013. – 340 c.
  • Маклаков С.В. Создание информационных систем с AllFusion Modeling Suite / С.В. Маклаков. – М. : ДИАЛОГ-МИФИ, 2015. – 512 c.
  • Тельнова, Ю.Ф. Проектирование экономических информационных систем: учеб. / под ред. Ю. Ф. Тельнова. М. : Горячая линия, 2015 — 345 c.
  • Фуфаев Д.Э. Фуфаев Э.В. Разработка и эксплуатация автоматизированных информационных систем: учебник дя студ. М.: Издательский центр «Академия», 2013. 304 с.
  • Шаньгин В.Ф. Информационная безопасность компьютерных системы и сетей: Учебное пособие. М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2013. 416 с.

ПРИЛОЖЕНИЯ

unitshabl;

interface

uses

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

Dialogs, StdCtrls, Buttons, DB, ADODB, comobj;

type

TForm2 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Edit1: TEdit;

BitBtn1: TBitBtn;

Edit2: TEdit;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

BitBtn5: TBitBtn;

OpenDialog1: TOpenDialog;

Label3: TLabel;

ADOQuery1: TADOQuery;


procedure BitBtn3Click(Sender: TObject);

procedure Edit1Change(Sender: TObject);

procedure Edit2Change(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedureFormClose(Sender: TObject; var Action: TCloseAction);

procedure BitBtn4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

Uses main;

{$R *.dfm}

procedure TForm2.BitBtn3Click(Sender: TObject);

begin

Form2.Close;

end;

procedure TForm2.Edit1Change(Sender: TObject);

begin

if not (copy(caption,length(caption)-1,1) = '*') then caption:=caption+'*';

end;

procedure TForm2.Edit2Change(Sender: TObject);

begin

if not (copy(caption,length(caption)-1,1) = '*') then caption:=caption+'*';

end;

procedure TForm2.BitBtn1Click(Sender: TObject);

begin

openDialog1.InitialDir := GetCurrentDir;

if opendialog1.Execute then

begin

ifFileExists(opendialog1.FileName) then

begin

Edit2.Text:=Opendialog1.FileName;

end;

end;

end;

procedure TForm2.BitBtn2Click(Sender: TObject);

begin

if edit1.text='' then begin showmessage('Имяшаблонанеможетбытьпустым'); Edit1.SetFocus; exit; end;

if edit2.text='' then begin showmessage('Необходимовыбратьфайл'); BitBtn1.SetFocus; exit; end;

if not ((FileExists(ExtractFilePath(ParamStr(0))+'shablon\'+Edit2.Text)) or (FileExists(Edit2.Text))) then begin showmessage('Указанныйфайлшаблонаненайден'); BitBtn1.SetFocus; exit; end;

if OpenDialog1.filename='' then OpenDialog1.filename:=ExtractFilePath(ParamStr(0))+'shablon\'+Edit2.Text;

With AdoQuery1 do

begin

close;

SQl.clear;

SQL.add('UPDATE shablon SET caption = :caption, path = :path WHERE id = :id');

Parameters.ParamByName('caption').value:=edit1.text;

Parameters.ParamByName('path').value:=ExtractFileName(OpenDialog1.Filename);

Parameters.ParamByName('id').value:=label3.caption;

execSQL;

end;

CopyFile(Pchar(edit2.text), Pchar(ExtractFilePath(ParamStr(0))+'shablon\'+ExtractFileName(OpenDialog1.Filename)), true) ;

caption:=copy(caption,0,length(caption)-2);

close;

Form1.N7.Click;

end;

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

begin

if copy(caption,length(caption)-1,1) = '*' then

begin

If MessageBox(Handle,PChar('Данныебылиизменены. Сохранить изменения?'),PChar('Подтверждение'),MB_ICONINFORMATION+MB_YESNO+MB_DEFBUTTON2)=IdYes

then BitBtn2.Click;

end;

end;

procedure TForm2.BitBtn4Click(Sender: TObject);

var

Word:Variant;

begin

iffileExists(edit2.text) then

begin

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

Word.Documents.Add(edit2.text);

if not (copy(caption,length(caption)-1,1) = '*') then caption:=caption+'*';

Word.visible:=true;

end

else

begin

Showmessage(' Файл '+edit2.text+' не найден.'+#10+#13+'Проверьте правильность названия файла и его наличие в указанной папке.');

end;

end;

end.

unit Main;

interface

uses

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

Dialogs, Menus, DB, ADODB, StdCtrls, Buttons, Grids, DBGrids, comobj,

ExtCtrls;

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

ADOConnection1: TADOConnection;

DBGrid1: TDBGrid;

Label1: TLabel;

Edit1: TEdit;

BitBtn1: TBitBtn;

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

DBGrid2: TDBGrid;

Label2: TLabel;

Edit2: TEdit;

BitBtn2: TBitBtn;

ADOTable1: TADOTable;

ADOTable1Id: TAutoIncField;

ADOTable1FIO: TWideStringField;

ADOTable1Phone: TWideStringField;

ADOTable1Address: TWideStringField;

ADOTable1Passport: TWideStringField;

DataSource1: TDataSource;

DataSource2: TDataSource;


ADOTable2: TADOTable;

ADOTable2id: TAutoIncField;

ADOTable2caption: TWideStringField;

ADOTable2path: TWideStringField;

PopupMenu1: TPopupMenu;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

PopupMenu2: TPopupMenu;

N8: TMenuItem;

ADOQuery1: TADOQuery;

N9: TMenuItem;

N10: TMenuItem;

BitBtn3: TBitBtn;

Panel1: TPanel;

Panel2: TPanel;

Panel3: TPanel;

Panel4: TPanel;

Panel5: TPanel;

Panel6: TPanel;

Panel7: TPanel;

ADOQuery2: TADOQuery;

procedure N3Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedureFormShow(Sender: TObject);

procedure Edit1Change(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure N8Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedureFormResize(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

usesshabl;

{$R *.dfm}

procedure TForm1.N3Click(Sender: TObject);

begin

form1.Close;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

Edit1.Clear;

Edit1.SetFocus;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

Edit2.Clear;

Edit2.SetFocus;

end;

procedure TForm1.FormShow(Sender: TObject);

begin

Adotable1.open;

Adotable1.Sort:='FIO ASC';

DbGrid1.Columns[0].Width:=ROUND(DbGrid1.Width*0.65);

DbGrid1.Columns[1].Width:=ROUND(DbGrid1.Width*0.25);

Adotable2.open;

Adotable2.Sort:='caption ASC';

DbGrid2.Columns[0].Width:=ROUND(DbGrid2.Width*0.65);

DbGrid2.Columns[1].Width:=ROUND(DbGrid2.Width*0.28);

end;

procedure TForm1.Edit1Change(Sender: TObject);

begin

if edit1.text<>'' then

begin

DbGrid1.DataSource.DataSet.Filtered:=false;

DbGrid1.DataSource.DataSet.Filter:='FIO like %'+edit1.Text+'%';

DbGrid1.DataSource.DataSet.Filtered:=true;

end

else

begin

DbGrid1.DataSource.DataSet.Filtered:=false;

DbGrid1.DataSource.DataSet.Filter:='';

end;

end;

procedure TForm1.N7Click(Sender: TObject);

begin

Dbgrid2.DataSource.DataSet.Close;

DbGrid2.DataSource.DataSet.open;

Adotable2.Sort:='caption ASC';

DbGrid2.Columns[0].Width:=ROUND(DbGrid2.Width*0.65);

DbGrid2.Columns[1].Width:=ROUND(DbGrid2.Width*0.28);

end;

procedure TForm1.N8Click(Sender: TObject);

begin

Dbgrid1.DataSource.DataSet.Close;

DbGrid1.DataSource.DataSet.open;

Adotable1.Sort:='FIO ASC';

DbGrid1.Columns[0].Width:=ROUND(DbGrid1.Width*0.65);

DbGrid1.Columns[1].Width:=ROUND(DbGrid1.Width*0.25);

end;

procedure TForm1.N5Click(Sender: TObject);

begin

if not DbGrid1.DataSource.DataSet.FieldByName('id').IsNull then

begin

Form2.Edit1.Text:=DbGrid2.DataSource.DataSet.FieldByName('caption').AsString;

Form2.Edit2.Text:=DbGrid2.DataSource.DataSet.FieldByName('path').AsString;

Form2.Caption:='Редактированиешаблона';

Form2.Label3.Caption:= DbGrid2.DataSource.DataSet.FieldByName('id').AsString;

Form2.show;

end;

end;

procedure TForm1.N6Click(Sender: TObject);

var

s: string;

begin

s := InputBox('Ввод данных','Необходимо указать название нового шаблона','');

if s<>'' then

begin

With AdoQuery1 do

begin

close;

SQL.Clear;

SQl.add('INSERT INTO shablon (caption) VALUES ( :caption )');

Parameters.ParamByName('caption').Value:=s;

EXECSQL;

end;

n7.Click;

end;

end;

procedure TForm1.N4Click(Sender: TObject);

var

Word:Variant;

begin

if not DBGrid1.DataSource.DataSet.FieldByName('id').IsNull then

begin

if fileExists(ExtractFilePath(ParamStr(0))+'shablon\'+DbGrid2.DataSource.DataSet.FieldByName('path').AsString) then