NFC 近场通信课堂签到系统设计与实现
2021-04-13郑晓东宋思琪
郑晓东 宋思琪*
(三峡大学科技学院,湖北 宜昌 443002)
0 引言
高校中的旷课、迟到、早退现象一直存在且不能得到很好的解决。 传统的人工点名签到方式效率低下,而且难以确认其准确性,这个时候就需要一种既方便又能快速完成课堂签到的方法。本课堂手机签到系统,可以做到仅学生手机与教师手机接触,便可以判断这个学生是否出勤,老师要做的仅仅是在旁边监督是否有学生会拿出多个手机代其他同学签到。安卓目前是最流行的移动开发平台, 随着具有NFC 功能的安卓手机越来越多,这种功能可以被利用起来以方便我们的生活和学习。
1 系统总体设计
1.1 基于Android 的NFC 开发
NFC 代表“近场通信”,它是兼容设备之间的短程通信[1]。 NFC 需要至少一个信号发射设备和一个信号接收设备。 本系统采用的是NFC 三大开发模式中的P2P 对等模式。该模式允许两个具有NFC 功能的设备建立双向连接,以交换联系人信息、蓝牙配对信息或任何其他类型的数据。通信时需要建立一个从连接客户端,即NFC P2P 发起人,到一个正在搜索NFC 对等目标主机之间的连接。本系统采用NFC NDEF 数据交换格式来传输数据[2]。 需要通信时,将两个开启NFC功能的手机相互碰撞, 这时两个手机的屏幕都会缩小,当你点击其中一个屏幕时,这个被点击的手机便会成为发送端,并发送一条NDEF 格式的数据,同时另外一个手机自然便成为了接收端。这里用到的实际上是Android Beam 通信[3-4]。
1.2 系统的核心架构
系统模块划分有学生手机端App、 教师手机端App、后台数据存储和Web 端查询服务器。 核心功能有教师开启签到、学生触碰签到、签到成功处理、后台签到数据查询等。
课堂签到学生端App 安装在学生手机上,每个学生通过输入自己的学号和相关信息从而在手机上绑定自己的ID。 上课时,打开手机上的App 和NFC 功能,与教师的手机进行后背NFC 接触,模拟打卡签到[5]。
教师也是通过在手机上安装手机签到教师端App,然后每次上课时开启App,放置在桌上模拟打卡机,由学生手机依次进行NFC 接触来实现签到。 每次形成的考勤记录都会记录在后台数据库中,教师可以根据自己的ID、 密码登录Web 端网站来查询或统计每次的课程考勤记录。
学生签到成功后的信息由学生手机发往后台服务器,教师可以在Web 端查询和统计签到记录。 系统数据流程图如图1 所示。
图1 签到系统数据流图
2 手机N F C 功能详细设计与实现
本系统主要是利用三大模式中的P2P 模式,开启学生和教师双方手机的NFC 功能以NDEF 格式进行信息传递[6]。 本系统在Android 拥有两个端,教师端和学生端,两个端都搭建了简洁的界面。
(1)定义了一个checkNFCFunction()方法, 判断NFC 功能是否开启,这个功能主要是强制开启NFC 功能,如果手机没有NFC 这个功能,程序就无法运行。
(2)定义了一个extractData()方法,解析传输中的NDEF 格式数据。这段数据取出的最终内容就是学生端的信息签到信息,包括签到ID,学生ID,签到时间等。
(3) 将信息整合并发送到服务器, 这里是使用HttpURLConnection 的方式发送到服务器, 最终将完整的签到数据存储在数据库表中。
2.1 教师端设计
教师端的主要任务是模拟一个读卡器。 首先,通过NFC 功能收集学生端的信息;其次,将收集来的信息进行整合;最后,将签到信息上传到搭建好的服务器。 实现NFC 信息收取的具体步骤如下。
2.2 学生端设计
学生端的主要任务是模拟一张卡,将学生的签到信息转化为NDEF 数据格式发送。 学生端需要一个BobNdefMessage 这样的封装类,用于NDEF 消息的封装。使用这个类可以很方便地实现封装功能和消息发送功能,然后就可以在NFC 上实现传输。 下面代码先是通过BobNdefMessage 进行信息的封装:
NdefMessage message=BobNdefMessage.getNdefMsg_from_RTD_TEXT(“学生的签到信息”,false,false);
然后是发送代码的设置。 只有这一条代码执行,手机碰撞后才会发送上面封装好的NDEF 信息数据:
mNfcAdapter.setNdefPushMessage(message, Main Activity.this);
3 We b 服务器端设计与实现
3.1 服务器端数据库详细设计
手机端签到成功后, 签到数据会被发送到Web服务器并存储到数据库服务器。 同时,在Web 服务器上可以方便地分析和统计历史签到数据。数据库使用的是Oracle 11g,表设计有教师表、学生表、课程表、课程安排表、学生课程表、学生签到考勤记录表等。
教师表主要针对学校所有的教师, 包含姓名、编号、入职日期、以及一些个人信息。学生表主要针对学校所有的学生,包含姓名、学号、年龄以及一些个人信息。课程表包含了学校所有课的基本属性,例如,课程名、课程编号、课程时长,等等。 课时安排表包含了学年度每一次课的安排,例如,一次课程安排的课程名,所对应的教师编号,所对应的日期时间,以及此次安排应到的人数。学生课程表包含了学生个人在被安排在每一次的到课情况,其中有学生学号,课程安排的ID,已经是否出勤该堂课。 学生考勤记录表包含了学生与课程的ID,学生ID 每一次签到的记录。
3.2 服务器端与手机端的整合
Web 端主要功能是接收手机端发来的消息并存储,然后为教师的签到记录查询和分析统计提供操作界面。Web 服务器端是学生签到成功后发送数据的接收方, 这里使用的是HTTP 通信协议。 教师端利用HttpURLConnection 连接上服务器,在签到过程中,也就是学生机触碰教师机后, 教师手机端通过NFC 对学生签到信息进行采集, 并负责将签到信息如签到ID、学生ID、教师和课程信息、签到日期和时间等上传到服务器以便处理。 服务器根据上传的信息,解析出签到的人员与课程,改写签到信息,将考勤记录设置成已签到。 需要使用签到查询功能时,教师输入自己的教师工号和密码即可登录Web 服务器, 然后进行相应操作。
4 结语
签到作为高校课堂的一个必要环节,使用新的技术可以提高其效率和准确性。NFC 近场通信技术能在短距离内与兼容设备进行识别和数据交换,NFC 在门禁、公交、手机支付等领域内发挥着巨大的作用。本文利用NFC 实现了一个结合Android 手机的课堂点名签到系统, 使用本系统的技术可以大大缩短签到时间。 在实现上,本文已经解决了数据交换与存储的核心功能,在数据查询统计上可以进一步完善。 从应用角度来看,本系统具有很强的实用性。