◆魏嵩 王天鑫 闫冉 黎茂林 宿世博 陈晓宇
基于地理位置信息的自动打卡签到应用研究
◆魏嵩 王天鑫 闫冉 黎茂林 宿世博 陈晓宇
(北京信息科技大学 北京 100083)
以往的纸质签到,浪费时间和资源,而且当前大多签到APP使用较为烦琐,而针对签到的功能设计比较单一,不能较好满足使用需求。本款签到APP面向所有签到场景,用GPS获取地理位置信息,从时间、位置、签到码三个方面来进行签到。
签到;GPS定位;短信验证码;签到码
对于课堂、会议等各种形式下的签到而言,方便、迅速、准确成为用户的首选,每次会议都采用纸质签到的方法,不仅很浪费时间和资源,而且不能保证签到的有效性和正确性。当前已有相关应用实现在线签到功能,但普遍存在操作较为烦琐,针对签到功能点的设计不够完善等问题。本项目是面向“打卡签到”需求设计的一款应用,采用APP形式。基于地理位置信息实现无干涉自动打卡签到。接下来解释此应用的研发。
基于实现方便、准确的签到需求,系统应包括新建签到、加入签到、查看签到记录、手机验证码登录等。
如图1所示,此APP主要由四大模块组成,即“签到列表”、“加入签到”、“新建签到”和“我的”组成。其中“签到列表”可以查看我加入和创建的签到,在“我的”里可以查看签到记录和设置。
图1 架构图
图2 系统流程图
如图2所示,用户在登录后可以选择“新建签到”、“加入签到”和“我的”。若选择“加入签到”,则输入签到码“加入签到”即可。若选择“新建签到”,则填写签到的信息,然后系统会自动生成一个签到码,并把签到的信息存储到数据库中。若选择“我的”,可从数据库中调取签到记录并查看,或在“设置”中更改绑定的手机号,或退出登录。
根据APP功能模块的设计需求,建立了3个数据表,即用户表(User)、发布签到表(Sign)、签到状态表(State)。后端编写采用的是nodejs中的express框架,用Sequelize操作mysql数据库。前后端采用post传输数据,数据格式为json格式。用户表是用于存放用户手机号,签到发布表是用于存放发布签到的信息,签到状态表是用于存放签到记录的信息。
表1 用户表字段详细信息
表2 签到发布表字段详细信息
表3 签到状态表字段详细信息
如图3所示,登录模块采用短信验证码进行登录,短信验证码服务采用阿里云的短信验证服务。调用阿里云短信验证的API,前端将用户输入的手机号用post方法传给后端,调用API,返回是否成功的参数值,“验证码”则会发送到用户手机中。用户输入验证码后会与后端数据库中的验证码比较,验证是否登录成功。
如图4所示,通过H5新增功能地理位置 Geolocation,来获取可以较为准确地获取到经纬度信息,在地图中显示出来,需要把它移植到Android中,这里借用的是Android中WebView控件,可以很好地展示出网页中的内容,这就能完成获取地理位置信息了。
签到模块分为创建签到、加入签到、查看签到情况这三个方面。如图5所示,用户点击创建签到后,填写表单信息后,前端会把用户填写的表单发送给后端,后端把信息添加进数据库,并且随机生成数字签到码存入数据库,用json格式返回一个值表示创建成功。如图6所示,加入签到模块,用户输入签到码,前端把用户地理位置的经纬度、当前时间、“签到码”用post方式传给后端。从时间是否在规定时间内,签到的经纬度与签到地点是否在规定范围来确定是否为有效签到。如图7所示,查看签到记录方面,后端查看数据库即可完成此操作,以json格式传给前端。
图3 登录模块
图4 获取地理位置信息模块
基于地理位置信息的自动打卡签到应用已经完成基本签到功能,已经发布了第一版基于Android的APP,软件性能良好,操作简单便捷。本款APP不仅解决了传统纸质签到浪费资源、耗时的问题,还优化了目前市场上签到APP操作较为烦琐的问题。在今后的研究中,将继续对软件的性能和定位的精度进行优化,让用户拥有更好的使用体验。
图5 新建签到
图6 加入签到
图7 签到记录
[1]马炳周.基于Android的考勤系统的设计方案[J].中国新通信,2019,21(18):48-49.
[2]刘香燕,李扬. 智能签到系统的设计与应用[J]. 信息通信,2018(02):95-96.
本文由北京信息科技大学2020年大学生创新创业训练计划项目资助