首页 新闻 搜索 专区 学院

最近做的考勤系统,思路有点乱,大家帮忙捋一下啊

0
悬赏园豆:20 [已关闭问题]

考勤系统,主要是统计每天早上迟到的分钟数和早退的分钟数。统计的时间主要是来自于指纹考勤机。每天每个员工可能会有多次摁手印的情况。数据库字段也很简单AttendTime(ID int,UID int ,AttendTime DateTime ). 规定早上上班时间是8 点,下午下班时间是5点,周六例外,上午8点,下午12点。现在棘手的问题是

1.当某人某天多次摁了手印时,应该如何判断她的上班时间和下班时间?

2.当某人某天上午摁了手印,下午忘记了摁手印时,应该如何判断?

3.下午的早退的时间应该如何算呢?

希望大家能够给个思路.....谢谢。。。

天堂口的主页 天堂口 | 小虾三级 | 园豆:514
提问于:2009-07-31 16:54
< >
分享
其他回答(3)
0

1. 如果没有规定进出必须都打手印的话,那就只好第一次打手印当进入,第二次当离开,第三次覆盖第二次的时间,还是当离开

2. 如果他离开的时候不按手印,你无法知道离开时见,设置一个timeout,比如,系统自动在23:59时记录他离开

3. 记录进出时间和计算迟到早退应该分开来各做各的,当你通过记录得知进出时间后,只要用两个时间跟规定时间比对就可以了

emery | 园豆:145 (初学一级) | 2009-07-31 17:15
0

如果没有规章的话就没法统计,按手印和打卡无异,不按规定做的话损失自负并发现后处罚。

指纹机应设在门口,有专人看管,要求每次进出都按才行,这样每对进出时间(单双)构成一个区间,当日的区间累积起来就是当日在职时间,可以据此来统计工时。

以下是在进出门都会强制按手印的基础上进行的判断:

1.由于进出必须按手印,当日第一次就是上班时间,最后一次就是下班时间。

2.还是由于进出必须按手印,只要他进来了就得有记录,没有记录直接无视就行。

3.根据第一条,最后一次如早于当日规定下班时间就是早退。或者也可以用累计在职区间计算是否早退。

斯克迪亚 | 园豆:4124 (老鸟四级) | 2009-07-31 17:50
0

前阵子也做了这方面的,要有你的考勤系统,前提是这个就是依据,大家必须去做。
程序方面只是一个时间统计与筛选的问题

生鱼片 | 园豆:5757 (大侠五级) | 2009-07-31 18:04
0

楼主公司的情况和我公司基本一样,我们这里是进出打卡,中午吃饭进出也需要打卡,进出公司其他门禁也需要打卡,所以每个人每天会有很多打卡。在数据库(SQL Server)中只有一个表(Checkinout)记录所有门打卡信息(卡号,门号,打卡时间)。而且我们还有上夜班的操作员工,所以他们的上班考勤和正常班的还不一样。

在每月做考勤时,我是通过一个Procedure对Checkinout进行处理,将公司所有员工作为一个大循环,针对每一个员工到Checkinout表中取其每天的打卡信息,以当天为例:

上班:取当天最早一个打卡时间T1为上班时间,若T1<8:00,则为正常,若T1>8:00,则为迟到。迟到时间为:T1-8:00。

下班:取当天最晚一个打卡时间T2为下班时间,若T2>17:00,则为正常,若T2<17:00,则为早退。早退时间为:17:00-T2。

当然你也可以按常规来取打卡时间,比如上班应该在8:00或以前打卡,下班应该在17:00或以后打卡,但有迟到或早退的情况你就取不到数了,所以可以用12:00来区分。

对于忘打卡问题:其实上班和下班都存在忘打卡问题,最特殊的情况是,早晚都没打,但一天当中打过多次,凭经验来说靠程序和系统是无法判断该员工的出勤情况,所以我就把上面Procedure处理的数据写到Attend_day表,即可生成HR需要的员工考勤表,然后每月执行一次把考勤表打印出来发给员工写原因、签字。

总的来说,通过系统想完全判断出勤情况很难,必须有HR介入出每月考勤表。

Gnie | 园豆:468 (菜鸟二级) | 2009-07-31 21:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册