实现考勤数据转换sql存储过程设计

实现考勤数据转换sql存储过程设计

ID:32638678

大小:56.88 KB

页数:7页

时间:2019-02-14

实现考勤数据转换sql存储过程设计_第1页
实现考勤数据转换sql存储过程设计_第2页
实现考勤数据转换sql存储过程设计_第3页
实现考勤数据转换sql存储过程设计_第4页
实现考勤数据转换sql存储过程设计_第5页
资源描述:

《实现考勤数据转换sql存储过程设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实现考勤数据转换SQL存储过程设计摘要:在考勤系统中,考勤机会记录下某人所有刷卡时间,而面对一条或多条考勤记录,我们还需要一个对比判断的过程来确定哪些记录是有效的上下班考勤记录。本文根据我校考勤规则设计了一个SQL存储过程,能够排除无效考勤记录,及时生成准确有效的上下班考勤记录,提供给用户网上查询。关键词:考勤;SQL;存储过程学校要求教员干部上下班必须刷卡考勤,规定晚于8:00刷卡为迟到,早于17:40刷卡为早退。目前,我校建有多个考勤机,24小时供教员干部刷卡考勤。但考勤机中只记录了某人刷卡时间,至于哪些记录是有效的,该记录

2、是上班还是下班,没有实现智能判断。为便于校园网上及时查询,需要设计一段程序来智能判别有效上下班记录,并自动把一人多条考勤记录合成一人一条记录。1考勤记录的判别分析当天考勤记录的各种情况可以通过下表来显示:当某用户只有1条考勤记录时,考勤时间最大值T_max=最小值T_min,上班考勤时间Tcome和下班考勤时间Tgo的值会有2种情况:①“考勤记录时间二下班时间”,则Tcome为空,Tgo=T_maxo当某用户有2条以上考勤记录时,考勤时间存在最大值T_max和最小值T_min,上班考勤时间Tcome和下班考勤时间Tgo的值会有3

3、种情况:①''T_rnax上班时间且T_min=下班时间且T_min>=上班时间",Tcome为空,Tgo=T_max0通过上述分析可以看出,用户当天不管是只有一条考勤记录还是有多条记录,要判别出哪条记录是上班还是下班,确实比较复杂。如果简单地用最大值和最小值分别代替上班考勤时间和下班考勤时间,是不能真实反映出考勤状态的。另外,在数据量比较大的情况下,用MIN和MAX函数进行统计,系统需要占用大量资源,查询效率比较低。所以,有必要设计一个考勤数据转换程序,把一人多条考勤记录转换成包含上下班时间的一人一条记录,提高查询效率。2程序

4、设计2.1考勤表数据结构创建SQL考勤表jqr_inout,从各考勤机获取的考勤数据都汇总到此表中,字段有:2.2设计思路通过程序处理,把有效最小值和最大值的数据标识出来,进而识别出有效的上下班考勤时间。表中字段done,表示处理状态,默认值为0。其中,0表示未处理的新建记录,2为最小值即上班时间,3为最大值即下班时间。首先在下班前的时间中取出有效的最小值,即上班时间。updatejqr_inoutsetdone=2wheredone二0andhm"0800,andchecktime=(selectmax(ja.checktim

5、e)fromjqr_inoutjawhereja.ssn=jqr_inout.ssnandja.ymd二jqr_inout・ymd)这样处理后,标识为2的是上班时间,标识为3的是下班时间。2.3程序改进上述代码虽然能够标识出上下班时间,但是是一次性的,运行过程中还有一些情况需要进行处置。一是考勤数据是实时采集的,数据会不断地增加进来,需要把已处理过的记录和待处理的记录以及处理中的记录区分开来。我们可以有字段done来表示,1-3表示正在处理的记录(1为未确定状态,2为最小值,3为最大值),4-9表示已经处理过的记录(4为最小值,

6、5为最大值,9为无效值)。二是随着考勤数据的增加,最小值和最大值也会发生变化,原来统计的最小值或最大值有可能不准确,需要对已处理过的最小值和最大值进行有效性判别。三是程序在执行中有可能会意外中断,需要重新统计。改进后的程序代码如下:第1步,将所有新增记录标识为待处理状态,即把done由0变为1。为防止程序没有执行完意外中断,保证数据统计的正确性,此步可以同时将done由2或3变为1。此步执行后,done的值可能有1、4、5、9。/*stepl*/updatejqr_inoutsetdone二1wheredonein(0,2,3)

7、第2步,在done的值为1的数据中,取下班前的最小值标识为2,即把done由1变为2。此步执行后,done的值可能有1、2、4、5、9o/*step2*/updatejqr_inoutsetdone-2wheredone二1andhm/*step3*/updatejqr_inoutsetdone=3wheredone=landhm>'0800,andchecktime=(selectmax(ja.checktime)fromjqr_inoutjawhereja.donenotin(0,9)andja.ssn=jqr_inout・

8、ssnandja.ymd二jqr_inout・ymd)第4步,把done的值为1的数据标识为无效,即把done由1变为9o/*step4*/updatejqr_inoutsetdone=9wheredone=1此步执行后,done的值可能有2、3、4、5、90某

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。