高校课堂微信扫码签到平台客户端设计研究
Research on the Client Design of WeChat Scan Code Sign-In Platform in College Classroom
DOI: 10.12677/CSA.2020.1010183, PDF, HTML, XML, 下载: 721  浏览: 1,976  科研立项经费支持
作者: 刘建芳, 马 丽*, 张秋华:平顶山学院计算机学院,河南 平顶山
关键词: SSM高校课堂微信时效二维码扫码签到统计SSM College Classroom WeChat Time-Sensitive QR Code Scan Code Sign in Statistics
摘要: 针对目前高校课堂考勤存在的问题,基于微信平台和JavaEE,采用移动设备作为签到终端,设计课堂扫码签到平台。该平台基于B/S模式,采用SSM五层架构,设计签到平台架构、服务器端和客户端软件结构、数据以及关键问题解决方案。重点研究客户端微信公众平台对接、时效二维码生成、扫码、随机抽查、统计等关键模块的业务流程、类与接口以及功能的设计,实现了高校课堂实时考勤、统计、查看等功能。经应用测试,该平台考勤便捷、时效、高效,较大程度杜绝了代签、伪签,同时解决了其他课堂考勤软件存在的购买硬件设备、操作系统兼容、占用手机空间、开发时间长、维护成本高等问题,具有一定的推广价值。
Abstract: Aiming at the current problems of college classroom attendance, based on the WeChat platform and JavaEE, mobile devices are used as sign-in terminals to design a classroom scan code sign-in platform. The platform is based on the B/S model and adopts the SSM five-tier architecture to design the sign-in platform architecture, server-side and client-side software structure, data, and key problem solutions. The focus is on the design of business processes, classes and interfaces and functions of key modules such as client WeChat public platform docking, time-effective QR code generation, code scanning, random check, statistics, etc., to achieve real-time attendance, statistics, and viewing functions in college classrooms. After application testing, the platform is convenient, time-efficient, and efficient attendance, which largely eliminates agent signing and counterfeiting, and at the same time solves problems in other classroom attendance softwares that exist in pur-chasing hardware equipment, operating system compatibility, occupying mobile phone space, development time and long and high maintenance costs, which has certain promotion value.
文章引用:刘建芳, 马丽, 张秋华. 高校课堂微信扫码签到平台客户端设计研究[J]. 计算机科学与应用, 2020, 10(10): 1728-1738. https://doi.org/10.12677/CSA.2020.1010183

1. 引言

学风是一所大学的灵魂,学生课堂考勤工作是高校学风建设的根本。有效的课堂考勤,是保证高校教学秩序正常运行和各项集体活动顺利开展的重要手段。目前高校课堂考勤主要有:人工花名册点名、刷脸、刷卡、移动端App课堂等方式 [1] [2] [3] [4]。人工点名考勤依然是高校课堂使用频率最高的方式,但占用课堂时间,且期末统计工作量较大;刷卡、刷脸考勤需投入大量的资金购买和维护软硬件设备且费时 [5] [6] [7];移动签到APP相比上述方式,签到、统计便捷,使教学管理更加科学和有效。但目前的移动签到APP,存在下载安装软件占用手机空间、操作系统兼容和开发、更新成本高等问题 [8] [9]。而微信是一款应用广泛的聊天软件,基于微信考勤,能较大程度避开上述考勤方式的弊端和不足。目前基于微信的签到软件多应用于举办活动,个别基于微信的课堂签到软件存在不能实时考勤、签到种类繁多、课堂签到操作繁琐等问题 [10] [11] [12] [13] [14]。鉴于此,开发课堂微信扫码签到平台,优化高校考勤管理,提升课堂签到效率,提高教学质量。

2. 扫码签到平台功能需求分析

课堂微信扫码签到平台主要包括角色选择、微信授权、扫码签到、生成二维码、签到统计、随机抽查签到、管理员管理等业务。该平台分客户端(即微信移动端)和服务器端。

移动端功能需求简要说明如下。

1) 微信公众平台对接。用户搜索微信公众号或扫码关注,成功后自动获取用户微信信息登录。

2) 身份选择。用户授权登录平台后,需先确认身份:教师或学生。

3) 个人信息设置。查看、设置个人信息。

4) 扫一扫签到。调用微信扫一扫,实现扫码签到。指定时间内不能重复签到。

5) 查看教学任务。教师登录后,可查看自己教学任务的详细信息。包含所教院系、班级、课程、课时、上课时间、地点等教学安排信息。

6) 统计缺勤情况。教师可在平台查看本节课程学生出勤及统计汇总情况。

7) 查看我的签到记录。学生可在平台直接查询本节签到信息。

8) 生成签到二维码。教师绑定个人信息后,选择上课信息和教师信息生成随机时效二维码,时效内不能重复签到,超时将不能签到。

9) 签到统计。教师可查看每节、每天、每周、每学期课程签到情况。

10) 随机抽查。教师可按姓名当堂随机抽查学生签到并做相应处理。

服务器端功能主要是管理员对班级、课程、院系、用户、教学任务、签到等详细信息进行增、删、改、查、停用或启用等管理。并以报表形式统计每班、每学期每月每周签到情况。

3. 校园微信扫码签到平台设计

该签到平台开发基于JavaEE,采用MVC模式,使用SSM框架处理业务、数据交互等,数据存取采用MySQL,界面设计采用MUI框架和Layer插件,使用JavaScript、JQurey和Ajax实现前后台交互。

3.1. 校园签到平台架构设计

该平台采用SSM框架五层架构:数据层(Model层)、持久层(Dao层)、业务层(Service层)、控制器层(Controller层)和视图层(View层)。Model层映射数据表;Dao层用来处理数据,负责与数据库的交互;Service层主要调用接口层的公共方法;Controller层主要调用服务层的接口来控制业务流程。平台架构图如图1所示。该平台基于微信公众号开发,用户通过自定义的安全域名,绑定微信授权地址和回调地址请求微信服务器端,微信端验证成功后发送响应信息给用户。

Figure 1. Platform architecture of Scanning code check-in

图1. 扫码签到平台架构

3.2. 校园签到平台软件结构设计

根据上节平台的功能需求分析,该平台分移动端和服务器端,根据“高内聚、低耦合”原则,设计为基础、学生、教师、管理员等模块。该本平台客户端、服务器端软件结构设计分别见图2~3。

Figure 2. Software structure of client

图2. 客户端软件结构

Figure 3. Software architecture of server

图3. 服务器端软件结构

3.3. 数据设计

依据平台的需求,该平台主要包括用户、管理员、学生、教师、课程、班级、教室、二维码、院系和教学任务等实体。

用户实体属性:用户ID、openId、昵称、用户头像、普通用户类型、用户生成时间、用户更新时间等;管理员实体属性:管理员ID、登录名、登录密码、生成时间、更新时间;学生实体属性:学生ID、用户Id、班级Id、学生名、学号、年级、院系、生成时间、更新时间等;班级实体属性:班级ID、班级名称、班级生成时间、班级更新时间等;院系实体属性:院系Id、班院系名称、生成时间和更新时间等;教师实体属性:教师ID、用户Id、教师姓名、教师年龄、电话、邮箱、生成时间、更新时间等;课程实体属性:课程ID、课程名、课时、状态、生成时间、更新时间等;教室实体属性:教室ID、教室名称、教室地点、状态、生成时间、更新时间等;签到二维码实体属性:教师Id、学生Id、课程Id、班级Id、教学安排Id和生成时间等;教学任务实体属性:教学任务Id、班级Id、课程Id、教室Id、用户Id、生成时间和更新时间等。

根据平台需求,上述实体间的联系见图4

Figure 4. E-R diagram of the system

图4. 系统E-R图

签到平台使用MySQL数据库存储数据,依据上面分析,在数据库中设计user (用户表)、admin (管理员表)、student (学生表)、teacher (教师表)、class (班级表)、croom (教室表)、course (课程表),arrange (教学安排表),sign (签到表)等表。

3.4. 关键问题设计方案

本节将描述身份精确定位、自动获取周次和生成具有时效性的二维码等问题的设计思路。

1) 身份精确定位设计方案

用户首次进入平台个人中心需先确定身份,以便再次进入该平台时可以自动获取用户信息。用户授权登录成功,选择身份后,平台将该身份数据传入服务器端。服务器端分析传入的身份数据1或0,进而确定身份信息,分析成功后入库。用户身份选择成功后,进入个人中心时,平台根据已录入的身份类型进行分析,自动进入到对应的个人中心页面。若用户再次进入个人中心,身份已确定。当用户处于签到公众号平台时,移动端可自动获取用户微信信息。

2) 自动获取周次设计方案

教师可在微信端查看任意周次签到记录。教师按授课时间选择周次,平台首先获取到事先录入到平台的开学时间,然后再调用日期接口获取当前时间戳,二者相减,得到时间差。将相减的结果向上取整后对7整除,动态获取本周及以前的周次(不会获取到超过本周的周次),并在一级选择器中自动显示。

3) 生成具有时效性的二维码设计方案

生成教师拥有的时效性二维码,以便学生扫码签到。教师选择所教院系、班级、本节课程、地点等信息生成实时的签到二维码,同时记录二维码生成时间。平台获取当前时间戳和生成二维码时间戳,二者相减,差值进行时间换算后,对1小时整除,得到有效的分钟数(比如10分钟)。二维码的时效性为5分钟,学生需在5分钟内扫码签到,否则,二维码无效,不能再进行签到。

4) 随机抽查设计方案

教师随机抽取课堂学生签到情况,核实学生是否代签,避免统计失误。平台根据教师、上课班级、课程名、地点等信息,调用随机函数随机显示学生姓名。教师点击停止菜单,口头核实界面显示学生签到信息,若有误,则会记为旷课并入库。

3.5. 客户端关键模块设计

客户端包括基础模块、普通用户模块。基础模块为用户共有操作,该模块设置微信公众平台对接、身份选择、个人信息设置三个子模块;普通用户模块包括教师和学生子模块。限于篇幅,本节只描述客户端关键模块的设计。

3.5.1. 微信公众平台对接模块的设计

对接模块连接平台与微信端,包括微信授权、身份选择和信息审核等功能。微信授权即基于微信公众平台获取用户基本信息。用户扫码关注公众号后,自动进入微信用户授权界面,待用户同意且选择身份后,平台自动获取保存该用户的微信信息。微信授权登录流程设计如图5所示。

Figure 5. WeChat authorization process

图5. 微信授权流程

1、类与接口设计

主要用到的类和接口有实体类User、接口类UserDao、用户业务逻辑类、用户信息控制类。

1) 微信对接控制类(UserController):获取保存已关注公众号的微信用户信息;

2) 微信对接Service类(UserService):处理微信对接的相关业务逻辑并调用UserDao层的方法;

3) 微信对接Dao类(UserDao):负责数据库中微信用户信息的操作。

其他模块的Service类、Dao类功能与此模块类似,后面不再描述,只描述控制类的设计。

2、微信授权功能设计

1) 用户关注公众号进入微信授权页,平台返回授权地址,用户确认授权登录后,数据传到服务端请求UseController类。在控制层中调用UseService中的getCode()方法,此方法调用接口UseDao中的getCode()方法,平台根据该用户的appId和secret获取授权码code。平台根据获取的授权code请求UseController。在控制层中调用UsrService中的getToken(String code)方法,调用接口UsrDao中的getToken(String code)方法,获得授权登录token。

2) 通过上步骤获得的token请求UsrController,调用UseService类中的getUserInfo(String token)方法,此方法调用接口UsrDao类中的getUserInfo(String token)方法得到用户微信信息。

3) UseController控制类调用UserDao接口类中的insertUsers(Users us)方法自动保存用户信息。

具体设计过程如图6所示。其他模块功能设计过程交互类似,不再图示。

Figure 6. WeChat authorization design

图6. 微信授权设计

3.5.2. 课堂考勤子模块的设计

该模块包含生成签到二维码和分配教学任务功能。教师进入个人中心,跳转到生成二维码界面,手动选择上课班级、地点和课程,平台依据选择信息生成具有时效性的二维码。生成签到二维码的流程设计如图7所示。

1) 类与接口设计

该模块设计的实体类主要有课程course、班级class、教师teacher和二维码code;接口类有教师接口类TeacherDao、教学安排实体类ArrangeDao类;业务处理类有TeacherServiceImpl和CodeServiceImpl;控制类有TeacherController类和CodeController类。课堂考勤的控制类(CodeController):生成签到二维码并调用CodeService中的方法。该类中定义findTeacherByUserId()方法获取教师信息;findTask()方法查询教师的教学任务信息;GetCode()方法根据课程Id、班级Id、教师Id、教学安排Id等生成签到二维码。

Figure 7. Process of generating check-in QR code

图7. 生成签到二维码流程

课程实体类(Course):数据库表结构对应的实体类,封装课程自增Id、课程名称(name)、课时(courseCount)、状态(status)、加入时间(createTime)、更新时间(createTime)等其属性。

2) 生成签到二维码设计

教师进入个人中心,选择生成课堂签到二维码,数据传到服务端请求TechersController。在控制类中调用TechersService类中的findTeacherByUserId()方法,此方法中调用TechersDao类中的findTeacherByUserId()方法,获取教师用户信息。

教师选择课程,数据传到服务端请求TecherController类。在控制层中调用TecherService类中的findTask()方法,此方法中调用接TecherDao类中的findTask()方法,显示课程相关数据以及课程对应的班级和教室地点,点击确定菜单生成具有时效性的签到二维码。

3.5.3. 扫码签到子模块的设计

学生在课堂扫描带有时效性的二维码签到,包括微信扫一扫签到和查看签到记录功能。学生进入个人中心,完善信息后扫描签到二维码,扫码成功后保存本次签到信息。扫码签到流程设计见图8

1) 类与接口设计

该模块设计的类与接口有签到实体类Sign、接口类SignDao、业务类SignServiceImpl和控制类SignController。扫码签到控制类(SignController):扫码签到,并调用SignService中的方法。该类定义Scan()方法,调用微信扫一扫接口;定义SignAndAdd()方法,获取学生扫码签到信息,并分析入库;定义的findAllMySign()方法查询学生签到记录。扫码签到实体类(Sign):数据库表结构对应的实体类,封装教室关联Id(croomId)、班级关联Id(classId)、学生关联Id(userStuId)、教师关联Id(userTeachId)、课程关联Id(courseId)、教学安排关联Id(arrangeId)、签到时间(signtime)、加入时间(createTime)、更新时间(updateTime)等属性。

Figure 8. Scan code sign-in process

图8. 扫码签到流程

2) 扫码签到功能设计

学生进入个人中心,选择扫一扫签到选择。数据传到服务端请求StudentController。在控制类中调用StudentService中的scan()方法,该方法中调用StudentDao中的scan()方法,系统调用微信扫一扫接口扫描签到二维码。扫码成功后,系统提示签到成功。签到成功后,数据传到服务端请求StudentController。在控制类中调用StudentService中的signAndAdd(Sign sign)方法,此方法调用接StudentDao中的signAndAdd(Sign sign)方法,学生签到后自动保存信息。学生点击签到记录,请求数据传到服务端请求StudentController。在控制类中调用StudentService中的findAllMySign()方法,该方法调用接StudentDao中的findAllMySign()方法,查看签到记录。

Figure 9. Random inspection process

图9. 随机抽查流程

3.5.4. 随机抽查子模块的设计

教师随机抽查核实班级学生签到。教师进入平台,选择随机抽查后,随机显示学生姓名,当停止抽查时教师可看到该学生签到情况。随机抽查流程设计见图9

1) 类与接口设计

该模块涉及Student类、Teacher类和Sign类。随机抽查控制类(SignController):统计签到记录,并调用SignService中的方法。SignService类中findAllStudents()方法查看本班所有的学生信息;findRandom()方法随机核实学生签到信息;findTeacherByUserId()方法查看教师信息。

2) 随机抽查功能设计

教师选择随机抽查,选择班级,数据信息传到服务端请求StudetController类。在控制类中调用StudetService类中的findAllStudents()方法,该方法调用接StudetDao类中的findAllStudents()方法,随机显示该班所有学生信息。教师随机选择停止,将选择学生数据传到服务端请求StudetController。在控制类中调用StudetService中的findSignByRandom()方法,该方法中调用StudetDao类中的findSignByRandom()方法,显示该学生签到情况。教师通过口头喊到方式对抽查到的学生进行核实,并记录是否旷课。

3.5.5. 统计签到子模块的设计

教师进入个人中心,可查看本节课、每日、周、学期签到统计和缺勤统计等。

1) 类与接口设计

该模块设计了Sign类、Student类和Teacher类等实体类。设计了页面请求类SignController,在Service层设计SignServiceImpl类处理统计签到信息,数据查询设计SignDao接口类。SignServiceImpl类依赖SignDao接口类进行业务逻辑处理。统计签到控制类(SignController):定义findCurrent()方法,查看本节课签到记录;findDaySign()方法查看日签到信息;findTermSign()方法用查看学期签到记录;findAbsent()方法查看本节课缺勤学生信息;findWeekSign()方法查看周签到信息;findClasses()方法查看班级列表。

2) 统计签到功能的设计

教师依据不同的签到统计,选择不同的参数,将数据传到服务端请求SignController。在控制类中调用SignService中的不同方法(findCurrent()、findDaySign()、findTermSign()、findAbsent())方法,该方法调用SignDao中的对应方法,平台根据教师Id、课程Id、开始和结束时间等查询并分别显示、日签到、周签到、学期签到、本节未签到等统计信息。

4. 结束语

校园扫码签到平台采用MVC模式,使用SSM框架开发。服务器端实现管理班级、课程、用户、安排教学任务等功能;移动端绑定师、生信息,实现扫码签到、签到统计、随机抽查等功能。经应用测试,该平台能够满足高校课堂考勤需求。和目前已有相似的系统或平台相比,该扫码签到平台通过制定相应信息编辑规则、时效二维码以及第三方微信平台登录等手段,较大程度避免了代签问题;使用Ajax异步访问,提高了扫码签到的效率;使用微信对接和扫一扫,无须再购买硬件和下载软件,只需关注微信公众号扫码签到,提高签到平台的开发、维护效率和课堂签到、统计的时效性和便捷性;使用Layui技术和全局异常处理机制,提升用户体验。后续将定位引入平台,并将平台融合学生课堂表现,增加预警机制。该平台基于微信公众号,使用便捷、可靠,是未来高校考勤的主要手段之一,值得期待。

基金项目

河南省科技厅科技发展计划科技攻关项目(立项编号:172102210428)。

参考文献

[1] 曹光辉. 基于人脸识别技术的考勤签到系统[J]. 电脑知识与技术, 2020, 16(10): 181-182.
[2] 李文月. 基于智慧课室的无感知签到系统设计[J]. 信息通信, 2020(3): 114-116+118.
[3] 赵从健, 雷菊阳, 李明明. 基于无监督学习的语音签到系统[J]. 软件, 2019, 40(12): 183-187.
[4] 王青青, 周国祥, 戎皓, 石雷, 张翠翠. 基于互差跳跃算法的签到系统研究与实现[J]. 合肥工业大学学报(自然科学版), 2019, 42(7): 912-917.
[5] 范哲瑞. 智能人脸识别会议签到系统的设计与实现[D]: [硕士学位论文]. 西安: 西安电子科技大学, 2019.
[6] 牛亚运, 仲梁维. 融合人脸识别与数据分析的智能签到系统设计[J]. 软件导刊, 2019, 18(11): 30-35.
[7] 石玲玲. AES加密的WiFi安全智能签到系统的设计与实现[J]. 安徽理工大学学报(自然科学版), 2019, 39(4): 56-59.
[8] 徐崧胜. 基于Android平台的学生签到系统设计和实现[J]. 电子技术与软件工程, 2020(2): 42-43.
[9] 罗丹. 基于微信小程序的大学选修课考勤签到系统设计与开发[J]. 电子制作, 2020(1): 71-72.
[10] 戴瑞婷, 莫李思, 黄祉衡. 一种基于扫码认证和人脸识别的签到系统设计与实现[J]. 通信技术, 2019, 52(7): 1773-1779.
[11] 李敏, 陆莎, 常旺, 李晨波. 基于手机平台的快速学校签到系统的研究与设计[J]. 数字通信世界, 2020(7): 123-125.
[12] 陈韶钰. 基于微信小程序的课堂考勤系统[J]. 内蒙古科技与经济, 2020(9): 59-60.
[13] 王龙. 基于二维码的课堂签到管理系统设计与实现[J]. 软件工程, 2019, 22(6): 13-16.
[14] 包蕾. 基于二维码的代签规避系统设计及研究[D]: [硕士学位论文]. 兰州: 兰州大学, 2018.