基于微信小程序的校园公共场所访问登记系统的设计与实现
2021-05-19孙洪迪贾民政杨民峰
孙洪迪 贾民政 杨民峰
(北京工业职业技术学院 电气与信息工程学院,北京 100042)
0 引言
随着智能手机的普及,微信已经成为人们生活中使用频率最高的APP之一。智研咨询发布的《2020—2026年中国微信公众号行业市场经营风险及投资战略规划分析报告》显示:从2011年开始持续使用到今年的微信月活跃用户数量已经突破了11 亿,全国14 亿人口,微信月活跃用户就达到了11 亿,是中国用户量最大的APP[1]。2017年1月9日,张小龙在2017微信公开课Pro上发布的微信小程序正式上线。微信小程序是小程序的一种,英文名为Wechat Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用[2],避免了APP繁琐的下载注册等诸多不便,真正做到了用完即走的理念,用户不用担心手机安装过多的软件,以及内存占用问题。
目前高校校园里,每位师生都在使用智能手机和微信。微信小程序在校园中也得到广泛使用,如微课堂[3]、宿舍查寝[4]、校园服务[5]、考勤签到[6-10]。目前学生使用的今日校园APP只有公共场所登记的功能,教师使用的学习通等APP可以完成学生上课签到功能,但没有记录学生进出校园公共场所的登记功能,班主任也不能通过这些APP实时查询学生上课签到情况。针对这种情况,笔者设计一款“校园公共场所访问登记系统”,该系统可以提供学生进出校园公共场所登记、上课签到、晚间宿舍归寝签到的功能,任课教师可以查询统计学生上课签到情况,班主任可以查询统计学生上课出勤和晚间宿舍归寝情况。
1 校园公共场访问登记系统的设计
1.1 系统架构分析
为了让用户拥有良好的体验同时使系统开发高效和便捷,该系统采用微信小程序原生框架进行编写:服务器采用PHP编写,功能主要是对数据进行存储、加工,处理后反馈给客户端进行展示;客户端视图层则由微信小程序自带的WXML与WXSS 2种语言编写,功能主要是将数据展示在界面上。使用MySQL数据库,数据库包括10张数据表。该系统功能的实现及具体算法如下:
(1)通过网页版坐标拾取器获取各个标注地点的经纬度坐标,并匹配相应地点的名称和描述,将其打包存入js文件中;(2)结合腾讯地图API采用轮询调用wx.getLocation()方法完成对用户个人定位;(3)利用marker组件,在用户界面中展示地图上标记的位置,完成签到功能。
1.1.1 系统功能框架
该系统实现的主要功能包括:(1)学生根据地理位置,完成出入校园公共场所登记、上课签到、晚间宿舍归寝签到,查询统计自己上课签到的历史信息和晚间宿舍归寝签到的历史信息;(2)班主任实时查看学生上课签到信息、晚间宿舍归寝信息,查询统计学生上课签到历史信息和晚间宿舍归寝签到历史信息;(3)任课教师实时查询授课班级学生上课签到情况,查询统计所教授课程学生的上课签到历史信息;(4)楼宇管理员实时查询当前楼宇内的学生人数和学生信息,以及学生出入楼宇的历史信息。该系统实现的功能如图1所示。
图1 校园公共区域访问登记系统功能结构图
1.1.2 系统管理员操作界面
系统管理员负责对数据库信息进行更新维护,其操作界面如图2所示。
图2 系统管理员操作界面
1.2 系统数据库设计
根据该系统的实际需求,使用MySQL数据库。数据库包括10张数据表,数据表具体信息如表1所示。
表1 数据表统计表
2 校园公共场所访问登记系统的实现
2.1 楼宇管理员模块
楼宇管理员通过学生签到来统计当前楼宇内学生数量以及学生相关信息。
2.1.1 流程分析
楼宇管理员可以对所管理的楼宇进行实时的信息查询,也可以查询楼宇的历史登记记录。楼宇管理员模块系统流程图如图3所示。
图3 楼宇管理员模块系统流程图
2.1.2 界面设计
楼宇管理员可以查询进入自己所负责楼宇的学生信息。查询方式包括:查询当前时刻楼宇内学生信息以及进入楼宇学生的历史记录。可以查询的信息包括:学生姓名、班级和签到时间。楼宇管理员查询界面如图4所示。
图4 楼宇管理员查询界面
2.1.3 关键函数实现
// 获得楼宇的签到情况
function getBuildingCheckin($buildingName){
$checkTime=$this->getTime();
$roomList=$this->DBUtils->query("buildings"
, array("buildingadministrator_id","name")
, array($this->classroomAdministrator[0]["id"],$buildingName)
, array("id","location"));
$len=count($roomList);
}
2.2 班主任模块
班主任登录该系统可以实时查询自己班级学生上课出勤情况及晚间宿舍归寝情况。班主任登录系统后,显示自己名下所带班级列表。选择要查询班级后,显示当前班级的课程列表,以课程为单位显示班级学生签到情况。晚间宿舍归寝也被规定成一门课程,呈现在课程列表里。学生根据课程安排,在规定时间和地点上课,课堂上即可完成签到。晚间宿舍归寝,每天晚间设定一个固定时间段,学生在宿舍内及规定时间内完成签到,既完成晚间宿舍归寝签到。该系统方便班主任实时查询统计学生的签到信息,第一时间掌握学生出勤情况。同时班主任还可以查询学生签到的历史信息,方便班主任的管理工作。
2.2.1 流程分析
班主任可以实时查询、统计学生上课签到和晚间宿舍归寝签到的信息及历史签到信息。班主任模块系统流程图如图5所示。
图5 班主任模块系统流程图
2.2.2 界面设计
班主任可以查询自己班学生上课签到情况,如图6所示。
图6 班主任查询学生签到结果界面
2.2.3 关键函数实现
//获取班主任管理班级课程
function getClassCourses($classId){
$coursesList=$this->DBUtils->getNewTable(
"SELECT DISTINCT courses.name
FROM courses, syllabus
WHERE syllabus.class_id='".$classId."'
AND syllabus.course_id=courses.id");
return $coursesList;
}
2.3 任课教师模块
任课教师手动点名,效率低且容易出现登记、统计错误。登录该系统后,任课教师可以看到自己所教授的课程列表,点击课程名字可以看到该课程对应班级。选择相应班级后,如果该班级当前是上课时间,则可以查询当前课堂学生签到情况,对没有签到的学生名单一目了然。对以往上课签到的历史信息,任课教师也可以根据班级查询,方便教师统计。在学生签到过程中,除了学生要基于位置完成签到以外,教师还设置了学生签到的有效时间,两者都符合条件,才能成功签到。
2.3.1 流程分析
任课教师可以实时查询和统计授课班级学生上课签到信息及学生历史签到信息。任课教师模块程序流程,如图7所示。
图7 任课教师模块系统流程图
2.3.2 界面设计
任课教师查询自己所教授课程学生上课签到情况,如图8所示。
图8 任课教师查询结果界面
2.3.3 关键函数实现
//获取当前课程签到记录
function getClassCheckinRecord(){
$courseTime = $this->getTime();
$res = $this->DBUtils->getNewTable(
"SELECT students.truename AS truename, classes.name AS class_name, checkin_time
FROM classes, students, checkin, syllabus
WHERE classes.id = students.class_id
AND students.id = checkin.student_id
AND checkin.having_class_id = syllabus.id
AND syllabus.course_time = '".$courseTime."'" );
return $res;
}
2.4 学生模块
学生使用该系统完成上课签到和晚间归寝签到工作。上课签到时,学生在手机微信小程序里打开该系统,系统调用微信提供的腾讯地图,通过教室GPS数据和学生所持手机GPS数据对比,在规定范围内,则可签到成功;若不在规定范围内,则系统提示不在签到范围内,不能完成签到工作。签到成功后,会记录签到学生姓名、学号、班级及签到具体时间。学生可以查询自己的历史签到信息,历史信息里记录了学生信息及签到课程和签到时间。学生还可以选择查询时间,来精确查询某时间段内的签到信息。晚间宿舍归寝签到被规定成一门课程,所以功能实现与上课签到相同。
2.4.1 流程分析
学生可以通过该系统完成进出校园公共场所登记、上课签到、晚间宿舍归寝签到,并可以查询统计自己的上课签到和晚间宿舍归寝签到信息及历史签到信息。学生模块系统流程图如图9所示。
图9 学生模块系统流程图
2.4.2 界面设计
学生签到是基于手机地理位置信息,在教室有效范围内才可以成功完成签到, 晚间宿舍归寝亦是同样情况。如果学生手机不在有效地理范围内和有效时间内,则不能完成签到任务。学生成功签到,如图10所示。
图10 学生成功签到界面
学生可以查询自己签到的历史信息,如图11所示。
图11 学生查询签到历史信息界面
2.4.3 关键函数实现
//签到函数
onTap:function(){
//获取当前手机的地理位置
wx.getLocation({
type: "wgs84",
success: function(res){
var latitude=res.latitude;
var longitude=res.longitude;
//上传签到数据
});
}
3 结论
基于微信小程序的校园公共场所访问登记系统,可以提供学生进出校园公共场所登记、上课签到、晚间宿舍归寝签到的功能,提供班主任和任课教师对学生上课签到、晚间宿舍归寝签到情况的实时查询及签到历史信息查询统计功能。该系统可以提高工作效率,降低错误率,学生和教师都无需考虑设备兼容问题,操作简单、方便实用。