Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

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

Содержание:

ВВЕДЕНИЕ

Информационные технологии – процессы, методы поиска, сбора, хранения, обработки, предоставления, распространения информации и способы осуществления таких процессов и методов.

Самыми используемыми и востребованными абсолютно везде стали так называемые «информационные системы» (ИС). Информационная система - совокупность содержащейся в базах данных информации и обеспечивающих ее обработку информационных технологий и технических средств”.

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

Основные задачи информационной системы: организация обработки, хранения и передачи информации. Информационные системы, в которых представление, хранение и обработка информации осуществляется при помощи вычислительной техники, называются автоматизированными информационными системами или АИС.

Цель курсовой работы – проектирование информационной системы для реализации бизнес-процесса «Управление персоналом» на примере компании «Fit-Studio».

Для достижения поставленной цели необходимо решить следующие задачи:

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

1 Глава. Аналитическая часть

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

«Fit-Studio»– одна из самых крупных сетей тренажерных залов в Росси. В нее входит более 30 залов по всей территории Российской Федерации, от Москвы до Магадана.

Большую популярность компании обеспечивает демократичный ценовой диапазон стоимости занятий по сравнению с конкурентами. А также концепция занятий

Однако, наиболее популярным остается направление спортивных тренировок. Все тренеры, которые работают в компании имеют необходимую квалификацию и обязательно проходят обучение в школе тренеров, которая является частью компании «Fit-Studio». Кроме того, компанией постоянно проводятся соревнования по различным спортивным дисциплинам пауэрлифтинга и бодибилдинга. По результатам соревнований победителям присваиваются соответствующие звания (в зависимости от уровня соревнований). Также проводятся внутренние турниры среди клиентов компании.

Всего в компании работает более 150 сотрудников, поэтому процесс управления персоналом является очень важным для компании. Необходимо учитывать квалификацию тренеров, их уровень подготовки, звания и спортивные достижения.

Для более подробного изучения организации бизнес-процесса управления персоналом в компании «Fit-Studio» будет использован метод моделирования.

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

Для анализа бизнес-процесса воспользуемся функционально-структурным моделированием этой деятельности. В качестве основной методологии построения функциональных моделей выступает IDEF0.

Стандарт IDEF0 регламентирует с помощью входа (первый тип входных данных) показывать объекты, которые преобразуются в данном бизнес-процессе, это могут информационные и материальные потоки. С помощью управления (второй тип) показывают объекты, которые управляют выполнением бизнес-процессам. С помощью механизмов (третий тип) необходимо показывать объекты, которые непосредственно осуществляют данные бизнес-процесс: сотрудники, технические средства, информационный системы. На выходе бизнес-процесса показывают результат выполнения данного бизнес-процесса.

На первом этапе построения IDEF0 модели система представляется как единое целое. Основная цель данного этапа – выявить входные и выходные данные, а также механизмы и правила для данной системы. Диаграмма данного этапа называется контекстной. Контекстная диаграмма для бизнес-процесса «Управление персоналом» изображена на рисунке 1 (для построения диаграмм использовалось CASE-средство AllFusion Process Modeler 7).

Рисунок 1.Контекстная диаграмма

В качестве входных данных для исследуемого бизнес-процесса выступают данные о сотрудниках: их спортивные звания, достижения, уровень квалификации и образования. В качестве выходных – трудовой договор с сотрудником, приказы о принятии на работу и увольнении. Бизнес-процесс выполняется сотрудниками отдела кадров в соответствии с регламентом управления персоналом.

Следующий этап построения функциональной модели – декомпозиция контекстной диаграммы на составляющие её бизнес-процессы. Диаграмма декомпозиции процесса управления персоналом представлена на рисунке 2.

Рисунок 2. Диаграмма декомпозиции

Управление кадрами состоит из четырех основных этапов:

  • прием сотрудников на работу;
  • проведение обучения;
  • ведение кадрового учета;
  • увольнение сотрудников.

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

В процессе выполнения бизнес-процесса управления персоналом в компании «Fit-Studio» формируются следующие документы: трудовой договор, приказ о приеме на работу, приказ об увольнении. На рисунке ниже (рисунок 3) приведена схема документооборота для этих документов.

Рисунок 3. Схема документооборота

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

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

Существует очень простое понятие БД как большого по объему электронного хранилища информации, в которое организация помещает все данные, которые используются при деятельности этой организации, а доступ к этой информации осуществляется посредством специального программного обеспечения. Однако чаще всего под базой данных понимают любой массив взаимосвязанных данных, хранящихся на компьютере.

Базы данных проектируются на основе представлений конечных пользователей конкретной организации, которые называют концептуальными требованиями к системе. Именно конечный пользователь принимает какие-то решения на основе полученной информации, хранящейся в базе данных. От оперативности и качества этой информации будет зависеть эффективность работы организации. Данные, помещаемые в базу данных, также предоставляет конечный пользователь.

Имеется несколько возможных моделей данных. Инфологическая модель отображает законы реального мира в различном виде, доступном для понимания человеком. Такие модели полностью независимы от характеристик среды хранения данных. В настоящее время существует достаточно много различных подходов к построению таких моделей, однако, наиболее распространенной является модель «сущность-связь».

Основная идея модели «Сущность-связь» заключается в том, что инфологическую модель данных отображают в компьютеро-ориентированную даталогическую модель. Ориентированность на компьютеры означает, что она понятная СУБД. Системы управления базами данных, которые способны понимать и поддерживать различные даталогические модели были созданы в результате интенсивного развития как теории, так и практического использования технологий баз данных.

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

Также для малопроизводительных ЭВМ создавались сетевые модели. Модели данного вида представляют собой сложные структуры, каждая из которых состоит из поименованных двухуровневых деревьев (наборов данных). Все наборы соединяются между собой с помощью «записей-связок», образуя с их помощью цепочки и т.д. Для увеличения общей производительности СУБД при разработке сетевых моделей придумали множество «маленьких хитростей». Однако, они значительно усложнили организацию хранения данных. Чтобы организовать корректное использование таких СУБД разработчику необходимо знать большое количество терминов, внутренних языков СУБД, а также детально представлять всю логическую структуру базы данных для осуществления навигации среди экземпляров БД, наборов, записей и т.д.

Проблемы, связанные с организацией хранения данных, привели к необходимости поиска новых способов использования на практике сетевых и иерархических СУБД. СУБД нового типа появились в конце 60-х годов XX века и отличались от предыдущих не только простотой организации внутренней структуры, но и наличием простых языков манипулирования хранимыми данными. Однако, у новых СУБД также были недостатки, в основном они были связаны с ограничениями количества файлов для хранения данных, количества связей между данными, длины записи и количество полей в ней.

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

В качестве входных данных для рассматриваемой деятельности выступают данные о сотрудниках.

В качестве выходных данных – трудовой договор, приказ о приеме на работу и приказ об увольнении.

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

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

В состав программного обеспечения входят общесистемные и специальные программные продукты, в том числе: операционная система, системы программирования, инструментальные средства программиста, тестовые и диагностические программы, программные средства телекоммуникации, защиты информации, функциональное программное обеспечение (автоматизированные рабочие места, системы управления базами данных и т. п.).

Для реализации проектируемой информационной системы необходимо выбрать язык программирования для создания пользовательского интерфейса и систему управления базой данных для организации хранения информации в виде базы данных.

В качестве языка программирования был выбран язык Delphi.

Delphi – язык программирования высокого уровня, имеющий следующие особенности:

  • набор операторов языка отражает принципы структурного проектирования и позволяет записывать достаточно сложные алгоритмы в лёгкой и элегантной форме;
  • синтаксис языка достаточно несложный и включает в себя возможности объектно-ориентированного программирования;
  • язык прост для изучения;
  • позволяет работать с базами данных;
  • позволяет составлять отчёты;
  • наличие компилятора с возможностью компоновки исполняемых файлов под операционные системы семейства Windows.

В качестве системы управления базой данных была выбрана СУБД MySQL.

СУБД MySQL наделена всеми необходимыми возможностями. В частности, система обладает следующими преимуществами:

  • обеспечивает высокую надежность и устойчивость к различным сбоям;
  • позволяет осуществлять доступ к данным посредством ЛВС;
  • обладает развитой системой репликации, позволяющей избегать конфликтов изменений и чтений информации при многопользовательском доступе к БД.

2 Глава. Проектная часть

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

Информационной моделью называют схему движения входной, промежуточной и результативной информации и функций предметной области. Также с помощью информационной модели объясняется с помощью каких входных данных (документов) и какой нормативно-справочной информации происходит выполнение основных функций. Информационная модель проектируемой ИС автоматизации управления персоналом представлена на рисунке 4.

Рисунок 4. Информационная модель

Полученная информационная модель показывает, что в системе будет три справочника: звания, виды спорта, должности, а также три таблицы для хранения оперативных данных: приказы, сотрудники и договоры. Три выходных документа, который формируются на основании соответствующей справочной и оперативной информации: трудовой договор, приказ о приеме н работу и приказ об увольнении. Данные документы формируются с помощью формы «Работа с данными сотрудника». Работа со справочниками системы выполняется с помощью соответствующей формы «Управление справочниками».

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

В информационной системе используются три справочника: звания, виды спорта, должности.Характеристики справочников приведены в таблице 2.

Таблица 2

Справочники информационной системы

№ пп

Название справочника

Ответственный за ведение

Средний объём справочника в записях

Среднюю частоту актуализации

Средний объем актуализации, %

1

Звания

Руководитель отдела кадров

15

1 раз в месяц

5

2

Виды спорта

Руководитель отдела кадров

50

1 раз в месяц

2

3

Должности

Руководитель отдела кадров

5

1 раз в год

20

За ведение всех справочников отвечает руководитель отдела кадров, для каждого вида справочника своя частота актуализации и средний объем актуализации.

Реквизитный состав используемых в системе справочников представлен в таблице 3.

Таблица 3

Реквизитный состав справочников информационной системы

№ п/п

Наименование справочника

Перечень реквизитов

1

Звания

Наименование

2

Виды спорта

Наименование

3

Должности

Наименование

Оклад

Имя файла-шаблона договора

Редактирование и ввод новых записей во все справочники осуществляется с помощью специальных форм. Они все имеют одинаковую структуру: для каждого реквизита справочника имеется отдельное поле. Макеты форм представлены на рисунках 5 и 6.

Рисунок 5. Макет формы«Должность»

Рисунок 6. Макет формы «Вид спорта» и «Звания»

В качестве входных данных для информационной системы выступают данные о сотрудниках. Эти данные вводятся в ИС с помощью специальной формы, макеты которой приведен на рисунке7.

Рисунок 8. Макет формы для добавления данных о сотрудниках

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

Все данные, вводимые с помощью форм, приведенных ниже, сохраняются в базе данных и используются для формирования выходных данных.

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

В качестве выходных данных выступают трудовой договор, приказ о приеме на работу и приказ об увольнении.

Подробное описание выходных данных в таблице 4.

Таблица 4

Описание результатной информации

Наименование

Трудовой договор

Приказ о приеме на работу

Приказ об увольнении

Реквизиты

Номер договора

Дата начала действия

Дата окончания действия

ФИО сотрудника

Должность сотрудника

Номер приказа

Номер договора

ФИО сотрудника

Должность

Дата приказа

Номер приказа

Номер договора

ФИО сотрудника

Должность

Дата приказа

Таблицы, на основе которых формируется

Договоры

Сотрудники

Должности

Договоры

Сотрудники

Должности

Приказы

Договоры

Сотрудники

Должности

Приказы

Частота формирования

По мере необходимости

По мере необходимости

Способ доставки

Файл в формате Word

Файл в формате Word

Файл в формате Word

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

Базовый набор функций разработанной информационной системы можно изобразить в виде дерева, изображенного на рисунке 10.

Рисунок 10. Дерево функций

Выполнение функций разработанной информационной системы осуществляется с помощью ведения диалога с пользователем. То есть Пользователь информационной системывыполняет какие-то действия, а программа соответствующим образом на них реагирует. Сценарий диалога с пользователем представлен на рисунке 11.

Рисунок 11. Сценарий диалога

После успешного запуска программы пользователю предлагается выбрать задачу, которую он собирается решить: работа со справочниками, работа с данными сотрудников. В зависимости от выбора пользователя ему открываются различные формы пользовательского интерфейса, предназначенные для решения выбранной задачи.

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

В качестве системы управления базой данный для разрабатываемой информационной системы была выбрана СУБД MySQL.

Для хранения всех необходимых данных была спроектирована и создана база данных, состоящая из 7таблиц. ER-модель спроектированной базы данных представлена на рисунке 12.

Рисунок 12. ER-модель базы данных

Описание всех таблиц базы данных представлено в таблицах 5-11.

Таблица 5

Таблица Sotrudniki (Сотрудники)

Наименование поля

Идентификатор поля

Тип поля

Длина поля

Прочее

Идентификатор

id

Integer

4

PK

ФИО

fio

Varchar

120

Электроннаяпочта

email

Varchar

120

Телефон

phone

Varchar

120

Должность

dolgnotid

Integer

4

FK

Прописка

address

Varchar

120

Данные паспорта

pasport

Varchar

120

День рождения

birthdate

Datetime

-

Статус

Status

Boolean

1

Таблица 6

Таблица Dolgnosti (Должности)

Наименование поля

Идентификатор поля

Тип поля

Длина поля

Прочее

Идентификатор

id

Integer

4

PK

Наименование

caption

Varchar

120

Оклад

oklad

Integer

4

Файл шаблона договора

shablon

Varchar

255

Таблица 7

Таблица Sports (Виды спорта)

Наименование поля

Идентификатор поля

Тип поля

Длина поля

Прочее

Идентификатор

id

Integer

4

PK

Наименование

caption

Varchar

120

Таблица 8

Таблица Zvaniya (Звания)

Наименование поля

Идентификатор поля

Тип поля

Длина поля

Прочее

Идентификатор

id

Integer

4

PK

Наименование

caption

Varchar

120

Таблица 9

Таблица ZvaniyaSotr (Званиясотрудников)

Наименование поля

Идентификатор поля

Тип поля

Длина поля

Прочее

Идентификатор

id

Integer

4

PK

Дата присвоения

datepris

Datetime

-

Звание

zvanieid

Integer

4

FK

Вид спорта

sportid

Integer

4

FK

Сотрудник

sotrudnikid

Integer

4

FK

Таблица 10

Таблица Prikaz (Приказ)

Наименование поля

Идентификатор поля

Тип поля

Длина поля

Прочее

Номер

id

Integer

4

PK

Дата приказа

prikazdate

Datetime

120

Тип приказа

type

Varchar

120

Договор

dogovorid

Integer

4

FK

Таблица 11

Таблица Dogovor (Договор)

Наименование поля

Идентификатор поля

Тип поля

Длина поля

Прочее

Номер

id

Integer

4

PK

Дата начала действия

begindate

Datetime

-

Дата окончания действия

enddate

Datetime

-

Сотрудник

sotrid

Integer

4

FK

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

Проект программы состоит из трех модулей:

  • модуль Main.pas(главный модуль);
  • модуль Spravochnik.pas (работа со справочниками);
  • модуль Sotrudnik.pas (работа с данными сотрудника).

Подробное описание модулей представлено в виде таблицы 9.

Таблица 9

Описание модулей системы

№ п/п

Наименование модуля

Функции модуля

1.

модуль Main.pas

содержит процедуры и функции, отвечающие за отображение главного окна программы со списком сотрудников и её главного меню, а также компоненты соединения и взаимодействия с базой данных MySQL

2.

модульSpravochnik.pas

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

3.

модуль Sotrudnik.pas

модуль содержит процедуры и компоненты для работы с данными отдельного сотрудника (добавление, редактирование), а также формирования для него документов и выгрузки их в MicrosoftWord

Дерево вызова программных модулей приведено на рисунке 13.

Рисунок 13. Дерево вызова программных модулей

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

После запуска программы инициализируется подключения к базе данных. Соединение с базой данных осуществляется с помощью технологии ADO.Данная технология связи с хранилищами данных завоевала особую популярность у разработчиков, благодаря своей универсальности – базовый набор интерфейсов OLE DB имеется в каждой современной операционной системе Windows. Поэтому для обеспечения доступа приложения к данным достаточно лишь правильно указать провайдер соединения ADO, после этого можно переносить созданный программные продукт на любой компьютер, где имеется требуемая база данных и, конечно, установленная ADO.

В палитре компонентов Delphi есть отдельная вкладка ADO, которая содержит набор компонентов, позволяющих создавать полноценные приложения БД, обращающиеся к данным через данную технологию.

Для соединения с базой данных достаточно разместить компонент AdoConnection и сформировать для него строку подключения (ConnectionString). Данная строка включает описание поставщика данных (в данном случае – это MySQL), а также параметры подключения, которые разнятся для каждого источника данных. Для MySQLуказываются адрес и порт сервера, имя базы данных, логин и пароль пользователя. В дальнейшем все компоненты палитры ADO работают через компонент AdoConnection, подключаясь по мере необходимости. В данной ИС используется два компонента организации работы с данными: AdoTable и AdoQuery.

Форма работы со справочниками системы работает напрямую с таблицами базы данных, поэтому для её работы используется компонент 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

begin

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

Word.Documents.Add(ExtractFilePath(ParamStr(0))+'shablon\'+DbGrid2.DataSource.DataSet.FieldByName('path').AsString);

Word.visible:=true;

end

else

begin

Showmessage(' Файл '+DbGrid2.DataSource.DataSet.FieldByName('path').AsString+' ненайден в папкеshablon.'+#10+#13+'Проверьте правильностьназванияфайла и егоналичие в указаннойпапке.');

end;

end;

end;

procedure TForm1.N2Click(Sender: TObject);

begin

n7.Click;

n8.Click;

end;

procedure TForm1.FormResize(Sender: TObject);

begin

panel1.Width:=Round((form1.Width-50)*0.5);

panel2.Width:=Round((form1.Width-50)*0.5);

panel1.Width:=Round(form1.Width*0.5);

BitBtn3.Left:=Round(panel5.Width*0.5)-Round(Bitbtn3.Width*0.5);

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

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

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

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

end;

procedure TForm1.BitBtn3Click(Sender: TObject);

const

wdReplaceNone = 0;

wdReplaceOne = 1;

wdReplaceAll = 2;

wdFindContinue = 1;

var

Word, wdRng:Variant;

begin

//проверкауказанлифайл

if DbGrid2.DataSource.DataSet.FieldByName('path').IsNull then begin ShowMessage('Длявыбранногошаблонадоговоранеуказаноимяфайла'); exit; end;

//

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

begin

Showmessage(' Файл '+DbGrid2.DataSource.DataSet.FieldByName('path').AsString+' ненайден в папкеshablon.'+#10+#13+'Проверьте правильностьназванияфайла и егоналичие в указаннойпапке.');

exit;

end;

//запрашиваемданные

With AdoQuery1 do

begin

close;

SQl.clear;

SQL.Add('SELECT Dogovor.*, Employer.*, Staff.*, TypeDoc.*, Worker.*, TypeWork.*, StaffDoc.*');

SQL.Add('FROM ((TypeWork INNER JOIN (Staff INNER JOIN (Worker INNER JOIN (Employer INNER JOIN Dogovor ON Employer.Id = Dogovor.Employer) ON Worker.Id = Dogovor.Worker) ON Staff.Id = Dogovor.Staff) ');

SQL.add(' ON TypeWork.Id = Dogovor.TypeWork) INNER JOIN StaffDoc ON Staff.Id = StaffDoc.Staff) INNER JOIN TypeDoc ON StaffDoc.TypeDoc = TypeDoc.Id');

SQL.Add(' WHERE (((Worker.Id)= :id ))');

Parameters.ParamByName('id').Value:=DbGrid1.DataSource.DataSet.FieldByName('id').AsString;

open;

end;

IfAdoQuery1.RecordCount=0 thenbeginShowMessage('Для выбранного работника в базе данны не добавлен договор.'+#10+#13+'Добавьте трудовой договор с помощью SAP'); exit; end;

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

Word.Documents.Add(ExtractFilePath(ParamStr(0))+'shablon\'+DbGrid2.DataSource.DataSet.FieldByName('path').AsString);

Word.visible:=true;

wdRng:=Word.ActiveDocument.Range;

//Настройка поиска и замены.

wdRng.Find.ClearFormatting;

wdRng.Find.Forward := True;

wdRng.Find.Wrap := wdFindContinue;

//Учёт регистра букв: True - учитывать, False - не учитывать.

wdRng.Find.MatchCase := False;

//True - поиск шаблона как целого слова, иначе - False.

wdRng.Find.MatchWholeWord := False;

wdRng.Find.Text := '<ФИО работника>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('FIO').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Номер>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('NumDogovor').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Дата договора>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('DateDogovor').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Город>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('City').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Полное наименование>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('FullCaption').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Сокращенное наименование>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('ShortCaption').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Должность руководителя>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('DirectorStaff').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<ФИО руководителя>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('DirectorFIO').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Документ руководителя>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('DocCaption').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Должность>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('Staff.caption').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Срок договора>';

if not AdoQuery1.FieldByName('NotLimitDate').isNull then

wdRng.Find.Replacement.Text := 'на неопределенный срок'

else

wdRng.Find.Replacement.Text := 'насрок с '+AdoQuery1.FieldByName('BeginDate').AsString+'по'+AdoQuery1.FieldByName('EndDate').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Испытание>';

if not AdoQuery1.FieldByName('NotTest').isNull then

wdRng.Find.Replacement.Text := 'Работник принимается без испытания'

else

wdRng.Find.Replacement.Text := 'Работнику устанавливается испытание продолжительностью '+AdoQuery1.FieldByName('TestPeriod').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Дата начала работы>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('BeginWorkDate').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Дата начала действия трудового договора>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('BeginDogovorDate').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Типработы>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('TypeWork.caption').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Наименование документа>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('TypeDoc.Caption').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Датаномер>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('StaffDoc.DocDate').AsString+' № '+AdoQuery1.FieldByName('StaffDoc.DocNumber').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Заголовок>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('DocHeader').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<ФИО начальника>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('DirectorFIO').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Дополнительный отпуск>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('AddHoliday').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Основной отпуск>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('BaseHoliday').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Оклад>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('Salary').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Условия премии>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('CondCalcPrem').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Видработы>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('NatureWork').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Условия труда>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('CondWork').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Орудиятруда>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('ToolWork').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Характер работы>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('Staff.TypeWork').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Телефон работодателя>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('Employer.Phone').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Адрес работодателя>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('Employer.Address').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<ИНН работодателя>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('INN').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Телефон работника>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('Worker.Phone').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Адрес работника>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('Worker.Address').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

wdRng.Find.Text := '<Паспорт работника>';

wdRng.Find.Replacement.Text := AdoQuery1.FieldByName('Passport').AsString;

wdRng.Find.Execute(Replace:=wdReplaceAll);

ShowMessage('Договорсформирован');

end;

end.