大家好,小弟刚做JAVA不久,最近在开发一个签到系统,在签到模块中遇到
了很大麻烦,请大家帮帮忙!多谢!这个系统是和一个读写器相连(功能已实现),每个员工发张工作卡,卡里记录着员工标签ID,每天在出入门口时,读写器都会自动读取标签(一天中每次出入都会被记录),并将信息记录到数据库中。然后根据记录,计算出员工每天签到的情况,显示在页面上。(再就是按部门、员工、年、月、日查询了)遇到的问题:
应该怎样去设定时间、怎样过滤信息、怎样去判断。

解决方案 »

  1.   

    表设计如下:请大家看看是否合理1、表名:tbFTD_EmpAnn(扫描信息)
       字段:EAnn_Id(自动编号)/ Ftd_Id(员工标签)/ EAnn_RecordTime(扫描到的时间)
       示例:   001               A5A5510074030564    2006-9-20 12:54:332、表名:tbFTD_WorkTime(工作时间设置)
       字段:WBegin_TimeA(时间范围)2006-9-11 8:30:00
             WBegin_TimeB(时间范围)2006-9-11 17:00:00
             WEnd_TimeA(时间范围)2006-9-11 9:00:00
             WEnd_TimeB(时间范围)2006-9-11 17:30:003、表名:tbFTD_TimeCard(时间记录)
       字段:id
             RFID
             ScanOn(上班时间)
             ScanOff(下班时间)
             recordtime(记录日期)
             StatusOn(上班状态)
             StatusOff(下班状态)
       示例:11/A5A5510036359312/2006-7-23 8:07:10/2006-7-23 20:03:45/2006-7-23/正常/正常
       
      

  2.   

    大家有没有这方面的示例,给小弟发一份,感激不尽...邮箱:[email protected]会的不难,难得不会,对新手小弟来说,挺难的,多谢大家帮忙
      

  3.   

    1、员工表中要标记匹配到tbFTD_WorkTime中哪一种,把tbFTD_WorkTime信息直接归到员工表中更直接吧?
    2、tbFTD_TimeCard表只是备份记录用吧?
      

  4.   

    没有加班什么的,那样会更复杂
    tbFTD_WorkTime表是设置签到的时间段,适合这个时间段就算正常,否则..
    tbFTD_TimeCard表是最好的记录表,不算是备份
      

  5.   

    tbFTD_TimeCard,感覺更像是希望把無數的信息分析出來的結果,樓主希望把結果存在裏頭,直接從這裡查詢吧?如果樓主的系統沒有那麽多條件要考慮,確實就是簡單的查詢就好了
      

  6.   

    tbFTD_TimeCard表是记录每天每人签到的记录
      

  7.   

    這樣的話,tbFTD_TimeCard不必存在。因爲你的簽到紀錄是一直變動的,如果要這個表,你就需要做個觸發器之類的東西,有變動就去改tbFTD_TimeCard裏的内容。感覺沒有必要。如果一定要一個OK的結果方便查詢,可以用查詢語句做View就是查詢每天最早和最晚的兩個紀錄作爲上下班紀錄。關於中間的時間,一般來説就是中午休息了吧。中午我可以不出去吧?鑒于此,建議這兩條記錄自動寫入,只要有第一條早上上班的紀錄,就默認有中午下班的紀錄。只要有下午的紀錄,就默認有中午這條。否則沒有。
      

  8.   

    然後跟据這些數據,和你tbFTD_WorkTime(工作时间设置)裏的時間做對比,分析出
             StatusOn(上班状态)
             StatusOff(下班状态)如果沒理解錯,這兩個欄位應該是存“準時”“遲到”之類的信息吧
      

  9.   

    to:aresartemis() 

    你理解的对
      

  10.   

    //这段代码是读取标签时的    
    public void messageReceived(Message message) {
            String ftdId;
            try {
                if (message.getTagCount() == 0) {
                    System.out.println("无标签信息...");
                } else {
                    jdbc.openJDBC();
                    for (int i = 0; i < message.getTagCount(); i++) {
                        try {
                            tag = message.getTag(i); //获取标签
                            ftdId = tag.getTagID();                        String sql = "insert into tbFTD_EmpAnn(Ftd_Id) values('" + ftdId + "')";                        jdbc.insertJDBC(sql);
                            System.out.println("插入标签成功...");
                        } catch (Exception e) {
                            System.out.println("插入标签失败...");
                        }
                        jdbc.closeJDBC();
                    }
                }
            } catch (Exception e) {
                System.out.println("系统无法提供服务..." + e);
            }
        }