批量检查乱坐座位系统设计
2024-01-09欧建荣
欧建荣
摘要:维持课堂秩序是保证教学正常进行、提高教学质量的关键,作者针对学生在信息技术课堂上乱坐座位的现象,提出了一种批量检查乱坐座位的思路——将学生所提交作业的文件名中的学号与学生所坐座位的计算机号(座位号)进行比较,如计算机号和学号不一致则为乱坐座位。结果表明,批量检查乱坐座位系统的准确率较高,它能在一定程度上帮助教师进行课堂教学管理。
关键词:批量检查;乱坐座位;课堂秩序
中图分类号:G434 文献标识码:A 论文编号:1674-2117(2024)01-0088-03
引言
相对于其他课程来说,信息技术课堂的秩序较乱,如有些学生乱坐座位等,这是因为在信息技术课堂上学生对每台计算机都比较好奇,同时,信息技术教师教授的班级很多,一般很难记住学生在机房的座位。学生在信息技术课堂上乱坐座位的现象对课堂教学造成了不良影响,因此笔者提出了一种借助学生提交的作业来自动批量检查学生是否乱坐座位的算法,具体步骤为:收集学生信息并导入SQLite数据库;获取学生所提交的作业文件,提取文件名中学生的学号,并与该生所坐座位的计算机号进行对比;显示乱坐座位的学生,进行语音播报,并自动生成记事本文件记录下来。
技术简介
1.SQLite简介
SQLite是一种轻量级关系型数据库管理系统,采用基于文件的数据存储方式,整个数据库被存储在磁盘文件中,因此易于备份、迁移和恢复。其具体特点如下。[1]
轻量级:SQLite的文件大小通常只有几百KB到几MB,适合资源受限环境。
无服务器:SQLite没有单独的服务器进程,应用程序直接访问SQLite数据库文件即可,简化了部署和维护。
ACID事务支持:SQLite支持标准的ACID(原子性、一致性、隔离性、持久性)事务,且具备多版本并发控制(MVCC)机制。
强类型:SQLite支持常见的SQL语法和数据类型,具备严格的类型检查和转换规则,避免了数据类型转换错误和隐式转换导致的问题。
可移植:SQLite的源代码是公开的,且可以在各种操作系统和编译器平台上编译运行。
高效性:SQLite使用B树和B+树等数据结构进行索引和查询,具备快速查询和索引的能力。
2.正则表达式简介
正则表达式是一种用来描述字符模式的语法,由一些特殊符号和普通字符组成的模式,可以用来匹配、查找、替换字符串中的特定文本。正则表达式广泛应用于文本编辑器、编程语言、数据库等领域。在文本编辑器中,可以使用正则表达式来查找和替换指定的文本;在编程语言中,可以使用正则表达式来进行表单验证、关键字匹配等;在数据库中,可以使用正则表达式来进行数据的搜索、过滤等操作。[2]
实验数据
笔者采用的实验数据为笔者所在学校八年级全年级学生的2565份Python程序作业文件,这些文件均为学生课堂上即时完成的作业。
实验过程
批量检查乱坐座位系统界面设计及检查结果如图1所示,首先选择检查座位的班级,接着选择作业文件格式,并通过“浏览”按钮选择作业所在目录,然后点击“开始检查”按钮,即可完成批量检查座位,检查的结果显示在中间文本框处,其主要信息内容为:学号+姓名+“坐了”+计算机号+“计算机”。除了能够检查出乱坐座位的学生,该系统还能够检查出缺勤学生的情况。另外,该系统还具备自动语音播报检查结果的功能,方便了教师和学生对乱坐座位情况的了解。
批量检查乱坐座位系统是在Qt Creator集成开发环境下开发实现的,实验中利用到Qt Creator的内部库texttospeech,实现语音播报功能。另外,实验中借助了非Qt Creator内部库,因此需要编译并加载第三方库QXlsx,将Excel表中的学生信息批量写入数据库中。
批量检查乱坐座位系统的主要过程如下:将学生信息通过编程批量导入SQLite数据库,接着利用红蜘蛛多媒体教学软件收集学生所提交的作业文件;提取作业文件名中的学号以及作业文件所存放的文件夹名中的计算机号,然后将学号与计算机号进行比较,从而得到乱坐座位的情况,并通过语音播报出来;自动生成乱坐座位记录并保存到记事本中。具体流程如图2所示。
1.录入学生信息
首先将全年级学生的信息汇总到Excel表格中,学生的信息包括学号和姓名,其中学号由两位数的班级和两位数的座位号组成,如11班1号,则学号为1101。然后,编写程序,将Excel表格中全部的学生信息导入,并保存到SQLite数据库中,如图3所示。
2.收集学生作业
首先,对计算机教室的计算机按顺序进行名称修改,如第一台计算机名称为“xs01”,第二台计算机名称为“xs02”,依此类推,其中的“xs”为“学生”拼音首字母,“01”和“02”为计算机号。学生根据自己的学号就座相应的计算机座位。课堂上学生通过红蜘蛛多媒体教学软件提交作业,然后红蜘蛛多媒体教学软件会为每位学生在教师机端自动生成一个文件夹以存放学生的作业,文件夹名命名为对应学生机的名称(如下页图4)。学生提交的作业文件统一以“班级+学号+姓名”的形式名命,如11班1号张三,则命名为“1101张三”。
3.获取学生作业
通过編写程序获取每位学生所提交的作业所在的文件夹的绝对路径。
4.检查乱坐座位
(1)算法设计
步骤1:提取绝对路径中的作业文件所在文件夹的名称(计算机名称),接着从名称中提取出计算机号(座位号)。
步骤2:获取绝对路径下的作业文件,提取作业文件的文件名中的学号和姓名,通过学号从数据库中查找是否有此人,如有则保存学号,并将该生标记为“出勤学生”。
步骤3:将步骤1中的计算机号和步骤2中的学号进行比较,如不相同,则为乱坐座位。
步骤4:以班级为单位从数据库中查找出该班所有的学生,“减去”标记为“出勤学生”的学生,从而得到“缺勤学生”的学生。
(2)具体实现
①通过系统界面所选择的班级匹配获取数据库中该班所有学生的学号和姓名。通过系统界面所选择的文件格式获取该格式后缀的作业文件以及作业文件所存放的文件夹的绝对路径。
②根据文件夹的绝对路径的特点,利用lastIndexOf("/")截取绝对路径中的文件夹名(计算机名称),并利用正则表达式"[^0-9]+"提取文件夹名中的计算机号(座位号)。另外,为尽量减少学生因疏忽而造成作业命名不规范的问题,先对文件名进行去除空格和特殊符号等预处理,接着利用正则表达式"[^0-9]+"和"[^\u4e00-\u9fa5]"分别提取文件名中的学生学号和姓名。由于学号是唯一的,因此利用学号与数据库中该班级的所有学生学号进行对比,以查找学生信息数据库中是否有此人,如有则保存学号,并将该生标记为“出勤学生”。
③判断座位号和学号是否相同,如不相同,则为乱坐座位,并记录下来。
④将该班学生“减去”标记为“出勤学生”的学生,从而得到“缺勤学生”的学生。
⑤待所有的作业文件均被检查完毕,将所有的乱坐座位记录显示以及语音播报,并将其一并记录到记事本文件中。
实验结果
批量检查乱坐座位系统能在短短几秒的时间内高效检查完全班学生是否存在乱坐座位的行为。在完成对2565份作业文件的检查后,准确率高达100%。
讨论
批量检查乱坐座位系统主要借助将作业文件名称与计算机名称进行比较,进而判断乱坐座位的情况,由于计算机名称是固定不变的,而作业文件名称是随学生的命名变化而变化的,因此作业文件命名是否正确对系统来说是一个很重要的因素。对于命名错误的作业文件,系统也采取了一系列的处理措施,如:
①作业文件命名中出现空格或特殊字符等的情况,如“1 101 张三”或“1101张三*”等,系统在检查文件前均对所有的文件名进行去掉空格和特殊字符处理。
②作业文件命名中出现学号和姓名互相掺杂的情况,如“11张01三”等,系统利用正则表达式"[^0-9]+"和"[^\u4e00-\u9fa5]"分别提取数字和中文,无论学号和姓名如何掺杂,被提取出来的学号均为“1101”、姓名均为“张三”。
③作业文件命名中出现学号正确但姓名错误的情况,系统利用学号去查找数据库中对应学号的姓名,从而得到正确的姓名。
以上命名錯误的情况,系统均可以自动处理,并不影响系统对座位的检查。但对于作业文件命名中学号出现错误,则该生会被处理为“缺勤学生”,也就是说该生已经来了,但仍被系统处理为“缺勤学生”。这种情况对系统来说是不可抗拒的人为因素。
结论
利用批量检查乱坐座位系统自动检查学生是否乱坐座位,大大节省了课堂上人工检查座位耗费的时间,加强了课堂管理,提高了教学质量。
参考文献:
[1]Bhosale S T,Patil T,Patil P. Sqlite:Light database system[J].Int.J.Comput. Sci.Mob.Comput,2015,44(04):882-885.
[2]徐安令.正则表达式的应用研究[J].数字技术与应用,2016(05):68.