陸赟
摘要:企業(yè)考勤管理系統(tǒng)是中大型企業(yè)管理員工的最基本的信息化管理工具,是保證員工工作狀態(tài)和工作效率的前提。如何及時地、科學(xué)地管理企業(yè)員工的考勤已經(jīng)成為中大型企業(yè)面臨的重要課題。市面上很多考勤系統(tǒng)無法對擁有很多班次的中大型企業(yè)進行考勤管理,該文提出了基于分治算法的多班次考勤管理算法,將與員工考勤管理相關(guān)因素利用分治的思想,將大問題分解成小問題,最終解決了中大型企業(yè)的考勤管理問題。
關(guān)鍵詞:考勤管理;分治法;班次
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2020)26-0228-03
1 背景
隨著計算機的普及和發(fā)展、社會經(jīng)濟的不斷進步,各個單位對管理質(zhì)量的要求越來越高,一個經(jīng)濟、高效的考勤管理系統(tǒng)在企事業(yè)單位完善信息化管理起著至關(guān)重要的作用[1]。企業(yè)為了管理員工考勤,安裝了考勤機,如指紋考勤機、人臉識別考勤機等,還購買考勤管理系統(tǒng)來管理企業(yè)考勤。對于百人以下的企業(yè),只要在考勤管理系統(tǒng)中進行簡單設(shè)置就能快速生成考勤報表。但是中大型的企業(yè),尤其是生產(chǎn)型企業(yè),員工眾多,還存在輪班制和跨天上下班的情況,甚至對于特殊的崗位需要多時間段的班次,這些情況一般考勤系統(tǒng)生成考勤報表費時間,動輒2個小時以上,而且生成的員工月度考勤報表也不正確,如現(xiàn)在普遍應(yīng)用的中控考勤系統(tǒng)軟件。 這樣考勤員就需要人為地將員工的每日排班和指紋記錄進行比較分析最終得出考勤統(tǒng)計報表,大大浪費了人力成本。為了彌補考勤系統(tǒng)軟件的不足,現(xiàn)在企業(yè)考勤管理的需求,尤其是存在很多班次的中大型生產(chǎn)型企業(yè)的需求,本文提出了基于分治法的多班次考勤管理算法。實際應(yīng)用表明,該算法速度快,正確性高,滿足中大型企業(yè)的一般的考勤需求,實現(xiàn)了考勤管理的目標,使得考勤自動化管理變?yōu)楝F(xiàn)實。
2 考勤管理問題
2.1 考勤管理問題描述
隨著公司規(guī)模的不斷擴大,員工數(shù)量及崗位都在不斷地增加,為了符合每個崗位的特殊要求,設(shè)定的班次也多種多樣,一般中大型的生產(chǎn)型企業(yè)需要用的班次就有上百種,另外員工排班、請假、指紋或人臉識別等生物識別的考勤記錄等都與員工考勤息息相關(guān),統(tǒng)計公司里所有員工考勤,快速正確生成企業(yè)員工的月度考勤也變得越來越復(fù)雜。本文以指紋考勤機為例,紀錄員工每次考勤,利用基于分治法的多班次考勤管理算法來解決復(fù)雜的考勤管理問題。
2.2 考勤管理數(shù)據(jù)結(jié)構(gòu)的定義
定義1? Sum:員工總數(shù)
定義2? n0:員工組中員工的個數(shù)
定義3? d:考勤天數(shù)
定義4? AllPer[Sum*8] :表示員工的基本信息的Sum*8二維數(shù)組,包括:員工號、員工姓名、公司編碼、部門、序列、崗位、入職日期、離職日期
定義5? PerArr[
定義6? PERNRArr[
定義7? EX[m*7]:表示n0個員工的請假記錄的m*7二維數(shù)組,m表示月請假記錄數(shù),0~6分別表示員工號、指紋編碼、開始日期、結(jié)束日期、請假日期、請假標識、請假ID
定義8? MPB[n*10]:表示n0個員工的月排班記錄的n*10二維數(shù)組, n表示月排班記錄數(shù),0~9分別員工號、指紋編碼、開始日期、結(jié)束日期、上班時間、下班時間、上班有效時長、下班有效時長、班次名稱、班次ID
定義9? PB[Pn*9] :表示n0個員工的日排班記錄的Pn*9二維數(shù)組, Pn表示日排班記錄數(shù),0~8分別員工號、指紋編碼、開始時間、結(jié)束時間、班次日期、上班有效時長、下班有效時長、班次名稱、班次ID
定義10? Start[Pn*4] :表示n0個員工的日排班記錄對應(yīng)的有效簽到記錄的Pn*4二維數(shù)組,0~4:員工號、上班時間、 簽到時間、上班時間差異
定義11? End[Pn*4] :表示n0個員工的日排班記錄對應(yīng)的有效簽退記錄的Pn*4二維數(shù)組, 0~4:員工號、下午時間、簽退時間、下班時間差異
定義12? biaoshi[32] :表示員工的月考勤標識的一維數(shù)組,1~31分別存儲當月1日到31日的考勤標識,如果當月只有30天,則biaoshi[31]為”/”
定義13? arrb[22] :表示員工考勤異常情況的統(tǒng)計的一維數(shù)組,1~21:員工事假、病假、婚假、遲到、早退、曠工等各類考勤異常情況的統(tǒng)計值
定義14? KQReport[n0*61] :表示n0位員工的月度考勤匯總的n0*64二維數(shù)組, 0~5:AllPer[0]-[5]員工號、員工姓名、公司編碼、部門、序列、崗位, 6:strYear年,7:strMonth月,8~38:biaoshi[1]-[31]考勤標識,39-59:21個考勤異常統(tǒng)計,60:出勤天數(shù)
3 考勤管理問題的分治思想
3.1 分治法基本思想
分治法的基本思想是將一個難以直接解決的大問題,分解成一些規(guī)模較小的相同子問題,以便各個擊破,分而治之[2]。
分治法通常用于求解具有以下特征的問題,一般來說,是否滿足這幾個特征,是問題能否用分治法求解的基本要素:
1)小規(guī)模可解易解:問題的規(guī)??s小到一定程度,即可以直接求解;
2)最優(yōu)子結(jié)構(gòu):原問題可以分解為若干個互相獨立且是原問題較小模式的子問題,這是分治法的前提;
3)解可以合并:如果子問題可解,那么原問題也可解,并且原問題的解可以由各個子問題的解合并得到,這是能否使用分治法的關(guān)鍵要素。
分治法在實際工作中主要是通過解決與原問題密切聯(lián)系且覆蓋原問題的子問題來解決約束復(fù)雜難以直接解決的組合問題。但是在使用分治算法的時候遞歸算法也容易同時在設(shè)計中,給程序帶來運行效率低,耗時多并大量的占用存儲空間等一系列問題。文獻[3-5]提出了一種消除遞歸的新方法,在分治算法的基礎(chǔ)上實現(xiàn)非遞歸,實現(xiàn)在計算機處理某些比較復(fù)雜的問題時,減少某些程序的反復(fù)執(zhí)行,進一步節(jié)約空間和減少時間復(fù)雜度。
因此如果待解決的問題完全具備分治法求解的3個要素就可以利用分治法求解,并且可以利用消除遞歸的方法設(shè)計算法提高算法的執(zhí)行效率。
3.2 考勤管理與分治思想
解決考勤管理問題是生成一個滿足約束條件的,將員工信息、員工排班、請假記錄、指紋記錄組合分析的考勤統(tǒng)計報表,即包含每個員工每個月每天的考勤狀態(tài),以及整個月考勤異常和出勤天數(shù)的匯總。無疑此類問題是個難以直接解決的規(guī)模較大的問題,并且完全具備用分治法求解的3個基本要素。因此,本文依據(jù)中大型生產(chǎn)型企業(yè)考勤管理的要求,在充分研究和優(yōu)化考勤管理問題及其約束條件的基礎(chǔ)上,提出了考勤管理的分治算法,并且利用消除遞歸的方式實現(xiàn)了非遞歸,算法總體采用分治法思想如下:
1)首先將公司所有員工的月考勤管理問題分解為員工組所有員工的月考勤管理問題。這樣可以按員工組查詢員工組所有員工的請假記錄、排班記錄、指紋記錄,減小查詢的規(guī)模;
2)員工組所有員工的月考勤管理問題,分解為員工組內(nèi)每個員工的月考勤管理問題;
3)某個員工的月考勤管理問題,可以分解為這個員工的每日考勤管理問題;
4)某個員工某日考勤管理問題,可以分解為該日各個時間段的考勤管理問題;
5)分別對這個員工的該日各個時間段的考勤進行分析求解,然后將各個時間段考勤的標識進行合并得到該日的考勤標識。
6)分別對這個員工的每日的考勤進行分析求解,然后將每日考勤的標識進行合并統(tǒng)計出每個員工的各考勤異常的值,這樣由這個員工的員工信息、每日考勤標識、考勤異常統(tǒng)計值組成的考勤統(tǒng)計報表即完成了對該員工的月考勤管理;
7)分別完成對員工組內(nèi)每個員工的考勤的分析求解,即完成了對該員工組員工的月考勤管理;
8)分別完成對所有員工組員工的考勤的分析求解,即完成了對所有員工的月考勤管理。
4 多班次考勤管理的分治算法
4.1 算法的主要步驟
根據(jù)考勤管理的分治思想設(shè)計分治算法,具體步驟如下:
1)查詢當月在職的員工基本信息,賦值給二維數(shù)組AllPer[Sum*8];
2)將Sum個員工根據(jù)設(shè)定的標準規(guī)模n0進行分組PERNRArr[
3)分析AllPer中第count個員工的月度考勤報表,初始count=0;
4)判斷count是不是n0規(guī)模員工組的第一個員工,即count%n0是否為0。如果是,則跳轉(zhuǎn)到步驟5,如果否,則跳轉(zhuǎn)到步驟10;
5)如果員工組的第一個員工,則讀取當前n0規(guī)模員工組的指紋用戶信息;
6)根據(jù)當前n0規(guī)模員工組的指紋用戶信息讀取當月請假記錄EX[m*7];
7)根據(jù)當前n0規(guī)模員工組的指紋用戶信息讀取當月排班記錄,將月排班記錄分解成日排班記錄PB[Pn*9](某日的排班記錄以申請日期最晚一次為準);
8)根據(jù)當前n0規(guī)模員工組的日排班記錄中班次的上班時間及上班有效時長讀取有效簽到指紋記錄及上午時間差異等Start(Pn*4),與日排班記錄一一對應(yīng);
9)根據(jù)當前n0規(guī)模員工組的日排班記錄中班次的下班時間及下班有效時長讀取有效簽退指紋記錄及上午時間差異等End(Pn*4),與日排班記錄一一對應(yīng);
10)初始化第count個員工的月考勤標識biaoshi[1]-[31]為“/”,依次分析當月1日到當日前一天(strDay)的考勤狀態(tài):①將請假記錄EX[m][7]中屬于當前員工當日的有效請假記錄(某日的請假記錄以申請日期最晚一次為準)的請假標識對應(yīng)到標識中中,如1號請假標識存儲到biaoshi[1]中;②如果當日無請假標識且不為曠工,則根據(jù)當日班次的各個時間段的上班時間差異和下班時間差異判斷考勤標識,并合并到當日的biaoshi中;
11)根據(jù)當月每日的考勤標識biaoshi[1]-[31]對考勤異常進行統(tǒng)計,將結(jié)果存儲到arrb[1]-arrb[21]中,并且算出出勤天數(shù)dates;
12)月度考勤統(tǒng)計報表KQReport[count/n0][0]-[5]存儲AllPer[count][0]-[5]的員工信息,KQReport[count/n0][6]存儲當年strYear信息,KQReport[count/n0][7]存儲當月strMonth信息,KQReport[count/n0][8]-KQReport[count/n0][38]存儲分析完的月考勤標識biaoshi[1]-[31],KQReport[count/n0][39]-KQReport[count/n0][59]存儲考勤異常的統(tǒng)計值arrb[1]-arrb[21],KQReport[count/n0][60]存儲出勤天數(shù)dates;
13)重復(fù)執(zhí)行(4)~ (12)步,直到分析生成所有員工的考勤統(tǒng)計報表。
4.2 算法的優(yōu)勢
由于考勤管理涉及的信息都存儲在數(shù)據(jù)庫中,考勤匯總之前需要先從數(shù)據(jù)庫中讀取數(shù)據(jù)存儲到計算機內(nèi)存中。而連接數(shù)據(jù)庫和讀取數(shù)據(jù)表中數(shù)據(jù)的次數(shù)以及數(shù)據(jù)在內(nèi)存中的存儲關(guān)系到計算的時間和空間復(fù)雜度。本算法通過分治思想按員工組的規(guī)模讀取員工對應(yīng)的排班、請假和指紋記錄,對該規(guī)模內(nèi)員工的考勤進行匯總,直到完成對所有員工的考勤匯總。該算法在正確生成考勤統(tǒng)計報表的同時,極大地降低了考勤匯總的時間和空間復(fù)雜度。
另外,算法還體現(xiàn)了其他優(yōu)勢:
1)不會因為考勤人員的增多,影響程序整體的運行結(jié)果;
2)由于考勤相關(guān)的員工信息、排班記錄、考勤記錄、指紋記錄等信息均處理為數(shù)組,而基于管理數(shù)據(jù)庫的3種關(guān)系(表、查詢、視圖),其實質(zhì)就是類似數(shù)組的二維表,因此,算法易于在基于數(shù)據(jù)庫的計算機系統(tǒng)中實現(xiàn);
3)算法的通用性強,對大多數(shù)的企業(yè)的考勤管理都適用;
4)算法可以推廣到各種類似問題的解決。
5 結(jié)束語
本文提出的基于分治算法的多班次考勤管理算法能夠解決中大型企業(yè)考勤管理問題。經(jīng)實際應(yīng)用證明,利用該算法編寫出的考勤管理系統(tǒng)能夠快速并正確地分析出企業(yè)員工每日的考勤結(jié)果,最終生成考勤統(tǒng)計報表,從而大大地提高了人力資源管理的效率,降低了公司的人力成本。
參考文獻:
[1] 梁靜. 基于指紋識別的高??记谙到y(tǒng)的設(shè)計與實現(xiàn)[D]. 南京: 南京理工大學(xué), 2010.
[2] 王紅梅, 胡明. 算法設(shè)計與分析[M]. 北京: 清華大學(xué)出版社, 2013.
[3] 陳燕暉, 邢晶, 羅宇. 一種消除遞歸的新方法[J]. 計算機工程與應(yīng)用, 2006, 42(4): 73-75, 141.
[4] 湯亞玲. 遞歸算法設(shè)計及其非遞歸化研究[J]. 計算機技術(shù)與發(fā)展, 2009, 19(11): 85-88, 93.
[5] 孫召偉, 趙建利, 朱東生. 數(shù)據(jù)結(jié)構(gòu)中遞歸轉(zhuǎn)非遞歸算法分析及模型設(shè)計研究[J]. 河北科技大學(xué)學(xué)報, 2011, 32(1): 43-46.
【通聯(lián)編輯:謝媛媛】