基于MAC地址的校园签到与定位软件设计

2021-11-12 02:17宫雨欣蒿特祺
智能计算机与应用 2021年9期
关键词:校园内应用程序服务器

宫雨欣,户 国,蒿特祺,王 易,应 悦

(上海工程技术大学 城市轨道交通学院,上海 201620)

0 引 言

国内大部分高校仍然使用教师课堂点名签到的方式统计学生课堂出勤信息,该模式会占用正常的教学时间,影响正常的教学进度,存在诸多缺陷。

无线通信技术包括超宽频(Ultra Wie Band, UBW)、ZigBee技术、射频识别(Radio Frequency Identification, RFID)、无线宽带(Wi-Fi)、4G通信技术等[1]。众多分布于不同位置的路由器所发射出的无线信号是构成无线局域网的首要条件,每个无线信号所在的发射装置都有一个独立的设备编号(MAC地址),用户可以使用自己的设备连接这些无线信号,从而登入互联网。用户登录后,用户的设备便可以通过JS获取MAC地址,或通过后台代码获取设备的MAC地址。基于此,只要让手机根据本地IP获取周边路由器的MAC地址,在数据库中搜索与该路由器相匹配的数据,即可实现定位功能。

隶属于美国的SkyhookWireless公司首次提出了Wi-Fi定位以及相关技术,通过不断改善,Wi-Fi定位技术日趋成熟,其原理为:根据Wi-Fi热点具有的位置不变性的性质,不同的Wi-Fi热点在通电的情况下,就会向周围空间发射其所产生的信号,并且此信号具有全球唯一性,并将该信号命名为ID—MAC地址,通过侦控一定范围内的AP(即Wi-Fi热点)的MAC地址,将该地址传送到服务器内,服务器可根据已经储存在数据库中的MAC地址,运用相关算法,获得客户端具体位置。

本文基于MAC地址探测的相关原理开发校园签到与定位系统,通过获取校园内不同地点的MAC地址,实现用户在校园内的打卡与定位的功能。该软件的前端开发集成工具是Android Studio 3.0版本,后端数据库是MySQL数据库,服务器使用的是阿里云,服务器容器使用的是Tomcat。手机应用程序可以高效的实现校园内的精确定位和打卡功能,具有易操作、易实现,实用性强的特点。

1 系统设计

1.1 系统架构

系统主要由4个模块构成:数据通信模块、Wi-Fi探测模块、后端校验模块和返回数据模块,软件的整体架构如图1所示。首先使用Wi-Fi探测模块,利用终端设备探测周围的MAC地址;数据通信模块会借助网络将探测到的MAC地址传输到后台服务器,并通过Tomcat容器发送请求;后台校验模块会将在MySQL数据库中寻找到的相应站点的MAC地址与反馈的MAC地址相比对,校验结果会通过系统的返回数据模块,若反馈的结果与后台数据库中相应站点的MAC地址存在重叠,显示打卡成功;若不存在重叠,系统则会显示使用者打卡不成功。

图1 基于MAC地址的校园签到与定位软件整体架构

1.2 系统开发平台(含开源/第三方工具)

软件开发可分为前端与后端两个部分。前端的操作系统为Windows 10操作系统,编译环境为Android Studio 3.0;搭建后端时,可兼容Windows 10系统与Linux系统,利用IntelliJ ideal(2017.03.05)在麦文(Marven)平台上进行编译,最大程度地优化了APP功能并提高其运行效率。本项目使用Tomcat作为储存容器,租借阿里云服务器并使用Navicat Premium作为后端数据库,通过xUtils网络请求来完成前端与后端的数据传输。

2 系统主要功能模块的设计与实现

2.1 数据库设计

为保证软件定位和签到功能的正常运行,要创建数据库存储、统计学生的基本信息、校内服务器中相应地点的MAC地址等数据。由于校园范围过大,软件开发初期先以特定站点为中心,反复多次探测该范围内的MAC地址,将所测数据传入后台数据库中[2]。

Android系统开发中有File存储数据、Shared Preferences存储数据、Content Provider存储数据和SQLite数据库存储数据4种常见的数据存储方式。其中,SQLite是一款轻量级数据库,占用资源低,较于其它数据库处理速度快,具有独立性、隔离性、安全性等多种特征,但其并不适用于大数据量的情况[3]。小型的手机应用程序,其定位和签到功能简单,仅局限于校园内,数据量较小,师生访问量不高,且要求读取速度快,故采用SQLite作为数据库。关键数据结构包括:用户注册登录信息表、用户签到信息表、打卡地点MAC地址信息表。其中,用户注册登录信息包含序号、学院、密码、学生学号、学生姓名,见表1;用户签到信息包含序号、创建时间、设备ID、打卡位置、MAC地址、学生学号,见表2;MAC地址信息包含序号、MAC地址、地址名称、父辈代号、子辈代号,见表3。用Java API编写数据库应用程序。

表1 用户注册登录信息表

表2 用户签到信息表

表3 打卡地点MAC地址信息表

2.2 MAC地址的确认方法

校园签到定位系统需要采集校园内不同地点的MAC地址,为降低其它设备(如手机等)对采集的影响,需采用多次测量排异的方法,即在不同时段采集同一地点的数据,确认某一地点的MAC地址时,采取类似“投票表决”的机制,该机制的主要流程如图2所示。将第一次探测得到的MAC地址汇总成列表A,往后的每一次探测,均先定义一张空列表B,并将探测得到的结果汇总到列表B中,从列表B中不重复地取出一个MAC地址,若该地址未在列表A中,则将该地址添加至列表A中;若该地址已经在列表A中,则该地址可能性加1。如此循环,最后取可能性最大的地址名称为该地点的MAC地址,将其导入到服务器中。

图2 “投票表决”机制的流程图

2.3 定位功能的实现

定位功能使用手机自带的GPS模块获取用户的实时位置,确定用户所处的校区并显示。

Android系统对地理位置的操作进行了封装,其中 LocationManager 提供了获取地理位置信息的接口,LocationProvider可以提供各种定位技术,在其中进行指定和设置,让 LocationManager 利用当前 LocationProvider 来获得地理位置信息,再依据 Criteria 来设定精度标准。

确定用户在校园内的准确位置则采取投票机制,依赖于MAC地址信息模块,取可能性最大的MAC地址名称上传至服务器,与数据库中已存储的MAC地址进行比对,从而判断用户的实时位置,并将结果反馈给手机应用程序。

3 手机应用程序设计

3.1 手机应用程序的结构设计

为了更好的组织手机应用程序的各个模块,采用分层结构设计,明确每一个层次系统的功能和作用形成一个良好的层次系统,层与层之间是松耦合关系,下层模块为上层模块提供服务。

手机应用程序的软件结构从上到下主要由用户界面层、用户功能层、中间件层和操作系统层这4个部分组成,如图3所示,其中中间件层又分为核心功能层与基础功能层。

图3 软件层次结构图

在此结构中,下层为上层提供服务接口以供上层调用,但层与层之间隐瞒内部实现,当某一层的实现产生变化时,只要接口不变,就不会影响其它层次的功能实现。层与层之间相互联系,各层次内的模块又相互独立,不同模块间通过接口调用,尽量满足高内聚低耦合的原则[4]。

3.2 功能模块介绍

在分层结构的基础上,将上述各功能模块独立的安置在每一层中,如图4所示。以Android操作系统为例,中间件层的基础功能层提供网络通信、数据储存、第三方应用等基础服务。核心功能层提供数据访问、数据比对、MAC地址侦测、消息推送和定位服务。用户功能层依赖核心功能层所提供的服务来实现用户所需要的功能。

图4 模块功能

本文为手机应用程序设计了非常丰富的功能,不仅能精确完成日常定位打卡的操作,为日常教学增添了许多的便利之处。

4 结束语

本文设计了一款基于MAC地址的校园签到与定位系统。采集并确认校园内不同地点的MAC地址数据,并将这些数据录入到后台数据库中;使用时系统将先采集和确认用户所在地点的MAC地址,并将这一地址传输到后台数据库进行比对,从而实现在校园内的精准定位。测试表明该系统操作便捷,准确度高、灵活度高、可延展性强,能实现学生在校园内的精准定位和打卡功能,并能帮助教师统计学生的出勤信息。

猜你喜欢
校园内应用程序服务器
校园里若有人行凶
删除Win10中自带的应用程序
墨尔本女子学院将拆除校园内所有垃圾桶
谷歌禁止加密货币应用程序
2018年全球服务器市场将保持温和增长
校园内不同区域空气微生物分布的调查分析
三星电子将开设应用程序下载商店
微软软件商店开始接受应用程序
用独立服务器的站长注意了
定位中高端 惠普8路服务器重装上阵