自制学生考勤系统登录考勤工具类

import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;

public class KqUtils {
    public static void main(String[] args){
        /**
         *        测试登录时间
         */
        //学生登录时间(考勤时间)
        Calendar cal2 =Calendar.getInstance();
        cal2.set(0,0,0,7,20,0);//8:20

        //学生下线时间(下课时间)
        Calendar cal3 =Calendar.getInstance();
        cal3.set(0,0,0,10,00,0);//20:56

        HashMap<String,Object> map = kq(cal2,cal3);
        if (map.get("course").toString().indexOf("")!=-1){
            System.out.println("该学生于第"+map.get("course").toString()+"课"+map.get("status").toString());
        }
        else {
            System.out.println("课程暂未开启");
        }
    }

    public static HashMap<String,Object> kq(Calendar cal2, Calendar cal3){
        HashMap<String,Object> map = new HashMap();
        map.put("course",new ArrayList<Integer>());//课程未开始
        ArrayList<Integer> course=new ArrayList();
        ArrayList<String> status=new ArrayList();
        //上课时间
        ArrayList<String> list = new ArrayList<>();
        list.add("08:10:00");
        list.add("09:05:00");
        list.add("10:10:00");
        list.add("11:05:00");
        list.add("14:30:00");
        list.add("15:25:00");
        list.add("16:20:00");
        list.add("17:25:00");

        ArrayList<Long> sk = new ArrayList<>();//存放上课的时间戳
        ArrayList<Integer> minute_list = new ArrayList<>();//存放上课课程的分钟
        for (String t1:list){
            int hour = Integer.parseInt(t1.substring(0,2).startsWith("0")?t1.substring(1,2):t1.substring(0,2));
            int mimute = Integer.parseInt(t1.substring(3,5).startsWith("0")?t1.substring(3,5):t1.substring(3,5));
            int second = Integer.parseInt(t1.substring(6,8).startsWith("0")?t1.substring(6,8):t1.substring(6,8));
            Calendar cal = Calendar.getInstance();
            cal.set(0, 0, 0, hour, mimute, second);
            sk.add(cal.getTimeInMillis());
            minute_list.add(mimute);
        }

        for (int i = 0; i < 8 ; i++) {
            //  2700000表示45分钟
            if (cal2.getTimeInMillis() - sk.get(i) <= 2700000 && cal3.getTimeInMillis()-sk.get(i)>0) {//同一小时并且在当前课程的45分钟内登录,即当前课程
                //根据登录时间-考勤时间判断是否准时出勤
                if (sk.get(i) - cal2.getTimeInMillis() >= 0) {
                    course.add(i+1);
                    map.put("course",course);
                    status.add("出勤");
                    map.put("status",status);
                }
                if (sk.get(i) - cal2.getTimeInMillis() < 0 && cal2.get(Calendar.MINUTE) - minute_list.get(i) <= 10) {//超过考勤时间10分钟内
                    course.add(i+1);
                    map.put("course",course);
                    status.add("迟到");
                    map.put("status",status);
                }
                if (cal3.getTimeInMillis()-sk.get(i) < 2700000 && cal3.getTimeInMillis()-sk.get(i)>0){
                    course.add(i+1);
                    map.put("course",course);
                    status.add("早退");
                    map.put("status",status);
                }
            }
            //在当前课程,超过考勤时间10分钟
            if (cal2.get(Calendar.MINUTE) - minute_list.get(i) > 10 && sk.get(i) - cal2.getTimeInMillis() < 0 && cal2.getTimeInMillis() - sk.get(i) <= 2700000) {
                course.add(i+1);
                map.put("course",course);
                status.add("旷课");
                map.put("status",status);
            }
        }
        return map;
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值