求助!考勤系统思路分析!

xiaop87518 2009-07-13 04:18:15
加精
有如下数据:
工作时段:
上午:08:30~12:00
下午:14:00~18:00

6 1 0 周承杰 2008-09-19 17:44:32 1200735872000
19 1 0 陈子兰 2008-09-19 17:50:20 1200736220000
12 1 0 成程 2008-09-19 17:51:36 1200736296000
21 1 0 颜枝军 2008-09-19 17:57:05 1200736625000
16 1 0 黄建强 2008-09-19 17:57:09 1200736629000
16 1 0 黄建强 2008-09-19 17:59:23 1200736763000
17 1 0 王伟 2008-09-19 18:01:54 1200736914000
22 1 0 陈勇 2008-09-19 18:08:21 1200737301000
9 1 0 杨关云 2008-09-19 18:39:12 1200739152000
8 1 0 白玉明 2008-09-19 19:29:03 1200742143000
10 1 0 曹之浩 2008-09-19 20:32:29 1200745949000
22 1 0 陈勇 2008-09-22 08:23:36 1200961416000
19 1 0 陈子兰 2008-09-22 08:24:00 1200961440000

需要解决的问题:
1、如何过滤掉重复刷卡的记录(如上班时刷了两次)
2、如何判断迟到、早退、加班等情况!

求助各位大师!
...全文
1252 74 打赏 收藏 转发到动态 举报
写回复
用AI写文章
74 条回复
切换为时间正序
请发表友善的回复…
发表回复
大鹏展翅fly 2011-04-11
  • 打赏
  • 举报
回复
顶,我也急需考勤系统思路!
duanwang 2009-07-22
  • 打赏
  • 举报
回复
我也正坐考勤呢,大家提出的观点很好
FrankyChan 2009-07-20
  • 打赏
  • 举报
回复
学习了. ^_^

ForUForM 2009-07-20
  • 打赏
  • 举报
回复
mark
zzmoutmans 2009-07-20
  • 打赏
  • 举报
回复
回帖是一种美德
zhaochengwu 2009-07-19
  • 打赏
  • 举报
回复
程序不可能解决所有问题,还有许多除程序外的很多方面的东西,一天打一次卡没有单位规定如何算?
redleafe 2009-07-19
  • 打赏
  • 举报
回复
关注
ADVANTECH_CYZ 2009-07-19
  • 打赏
  • 举报
回复
mark先。
fuxiaoyang13 2009-07-18
  • 打赏
  • 举报
回复
我卖你一套吧
阿士匹灵 2009-07-18
  • 打赏
  • 举报
回复
学习
关注
灌水
raze911 2009-07-18
  • 打赏
  • 举报
回复
如果再考虑到职工有可能于不同的时期在不同班组工作(换岗),则设计图可以更改为如下

如果你还准备进行更细致的统计项目,比如“迟到5分钟以内的次数”、“迟到5分钟以上的次数”等等之类,你只需要修改“工时统计”这个类就可以了





raze911 2009-07-18
  • 打赏
  • 举报
回复
怎么图贴不出来?编辑自己的贴子也不能编辑啊

图的地址
http://photo2.bababian.com/upload2/20090718/4148E7132FE377D45A22930318574F46_500.jpg

raze911 2009-07-18
  • 打赏
  • 举报
回复
晚上想了想,有个方案给楼主参考

1、用硬件来保证----任何一个员工都不能在同一状态下连续打两次卡

忘记打卡的问题由人工管理制度来控制,每日按班组划分检查一下各个员工的工时统计,由于同一个班组内的员工通常情况下的上班加班时间是相同的,所以可以很容易用程序逻辑找出异常情况,可以在程序中增加允许有特殊权限的人进行手工修改或补录的功能,但必须留下修改的痕迹(比如留下手工补录的登录人信息)

2、你把数据结构体系重新考虑一下,按下图去设计一套新的数据结构体系,在此图中,进行工时统计所需的几个基本信息都存在了,所以设计工时统计的逻辑应该是比较简单的事情


haochin 2009-07-18
  • 打赏
  • 举报
回复
我们公司就是专门写考勤系统软件的。

考勤算法,的确很复杂。
weiweipxb 2009-07-17
  • 打赏
  • 举报
回复
这种情况一定要设置每次刷卡的有效时间段,假如上午9:00上班,那么可以规定可以规定前三十分钟和后三十分钟为刷卡有效范围,也就是8:30到9:30为刷卡有效时间,然后上班卡就取9:00之前的刷卡时间,而且是靠九点最近的,如果没有刷卡,那么再取九点之后的,也是离9:00最近的一次刷卡,这样就解决了。下班也一样
hslinux 2009-07-17
  • 打赏
  • 举报
回复
group by 员工名字
aiyou18 2009-07-17
  • 打赏
  • 举报
回复
不懂 看热闹
yanlongwuhui 2009-07-17
  • 打赏
  • 举报
回复
情况比较复杂,上下班分开刷卡比较好
wangchao1982 2009-07-17
  • 打赏
  • 举报
回复
看了上面的回复,我发现大家都没有说到点子上。
首先要明确的一点是:我们是在打卡的时候进行过滤判断等等一些操作,还是数据录入之后进行判断。很显然,楼主是要对录入后的数据进行统计。所以,上面绝大多数的回复都没有意义。

[Quote=引用 42 楼 shi371755678 的回复:]
6 1 0 周承杰 2008-09-19 17:44:32 1200735872000
21 1 0 颜枝军 2008-09-19 17:57:05 1200736625000
16 1 0 黄建强 2008-09-19 17:57:09 1200736629000
16 1 0 黄建强 2008-09-19 17:59:23 1200736763000
17 1 0 王伟 2008-09-19 18:01:54 1200736914000
……
[/Quote]
这个数据结构让人挺郁闷的,但是不管怎么说,总该有一列是可以区分重名的主键吧。
我个人觉得,这样的数据必须每天处理(最主要的就是算法简单,而且把任务平均分配到每一天,不会到集中的某一天被老板追着骂^^)。如果是很多天都要统计,那就循环查询吧)。
前面讨论了更多的是漏打开和加班到第二天才打卡的情况。毫无疑问:漏打卡是需要提交申请审批的,并且会限制一个月只能允许漏打卡几次,超过了就要按照早退处理。而这时候存在一种很特殊的情况:这小子上班只打过一次卡,o.o这怎么算就涉及到业务逻辑了。至于加班的问题,公司是不允许随便加班的,加班同样需要审批,或许你早上5点打卡,那我可以给你判断是加班了。要是倒霉孩子加班到早上10点呢?如果有坏小子早上不睡觉偷偷的跑来早早的打卡……。你的数据库查询、导出数据不是万能的,这一步的职责就是处理简单的逻辑,然后导出数据,至于更复杂的判断,肯定涉及到审批了。所以那些更复杂的逻辑,交给助理或者其他相关人员去手动处理。
其实很多人的思维都进了一个误区,需要明白的是:程序不是万能的,有些东西根本没办法交给程序去进行逻辑判断(如果说前一天下班没打卡,第二天早上N点之前打卡就算是通宵加班,这个逻辑的漏洞就比较恐怖了吧o.o,想不明白的自觉靠墙边站着去),复杂的逻辑,必然要拆分成更多的合理步骤去处理。
shi371755678 2009-07-17
  • 打赏
  • 举报
回复
ding
加载更多回复(53)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧