考勤軟體演算法實現方法

2021-10-02 02:35:42 字數 2927 閱讀 3693

問題的引出眾所周知,考勤是企業的薪酬計算、業績考核的乙個依據,也是對員工工作的積極性的乙個重要的評價基礎,企業的考勤是人力資源管理的最重要的一環。企業特別是製造業的考勤管理制度的優越性和公平性體現了企業的活力和人性。特別是對於我國的廣大製造業,他們的考勤特點有:

排班隨機多變、班次多、待料停工等突發事件多。

基於以上的必要性,我們認為一套好的考勤管理軟體應該能有比較好的靈活性和易操作性,能為企業提供一定的考核評價參考依據。其中的核心就是能有比較好的考勤演算法和思路。在此基礎上我們認為ic卡考勤機或****機作為前端打卡裝置都是可取的。

在我們收集了目前市場上的多套考勤軟體進行分析和操作後認為總體上的設計目標是為了實現企業的高效管理,但在實現上卻缺少靈活性和通用性,在一般的商業企業有比較好的解決辦法,但在製造業卻有一定的缺陷性。其中一部分只能在一些商業企業使用無法滿足製造業多變和靈活的需求。

我們希望在此提出一種實用可行的解決辦法的**:如何設計一套有效的靈活的考勤結果判斷思路,並通過軟體的自動計算完成考勤結果計算和統計。該方法我們已經應用在《博特考勤、工資、人力資源管理軟體》的考勤模組的設計上,獲得較大的成功。

提出處理的基本功能要求

考勤結果的自定義什麼叫遲到,什麼叫嚴重遲到,什麼叫曠工,這些我們都可以讓使用者自由定義。比如上班後5分鐘內叫遲到等,5~10分叫嚴重遲到等。

班次自定義班次的數量和引數提供使用者自定義。除了各種正班外,必須能支援3大類加班(平時加班、法定假加班、公休假加班)和彈性上下班(允許任意時間的上下班,只計算實際的出勤時間)。

在班次的屬性中可以設定該休息時間、是否可以預設上班不打卡或下班不打卡、允許提前上班打卡和延遲下班的打卡範圍。

還必須考慮提前加班(上班前就來加班)、直落加班(下班後不打卡繼續加班直到加班結束離開才打卡)、正班長度(超過部分自動算入加班)等各種所需的引數。

個人排班管理作為排班操作的方便性及個性化,我們建議給該功能增加乙個批處理功能,只要排好其中的乙個人,其他人可以採用「跟」的方式進行部分或整體的拷貝。這樣能有效地提高操作人員的工作效率。

部門排班作為整個部門的排班操作,該功能能為企業操作提供最大限度的方便性。是對部門或班組進行整批排班的最大優化。

迴圈排班輪班和倒班在生產性企業中是很普遍的,該功能的目標是給操作人員有效降低手工重複操作,提高工作效率。

假期管理企業員工的請假單的錄入介面。

班次結果計算的處理方法在我們進行了正確的排班、打卡,有了假單等一些資料後,我們便應該考慮考勤結果的計算產生流程。

打卡點的判斷跨天的處理,在搜尋打卡點的過程中我們必須考慮跨天的問題,因為在企業中跨天(凌晨0點)的夜班是很正常的。如果不能實現跨天的計算問題,那麼設計出來的軟體也不能滿足我們設計的目標即靈活性和適應性的要求。同時我們還必須考慮打卡的時間落在休息段之間的處理。

上班點的獲取我們原則上是取第一次有效的打卡點,即從應上班點開始向前搜尋至該班次的有效打卡引數控制範圍內出現的第一次打卡點。如果在該時間範圍內無打卡點,應自動向後回溯到從應上班後至應下班為止的的第一次出現打卡點。如果無打卡點則可以判斷為曠工。

下班點的獲取我們原則上是取下班後的第一次有效的打卡點,即從應下班點開始向後搜尋至該班次的有效打卡引數控制範圍內出現的第一次打卡點。如果在該時間範圍內無打卡點,應自動向前回溯到從應下班至應上班為止的的第一次出現打卡點。如果無打卡點則可以判斷為曠工。

假期的處理在假期的處理中我們仍然必須考慮跨天的問題,同時必須考慮各種可能,比如,請假時間落在休息段內的處理,請假始結時間與打卡時間之間的關係處理等。

班前、班後請假班前請假:請假時間從應上班開始,以請假結束時間為準,在請假結束時刻或前如果無打卡時間則應把缺勤的時間標記出來。

班後請假:請假時間從應下班前開始,以請假開始時間為準,在請假開始時刻或後如果無打卡時間則應把缺勤的時間標記出來。

班次中間請假該類請假,直接從出勤時間中扣除請假時間長度,並標識出來。

長期請假以整個假單為準覆蓋整個班次,比較多見的多天的請假,比如婚假、生育假等。

考勤結果的判斷從以上整理資料看我們基本上可以在此根據考勤規律的定義生成考勤結果,通過時間長度來判斷上下班是正常還是異常(遲到、早退、曠工等各種定義的專案)。

班次出勤時間的計算

長度計算原則上以班次長度除去缺勤(包含各種假期)的部分時間後我們就能得到實際的上班長度,但實際上我們還必須根據班次**的定義扣除各種休息時間以及其他各種定義比如正班長度的設定等,其中最重要的是必須考慮提前加班和直落加班的計算等。

取整的計算作為企業不一定就將實際的出勤時間作為員工在崗時間,一般會以30分鐘活60分鐘作為計算單位,我們還必須考考勤結果資料的取捨問題。

根據經驗,一般是正班計算單位長度和加班的計算單位長度是不一樣的(比如以30分鐘或15分鐘),我們應允許使用者自定義。

取得的效果

高效率我們將《博特考勤》在一些企業中運用的表現來看,初期系統匯入階段操作人員工作量比較大,因為他們必須熟悉各種班次並結合生產的需要設定定義引數,當然該工作必須有生產部門的配合和支援。

在系統正常執行後,基本上按照3000人的企業生成乙個星期大約為36000條考勤記錄、60000條考勤資料的計算來看大約在3~20分鐘,這主要決定於後台伺服器的效能、本機的效能以及網路的速度等,cpu花費的時間主要集中在打卡點的判斷上。

目前全國有數百家企業在使用該系統軟體,從普遍的反映來看結果是另人滿意的,代替了原來手工統計的工作。

資料準確從生成的結果來看都符合我們的設計目標。能有效分辨出遲到、早退、曠工、以及各種假期,準確計算各人各個班次的出勤情況。

但由於在操作過程中難免有操作人員的操作失誤(比如排錯班、輸錯了請假單)引起的考勤異常。我們建議設計一些異常分析表,針對異常結果資料進行處理,這樣就能幫助操作人員在較快的時間內人工檢查到問題的原因。

總結以上我們提供的不是整套考勤軟體的設計方法,僅僅希望在考勤結果的計算上提供一種參考思路,在實際的考勤軟體設計時候還必須考慮多種其他問題,比如報表、統計分析、方便的查詢以及許可權及控制管理(為不同的操作員分配不同的資料操作範圍和許可權)。

該工作是我們在開發《博特考勤、工資、人力資源管理軟體》的對考勤結果計算的處理部分採取的方法,本軟體作為產品軟體已經在市場廣泛使用。

奇數階魔方演算法及實現方法 資料結構

課程設計封面 題目 奇數階魔方的演算法與實現 課程 資料結構 學院 資訊工程學院 專業 物聯網工程 班級 12普本物聯網 學號 1201141009 姓名 李冰洋 指導教師 葉茂功 任務書書寫說明 1完成期限 自 2014 年 6 月 5 日至 2014 年 6 月 18 日共 2 周 2.計畫答辯...

用C 實現遺傳演算法

本程式試用遺傳演算法來解決rosenbrock函式的全域性最大值計算問題 max f x1,x2 100 x1 2 x2 2 1 x1 2 2.048 xi 2.048i 1,2 include include include include using namespace std const in...

設計系統PID演算法的方法軟體編寫PID詳解

這個是pid公式 u k 1 u k kp e k ki e k 1 kd e k 2 對你的系統而言,u k 就是當前占空比。我這裡先假定你的占空比對應定時器暫存器設定範圍是 0 65535.同時假定定時器設定為0的時候,占空比輸出為0 全部是低電平,完全不加熱。65535的時候,占空比輸出100...