林仙土
(台州科技职业学院 国有资产管理处, 浙江 台州 318020)
高校实验室是开展教学实践和科学研究的重要基地, 是全面实施综合素质教育, 培养学生动手能力和知识创新的必要场所。在“双一流”、 “双高”建设背景下, 高水平实验室更是学校发展建设不可或缺的重要组成部分。随着实验室的数量、 仪器设备的种类、 实验室的开放度和使用频率等方面大幅增加, 实验室的安全环境日趋复杂。近年来, 高校实验室安全形势十分严峻, 安全事故时有发生, 严重影响到高校正常的教学和科研工作。究其原因, 主要是实验人员的安全意识淡薄和学校对实验室安全的重视程度不够。传统的PC端实验室安全教育系统虽然对实验室安全教育起到一定的作用, 但仍存在以下不足[1-2]: 1) 基于PC屏幕显示的系统内容展示在移动终端的浏览器上, 用户体验感不佳; 2) 用户登录系统受时间和空间的限制, 无法使用碎片化时间进行学习。
探索适应新形势下实验室安全管理的对策, 是高校当前面临的一项紧迫任务。微信小程序作为新一代移动端应用平台, 相比传统App, 具有跨平台和“微、 小、 轻”的优势, 发展迅速, 逐步成为手机客户端应用的最佳选择之一[3-4]。笔者提出开发一套基于微信小程序的实验室安全教育考试系统, 充分利用微信社交平台和小程序出色的用户体验, 实现在移动端上完成实验室安全理论知识的培训和考试, 具有重要的理论意义和广阔的应用前景。
该系统包含微信小程序和服务器端程序2部分。微信小程序采用微信开发者工具和HBuilder开发, 基于微信平台底层支撑, 可跨平台运行在手机、 平板等移动设备上, 无需安装或卸载, 随时随地可用[5]。服务器端程序采用Python开发, 包括2部分: 1) 后台管理系统, 管理用户信息、 安全知识、 知识题库、 考试记录和咨询问答等数据, 并实现对后台数据进行编辑、 导入导出等功能; 2) 设计Web Service服务, 提供数据库访问的接口, 实现后台数据处理和移动端小程序的交互。系统结构如图1所示。
图1 系统结构示意图Fig.1 System structure diagram
实验室安全教育考试系统包括6个功能模块, 即用户登录、 知识学习、 在线练习、 在线考试、 咨询问答和错题复习。
1) 用户登录。师生使用微信通过扫码或搜索找到小程序, 在登录界面输入账号和密码, 老师的账号是教职工工号, 学生的账号是学号, 经后台系统验证正确后进入小程序主界面。
2) 知识学习。系统设计了图文阅读、 案例视频等多样式学习安全知识点, 同时对知识点按类别进行分类, 以便学生选择与本专业相关的知识内容学习。
3) 在线练习。该模块为学生提供相应专业知识的题库进行巩固学习, 通过做题加深对安全知识的掌握。练习模式设置为不限时间、 同专业题目顺序显示, 学生练习时边做题边校对答案。
4) 在线考试。系统可设定一次考试试卷包含的题型(判断、 单选、 多选)、 题数和分值, 每次考试时由系统随机从试题库中抽取对应专业的题目组成考试试卷。学生在设定时间内完成作答并提交, 系统显示考试成绩, 并将答题记录保存到后台数据库。
5) 咨询问答。为师生搭建沟通交流的桥梁, 系统可根据老师和学生角色分别设置提问和回答权限, 学生可以选择对应专业类别提交问题, 老师可在线针对问题作答, 有助于激发学生的学习热情。
6) 错题复习。该模块方便学生查看自己每次考试的详细记录, 针对做错的题目可以反复学习, 提高学习效率, 有助于更好地掌握实验室安全知识。
高校的实验室涵盖了多学科多专业的知识, 其安全教育和考核也不尽相同[6]。因此在建设系统内容和知识题库时, 要根据学校的自身实际情况进行分类。以目前国内高校常见的实验室安全教育内容为例[7-8], 学校实验室安全理论知识可分为9大类, 即通识类、 化学类、 医学生物类、 机械建筑类、 电子电气类、 辐射类、 特种设备、 消防和网络安全。其中, 通识类安全知识主要涉及实验室一般性伤害、 中毒、 用电安全等内容, 面向各个实验室安全管理。此外, 实验室安全应急救护和实验室废弃物处理知识贯穿到相应类别的实验室安全教育内容中。
微信小程序是腾讯公司推出的新形态轻量级应用, 嵌入到微信页面中, 基于微信开发者工具进行开发, 其开发语言和开发流程类似于Web开发。小程序框架分为视图层和逻辑层, 视图层用于渲染页面, 由视图层描述语言WXML(WeiXin Markup Language)和视图层样式WXSS(WeiXin Style Sheets)组成, 而逻辑层用于处理业务逻辑, 采用JavaScript语言设计[9-11]。小程序框架的核心是一个响应的数据绑定系统, 它让数据与视图非常简单地保持同步。小程序的后台程序采用当下非常流行的跨平台编程语言Python开发, 并选择Python Web框架中高安全性、 灵活便捷的Django, 其MTV(Model-Template-View)模式十分适合于应用程序的分层开发[12]。鉴于后台运行的安全稳定, 本系统设计使用腾讯云服务器, 并注册域名, 构建系统的物理环境。
该系统采用了微软公司提供的SQL Server 2017数据库存储数据, 该数据库具有强大的数据服务和分析功能, 并很好地支持Python数据分析和机器学习等功能。本系统数据库设计了多张表保存不同功能和不同用途的数据, 比如: 试题信息、 试题设置、 知识类别、 用户基本信息、 用户考试成绩、 用户权限、 咨询问答和安全知识等数据表, 这里仅以试题信息为例, 如表1所示。
表1 试题信息Tab.1 Examination information sheet
微信小程序访问远端数据库, 首先需在微信官方平台上设置服务器配置, 服务器域名必须是已认证备案的https域名, 设定好request、 socket、 uploadFile、 downloadFile和udp域名。该系统后台程序与数据库都部署在同一台腾讯云服务器上, 数据库连接配置如下。
DATABASES={‘PORT’: ‘1433’,default’: {‘OPTIONS’: {‘ENGINE’: ‘sql_server.pyodbc’,‘driver’: ‘ODBC Driver 17 for SQL Server’,‘NAME’: ‘exam’,‘MARS_Connection’: True,‘USER’: ‘exam’,},‘PASSWORD’: ‘123456’,},‘HOST’: ‘127.0.0.1’,}
图2 小程序首页 图3 安全知识页面Fig.2 Applet home page Fig.3 Safety knowledge
实验室安全教育考试小程序的首页界面如图2所示。顶部显示安全警示图片, 使用滑块视图容器swiper展示轮播效果。主体部分是6个模块的入口, 采用不同颜色进行渲染。底部导航条包含首页、 在线练习、 在线考试和个人中心4部分, 使用navigator组件实现页面跳转。知识页面采用侧边栏菜单显示实验室安全知识分类, 学生可以十分方便地进行选择学习, 如图3所示。
考试试题库可从后台管理导入或手动添加题目, 题库后台管理界面如图4所示。考试模块的实现过程如下。
1) 组卷。读取试卷组成设置文件, 并使用随机函数抽取相应规则的题目组成此次试卷的内容, 然后传送给前端微信小程序。
图4 题库管理后台Fig.4 Question bank background management
生成考卷信息的代码如下。
sign_list=ChoiceQuestion.objects.filter(course_id=cid,type_name=‘S’).values_list(“type_name”,“question”,
“choice”,“answer”)
sign_list=list(sign_list)
random.shuffle(sign_list)
sign_list=sign_list[:exam_config.sign_num]
multi_list=ChoiceQuestion.objects.filter(course_id=cid,type_name=‘M’).values_list(“type_name”,“question”,
“choice”,“answer”)
multi_list=list(multi_list)
random.shuffle(multi_list)
multi_list=multi_list[:exam_config.multi_num]
judge_list=ChoiceQuestion.objects.filter
(course_id=cid,type_name=‘P’).values_list(“type_name”,“question”,“choice”,“answer”)
judge_list=list(judge_list)
random.shuffle(judge_list)
judge_list=judge_list[:exam_config.judge_num]
choice_list=list(sign_list)+list(multi_list)+list(judge_list)
for item in choice_list:
temp={‘course_id’: course, ‘exame_id’: exame, ‘user_id’: user, ‘type_name’: item[0], ‘question’: item[1],
‘choice’: item[2], ‘answer’: item[3]}
res=ExameQuestion(**temp)
res.save()
图5 考试首页 图6 答题页面Fig.5 Exam homepage Fig.6 Answering page
2) 考试首页和做题界面设计如图5和图6所示。考试首页设计成图标平铺的样式, 考生可以选择相应类别的安全知识进入在线考试。做题界面设计为一道题一页面的样式, 顶部使用进度条显示题目顺序, 底部设置跳转和返回按钮, 使考生可以前后切换题目。
3) 试卷评分。当考生做完最后一题后, 点击提交按钮, 则后台程序会根据答对的题目数和分值计算最终的成绩, 并返回给微信小程序显示分数、 正确题数和错题数。
咨询模块界面采用一问一答的简洁样式, 页面设计包括问答信息列表页、 问答信息详情页、 提问页面和回答页面。该模块针对用户设置提问和回答两种权限, 提问和回答的信息对所有用户可见, 这样不仅为师生提供了交流途径, 而且有助于为老师掌握学生的学习情况提供参考。
登录界面设计简洁大方, 包含logo图标组件image、 用户名和密码输入框组件input和登录框button按钮。用户信息由管理员从后台导入, 用户不用注册账号, 直接使用师生账号和初始密码登录。同时, 系统对用户密码使用暗文显示, 提高了用户信息的安全性。
图7 个人中心页面 图8 错题回看页面Fig.7 Personal center page Fig.8 The page of wrong questions
在线练习功能界面类似于考试界面, 区别在于练习的试题是全库题目, 按照题目编号和知识类别顺序显示, 做完一道题即显示正确答案, 方便学生及时纠正错误。
错题回看模块是方便考生考完试后巩固复习, 系统后台数据库会记录每次考生的考试详情, 如考试成绩、 每道题的答题、 考试时间、 考试类别等。当考生从个人中心界面的考试记录中选择某一次的考试记录, 并进入错题回看时, 系统会从数据库里读取详情, 判断筛选出错题题目发送到前端小程序显示, 如图7和图8所示。
笔者设计了一种基于微信小程序的实验室安全教育考试系统, 为实验室安全管理工作开辟了新的理念, 弥补了传统实验室安全教育的不足, 实现在线理论学习、 练习、 考试和咨询问答等功能, 便于学生在进入实验室之前先通过微信小程序进行必要的安全理论知识学习, 再通过考试后方可安排上机实验, 从而进一步增强学生的实验室安全意识。该系统充分发挥移动互联网的便捷高效, 操作简单方便, 使学生学习不受时间和空间的限制, 为实验室安全教育工作提供了一种高效灵活的工具, 极大地提高高校实验室安全管理的工作效率, 实现安全教育的动态管理, 可以有效降低实验过程中人为因素的安全隐患, 应用前景广阔。