日期:2014-05-20  浏览次数:20817 次

求一考勤班次算法,望高手赐教
我定义了如下3个班次

A01
包括两个时间段,
      上班         下班
1、08:30   -   12:00
2、13:00   -   17:30

A02
也包括两个时间段,
      上班                   下班
1、当天21:30       -   当天23:30
2、第二天00:30   -   第二天08:30

A03
包括一个时间段
上班         下班
00:00-08:30

这个员工可能上这三个班次的其中一个,怎么根据打卡信息分析出他上哪个班次啊

打卡信息是这样的,(有忘记刷卡的可能)
工号   日期           时间
001     2007-1-1   12:02:00
001     2007-1-1   12:31:51
001     2007-1-1   17:35:11

望高手给个比较好的算法,不胜感激,多谢

------解决方案--------------------
试验试验定义一个隐藏的字段根据内容在刷卡的时候赋值,在根据它判断班次

不求分,只求活跃我的思想,也许答非所问,不好意思
------解决方案--------------------
忘记刷卡了,怎么会知道他上哪个班次啊??????
他要是提前打,怎么办啊,是不是上下办都打啊.
------解决方案--------------------
忘记刷卡 要定義考勤異常
讓打卡者,填表
------解决方案--------------------
a01于a02的区间没有重叠,这种情况只要计算打卡的第一个时间与最后一个时间的区间就可以知道班次(漏刷也可以,只刷一次无意义)
对于a02与a03,有部分时间区间重叠,打卡又可能漏刷,这样精确判断是不可能的,只能将相邻的两个打卡时间分为一组,逐个判断是与哪个班次的上班区间发生交叉,最后取交集,为可能所属的班次
------解决方案--------------------
up
------解决方案--------------------
To LEOHuang:上班中间休息吃饭打卡时间迟到或者提前的算不算?
假如我上的是AO1班次:
A01
包括两个时间段,
上班 下班
1、08:30 - 12:00
2、13:00 - 17:30
中午是要求13:00打卡的,但我13:30分打卡的话,该怎么算?要另外做处理吗?
还有,我们可以这样处理:
分组统计每个人的每天打卡时间,找出最大值和最小值,然后根据最大值和最小值和每个班次的上班时间和下班时间做比较(中间休息时间不管),这样不知是否可行?
比如工号001的打卡信息:
工号 日期 时间
001 2007-1-1 08:00:00
001 2007-1-1 12:02:00
001 2007-1-1 12:31:51
001 2007-1-1 17:35:11
我们就可以提取打卡时间最小值(08:00:00)和最大值(17:35:11)来判断他是上A01班次的
------解决方案--------------------
考勤問題復雜
mark
------解决方案--------------------
mark
------解决方案--------------------
没时间仔细看:
但提示你先考虑正常打卡算法
再考虑漏打,由于你2,3时间段重合你漏卡那很多情况,可能要程序检测出异常后人工修复!
------解决方案--------------------
多年前就搞过自动考勤系统,一直认为这是个大难题,个人比较认同kason_j(伊松)的说法,对考勤记录不成双成对出现的列为异常,人工判别或加输补打卡模块(类似平常的补卡让领导签字)
------解决方案--------------------
对考勤记录不成双成对出现的列为异常,你可以设置相应的规则,就是出现此异常时,你的班次可以用默认的一个,那样就好计算出勤情况
------解决方案--------------------
帮你顶呀!
------解决方案--------------------
UP
有点意思!
------解决方案--------------------
先分析算法,给出可能所有正常情况和异常情况
------解决方案--------------------
其实还有一种更复杂的情况,上夜班的情况,打卡时间是跨天的。比如:20:00 - 08:00
------解决方案--------------------
一直在想这个问题
希望高手指点
------解决方案--------------------
搞不懂為什麼要“根据打卡信息分析出他上哪个班次啊”?這有什麼意義?你只是為了考人吧?如果某人隨便打卡(比如三個班都打卡)呢?是不可能分析出來的,你認為呢?
------解决方案--------------------