Проектирование реализации операций бизнес-процесса «Управление персоналом» в организации
Содержание:
Введение
Персонал и эффективное управление им это основа бизнеса. Вопросы продуманного управления персоналом должны занимать одно из ключевых мест в общей стратегии развития предприятия. Важная роль в оптимизации управления сотрудниками любого предприятия принадлежит автоматизированным системам управления персоналом. В своей деятельности компании вынуждены нанимать работников, как на временной, так и постоянной основе, вести документацию на каждого из них, поддерживая ее в виде, соответствующем как внутренним, так и внешним требованиями. Любая автоматизированная система управления персоналом предоставляет всем заинтересованным лицам мгновенный доступ ко всей необходимой информации.
Если вчера, автоматизировать какой-либо отдел могли позволить себе только крупные компании, то сегодня уже маленькие фирмы могут позволить себе автоматизировать даже целые отделы в работе фирмы.
Автоматизация одела кадров – это следующие после бухгалтерского отдела, который следует автоматизировать.
Сегодня перед руководством фирм стоит вопрос – покупать готовый продукт или заказать программу с учетом индивидуальных особенностей фирмы. Следует отметить, что при приобретении готового программного продукта в любом случае потребуется серьезная настройка программы под конкретные требования, а также обязательное дальнейшее программное сопровождение, и обучение персонала, что выразится в ощутимых финансовых и временных затратах, а офисные средства способны в полной мере решить поставленные задачи и приемлемы по цене.
Таким образом, тема данной курсовой работы является актуальной с практической точки зрения.
Объектом анализа данной работы является отдел кадров, предметом исследования является, выступает автоматизации отдела кадров предприятия.
Целью исследования является изучение БД и СУБД и разработки программы БД для автоматизации работы отдела кадров
Цель исследования определили постановку следующих задач:
Описать документооборот в отделе кадров;
Описать бизнес-процессы;
- Обосновать проектные решения по информационному обеспечению;
- Обосновать проектные решения по программному обеспечению;
- Описать информационную модель программы;
- Описать программное обеспечение;
- И описать пример реализации программы.
Работа состоит из введения, двух глав, заключения и списка использованной литературы.
1 ГЛАВА. АНАЛИТИЧЕСКАЯ ЧАСТЬ.
1.1. Характеристика комплекса задач
Выбор комплекса задач автоматизации
В любой фирме процесс автоматизации начинается с автоматизации отдела бухгалтерии, некоторых отделов производства. Но следует уделить внимание и отделу кадров. Так как если вся деятельность отдела кадров выполняется в обычном режиме, то имеет место как временные затраты, так и финансовые затраты, так и уменьшит число ошибок.
Автоматизация отдела кадров позволит хранить большие объемы информации, работать с ними, и с легкостью выполнять прием и увольнение работников на работу, и управлять переводом сотрудников из одного отдела фирмы с другой (случае перевода например).
Таким образом, цель курсового проекта – разработка информационной системы (ИС) для автоматизации работы отдела кадров предприятия.
Характеристика и существующих бизнес –процессов
Бизнес-процессы которые происходят в отделе кадров схематично показаны на рисунке 1.
Рисунок 1 – Бизнес-процессы
Характеристика документооборота, возникающего при решении задачи
Документооборот, который происходит в отделе кадров предприятия представлен на рисунке 2.
Рисунок 2 – Схема документооборота в отделе кадров
Из данных рисунка 2 следует, что процесс найма или увольнения работника происходит в обычном режиме, то есть не автоматизированном.
Но данный метод обработки информации является очень неудобный, так как ведение всей документации в бумажной форме не актуально на данный момент и имеет существенные недостатки, а именно:
Большой объем информации;
Выполнение рутинных работы;
Сложной составления отчетности;
Большая вероятность ошибки и трудность ее исправления.
Так как весь объем работы выполняется как правило один работник, то его работу можно представить с помощью следующих диаграмм (См. Рисунок 3 и 4).
Рисунок 3 – Обработка запроса работником отдела кадров в обычном режиме
Рисунок 4 – Детализация процесса в обычном режиме
Если автоматизировать работу работника отдела кадров, тогда выше представленные схемы будут иметь вид:
Рисунок 5 - Обработка запроса работником отдела кадров в автоматизированном режиме
Рисунок 6 – Детализация процесса в автоматизированном режиме
Из последних двух рисунков видно, что сокращается не только количество кадров (если их больше чем один работник), но и количество операций, нужных для получения документа.
1.2. Обоснование проектных решений
Обоснование проектных решений по информационному обеспечению
Информационное обеспечение - совокупность данных, представленных в определенной форме для компьютерной обработки.
ИО это совокупность следующих трех компонент:
• Системы классификации и кодирования;
• Системы унифицированной документации, которая используется в ИО;
• Информационная база.
Классификатор представляет сгруппированный, по различным признакам, перечень наименованных объектов, где каждому из них присвоен уникальный код, в соответствии с их общими признаками или различиями. Классификаторы применяются для упрощения работы по сбору информации и систематизации данных, а также используются для указания кодов в различных унифицированных документах.
В был употреблен локальный классификатор. Локальная классификатор имеет область видимости – всю программу.
В программе используется один классификатор, который имеет следующее описание:
Классификатор номер работника:
Структурная формула классификатора следующая
F = [Наименование]:[XXX] — номер работника
Пример заполнения — 1212.
В теории информатике есть следующие типы баз данных:
Иерархическая модель;
Сетевая модель;
Реляционная модель.
Для иерархической модели характерно, то, что данные представлены в древовидной форме. Если сравнить с файловой системой компьютера, то принцип построения иерархической модели такой же.
В этой модели представление данных организовано в виде деревьев. Каждое дерево выступает в качестве структуры данных, тип сегмента потомка в которой связан исключительно с 1-м типом сегмента предка.
Для иерархической модели, свойственны следующие ограничения:
1. Если необходимо представить неиерархические отношения данных, то потребуются дополнительные манипуляции.
2. Нет четкого разграничения физических и логических характеристик модели.
3. В случае с непредвиденными запросами может потребоваться реорганизация базы данных.
Для сетевой модели данных характерно, то что данные организованы в виде сети. И у одного узла может более одного потомка, по сравнению с иерархической – где только один потомок.
Преимущества модели следующие – универсальность, возможность организации доступа к данным с нескольких узлов
Недостатки – сложность, применение для организации доступа к данным только навигационного принципа.
Для реляционной модели характерно:
- Имеет структурный аспект;
- Таблицы БД удовлетворяют свойству целостности;
- Есть возможность манипулировать данными, которые хранятся в базе.
Таким образом, для разработки БД использовалась реляционная модель баз данных.
Обоснование проектных решений по программному обеспечению
В качестве языка программирования в среде Borland Delphi используется язык Delphi, являющийся прямым потомком хорошо известного языка Pascal и позволяющий создавать системы любой сложности.
Delphi - это комбинация нескольких важнейших технологий:
- Высокопроизводительный компилятор в машинный код
- Объектно-ориентированная модель компонент
- Визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов
- Масштабируемые средства для построения баз данных.
Компилятор, встроенный в Delphi, обеспечивает высокую производительность, необходимую для построения приложений в архитектуре “клиент-сервер». Он предлагает легкость разработки и быстрое время проверки готового программного блока, характерного для языков четвертого поколения (4GL) и в тоже время обеспечивает качество кода, характерного для компилятора 3GL. Кроме того, Delphi обеспечивает быструю разработку без необходимости писать вставки на Си или ручного написания кода (хотя это возможно)[1].
В процессе построения приложения разработчик выбирает из палитры компонент готовые компоненты как художник, делающий крупные мазки кистью. Еще до компиляции он видит результаты своей работы - после подключения к источнику данных их можно видеть отображенными на форме, можно перемещаться по данным, представлять их в том или ином виде.
В Delphi компиляция производится непосредственно в родной машинный код, в то время как существуют компиляторы, превращающие программу в так называемый p-код, который затем интерпретируется виртуальной p-машиной. Это не может не сказаться на фактическом быстродействии готового приложения[2].
Основной упор в Delphi делается на максимальном реиспользовании кода. Это позволяет разработчикам строить приложения весьма быстро из заранее подготовленных объектов, а также дает им возможность создавать свои собственные объекты для среды Delphi. Никаких ограничений по типам объектов, которые могут создавать разработчики, не существует. Действительно, все в Delphi написано на нем же, поэтому разработчики имеют доступ к тем же объектам и инструментам, которые использовались для создания среды разработки. В результате нет никакой разницы между объектами, поставляемыми Borland или третьими фирмами, и объектами, которые вы можете создать. В стандартную поставку Delphi входят основные объекты, которые образуют удачно подобранную иерархию из 270 базовых классов. На Delphi можно одинаково хорошо писать как приложения к корпоративным базам данных, так и, к примеру, игровые программы. Во многом это объясняется тем, что традиционно в среде Windows было достаточно сложно реализовывать пользовательский интерфейс. Событийная модель в Windows всегда была сложна для понимания и отладки. Но именно разработка интерфейса в Delphi является самой простой задачей для программиста.
В первую очередь Delphi предназначен для профессионалов-разработчиков корпоративных информационных систем. Однако, Delphi может использоваться и преподавателями ВУЗов, студентами, учителями, бизнесменами, всеми теми, кто использует компьютер с чисто прикладной целью[3].
Для разработки информационной системы мы использовали интегрированную среду разработки Borland Delphi 7. Эта среда представляет богатые возможности для разработки приложений Win32, обеспечивает дружественный интерфейс пользователя для приложений.
2 глава. ПРОЕКТНАЯ ЧАСТЬ
2.1. Информационное обеспечение задачи
Информационная модель и её описание
В программе используется база данных, куда заносится вся информация.
Эта БД состоит из 1 таблицы со следующими полями: фамилия, имя, отчество, паспортные данные, сумма заработной платы, должность и дополнительные сведения.
И тогда информационная модель будет следующей:
Рисунок 7 – Информационная модель программы
Характеристика нормативно-справочной, входной и оперативной информации
Входной информацией является информация о работнике предприятия – фамилия, имя, отчество, должность, заработная плата. Входная информация вводится в ниже представленную форму (См. Рисунок 8):
Рисунок 8 – Ввод данных о работнике
Вся информация хранится в одно таблице.
Входная информация обновляется в процессе работы программы, могут быть корректировки, если была допущена ошибка или есть какие-то изменения, например в заработной плате.
Характеристика результатной информации
К результирующей информации относится информация которая получается в процессе работы программы. А именно:
Заполненная база данных (отдельный документ);
Отчеты по заработной плате сотрудников.
2.2. Программное обеспечение задачи
Общие положения (дерево функций и сценарий диалога)
Программа создается для одного пользователя – работника отдела кадров.
Дерево функций разрабатываемой программы представлено на рисунке 9.
Рисунок 9 - Дерево функций программы
Сценарий диалога программы представлен на рисунке 10.
Рисунок 10 – Сценарий функций программы
Характеристика базы данных
Базой данных (БД) называется совокупность материалов, которые систематизированы таким образом, чтобы их было легко найти и обработать с помощью ПК или другой ЭВМ (электронно-вычислительной машины). Под материалами может пониматься все, что угодно: статьи, различные документы, отчеты и т.д.
БД называется также такая совокупность данных, которая хранится на ПК в соответствии с определенной схемой.
В нашем случае БД – это единственная таблица (состоящая из полей familia, name, surname, pasport, zarplata, dolzhnost, info), а именно:
Таблица 1 – Описание полей БД
№ п/п |
Название |
Тип |
Значение |
1 |
Номер кадра |
Integer |
Табельный номер работника |
2 |
familia |
String |
Фамилия |
3 |
name |
String |
Имя |
4 |
surname |
String |
Отчество |
5 |
Passport |
Integer |
Номер паспорта |
6 |
Zarplata |
Integer |
Сумма заработной платы |
7 |
dolzhnost |
String |
Занимаемая должность |
8 |
info |
String |
Дополнительная информация (образование, и опыт работы) |
Структурная схема пакета (дерево вызова программных модулей)
При запуске программы, открывается окно с приветствием, и только после нажатия кнопки «Далее», происходит переход на основную форму программы.
Для создания данной программы использовались следующие модули:
Unit1.pas – модуль приветствия;
Unit2.pas – модуль основной формы программы. На нем находится – меню – элемент MainMenu1, компонент для открытия базы данных – OpenDialog1, компонент для сохранения базы данных SaveDialog1,
Unit3.pas – модуль, который представляет собой форму для добавления данных – форма «Добавление записи»;
Unit4.pas – модуль, который представляет собой форму для редактирования данных – форма «Редактирование записи»;
Unit5.pas – модуль, который используется для поиска;
Unit6.pas - график, то есть представление размера заработной платы сотрудников в графической форме;
Unit7.pas - окно, которое появляется после того, как была нажата кнопка «Выход» , так называемое окно «Завершение работы приложения».
Дерево вызова программных модулей программы представлено на рисунке 11.
Рисунок 11 – Дерево вызова программных модулей приложения
Описание программных модулей
Алгоритм работы программы можно представить в виде диаграммы последовательности:
Рисунок 12 – Алгоритм работы программы
Что бы добавить нового пользователя необходимо заполнить форму, а для этого разработан модуль Unit5, который представлен на рисунку ниже:
Рисунок 13 – Блок-схема работы модуля Unit5
2.3. Контрольный пример реализации проекта и его описание
Основное окно программы изображено на рисунке 14.
Рисунок 14 – Общий вид главного окна
Интерфейс пользователя максимально прост. Основным элементом управления является таблица данных о сотрудниках. В ней отображается фамилия, имя, отчество, занимаемая должность, паспортные данные, зарплата, также имеется независимое поле, в котором указывается дополнительная информация о сотруднике предприятия.
Также в программе предусмотрена возможность сохранения базы данных в файл, поиск сотрудника по базе данных, загрузка базы из файла в программу и возможность просмотра сравнительного графика о заработной плате сотрудников предприятия.
Для того, что бы отредактировать информацию о сотруднике, если были введены неточности, следует выделить соответствующую запись нажать кнопку меню «Управление» - «Редактирование записью» и в открывшемся окне исправить.
Для организации ввода информации в программе предусмотрены диалоги с проверкой введенных данных (рисунок 15):
Рисунок 15 - Удаление записи
Для того, что бы получить статистические данные о заработной плате работников необходимо нажать на кнопку меню «График» - «По паспортным данным», и в результате будет представлен график в виде гистограммы, число столбцов зависит от числа работников:
Рисунок 16 – График заработной платы сотрудников
Программа позволяет отсортировать все записи БД. Для того, что бы отсортировать в двух направления по алфавиту и наоборот. Для этого следует нажать либо соответствующую кнопку либо выбрать пункт меню «Отсортировать». И все записи от сортируются в соответствии с заданными требованиями.
Для выхода из программы следует нажать кнопку «Выход». Затем появится «прощальное» окно.
Рисунок 17 – Завершение работы программы
ЗАКЛЮЧЕНИЕ
Цель курсового проекта – разработка программы для автоматизации отдела кадров выполнена.
Для реализации поставленной цели изучены теоретические вопросы по автоматизации работы отдела кадров.
Так же:
- Описан документооборот, который имеет место на предприятию;
- Описаны бизнес-процессы в автоматизированном и не автоматизированном режиме;
- обоснован выбор проектных решений по информационному обеспечению – выбрана реляционная модель баз данных,
- обоснован выбор проектных решений по программному обеспечению – выбрана среда разработки Borland Delphi 7.
Автоматизация рабочего места работника отдела кадров, позволит уменьшить время на обработку информации; произойдет сокращение затрат на обработку информации; уменьшатся затраты времени на поиск необходимой информации; улучшится качества контроля и учета обрабатываемой информации; повысится эффективность работы не только кадровика, но и остальных подразделений фирмы.
Можно заключить, что применение информационные технологий значительно повышает эффективность работы кадровых служб за счет использования преимуществ информационных систем.
Внедрение современных технологий классического кадрового учета оставит сотрудникам гораздо больше времени на работу с современными инструментами управления персоналом - управления мотивацией, планированием расходов и прочее, и прочее.
БИБЛИОГРАФИЯ
- Карпова Т.С. Базы данных: модели, разработка, реализация. СПб.: Питер, 2001. –304с.
- Фаронов В.В. Программирование баз данных в Delphi 7. Учебный курс. – СПб: Питер, 2006. – 459с.
- Конноли Т., Бегг Л., Страчан А. Базы данных. Проектирование, реализация и сопровождение. Теория и практика. – 2-е изд. – Вильямс, 2000.
- Хомоненко А.Д. и др. Delphi 7./ Под общей редакцией А. Д. Хомоненко – СПб.: BHV, 2004.
Приложение А
Код программы
unit my_class_methods; //модуль с методами класса
interface
uses
SysUtils, Dialogs;
type
RDannue=record //переменная типа запись с полями фамилия, имя , отчество, должность,
familia: string[20]; //паспортные данные, заработная плата, дополнительная информация
name: string[15];
surname: string[30];
dolzhnost:string[255];
info: string[255];
pasport:integer;
zarplata:integer;
end;
//описания класса методов для
//автоматизированной работы отдела кадров
TDannue = class
public
otdelkadrov : array[0..100] of RDannue; // массив записей
kol_vo:integer; // количество записей
number: integer; //номер текущей строки
constructor Create; //конструктор класса
//метод для добав-
//ления записи
procedure Dannue_add(familia, name, surname, dolzhnost, info: string; pasport,
zarplata : integer);
//удаляет запись
procedure Del_Dannue (number : integer);
//сохраняет базу
//в файл
procedure Save (filename : string);
//загружает базу
//из файла
procedure Load (filename : string);
procedure Sort; //сортировка по алфавиту
procedure Sorted; //сортировка против алфавита
procedure Dannue_update(number: integer;familia, name, surname, dolzhnost, info : string; pasport,
zarplata : integer);
end;
implementation
constructor TDannue.Create; //конструктор для
begin //класса TDannue
inherited Create; //вызов родительского
//конструктора
Kol_vo := 1; // количество записей =1
end;
procedure TDannue.Sort(); // сортировка по алфавиту(выборкой)
var
i, j : integer;
k : integer;
m : RDannue;
begin
for i := 1 to (kol_vo - 2) do
for j := (i + 1) to (kol_vo - 1) do
begin
k := i;
if (otdelkadrov[j].familia[1]<otdelkadrov[k].familia[1]) and (otdelkadrov[j].familia[1] <> '') then
k := j;
m := otdelkadrov[i];
otdelkadrov[i] := otdelkadrov[k];
otdelkadrov[k] := m;
end;
end;
procedure TDannue.Dannue_add(familia, name, surname, dolzhnost, info : string; pasport, zarplata : integer);
begin //процедура для добавления
//записи
otdelkadrov[kol_vo].name:= name;
otdelkadrov[kol_vo].familia := familia;
otdelkadrov[kol_vo].surname := surname;
otdelkadrov[kol_vo].dolzhnost := dolzhnost;
otdelkadrov[kol_vo].info := info;
otdelkadrov[kol_vo].pasport := pasport;
otdelkadrov[kol_vo].zarplata := zarplata;
inc (kol_vo);
end;
procedure TDannue.Dannue_update(number: integer;familia, name, surname, dolzhnost, info : string;
pasport, zarplata : integer);
begin //процедура для добавления
//записи
otdelkadrov[number].name:= name;
otdelkadrov[number].familia := familia;
otdelkadrov[number].surname := surname;
otdelkadrov[number].dolzhnost := dolzhnost;
otdelkadrov[number].info := info;
otdelkadrov[number].pasport := pasport;
otdelkadrov[number].zarplata := zarplata;
end;
procedure TDannue.Del_Dannue(number : integer); // процедура удаления записи из базы
var
i : integer;
begin
dec (number);
for i := number to (kol_vo - 1) do
otdelkadrov[i] := otdelkadrov[i+1];
kol_vo := kol_vo - 1;
end;
procedure TDannue.Save(filename : string); // процедура сохранения базы в типизированный файл *.bas
var
data_file : file of RDannue;
i : integer;
begin
if pos ('.bas', filename) = 0 then
filename := filename + '.bas';
assignfile (data_file, filename);
rewrite (data_file);
for i := 1 to kol_vo do
write (data_file, otdelkadrov[i]);
closefile (data_file);
end;
procedure TDannue.Sorted(); //процедура сортировки данных против алфавита(выборкой)
var
i, j : integer;
k : integer;
m : RDannue;
begin
for i := 1 to (kol_vo - 2) do
for j := (i + 1) to (kol_vo - 1) do
begin
k := i;
if otdelkadrov[j].familia[1] > otdelkadrov[k].familia[1] then
k := j;
m := otdelkadrov[i];
otdelkadrov[i] := otdelkadrov[k];
otdelkadrov[k] := m;
end;
end;
procedure TDannue.Load(filename : string); //процедура открытия файла
var
data_file : file of RDannue;
begin
kol_vo := 1;
assignfile (data_file, filename);
reset (data_file);
while not(eof(data_file)) do
begin
read (data_file, otdelkadrov[kol_vo]);
inc (kol_vo);
end;
dec (kol_vo);
closefile (data_file);
end;
end.
unit Unit1; // модуль первой формы
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, XPMan, my_class_methods;
type
TForm1 = class(TForm)
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Label6: TLabel;
XPManifest1: TXPManifest;
Label7: TLabel;
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2, Unit7;
{$R *.dfm}
procedure TForm1.BitBtn2Click(Sender: TObject); // Уверены, что хотите выйди?
begin
if MessageDlg('Вы уверены, что хотите выйти?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
form7.show;
form1.Hide;
end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject); //открываем следующую форму
begin
form2.show;
form1.hide;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); // обработчик на закрытие формы
begin
//закрыта форма
//закрываем все приложение
application.Terminate;
end;
end.
unit Unit2; // модуль формы управления приложением
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, Grids, ComCtrls, ToolWin, ImgList,
Menus, my_class_methods, ShellAPI;
type
TForm2 = class(TForm)
StringGrid1: TStringGrid;
Image1: TImage;
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
ImageList1: TImageList;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton9: TToolButton;
ToolButton11: TToolButton;
ToolButton12: TToolButton;
ToolButton8: TToolButton;
ToolButton13: TToolButton;
ToolButton10: TToolButton;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
Label1: TLabel;
Memo1: TMemo;
N15: TMenuItem;
N16: TMenuItem;
procedure BitBtn1Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure ToolButton13Click(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure N8Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
otdel : TDannue ;
curent_row:integer;
change:boolean;
implementation
uses Unit1, Unit3, Unit4, Unit5, Unit6, Unit7;
{$R *.dfm}
procedure TForm2.BitBtn1Click(Sender: TObject); // Хотите сохранить измененные данные?
begin
if change=true then
begin
if MessageDlg('Вы хотите сохранить измененные данные?',
mtInformation, [mbYes, mbNo], 0) = mrYes then
begin
if savedialog1.Execute then
begin
otdel.Save(savedialog1.filename);
end;
end;
end;
form1.show;
form2.Hide;
form2.StringGrid1.RowCount:=2;
form2.StringGrid1.Rows[1].Clear;
form2.Memo1.Lines.Clear;
change:=false;
end;
procedure TForm2.N7Click(Sender: TObject); // редактирование записи
if otdel.kol_vo>1 then
begin
form4.LabeledEdit1.Text:=otdel.otdelkadrov[curent_row].familia;
form4.LabeledEdit2.Text:=otdel.otdelkadrov[curent_row].name;
form4.LabeledEdit3.Text:=otdel.otdelkadrov[curent_row].surname;
form4.LabeledEdit5.Text:=inttostr(otdel.otdelkadrov[curent_row].pasport);
form4.LabeledEdit6.Text:=inttostr(otdel.otdelkadrov[curent_row].zarplata);
form4.LabeledEdit4.Text:=otdel.otdelkadrov[curent_row].dolzhnost;
form4.Memo1.Lines.Text:=otdel.otdelkadrov[curent_row].info;
form4.show;
end else
showmessage('редактирование невожможно')
end;
procedure TForm2.BitBtn3Click(Sender: TObject); //Хотите сохранить измененные данные?
begin
if change=true then
begin
if MessageDlg('Вы хотите сохранить измененные данные?',
mtInformation, [mbYes, mbNo], 0) = mrYes then
begin
if savedialog1.Execute then
begin
otdel.Save(savedialog1.filename);
end;
end;
end;
if MessageDlg('Вы уверены, что хотите выйти?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
form7.show;
form2.Hide;
end;
end;
procedure TForm2.N11Click(Sender: TObject); // выходим из прриложения
begin
if change=true then
begin
if MessageDlg('Вы хотите сохранить измененные данные?',
mtInformation, [mbYes, mbNo], 0) = mrYes then
begin
if savedialog1.Execute then
begin
otdel.Save(savedialog1.filename);
end;
end;
end;
if MessageDlg('Вы уверены, что хотите выйти?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
form7.show;
form2.Hide;
end;
end;
procedure TForm2.N5Click(Sender: TObject); // создаем базу данных
begin
form3.show;
end;
procedure TForm2.ToolButton13Click(Sender: TObject); // форма поиска
begin
form5.show;
form2.Hide;
end;
procedure TForm2.N14Click(Sender: TObject); // рисуем график, выводим максимальную, минимальную, среднюю
var i:integer; max, min, sum : integer; //суммарную заработную плату
begin
if otdel.kol_vo>1 then
begin
form6.Show;
form2.Hide;
form6.series1.clear;
form6.LabeledEdit1.Clear;
form6.LabeledEdit2.Clear;
form6.LabeledEdit3.Clear;
form6.LabeledEdit4.Clear;
for i:=1 to otdel.kol_vo-1 do
form6.series1.AddY(strtoint(form2.StringGrid1.cells[6,i]),form2.StringGrid1.Cells[1,i]);
max:=strtoint(form2.StringGrid1.Cells[6,1]);
min:=strtoint(form2.StringGrid1.Cells[6,1]);
sum:=0;
for i:=1 to otdel.kol_vo-1 do
begin
sum:=sum + strtoint(form2.StringGrid1.cells[6,i]);
if strtoint(form2.StringGrid1.cells[6,i])>max then
max:=strtoint(form2.StringGrid1.cells[6,i]);
if strtoint(form2.StringGrid1.cells[6,i])<min then
min:=strtoint(form2.StringGrid1.cells[6,i]);
end;
form6.LabeledEdit3.Text:=floattostr(sum/(otdel.kol_vo-1));
form6.LabeledEdit1.Text:=inttostr(max);
form6.LabeledEdit2.Text:=inttostr(min);
form6.LabeledEdit4.Text:=inttostr(sum);
end
else showmessage('Данных в таблице нет');
end;
procedure TForm2.BitBtn2Click(Sender: TObject);// выходим из приложения
begin
if change=true then
begin
if MessageDlg('Вы хотите сохранить измененные данные?',
mtInformation, [mbYes, mbNo], 0) = mrYes then
begin
if savedialog1.Execute then
begin
otdel.Save(savedialog1.filename);
end;
end;
end;
form7.Show;
form2.Hide;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
otdel := TDannue.Create;
curent_row:=1;
change:=false;
form2.StringGrid1.Cells[0,0]:='№';
form2.StringGrid1.Cells[1,0]:='Фамилия';
form2.StringGrid1.Cells[2,0]:=' Имя ';
form2.StringGrid1.Cells[3,0]:='Отчество';
form2.StringGrid1.Cells[4,0]:='Должность ';
form2.StringGrid1.Cells[5,0]:='Паспорт';
form2.StringGrid1.Cells[6,0]:='Зарплата';
end;
procedure TForm2.N10Click(Sender: TObject); // сохраняем базу
begin
if savedialog1.Execute then
begin
otdel.Save(savedialog1.filename);
end;
end;
procedure TForm2.N9Click(Sender: TObject); // открываем базу
var
i:integer;
begin
for i:=1 to 100 do
form2.StringGrid1.Rows[i].Clear;
if opendialog1.Execute then
begin
otdel.load(opendialog1.filename);
for i:= 1 to (otdel.kol_vo - 1 ) do
begin
stringgrid1.cells[0,i]:=inttostr(i);
stringgrid1.cells[2,i]:= otdel.otdelkadrov[i].name;
stringgrid1.cells[1,i]:= otdel.otdelkadrov[i].familia ;
stringgrid1.cells[3,i]:= otdel.otdelkadrov[i].surname;
stringgrid1.cells[4,i]:= otdel.otdelkadrov[i].dolzhnost;
memo1.Lines[i]:=otdel.otdelkadrov[i].info;
stringgrid1.cells[5,i]:= inttostr(otdel.otdelkadrov[i].pasport);
stringgrid1.cells[6,i]:= inttostr(otdel.otdelkadrov[i].zarplata);
StringGrid1.RowCount := stringgrid1.RowCount + 1;
end;
end;
end;
procedure TForm2.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
curent_row:=arow;
memo1.Clear;
memo1.Lines.text:=otdel.otdelkadrov[arow].info;
if form5.StringGrid1.Cells[0, curent_row] <> '' then
begin
form5.Memo1.Clear;
form5.Memo1.Lines.text:=otdel.otdelkadrov[strtoint(stringgrid1.cells[0, curent_row])].info;
end;
end;
procedure TForm2.N8Click(Sender: TObject); //удаляем запись
var i : integer;
begin
if otdel.kol_vo>1 then
begin
//выводим предупреждение
if MessageDlg('Вы уверены, что хотите удалить запись?',
mtWarning, [mbYes, mbNo], 0) = mrYes then
begin
//упертый пользователь -- уверен
otdel.Del_Dannue(curent_row);
//сдвигаем все записи на одну назад
//в таблице
for i := curent_row to (otdel.kol_vo) do
begin
stringgrid1.Cells[1, i] := stringgrid1.Cells[1, i+1];
stringgrid1.Cells[2, i] := stringgrid1.Cells[2, i+1];
stringgrid1.Cells[3, i] := stringgrid1.Cells[3, i+1];
stringgrid1.Cells[4, i] := stringgrid1.Cells[4, i+1];
stringgrid1.Cells[5, i] := stringgrid1.Cells[5, i+1];
stringgrid1.Cells[6, i] := stringgrid1.Cells[6, i+1];
end;
stringgrid1.Rows[otdel.kol_vo].Clear;
//убираем лишнюю строку
stringgrid1.RowCount := stringgrid1.RowCount - 1;
change:=true;
end;
end else
showmessage('невозможно удалить запись');
end;
procedure TForm2.N12Click(Sender: TObject);
var i,j:integer; l : integer;
begin
//сортировка от а до я
otdel.Sort;
stringgrid1.RowCount := 2;
for i := 1 to (otdel.kol_vo - 1) do
begin
stringgrid1.cells[0,i]:=inttostr(i);
stringgrid1.cells[2,i]:= otdel.otdelkadrov[i].name;
stringgrid1.cells[1,i]:= otdel.otdelkadrov[i].familia ;
stringgrid1.cells[3,i]:= otdel.otdelkadrov[i].surname;
stringgrid1.cells[4,i]:= otdel.otdelkadrov[i].dolzhnost;
memo1.Lines[i]:=otdel.otdelkadrov[i].info;
stringgrid1.cells[5,i]:= inttostr(otdel.otdelkadrov[i].pasport);
stringgrid1.cells[6,i]:= inttostr(otdel.otdelkadrov[i].zarplata);
stringgrid1.RowCount := stringgrid1.RowCount + 1;
end;
end;
procedure TForm2.N13Click(Sender: TObject);
var i,j:integer;
begin
//сортировка от я до а
otdel.Sorted;
stringgrid1.RowCount := 2;
for i := 1 to (otdel.kol_vo - 1) do
begin
stringgrid1.cells[0,i]:=inttostr(i);
stringgrid1.cells[2,i]:= otdel.otdelkadrov[i].name;
stringgrid1.cells[1,i]:= otdel.otdelkadrov[i].familia ;
stringgrid1.cells[3,i]:= otdel.otdelkadrov[i].surname;
stringgrid1.cells[4,i]:= otdel.otdelkadrov[i].dolzhnost;
memo1.Lines[i]:=otdel.otdelkadrov[i].info;
stringgrid1.cells[5,i]:= inttostr(otdel.otdelkadrov[i].pasport);
stringgrid1.cells[6,i]:= inttostr(otdel.otdelkadrov[i].zarplata);
stringgrid1.RowCount := stringgrid1.RowCount + 1;
end;
end;
procedure TForm2.N16Click(Sender: TObject);
begin
//показываем окно О программе
ShellAbout(Form2.Handle, 'Автоматизированный отдел кадров',
'(c) Калпащикова Олеся ПИЭ-202д 2007 год', Application.Icon.Handle);
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//закрыта главная форма
//закрываем все приложение
application.Terminate;
end;
end.
unit Unit3; // модуль формы создания записи
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, Unit2,my_class_methods;
type
TForm3 = class(TForm)
Image1: TImage;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
LabeledEdit3: TLabeledEdit;
LabeledEdit4: TLabeledEdit;
LabeledEdit5: TLabeledEdit;
LabeledEdit6: TLabeledEdit;
Memo1: TMemo;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Label1: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
current:integer;
implementation
{$R *.dfm}
procedure TForm3.BitBtn1Click(Sender: TObject);// отмена создания записи/базы
begin
form2.show;
form3.Hide;
end;
procedure TForm3.FormCreate(Sender: TObject);
begin
current:=1;
end;
procedure TForm3.BitBtn2Click(Sender: TObject); // вводим данные, сохраняем их в массив
begin
if (form3.LabeledEdit1.Text<>'') and (form3.LabeledEdit2.Text<>'') and
(form3.LabeledEdit3.Text<>'') and (form3.LabeledEdit4.Text<>'') and
(form3.LabeledEdit5.Text<>'') and (form3.LabeledEdit6.Text<>'') and
(form3.Memo1.Lines.Count<>0)
then
begin
otdel.Dannue_add(form3.LabeledEdit1.Text,form3.LabeledEdit2.Text,form3.LabeledEdit3.Text,
form3.LabeledEdit4.Text,form3.Memo1.Lines.Text,strtoint(form3.LabeledEdit5.Text),
strtoint(form3.LabeledEdit6.Text));
form2.StringGrid1.cells[0, current] := inttostr( current);
form2.stringgrid1.cells[1, current]:= form3.LabeledEdit1.text;
form2.stringgrid1.cells[2, current]:= form3.LabeledEdit2.Text;
form2.stringgrid1.cells[3, current]:= form3.LabeledEdit3.Text;
form2.stringgrid1.cells[4, current]:= form3.LabeledEdit4.Text;
form2.stringgrid1.cells[5, current]:= form3.LabeledEdit5.Text;
form2.stringgrid1.cells[6, current]:= form3.LabeledEdit6.Text;
otdel.otdelkadrov[current].info:=form3.Memo1.lines.Text;
form2.Memo1.Lines.Text:= otdel.otdelkadrov[current].info;
LabeledEdit1.Clear;
LabeledEdit2.Clear;
LabeledEdit3.Clear;
LabeledEdit4.Clear;
LabeledEdit5.Clear;
LabeledEdit6.Clear;
memo1.Clear;
inc(current);
form2.StringGrid1.RowCount:=form2.StringGrid1.RowCount+1;
change:=true;
form3.Close;
end else
begin
showmessage('наобходимо ввести все поля');
end;
end;
End.
unit Unit4; // модуль формы редактирования записи
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, unit2, my_class_methods;
type
TForm4 = class(TForm)
Image1: TImage;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
LabeledEdit3: TLabeledEdit;
LabeledEdit4: TLabeledEdit;
LabeledEdit5: TLabeledEdit;
LabeledEdit6: TLabeledEdit;
Memo1: TMemo;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Label1: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.dfm}
procedure TForm4.BitBtn1Click(Sender: TObject);//отмена редактирования записи
begin
form2.show;
form4.Hide;
end;
procedure TForm4.BitBtn2Click(Sender: TObject);// редактирование записи
begin
if (form4.LabeledEdit1.Text<>'') and (form4.LabeledEdit2.Text<>'') and
(form4.LabeledEdit3.Text<>'') and (form4.LabeledEdit4.Text<>'') and
(form4.LabeledEdit5.Text<>'') and (form4.LabeledEdit6.Text<>'') and
(form4.Memo1.Lines.Count<>0)
then
begin
otdel.Dannue_update(curent_row,form4.LabeledEdit1.Text,form4.LabeledEdit2.Text,form4.LabeledEdit3.Text, form4.LabeledEdit4.Text,form4.Memo1.Lines.Text,strtoint(form4.LabeledEdit5.Text),strtoint(form4.LabeledEdit6.Text));
form2.StringGrid1.cells[0, curent_row] := inttostr( curent_row);
form2.stringgrid1.cells[1, curent_row]:= form4.LabeledEdit1.text;
form2.stringgrid1.cells[2, curent_row]:= form4.LabeledEdit2.Text;
form2.stringgrid1.cells[3, curent_row]:= form4.LabeledEdit3.Text;
form2.stringgrid1.cells[4, curent_row]:= form4.LabeledEdit4.Text;
form2.stringgrid1.cells[5, curent_row]:= form4.LabeledEdit5.Text;
form2.stringgrid1.cells[6, curent_row]:= form4.LabeledEdit6.Text;
otdel.otdelkadrov[curent_row].info:=form4.Memo1.lines.Text;
form2.Memo1.Lines.Text:= otdel.otdelkadrov[curent_row].info;
LabeledEdit1.Clear;
LabeledEdit2.Clear;
LabeledEdit3.Clear;
LabeledEdit4.Clear;
LabeledEdit5.Clear;
LabeledEdit6.Clear;
memo1.Clear;
change:=true;
form4.Close;
end else
begin
showmessage('наобходимо ввести все поля');
end;
end;
end.
unit Unit5;//модуль формы поиска
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Grids, Buttons, my_class_methods;
type
TForm5 = class(TForm)
Image1: TImage;
StringGrid1: TStringGrid;
LabeledEdit1: TLabeledEdit;
Bevel1: TBevel;
BitBtn1: TBitBtn;
Label2: TLabel;
Label3: TLabel;
Memo1: TMemo;
Label1: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure LabeledEdit1Change(Sender: TObject);
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
uses Unit2, Unit7;
{$R *.dfm}
procedure TForm5.BitBtn1Click(Sender: TObject); // назад на форму управления
begin
form2.show;
form5.Hide;
end;
procedure TForm5.LabeledEdit1Change(Sender: TObject); // собственно поиск
var
i : integer;
j : integer;
begin
j := 1;
form5.StringGrid1.RowCount := 2;
form5.StringGrid1.Rows[1].Clear;
form5.StringGrid1.Rows[2].Clear;
for i := 1 to otdel.kol_vo do
if pos(labelededit1.Text, otdel.otdelkadrov[i].familia) <> 0 then
begin
form5.StringGrid1.Cells[0, j] := form2.StringGrid1.Cells[0, i];
form5.StringGrid1.Cells[1, j] := form2.StringGrid1.Cells[1, i];
form5.StringGrid1.Cells[2, j] := form2.StringGrid1.Cells[2, i];
form5.StringGrid1.Cells[3, j] := form2.StringGrid1.Cells[3, i];
form5.StringGrid1.Cells[4, j] := form2.StringGrid1.Cells[4, i];
form5.StringGrid1.Cells[5, j] := form2.StringGrid1.Cells[5, i];
form5.StringGrid1.Cells[6, j] := form2.StringGrid1.Cells[6, i];
inc (j);
form5.StringGrid1.RowCount := form5.StringGrid1.RowCount + 1;
end;
end;
procedure TForm5.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
form5.Memo1.Clear;
curent_row:=arow;
if form5.StringGrid1.Cells[0, curent_row] <> '' then
begin
form5.Memo1.Clear;
form5.Memo1.Lines.text:=otdel.otdelkadrov[strtoint(stringgrid1.cells[0, curent_row])].info;
end;
end;
procedure TForm5.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//возвращаем пользователя на главную форму
form2.Show;
form5.Hide;
end;
procedure TForm5.FormCreate(Sender: TObject);
begin
//ставим подписи столбцов
form5.StringGrid1.Cells[0,0]:='№';
form5.StringGrid1.Cells[1,0]:='Фамилия';
form5.StringGrid1.Cells[2,0]:=' Имя ';
form5.StringGrid1.Cells[3,0]:='Отчество';
form5.StringGrid1.Cells[4,0]:='Должность ';
form5.StringGrid1.Cells[5,0]:='Паспорт';
form5.StringGrid1.Cells[6,0]:='Зарплата';
end;
end.
unit Unit6; //форма с графиком
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TeEngine, Series, StdCtrls, Buttons, ExtCtrls, TeeProcs, Chart, my_class_methods;
type
TForm6 = class(TForm)
Chart1: TChart;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
LabeledEdit3: TLabeledEdit;
LabeledEdit4: TLabeledEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Series1: TBarSeries;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
uses Unit2, Unit7;
{$R *.dfm}
procedure TForm6.BitBtn1Click(Sender: TObject); //на главную форму
begin
form2.show;
form6.Hide;
end;
procedure TForm6.BitBtn2Click(Sender: TObject); // если решили выйдти
begin
if change=true then
begin
if MessageDlg('Вы хотите сохранить измененные данные?',
mtInformation, [mbYes, mbNo], 0) = mrYes then
begin
if form2.SaveDialog1.Execute then
begin
otdel.Save(form2.SaveDialog1.filename);
end;
end;
end;
if MessageDlg('Вы уверены, что хотите выйти?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
form7.show;
form6.Hide;
end;
end;
end.
unit Unit7; //модуль последней завершающей формы
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, my_class_methods;
type
TForm7 = class(TForm)
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form7: TForm7;
implementation
{$R *.dfm}
procedure TForm7.BitBtn1Click(Sender: TObject);
begin
application.Terminate;
end;
procedure TForm7.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//форма закрыта
//закрываем все приложение
application.Terminate;
end;
end.
-
Фаронов В.В. Программирование баз данных в Delphi 7. Учебный курс. – СПб: Питер, 2006. – 459с ↑
-
Фаронов В.В. Программирование баз данных в Delphi 7. Учебный курс. – СПб: Питер, 2006. – 459с ↑
-
Хомоненко А.Д. и др. Delphi 7./ Под общей редакцией А. Д. Хомоненко – СПб.: BHV, 2004 ↑
- Облачные сервисы (Повышение эффективности облачных технологий)
- Назначение и структура системы защиты информации коммерческого предприятия (на примере ООО «ЛОДЭ»)
- Проектирование реализации операций бизнес-процесса «Ежедневный складской учет».
- Характеристики и типы мониторов для персональных компьютеров (Определение понятия «монитор»)
- Виды и состав угроз информационной безопасности (Методы защиты конфиденциальной информации)
- Проектирование реализации операций бизнес-процесса «Складской учет».(Обоснование проектных решений по информационному обеспечению)
- Исследование проблем защиты информации (Проблемы защиты информации в медицинском центре ООО «BaltGaz»)
- Методика защиты информации в системах электронного документооборота (Особенности конфиденциального электронного документооборота)
- Проектирование реализации операций бизнес-процесса «Взаиморасчеты с клиентами» (Информационная модель и её описание)
- Графические планшеты. .
- "Защита информации в процессе переговоров и совещаний"
- Алгоритмы сортировки данных (Структура обработки данных)