国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于分治法的多班次考勤管理算法

2020-11-02 02:36陸赟
電腦知識(shí)與技術(shù) 2020年26期
關(guān)鍵詞:班次

陸赟

摘要:企業(yè)考勤管理系統(tǒng)是中大型企業(yè)管理員工的最基本的信息化管理工具,是保證員工工作狀態(tài)和工作效率的前提。如何及時(shí)地、科學(xué)地管理企業(yè)員工的考勤已經(jīng)成為中大型企業(yè)面臨的重要課題。市面上很多考勤系統(tǒng)無(wú)法對(duì)擁有很多班次的中大型企業(yè)進(jìn)行考勤管理,該文提出了基于分治算法的多班次考勤管理算法,將與員工考勤管理相關(guān)因素利用分治的思想,將大問(wèn)題分解成小問(wèn)題,最終解決了中大型企業(yè)的考勤管理問(wèn)題。

關(guān)鍵詞:考勤管理;分治法;班次

中圖分類(lèi)號(hào):TP311? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2020)26-0228-03

1 背景

隨著計(jì)算機(jī)的普及和發(fā)展、社會(huì)經(jīng)濟(jì)的不斷進(jìn)步,各個(gè)單位對(duì)管理質(zhì)量的要求越來(lái)越高,一個(gè)經(jīng)濟(jì)、高效的考勤管理系統(tǒng)在企事業(yè)單位完善信息化管理起著至關(guān)重要的作用[1]。企業(yè)為了管理員工考勤,安裝了考勤機(jī),如指紋考勤機(jī)、人臉識(shí)別考勤機(jī)等,還購(gòu)買(mǎi)考勤管理系統(tǒng)來(lái)管理企業(yè)考勤。對(duì)于百人以下的企業(yè),只要在考勤管理系統(tǒng)中進(jìn)行簡(jiǎn)單設(shè)置就能快速生成考勤報(bào)表。但是中大型的企業(yè),尤其是生產(chǎn)型企業(yè),員工眾多,還存在輪班制和跨天上下班的情況,甚至對(duì)于特殊的崗位需要多時(shí)間段的班次,這些情況一般考勤系統(tǒng)生成考勤報(bào)表費(fèi)時(shí)間,動(dòng)輒2個(gè)小時(shí)以上,而且生成的員工月度考勤報(bào)表也不正確,如現(xiàn)在普遍應(yīng)用的中控考勤系統(tǒng)軟件。 這樣考勤員就需要人為地將員工的每日排班和指紋記錄進(jìn)行比較分析最終得出考勤統(tǒng)計(jì)報(bào)表,大大浪費(fèi)了人力成本。為了彌補(bǔ)考勤系統(tǒng)軟件的不足,現(xiàn)在企業(yè)考勤管理的需求,尤其是存在很多班次的中大型生產(chǎn)型企業(yè)的需求,本文提出了基于分治法的多班次考勤管理算法。實(shí)際應(yīng)用表明,該算法速度快,正確性高,滿足中大型企業(yè)的一般的考勤需求,實(shí)現(xiàn)了考勤管理的目標(biāo),使得考勤自動(dòng)化管理變?yōu)楝F(xiàn)實(shí)。

2 考勤管理問(wèn)題

2.1 考勤管理問(wèn)題描述

隨著公司規(guī)模的不斷擴(kuò)大,員工數(shù)量及崗位都在不斷地增加,為了符合每個(gè)崗位的特殊要求,設(shè)定的班次也多種多樣,一般中大型的生產(chǎn)型企業(yè)需要用的班次就有上百種,另外員工排班、請(qǐng)假、指紋或人臉識(shí)別等生物識(shí)別的考勤記錄等都與員工考勤息息相關(guān),統(tǒng)計(jì)公司里所有員工考勤,快速正確生成企業(yè)員工的月度考勤也變得越來(lái)越復(fù)雜。本文以指紋考勤機(jī)為例,紀(jì)錄員工每次考勤,利用基于分治法的多班次考勤管理算法來(lái)解決復(fù)雜的考勤管理問(wèn)題。

2.2 考勤管理數(shù)據(jù)結(jié)構(gòu)的定義

定義1? Sum:?jiǎn)T工總數(shù)

定義2? n0:?jiǎn)T工組中員工的個(gè)數(shù)

定義3? d:考勤天數(shù)

定義4? AllPer[Sum*8] :表示員工的基本信息的Sum*8二維數(shù)組,包括:?jiǎn)T工號(hào)、員工姓名、公司編碼、部門(mén)、序列、崗位、入職日期、離職日期

定義5? PerArr[] :表示n0規(guī)模的員工號(hào)組的一維數(shù)組,每個(gè)元素用“‘員工號(hào)1,‘員工號(hào)2,...‘員工號(hào)n”表示,便于一次性在數(shù)據(jù)庫(kù)中查詢或刪除n0個(gè)員工對(duì)應(yīng)相關(guān)信息,其中,◇ 為上取整函數(shù), 為員工組的個(gè)數(shù)

定義6? PERNRArr[] :表示n0規(guī)模的員工號(hào)及指紋編碼組的一維數(shù)組,每個(gè)元素用“select ‘員工號(hào)1 as PERNR,‘指紋編碼1 as UserID? union all select ‘員工號(hào)2 as PERNR,‘指紋編碼2 as UserID... ”表示,其中,◇ 為上取整函數(shù),為員工號(hào)及指紋編碼組的個(gè)數(shù)

定義7? EX[m*7]:表示n0個(gè)員工的請(qǐng)假記錄的m*7二維數(shù)組,m表示月請(qǐng)假記錄數(shù),0~6分別表示員工號(hào)、指紋編碼、開(kāi)始日期、結(jié)束日期、請(qǐng)假日期、請(qǐng)假標(biāo)識(shí)、請(qǐng)假I(mǎi)D

定義8? MPB[n*10]:表示n0個(gè)員工的月排班記錄的n*10二維數(shù)組, n表示月排班記錄數(shù),0~9分別員工號(hào)、指紋編碼、開(kāi)始日期、結(jié)束日期、上班時(shí)間、下班時(shí)間、上班有效時(shí)長(zhǎng)、下班有效時(shí)長(zhǎng)、班次名稱、班次ID

定義9? PB[Pn*9] :表示n0個(gè)員工的日排班記錄的Pn*9二維數(shù)組, Pn表示日排班記錄數(shù),0~8分別員工號(hào)、指紋編碼、開(kāi)始時(shí)間、結(jié)束時(shí)間、班次日期、上班有效時(shí)長(zhǎng)、下班有效時(shí)長(zhǎng)、班次名稱、班次ID

定義10? Start[Pn*4] :表示n0個(gè)員工的日排班記錄對(duì)應(yīng)的有效簽到記錄的Pn*4二維數(shù)組,0~4:?jiǎn)T工號(hào)、上班時(shí)間、 簽到時(shí)間、上班時(shí)間差異

定義11? End[Pn*4] :表示n0個(gè)員工的日排班記錄對(duì)應(yīng)的有效簽退記錄的Pn*4二維數(shù)組, 0~4:?jiǎn)T工號(hào)、下午時(shí)間、簽退時(shí)間、下班時(shí)間差異

定義12? biaoshi[32] :表示員工的月考勤標(biāo)識(shí)的一維數(shù)組,1~31分別存儲(chǔ)當(dāng)月1日到31日的考勤標(biāo)識(shí),如果當(dāng)月只有30天,則biaoshi[31]為”/”

定義13? arrb[22] :表示員工考勤異常情況的統(tǒng)計(jì)的一維數(shù)組,1~21:?jiǎn)T工事假、病假、婚假、遲到、早退、曠工等各類(lèi)考勤異常情況的統(tǒng)計(jì)值

定義14? KQReport[n0*61] :表示n0位員工的月度考勤匯總的n0*64二維數(shù)組, 0~5:AllPer[0]-[5]員工號(hào)、員工姓名、公司編碼、部門(mén)、序列、崗位, 6:strYear年,7:strMonth月,8~38:biaoshi[1]-[31]考勤標(biāo)識(shí),39-59:21個(gè)考勤異常統(tǒng)計(jì),60:出勤天數(shù)

3 考勤管理問(wèn)題的分治思想

3.1 分治法基本思想

分治法的基本思想是將一個(gè)難以直接解決的大問(wèn)題,分解成一些規(guī)模較小的相同子問(wèn)題,以便各個(gè)擊破,分而治之[2]。

分治法通常用于求解具有以下特征的問(wèn)題,一般來(lái)說(shuō),是否滿足這幾個(gè)特征,是問(wèn)題能否用分治法求解的基本要素:

1)小規(guī)??山庖捉猓?jiǎn)栴}的規(guī)模縮小到一定程度,即可以直接求解;

2)最優(yōu)子結(jié)構(gòu):原問(wèn)題可以分解為若干個(gè)互相獨(dú)立且是原問(wèn)題較小模式的子問(wèn)題,這是分治法的前提;

3)解可以合并:如果子問(wèn)題可解,那么原問(wèn)題也可解,并且原問(wèn)題的解可以由各個(gè)子問(wèn)題的解合并得到,這是能否使用分治法的關(guān)鍵要素。

分治法在實(shí)際工作中主要是通過(guò)解決與原問(wèn)題密切聯(lián)系且覆蓋原問(wèn)題的子問(wèn)題來(lái)解決約束復(fù)雜難以直接解決的組合問(wèn)題。但是在使用分治算法的時(shí)候遞歸算法也容易同時(shí)在設(shè)計(jì)中,給程序帶來(lái)運(yùn)行效率低,耗時(shí)多并大量的占用存儲(chǔ)空間等一系列問(wèn)題。文獻(xiàn)[3-5]提出了一種消除遞歸的新方法,在分治算法的基礎(chǔ)上實(shí)現(xiàn)非遞歸,實(shí)現(xiàn)在計(jì)算機(jī)處理某些比較復(fù)雜的問(wèn)題時(shí),減少某些程序的反復(fù)執(zhí)行,進(jìn)一步節(jié)約空間和減少時(shí)間復(fù)雜度。

因此如果待解決的問(wèn)題完全具備分治法求解的3個(gè)要素就可以利用分治法求解,并且可以利用消除遞歸的方法設(shè)計(jì)算法提高算法的執(zhí)行效率。

3.2 考勤管理與分治思想

解決考勤管理問(wèn)題是生成一個(gè)滿足約束條件的,將員工信息、員工排班、請(qǐng)假記錄、指紋記錄組合分析的考勤統(tǒng)計(jì)報(bào)表,即包含每個(gè)員工每個(gè)月每天的考勤狀態(tài),以及整個(gè)月考勤異常和出勤天數(shù)的匯總。無(wú)疑此類(lèi)問(wèn)題是個(gè)難以直接解決的規(guī)模較大的問(wèn)題,并且完全具備用分治法求解的3個(gè)基本要素。因此,本文依據(jù)中大型生產(chǎn)型企業(yè)考勤管理的要求,在充分研究和優(yōu)化考勤管理問(wèn)題及其約束條件的基礎(chǔ)上,提出了考勤管理的分治算法,并且利用消除遞歸的方式實(shí)現(xiàn)了非遞歸,算法總體采用分治法思想如下:

1)首先將公司所有員工的月考勤管理問(wèn)題分解為員工組所有員工的月考勤管理問(wèn)題。這樣可以按員工組查詢員工組所有員工的請(qǐng)假記錄、排班記錄、指紋記錄,減小查詢的規(guī)模;

2)員工組所有員工的月考勤管理問(wèn)題,分解為員工組內(nèi)每個(gè)員工的月考勤管理問(wèn)題;

3)某個(gè)員工的月考勤管理問(wèn)題,可以分解為這個(gè)員工的每日考勤管理問(wèn)題;

4)某個(gè)員工某日考勤管理問(wèn)題,可以分解為該日各個(gè)時(shí)間段的考勤管理問(wèn)題;

5)分別對(duì)這個(gè)員工的該日各個(gè)時(shí)間段的考勤進(jìn)行分析求解,然后將各個(gè)時(shí)間段考勤的標(biāo)識(shí)進(jìn)行合并得到該日的考勤標(biāo)識(shí)。

6)分別對(duì)這個(gè)員工的每日的考勤進(jìn)行分析求解,然后將每日考勤的標(biāo)識(shí)進(jìn)行合并統(tǒng)計(jì)出每個(gè)員工的各考勤異常的值,這樣由這個(gè)員工的員工信息、每日考勤標(biāo)識(shí)、考勤異常統(tǒng)計(jì)值組成的考勤統(tǒng)計(jì)報(bào)表即完成了對(duì)該員工的月考勤管理;

7)分別完成對(duì)員工組內(nèi)每個(gè)員工的考勤的分析求解,即完成了對(duì)該員工組員工的月考勤管理;

8)分別完成對(duì)所有員工組員工的考勤的分析求解,即完成了對(duì)所有員工的月考勤管理。

4 多班次考勤管理的分治算法

4.1 算法的主要步驟

根據(jù)考勤管理的分治思想設(shè)計(jì)分治算法,具體步驟如下:

1)查詢當(dāng)月在職的員工基本信息,賦值給二維數(shù)組AllPer[Sum*8];

2)將Sum個(gè)員工根據(jù)設(shè)定的標(biāo)準(zhǔn)規(guī)模n0進(jìn)行分組PERNRArr[],以便按規(guī)模讀取員工的指紋用戶信息、請(qǐng)假記錄和排班記錄、指紋記錄;

3)分析AllPer中第count個(gè)員工的月度考勤報(bào)表,初始count=0;

4)判斷count是不是n0規(guī)模員工組的第一個(gè)員工,即count%n0是否為0。如果是,則跳轉(zhuǎn)到步驟5,如果否,則跳轉(zhuǎn)到步驟10;

5)如果員工組的第一個(gè)員工,則讀取當(dāng)前n0規(guī)模員工組的指紋用戶信息;

6)根據(jù)當(dāng)前n0規(guī)模員工組的指紋用戶信息讀取當(dāng)月請(qǐng)假記錄EX[m*7];

7)根據(jù)當(dāng)前n0規(guī)模員工組的指紋用戶信息讀取當(dāng)月排班記錄,將月排班記錄分解成日排班記錄PB[Pn*9](某日的排班記錄以申請(qǐng)日期最晚一次為準(zhǔn));

8)根據(jù)當(dāng)前n0規(guī)模員工組的日排班記錄中班次的上班時(shí)間及上班有效時(shí)長(zhǎng)讀取有效簽到指紋記錄及上午時(shí)間差異等Start(Pn*4),與日排班記錄一一對(duì)應(yīng);

9)根據(jù)當(dāng)前n0規(guī)模員工組的日排班記錄中班次的下班時(shí)間及下班有效時(shí)長(zhǎng)讀取有效簽退指紋記錄及上午時(shí)間差異等End(Pn*4),與日排班記錄一一對(duì)應(yīng);

10)初始化第count個(gè)員工的月考勤標(biāo)識(shí)biaoshi[1]-[31]為“/”,依次分析當(dāng)月1日到當(dāng)日前一天(strDay)的考勤狀態(tài):①將請(qǐng)假記錄EX[m][7]中屬于當(dāng)前員工當(dāng)日的有效請(qǐng)假記錄(某日的請(qǐng)假記錄以申請(qǐng)日期最晚一次為準(zhǔn))的請(qǐng)假標(biāo)識(shí)對(duì)應(yīng)到標(biāo)識(shí)中中,如1號(hào)請(qǐng)假標(biāo)識(shí)存儲(chǔ)到biaoshi[1]中;②如果當(dāng)日無(wú)請(qǐng)假標(biāo)識(shí)且不為曠工,則根據(jù)當(dāng)日班次的各個(gè)時(shí)間段的上班時(shí)間差異和下班時(shí)間差異判斷考勤標(biāo)識(shí),并合并到當(dāng)日的biaoshi中;

11)根據(jù)當(dāng)月每日的考勤標(biāo)識(shí)biaoshi[1]-[31]對(duì)考勤異常進(jìn)行統(tǒng)計(jì),將結(jié)果存儲(chǔ)到arrb[1]-arrb[21]中,并且算出出勤天數(shù)dates;

12)月度考勤統(tǒng)計(jì)報(bào)表KQReport[count/n0][0]-[5]存儲(chǔ)AllPer[count][0]-[5]的員工信息,KQReport[count/n0][6]存儲(chǔ)當(dāng)年strYear信息,KQReport[count/n0][7]存儲(chǔ)當(dāng)月strMonth信息,KQReport[count/n0][8]-KQReport[count/n0][38]存儲(chǔ)分析完的月考勤標(biāo)識(shí)biaoshi[1]-[31],KQReport[count/n0][39]-KQReport[count/n0][59]存儲(chǔ)考勤異常的統(tǒng)計(jì)值arrb[1]-arrb[21],KQReport[count/n0][60]存儲(chǔ)出勤天數(shù)dates;

13)重復(fù)執(zhí)行(4)~ (12)步,直到分析生成所有員工的考勤統(tǒng)計(jì)報(bào)表。

4.2 算法的優(yōu)勢(shì)

由于考勤管理涉及的信息都存儲(chǔ)在數(shù)據(jù)庫(kù)中,考勤匯總之前需要先從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)存儲(chǔ)到計(jì)算機(jī)內(nèi)存中。而連接數(shù)據(jù)庫(kù)和讀取數(shù)據(jù)表中數(shù)據(jù)的次數(shù)以及數(shù)據(jù)在內(nèi)存中的存儲(chǔ)關(guān)系到計(jì)算的時(shí)間和空間復(fù)雜度。本算法通過(guò)分治思想按員工組的規(guī)模讀取員工對(duì)應(yīng)的排班、請(qǐng)假和指紋記錄,對(duì)該規(guī)模內(nèi)員工的考勤進(jìn)行匯總,直到完成對(duì)所有員工的考勤匯總。該算法在正確生成考勤統(tǒng)計(jì)報(bào)表的同時(shí),極大地降低了考勤匯總的時(shí)間和空間復(fù)雜度。

另外,算法還體現(xiàn)了其他優(yōu)勢(shì):

1)不會(huì)因?yàn)榭记谌藛T的增多,影響程序整體的運(yùn)行結(jié)果;

2)由于考勤相關(guān)的員工信息、排班記錄、考勤記錄、指紋記錄等信息均處理為數(shù)組,而基于管理數(shù)據(jù)庫(kù)的3種關(guān)系(表、查詢、視圖),其實(shí)質(zhì)就是類(lèi)似數(shù)組的二維表,因此,算法易于在基于數(shù)據(jù)庫(kù)的計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn);

3)算法的通用性強(qiáng),對(duì)大多數(shù)的企業(yè)的考勤管理都適用;

4)算法可以推廣到各種類(lèi)似問(wèn)題的解決。

5 結(jié)束語(yǔ)

本文提出的基于分治算法的多班次考勤管理算法能夠解決中大型企業(yè)考勤管理問(wèn)題。經(jīng)實(shí)際應(yīng)用證明,利用該算法編寫(xiě)出的考勤管理系統(tǒng)能夠快速并正確地分析出企業(yè)員工每日的考勤結(jié)果,最終生成考勤統(tǒng)計(jì)報(bào)表,從而大大地提高了人力資源管理的效率,降低了公司的人力成本。

參考文獻(xiàn):

[1] 梁靜. 基于指紋識(shí)別的高??记谙到y(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 南京: 南京理工大學(xué), 2010.

[2] 王紅梅, 胡明. 算法設(shè)計(jì)與分析[M]. 北京: 清華大學(xué)出版社, 2013.

[3] 陳燕暉, 邢晶, 羅宇. 一種消除遞歸的新方法[J]. 計(jì)算機(jī)工程與應(yīng)用, 2006, 42(4): 73-75, 141.

[4] 湯亞玲. 遞歸算法設(shè)計(jì)及其非遞歸化研究[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2009, 19(11): 85-88, 93.

[5] 孫召偉, 趙建利, 朱東生. 數(shù)據(jù)結(jié)構(gòu)中遞歸轉(zhuǎn)非遞歸算法分析及模型設(shè)計(jì)研究[J]. 河北科技大學(xué)學(xué)報(bào), 2011, 32(1): 43-46.

【通聯(lián)編輯:謝媛媛】

猜你喜歡
班次
荷斯坦牛泌乳速度指標(biāo)影響因素分析
民航機(jī)場(chǎng)地面服務(wù)人力資源兩階段運(yùn)籌優(yōu)化算法
考慮編制受限的均衡任務(wù)覆蓋人員排班模型①
深巴春運(yùn)期間公交運(yùn)送乘客3861萬(wàn)人次
公交車(chē)輛班次計(jì)劃自動(dòng)編制探索
烏魯木齊基于公交GPS數(shù)據(jù)的班次劃分方法研究
公交司機(jī)排班問(wèn)題的混合元啟發(fā)算法研究
帶柔性休息時(shí)間的多技能呼叫中心班次設(shè)計(jì)
多車(chē)場(chǎng)公交乘務(wù)排班問(wèn)題優(yōu)化