联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-23:00
  • 微信:codinghelp2

您当前位置:首页 >> CS作业CS作业

日期:2018-06-14 09:27

一、班段考勤算法(普通员工正常班段考勤)

为方便描述,时间单位均为分钟。

员工的空间位置状态分厂外、单位内两种。

1)初始化数据

1.1)获取班段的开始时间Ts,结束时间Te,同时获取该班段打卡时间范围内的所有打卡记录,按打卡时间升序排列所有打卡记录。打开记录按时间可分[Ts-30, Ts],(Ts,Te)以及[Te, Te-30]3个区段。

1.2)[Ts-30, Ts]区间内仅保留最后一条所有打卡记录,删除其他记录。

1.3)[Te, Te-30]区间内仅保留第一条打卡记录,删除其他记录。

1.4)把[Ts, Te]区间内连续且超过3个单位打卡记录中除头尾之外的所有打卡记录删除,仅保留头尾两条记录。

把初始化后的所有打卡记录记为R,长度为n,Ri为第i条打卡记录。

2)计算员工是否在岗及相应的时长(不考虑请假)。


系统只记录头和尾两次出厂打卡记录。

系统从第一条时间开始检索

分为四种情况:

2.1若先查找到单位打卡时间再查找到出厂打卡时间,则该时间段为在岗时间

2.2若先查找到出厂打卡时间再查找到单位打卡时间,则该时间段为不在岗时间。

2.3若先查找到出厂打卡时间,而且下一次查找到的也是出厂打卡时间,那么该时间段为不在岗时间。

2.4若先查找到单位打卡时间,而且下一次查找到的也是单位打卡时间,那么该时间段为在岗时间。

数据结构:可以使用队列进行存储单位打卡时间和出厂打卡时间,单位打卡时间和出厂打卡时间使用不同的标记,利用队列先进先出的特点进行排序,然后进行每一次的单位打卡时间和出厂打卡时间的搜索。



3)结合请假条,进一步区分每个不在岗区段的类型及时长。(在岗区段可直接判定为出勤)

   业务规则1)在一个连续不在岗时段A(不考虑请假,该不在岗的类型为早退)被假条切割后,请假时间区段B为请假,B后的区段算早退,其他区段的考勤参考该区段A之前的区段的状态。(如果有多张假条,则B为最后一张请假条的时间区段)

业务规则2)在一个连续不在岗时段(不考虑请假,该不在岗的类型为迟到或者溜号)被假条切割后,如果有溜号,溜号次数算一次,溜号时间累计)

(1)不正常上下班打卡

1.1不正常上班打卡

Case1如果在上班时间之后进行打卡,但是在正常下班时间内进行了下班打卡,则视为迟到,迟到时间为打卡时间-正常上班时间-30(迟到30分钟内不计)

员工在岗,相应的时长为:上班打卡时间到下班打卡时间

Case2如果在正常上班时间前半小时进行了上班打卡,且有正常下班打卡,则视为正常出勤,出勤时间为正常上班时间到正常下班时间。

Case3如果没有在规定时间内进行上班打卡,但是有到厂区内进行出厂打卡,那么从正常上班打卡时间到出厂打卡这段时间内视为迟到,从这以后到正常下班打卡时视为溜号,在岗时间为全天不在岗。

1.2不正常下班打卡

Case1如果在正常下班时间后半小时内进行打卡,且有正常上班打卡,则视为正常出勤,出勤时间为正常上班时间到正常下班时间。

Case2如果在正常下班半小时前进行打卡,且有正常上班打卡,则视为早退。

出勤时间为正常上班打卡时间打下班打卡时间,早退时间为正常下班打卡时间-打卡下班时间-30,若不足30分钟则不计。

Case3如果在正常上班打卡时间内进行打卡,而且有出厂打卡,但是无下班打卡,那么从出厂打卡到正常下班时间为早退,在岗时间为正常上班打卡时间到出厂打卡时间

1.3不正常上班打卡和下班打卡

Case1如果在单位没有任何打卡记录,则视为旷工一天(就算在厂有打卡记录,也算旷工)。

(2)正常上班打卡与正常下班打卡

Case1如果在正常上班打卡后,离开厂区,且有下班打卡,则视为溜号,溜号时间为离开厂区的打卡时间与下班打卡时间之差-30(30分钟内不计)

Case2如果正常上下班,但是有请假,且请假正常,则请假时间视为正常在岗时间。


4)统计班段考勤结论

业务规则:迟到、早退及溜号统计规则:假设迟到时间为X分钟,如果X<=30,则记迟到一次,累计为0分钟。如果X>30,则记迟到一次,累计为X-30分钟。早退及溜号统计规则类似。  

细化算法框架中的第二步和第三步

完成算法中设计的数据的设计


版权所有:留学生编程辅导网 2020 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp