黄日胜,陈冠志
(河源职业技术学院,广东 河源 517000)
学生考勤是课堂教学的一部分,是加强学生管理维护学校教学秩序、保证各项教学任务顺利实施的一个关键环节[1]。但传统的课堂点名方式不仅耗费了宝贵的课堂时间而且还加重教师的工作负担[2]。当前,二维码具有信息容量大、纠错能力强、印刷成本低等特点,而广泛应用于各种领域[3]。物联网技术、移动互联技术的迅速发展,给日常生活带来巨大的变化。由此本文将结合移动互联技术、二维码技术提出一种基于Android 平台的智慧考勤应用系统,结合学校教务系统的课程及学生信息,利用移动终端的摄像头采集并自动识别二维码信息,然后通过移动互联网络传输到服务器,从而实现移动在线智能化考勤。
智慧考勤APP由两个部分组成:教师签到系统和学生签到系统。教师签到系统方便教师发起签到和考勤统计,并实时显示老师上课的课程表。学生签到系统实时显示学生上课的课程表,学生可以通过扫二维码的方式进行签到。
教师签到系统由教师课程表查看、对应课程发起签到、对应课程考勤统计查看、搜索课程考勤统计、手动考勤管理等功能组成。
教师课程表查看:从服务端获取该教师课程表的数据,进行实时显示该教师上课的课程表。
对应课程发起签到:对课程表的课程进行长按,选择发起签到,便可对该课程向服务端发起签到指令。
对应课程考勤统计查看:对课程表的课程进行长按,选择考勤统计,便可查看该课程的考勤统计。
搜索课程考勤统计:教师可按学年-学期-班级-课程进行搜索并查看考勤统计。
手动考勤管理:对学生考勤异常的情况,教师可通过手动对该学生进行考勤管理。
学生签到系统由扫二维码签到、学生课程表查看、查看对应课程的详细信息等功能组成。扫二维码签到:学生可通过扫二维码的方式进行签到。学生课程表查看:从服务端获取该学生课程表的数据,进行实时显示该学生上课的课程表。
查看对应课程的详细信息:对课程表的课程点击,便可查看该课程的详细信息。
课程表包含3个功能,分别是发起签到、考勤统计、手动考勤管理,单击课程,就进入手动考勤管理界面;长按,就会弹出发起签到和考勤统计的提示框。点击发起签到时,就会向服务器发起签到指令;点击考勤统计,进入考勤统计界面。
从服务器获取教师上课的课程表JSON数据,接着进行数据处理,最后将数据展示成界面。当教师单击课程时,就进入手动考勤管理界面;当教师对课程表长按时,就会弹出发起签到和考勤统计的提示框。点击发起签到时,就会向服务器发起签到指令;点击考勤统计时,就进入该课程的考勤统计界面。教师课程表、考勤统计的实施界面分别如图1—2所示。显示课程表及手动考勤管理主要代码如下。
//显示课程表
private void showCourse(){
showCourseTemp(mCourseListTemp,0);
mCourseListTemp.clear();
showCourseTemp(mTeaCourseList,1);
mCourseListTemp.addAll(mTeaCourseList);
}
//手动考勤管理
Alert Dialog dialog = new Alert Dialog.Builder(SdglActivity.this)
.setTitle(“对【“ + sdglBean.getName() + “】手动考勤操作:”)
.setSingleChoiceItems(new String[]{“正常签到”,”请假”“迟到”“早退”“旷课”}, sdglBean.getState(),(dialog1,which) ->{
sdglBean.setState(which);
dialog1.dismiss();
ToastUtil.info(“操作成功”);
}).create();
dialog.show();
图1 教师课程表
图2 考勤统计
按学年—学期—班级—课程进行筛选时,可查看到筛选出来的考勤统计结果。当教师按学年—学期—班级—课程进行筛选时,可查看到筛选出来的考勤统计结果。当教师点击统计标题列时,会对该列进行降序或升序排列。条件筛选、筛选结果实现界面分别如图3—4所示。条件筛选的主要实施代码如下:
图4 筛选结果
this.setOnClickListener(v ->{
if (myPopW.isShowing()){
myPopW.dismiss();
this.setTextColor(getResources().getColor(R.color.colorDarkBlue));
this.setCompoundDrawablesWithIntrinsicBounds(null,null, tvIcoDown, null);
} else{
myPopW.show(this);
this.setTextColor(getResources().getColor(R.color.colorAccent));
this.setCompoundDrawablesWithIntrinsicBounds(null,null, tvIcoUp, null);
}});
本功能基于Google的开源库 Zxing开发,学生点击扫码按钮,打开摄像头,扫描服务器发过来的二维码,进行签到。签到界面、扫码界面分别如图5—6所示。处理二维码扫描结果的主要代码如下:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == QR_CODE_REQUEST_CODE) {
//处理扫描结果(在界面上显示)
if (null != data) {
Bundle bundle = data.getExtras();
if (bundle == null){
return;
}
if (bundle.getInt(CodeUtils.RESULT_TYPE) ==CodeUtils.RESULT_SUCCESS){
String result = bundle.getString(CodeUtils.RESULT_STRING);
String resultUrl = result+”3838438”;
OkHttpUtils.post().url(resultUrl).build().execute(new StringCallback(){
@Override
public void onError(Call call, Exception e, int i) {
}
@Override
public void onResponse(String s, int i) { }
});
}else if (bundle.getInt(CodeUtils.RESULT_TYPE) ==CodeUtils.RESULT_FAILED){
ToastUtil.info(“解析二维码失败”);
}
}
}
}
图5 签到界面
图6 扫码
从服务器获取学生上课的课程表JSON数据,接着进行数据处理,最后将数据展示成界面。当学生单击课程时,便可查看该课程详细信息。学生课程表、课程详情界面分别如图7—8所示。查看课程详情的主要实施代码如下:
protected void courseInfoShow(String byClsName)
{
List<Cou rse> quer yList = Dat aSuppor t.where(“clsName=?”, byClsName). find(Course.class);
for (Course course : queryList)
{
tvTeaName.setText(course.getTeaName());
tvClasName.setText(course.getClsName());
tvClsRoom.setText(course.getRoomName());
tvBeginWeek.setText(“第” + course.getBeginWeek() +“周”);
tvEndWeek.setText(“第” + course.getEndWeek() +“周”);
}
myPopW.show(getView());
}
图7 学生课程表
图8 课程详情
本系统通过结合移动互联网技术、二维码技术来实时记录学生课堂出勤情况,有效整合学校教务系统的相关功能。从实现结果来看,基于Android的智慧考勤APP操作方便快捷,功能强大。对于提高点名效率,促进学校课堂管理具有一定的意义。