黃日勝,陳冠志
(河源職業(yè)技術(shù)學(xué)院,廣東 河源 517000)
學(xué)生考勤是課堂教學(xué)的一部分,是加強(qiáng)學(xué)生管理維護(hù)學(xué)校教學(xué)秩序、保證各項(xiàng)教學(xué)任務(wù)順利實(shí)施的一個(gè)關(guān)鍵環(huán)節(jié)[1]。但傳統(tǒng)的課堂點(diǎn)名方式不僅耗費(fèi)了寶貴的課堂時(shí)間而且還加重教師的工作負(fù)擔(dān)[2]。當(dāng)前,二維碼具有信息容量大、糾錯(cuò)能力強(qiáng)、印刷成本低等特點(diǎn),而廣泛應(yīng)用于各種領(lǐng)域[3]。物聯(lián)網(wǎng)技術(shù)、移動互聯(lián)技術(shù)的迅速發(fā)展,給日常生活帶來巨大的變化。由此本文將結(jié)合移動互聯(lián)技術(shù)、二維碼技術(shù)提出一種基于Android 平臺的智慧考勤應(yīng)用系統(tǒng),結(jié)合學(xué)校教務(wù)系統(tǒng)的課程及學(xué)生信息,利用移動終端的攝像頭采集并自動識別二維碼信息,然后通過移動互聯(lián)網(wǎng)絡(luò)傳輸?shù)椒?wù)器,從而實(shí)現(xiàn)移動在線智能化考勤。
智慧考勤APP由兩個(gè)部分組成:教師簽到系統(tǒng)和學(xué)生簽到系統(tǒng)。教師簽到系統(tǒng)方便教師發(fā)起簽到和考勤統(tǒng)計(jì),并實(shí)時(shí)顯示老師上課的課程表。學(xué)生簽到系統(tǒng)實(shí)時(shí)顯示學(xué)生上課的課程表,學(xué)生可以通過掃二維碼的方式進(jìn)行簽到。
教師簽到系統(tǒng)由教師課程表查看、對應(yīng)課程發(fā)起簽到、對應(yīng)課程考勤統(tǒng)計(jì)查看、搜索課程考勤統(tǒng)計(jì)、手動考勤管理等功能組成。
教師課程表查看:從服務(wù)端獲取該教師課程表的數(shù)據(jù),進(jìn)行實(shí)時(shí)顯示該教師上課的課程表。
對應(yīng)課程發(fā)起簽到:對課程表的課程進(jìn)行長按,選擇發(fā)起簽到,便可對該課程向服務(wù)端發(fā)起簽到指令。
對應(yīng)課程考勤統(tǒng)計(jì)查看:對課程表的課程進(jìn)行長按,選擇考勤統(tǒng)計(jì),便可查看該課程的考勤統(tǒng)計(jì)。
搜索課程考勤統(tǒng)計(jì):教師可按學(xué)年-學(xué)期-班級-課程進(jìn)行搜索并查看考勤統(tǒng)計(jì)。
手動考勤管理:對學(xué)生考勤異常的情況,教師可通過手動對該學(xué)生進(jìn)行考勤管理。
學(xué)生簽到系統(tǒng)由掃二維碼簽到、學(xué)生課程表查看、查看對應(yīng)課程的詳細(xì)信息等功能組成。掃二維碼簽到:學(xué)生可通過掃二維碼的方式進(jìn)行簽到。學(xué)生課程表查看:從服務(wù)端獲取該學(xué)生課程表的數(shù)據(jù),進(jìn)行實(shí)時(shí)顯示該學(xué)生上課的課程表。
查看對應(yīng)課程的詳細(xì)信息:對課程表的課程點(diǎn)擊,便可查看該課程的詳細(xì)信息。
課程表包含3個(gè)功能,分別是發(fā)起簽到、考勤統(tǒng)計(jì)、手動考勤管理,單擊課程,就進(jìn)入手動考勤管理界面;長按,就會彈出發(fā)起簽到和考勤統(tǒng)計(jì)的提示框。點(diǎn)擊發(fā)起簽到時(shí),就會向服務(wù)器發(fā)起簽到指令;點(diǎn)擊考勤統(tǒng)計(jì),進(jìn)入考勤統(tǒng)計(jì)界面。
從服務(wù)器獲取教師上課的課程表JSON數(shù)據(jù),接著進(jìn)行數(shù)據(jù)處理,最后將數(shù)據(jù)展示成界面。當(dāng)教師單擊課程時(shí),就進(jìn)入手動考勤管理界面;當(dāng)教師對課程表長按時(shí),就會彈出發(fā)起簽到和考勤統(tǒng)計(jì)的提示框。點(diǎn)擊發(fā)起簽到時(shí),就會向服務(wù)器發(fā)起簽到指令;點(diǎn)擊考勤統(tǒng)計(jì)時(shí),就進(jìn)入該課程的考勤統(tǒng)計(jì)界面。教師課程表、考勤統(tǒng)計(jì)的實(shí)施界面分別如圖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 考勤統(tǒng)計(jì)
按學(xué)年—學(xué)期—班級—課程進(jìn)行篩選時(shí),可查看到篩選出來的考勤統(tǒng)計(jì)結(jié)果。當(dāng)教師按學(xué)年—學(xué)期—班級—課程進(jìn)行篩選時(shí),可查看到篩選出來的考勤統(tǒng)計(jì)結(jié)果。當(dāng)教師點(diǎn)擊統(tǒng)計(jì)標(biāo)題列時(shí),會對該列進(jìn)行降序或升序排列。條件篩選、篩選結(jié)果實(shí)現(xiàn)界面分別如圖3—4所示。條件篩選的主要實(shí)施代碼如下:
圖4 篩選結(jié)果
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開發(fā),學(xué)生點(diǎn)擊掃碼按鈕,打開攝像頭,掃描服務(wù)器發(fā)過來的二維碼,進(jìn)行簽到。簽到界面、掃碼界面分別如圖5—6所示。處理二維碼掃描結(jié)果的主要代碼如下:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == QR_CODE_REQUEST_CODE) {
//處理掃描結(jié)果(在界面上顯示)
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 掃碼
從服務(wù)器獲取學(xué)生上課的課程表JSON數(shù)據(jù),接著進(jìn)行數(shù)據(jù)處理,最后將數(shù)據(jù)展示成界面。當(dāng)學(xué)生單擊課程時(shí),便可查看該課程詳細(xì)信息。學(xué)生課程表、課程詳情界面分別如圖7—8所示。查看課程詳情的主要實(shí)施代碼如下:
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 學(xué)生課程表
圖8 課程詳情
本系統(tǒng)通過結(jié)合移動互聯(lián)網(wǎng)技術(shù)、二維碼技術(shù)來實(shí)時(shí)記錄學(xué)生課堂出勤情況,有效整合學(xué)校教務(wù)系統(tǒng)的相關(guān)功能。從實(shí)現(xiàn)結(jié)果來看,基于Android的智慧考勤APP操作方便快捷,功能強(qiáng)大。對于提高點(diǎn)名效率,促進(jìn)學(xué)校課堂管理具有一定的意義。