В табелях учёта рабочего времени учёт ведётся по каждому сотруднику в отдельности. Основываясь на изучении объекта автоматизации, мы можем описать сущность «сотрудник» следующим образом:
N п/п | Атрибут | Семантика | Тип | Пример |
Год | Год, на который рассчитывается табель | INT | ||
Месяц | Месяц, на который рассчитывается табель | INT | ||
Сотрудник | ФИО сотрудника, должность, табельный номер | TEXT | Иванов Иван Иванович, директор, 000000031 | |
Отметки о явках и неявках на работу по числам месяца | Отметки о явке, неявке и отработанных часах за каждый день | TEXT | Я / 8 | |
Отработано | Отработано дней, часов за первую, вторую половину месяца, месяц | INT | ||
Данные для начисления заработной платы по видам и направлениям затрат | Код вида оплаты, корреспондирующий счёт, дни (часы) | TEXT | 1 / 1133840204082 / 1 | |
Причины неявок | Код, дни (часы) | TEXT | 1 / 2 |
Таблица 1. Сущность «Табель учёта рабочего времени»
N п/п | Атрибут | Семантика | Тип | Пример |
фамилия, инициалы | ФИО сотрудника | TEXT | Иванов Иван Иванович | |
должность | должность сотрудника (специальность, профессия) | TEXT | Директор | |
табельный номер | табельный номер сотрудника | TEXT |
Таблица 2. Сущность «Сотрудник»
N п/п | Атрибут | Семантика | Тип | Пример |
Год | Год даты явки на работу | INT | ||
Месяц | Месяц даты явки на работу | INT | ||
Число | Число месяца даты явки на работу | INT | ||
Отметка о явке | Явился или не явился на работу | TEXT | Я | |
Количество отработанных часов | Количество отработанных часов, если явился | INT |
Таблица 3. Сущность «Явки на работу»
N п/п | Атрибут | Семантика | Тип | Пример |
Год | Год даты явки на работу | INT | ||
Месяц | Месяц даты явки на работу | INT | ||
Код неявки | Код неявки | TEXT | ||
Дней (часов) | Количество дней (часов), в прошедших за время неявки | INT |
Таблица 4. Сущность «Неявки на работу»
N п/п | Атрибут | Семантика | Тип | Пример |
Год | Год данных для начисления | INT | ||
Месяц | Месяц данных для начисления | INT | ||
Код вида оплаты | Код вида оплаты для начисления заработной платы | TEXT | ||
Корреспондирующий счёт | Корреспондирующий счёт для начисления заработной платы | TEXT | ||
Дни (часы) | Количество дней (часов), подлежащих оплате | INT |
Таблица 5. Сущность «Данные для начисления заработной платы по видам и направлениям затрат»
Также мы можем построить следующую ER-диаграмму «Сущность-связь»:
Рис. 1. Диаграмма «Сущность-связь»
На основании модели данных мы сможем построить UML-модель структуры данных.
Рис. 2. Структура данных
В табличном виде мы можем записать поля таблиц нашей БД следующим образом:
N п/п | Поле | Ключ | Тип | Семантика | Пример |
id | да | INT | Регистрационный номер | ||
name | TINYTEXT | фамилия, инициалы | Иванов Иван Иванович | ||
occupation | TINYTEXT | должность | Директор | ||
tablenum | TINYTEXT | табельный номер |
Таблица 6. Структура таблицы workers (сотрудники)
N п/п | Поле | Ключ | Тип | Семантика | Пример |
id | да | INT | Регистрационный номер | ||
year | INT | Год (из таблицы years) | |||
month | INT | Месяц | |||
day | INT | Число | |||
worker | INT | Сотрудник (из таблицы workers) | |||
if_attended | VARCHAR(1) | Отметка о явке | |||
hours | INT | Количество отработанных часов |
Таблица 7. Структура таблицы attendances (явки на работу)
N п/п | Поле | Ключ | Тип | Семантика | Пример |
id | да | INT | Регистрационный номер | ||
worker | INT | Сотрудник (из таблицы workers) | |||
year | INT | Год (из таблицы years) | |||
month | INT | Месяц | |||
code | TINYTEXT | Код неявки | |||
qty | TINYTEXT | Дней (часов) |
Таблица 8. Структура таблицы absences (неявки на работу)
N п/п | Поле | Ключ | Тип | Семантика | Пример |
id | да | INT | Регистрационный номер | ||
worker | INT | Работник (из таблицы workers) | |||
month | INT | Месяц | |||
year | INT | Год (из таблицы years) | |||
code | TINYTEXT | Код вида оплаты | |||
account | TINYTEXT | Корреспондирующий счёт | |||
days | INT | Дни (часы) |
Таблица 9. Структура таблицы workoffs (данные для начисления з/п)
N п/п | Поле | Ключ | Тип | Семантика | Пример |
id | да | INT | Регистрационный номер | ||
year | INT | Отчётный год |
Таблица 10. Структура таблицы years (годы)
Ограничения на длину полей в нашей нотации таковы: VARCHAR(1) — 1 байт, INT — 4 байта, TINYTEXT — 28 байт.
Из этой модели мы сможем построить UML-диаграмму структуры базы данных.
Рис. 3. Структура базы данных
Из этой диаграммы с помощью средства автоматизированной генерации кода tedia2sql мы сможем получить SQL-код для создания базы данных.
-- workers
-- Сотрудники
create table workers (
id int auto_increment primary key, -- табельный номер
name tinytext, -- фамилия, инициалы
occupation tinytext, -- должность
tablenum tinytext -- табельный номер
);
-- years
-- Годы
create table years (
id int auto_increment primary key, -- счётчик
year tinytext -- период
);
-- attendances
-- Явки на работу
create table attendances (
id int auto_increment primary key, -- счётчик
year int, -- год
month int, -- месяц
day int, -- число
worker int, -- работник
if_attended varchar(1), -- явка
hours int -- кол-во отраб. часов
);
-- workoffs
-- Данные для начисления з/п
create table workoffs (
id int auto_increment primary key, -- счётчик
worker int, -- работник
month int, -- месяц
year int, -- год
code tinytext, -- код вида оплаты
account tinytext, -- корр. счёт
days int -- дни (часы)
);
-- absences
-- Неявки
create table absences (
id int auto_increment primary key, -- счётчик
worker int, -- работник
year int, -- год
month int, -- месяц
code tinytext, -- код
qty tinytext -- дней, часов
);
Реализация
В разработке АИС мы будем использовать свободный открытый фреймворк Kshema, который облегчит нам создание веб-приложения, задаст его основной костяк, предоставит удобные библиотеки для работы с базами данных, отладки, управления пользователями, безопасностью и др.
В итоге структура каталогов нашего приложения на веб-сервере будет выглядеть следующим образом:
.
|-- libs
| `-- xmlrpc
|-- modules
| |-- auth
| | `-- templates
| |-- base
| | `-- templates
| |-- counter
| | `-- templates
| |-- db
| | `-- templates
| |-- modules
| | `-- templates
| |-- performance
| |-- redirect
| | `-- templates
| |-- templater
| |-- themes
| | `-- templates
| |-- timeboards
| | `-- templates
| |-- updater
| | `-- templates
| `-- users
| `-- templates
|-- themes
| `-- default
| |-- css
| |-- flash
| |-- images
| |-- js
| |-- pages
| | `-- includes
| `-- templates
| |-- timeboards
| | |-- css
| | |-- flash
| | |-- images
| | |-- js
| | |-- pages
| | | `-- includes
| | `-- templates
| | |-- auth
| | |-- base
| | `-- users
|-- updates
| `-- themes
`-- uploads
В каталоге libs находятся внешние библиотеки фреймворка. Каталог updates предназначен для получения автоматических обновлений, uploads — для закачки файлов на сайт. В каталоге themes хранятся сменные темы оформления. В каталоге modules находятся модули фреймворка, в качестве одного из которых — timeboards — и реализована наша АИС.
Работа с АИС начинается с формы авторизации:
(Приложение 1)
Без ввода правильного сочетания логина и пароля работа с данными невозможна. После ввода правильной аутентификационной информации пользователь попадает в основное меню АИС:
(Приложение 2)
Из этого меню можно просмотреть сформированные табели учёта использования рабочего времени, а также заполнить вспомогательные таблицы годов, работников, явок на работу, отработок и неявок работников.
Форма редактирования годов выглядит следующим образом:
(Приложение 3)
В этой форме можно задать годы отчётных периодов. Новые годы добавляются путём заполнения формы под списком. Существующие годы можно отредактировать, задав номера годов прямо в списке, или удалить, стерев номер года.
Форма редактирования работников выглядит следующим образом: (Приложение 4)
В этой форме можно задать список работников предприятия. Новые работники добавляются путём заполнения формы под списком, каждому работнику можно задать ФИО и должность. Существующих работников можно редактировать, внося изменения прямо в список, и удалять, стирая ФИО из соответствующего поля.
Для каждого работника можно задавать явки на работу на любое число месяца. Форма редактирования явок выглядит следующим образом: (Приложение 5)
Вначале выводится форма выбора года, месяца и работника. Когда эти значения выбраны, показывается форма задния явки на работу на произвольные числа. Новые явки можно добавлять, заполняя форму под списком. Значения списка можно редактировать, задавая их непосредственно в списке.
Также для каждого работника можно задавать данные для начисления заработной платы. Форма выглядит следующим образом:
(Приложение 6)
В этой форме можно задать для каждого работника данные для начисления заработной платы на каждый месяц. Новые значения можно добавлять, заполняя форму под списком. Значения списка можно редактировать, задавая их непосредственно в списке.
Также для каждого работника можно задавать неявки на работу. Форма редактирования неявок выглядит следующим образом:
(Приложение 7)
В этой форме можно задавать неявки работников на работу. Сначала выводится приглашение на выбор года, месяца и работника. Потом, когда эти значения заданы, появляется возможность задавать неявки на работу для выбранного работника в выбранном году и выборанном месяце. Новые значения можно добавлять, заполняя форму под списком. Значения в списке можно изменять, редактируя их непосредственно, и удалять, стирая значение кода неявки.
Когда заданы отчётные года, месяцы, списки работников, их явок и неявок на работу, а также объёмы отработки в каждом месяце, появляется возможность просмотра табелей учёта использования рабочего времени:
(Приложение 8)
В этом табеле отражается для каждого работника из списка его явки/неявки на работу в каждый день этого месяца. На каждую неявку приводится код и количество пропущенных дней (часов), если они указаны в соответствующей таблице. Также рассчитываются объёмы отработанных дней и часов за каждую половину месяца и за месяц целиком.
Заключение
Итак, мы создали автоматизированную информационную систему учёта использования рабочего времени. Эта система позволяет управлять табелями учёта: добавлять их, просматривать, редактировать и удалять. Эта АИС обладает некоторыми дополнительными полезными свойствами. Во-первых, она выполнена в виде интерактивного веб-сайта, что позволяет предоставлять к ней доступ по сети, в том числе через Интернет. Для обеспечения безопасности применяется авторизация пользователей по паролю, неавторизованные пользователи работать с системой не могут никак. АИС основана на открытом программном обеспечении, её данные хранятся в базе данных в открытом формате и могут быть использованы в других программах или надстройках. Код АИС открыт, её будет легко масштабировать или доработать до нужд конкретной организации. Всё это позволяет рекомендовать АИС к внедрению и применению для реальных нужд организации и считать основные цели работы достигнутыми, задачи — выполненными.
Приложения
Приложение 1
Приложение 2
Приложение 3
Приложение 4
Приложение 5
Приложение 6
Приложение 7
Приложение 8