歐建榮
摘要:維持課堂秩序是保證教學(xué)正常進(jìn)行、提高教學(xué)質(zhì)量的關(guān)鍵,作者針對(duì)學(xué)生在信息技術(shù)課堂上亂坐座位的現(xiàn)象,提出了一種批量檢查亂坐座位的思路——將學(xué)生所提交作業(yè)的文件名中的學(xué)號(hào)與學(xué)生所坐座位的計(jì)算機(jī)號(hào)(座位號(hào))進(jìn)行比較,如計(jì)算機(jī)號(hào)和學(xué)號(hào)不一致則為亂坐座位。結(jié)果表明,批量檢查亂坐座位系統(tǒng)的準(zhǔn)確率較高,它能在一定程度上幫助教師進(jìn)行課堂教學(xué)管理。
關(guān)鍵詞:批量檢查;亂坐座位;課堂秩序
中圖分類號(hào):G434? 文獻(xiàn)標(biāo)識(shí)碼:A? 論文編號(hào):1674-2117(2024)01-0088-03
引言
相對(duì)于其他課程來說,信息技術(shù)課堂的秩序較亂,如有些學(xué)生亂坐座位等,這是因?yàn)樵谛畔⒓夹g(shù)課堂上學(xué)生對(duì)每臺(tái)計(jì)算機(jī)都比較好奇,同時(shí),信息技術(shù)教師教授的班級(jí)很多,一般很難記住學(xué)生在機(jī)房的座位。學(xué)生在信息技術(shù)課堂上亂坐座位的現(xiàn)象對(duì)課堂教學(xué)造成了不良影響,因此筆者提出了一種借助學(xué)生提交的作業(yè)來自動(dòng)批量檢查學(xué)生是否亂坐座位的算法,具體步驟為:收集學(xué)生信息并導(dǎo)入SQLite數(shù)據(jù)庫;獲取學(xué)生所提交的作業(yè)文件,提取文件名中學(xué)生的學(xué)號(hào),并與該生所坐座位的計(jì)算機(jī)號(hào)進(jìn)行對(duì)比;顯示亂坐座位的學(xué)生,進(jìn)行語音播報(bào),并自動(dòng)生成記事本文件記錄下來。
技術(shù)簡介
1.SQLite簡介
SQLite是一種輕量級(jí)關(guān)系型數(shù)據(jù)庫管理系統(tǒng),采用基于文件的數(shù)據(jù)存儲(chǔ)方式,整個(gè)數(shù)據(jù)庫被存儲(chǔ)在磁盤文件中,因此易于備份、遷移和恢復(fù)。其具體特點(diǎn)如下。[1]
輕量級(jí):SQLite的文件大小通常只有幾百KB到幾MB,適合資源受限環(huán)境。
無服務(wù)器:SQLite沒有單獨(dú)的服務(wù)器進(jìn)程,應(yīng)用程序直接訪問SQLite數(shù)據(jù)庫文件即可,簡化了部署和維護(hù)。
ACID事務(wù)支持:SQLite支持標(biāo)準(zhǔn)的ACID(原子性、一致性、隔離性、持久性)事務(wù),且具備多版本并發(fā)控制(MVCC)機(jī)制。
強(qiáng)類型:SQLite支持常見的SQL語法和數(shù)據(jù)類型,具備嚴(yán)格的類型檢查和轉(zhuǎn)換規(guī)則,避免了數(shù)據(jù)類型轉(zhuǎn)換錯(cuò)誤和隱式轉(zhuǎn)換導(dǎo)致的問題。
可移植:SQLite的源代碼是公開的,且可以在各種操作系統(tǒng)和編譯器平臺(tái)上編譯運(yùn)行。
高效性:SQLite使用B樹和B+樹等數(shù)據(jù)結(jié)構(gòu)進(jìn)行索引和查詢,具備快速查詢和索引的能力。
2.正則表達(dá)式簡介
正則表達(dá)式是一種用來描述字符模式的語法,由一些特殊符號(hào)和普通字符組成的模式,可以用來匹配、查找、替換字符串中的特定文本。正則表達(dá)式廣泛應(yīng)用于文本編輯器、編程語言、數(shù)據(jù)庫等領(lǐng)域。在文本編輯器中,可以使用正則表達(dá)式來查找和替換指定的文本;在編程語言中,可以使用正則表達(dá)式來進(jìn)行表單驗(yàn)證、關(guān)鍵字匹配等;在數(shù)據(jù)庫中,可以使用正則表達(dá)式來進(jìn)行數(shù)據(jù)的搜索、過濾等操作。[2]
實(shí)驗(yàn)數(shù)據(jù)
筆者采用的實(shí)驗(yàn)數(shù)據(jù)為筆者所在學(xué)校八年級(jí)全年級(jí)學(xué)生的2565份Python程序作業(yè)文件,這些文件均為學(xué)生課堂上即時(shí)完成的作業(yè)。
實(shí)驗(yàn)過程
批量檢查亂坐座位系統(tǒng)界面設(shè)計(jì)及檢查結(jié)果如圖1所示,首先選擇檢查座位的班級(jí),接著選擇作業(yè)文件格式,并通過“瀏覽”按鈕選擇作業(yè)所在目錄,然后點(diǎn)擊“開始檢查”按鈕,即可完成批量檢查座位,檢查的結(jié)果顯示在中間文本框處,其主要信息內(nèi)容為:學(xué)號(hào)+姓名+“坐了”+計(jì)算機(jī)號(hào)+“計(jì)算機(jī)”。除了能夠檢查出亂坐座位的學(xué)生,該系統(tǒng)還能夠檢查出缺勤學(xué)生的情況。另外,該系統(tǒng)還具備自動(dòng)語音播報(bào)檢查結(jié)果的功能,方便了教師和學(xué)生對(duì)亂坐座位情況的了解。
批量檢查亂坐座位系統(tǒng)是在Qt Creator集成開發(fā)環(huán)境下開發(fā)實(shí)現(xiàn)的,實(shí)驗(yàn)中利用到Qt Creator的內(nèi)部庫texttospeech,實(shí)現(xiàn)語音播報(bào)功能。另外,實(shí)驗(yàn)中借助了非Qt Creator內(nèi)部庫,因此需要編譯并加載第三方庫QXlsx,將Excel表中的學(xué)生信息批量寫入數(shù)據(jù)庫中。
批量檢查亂坐座位系統(tǒng)的主要過程如下:將學(xué)生信息通過編程批量導(dǎo)入SQLite數(shù)據(jù)庫,接著利用紅蜘蛛多媒體教學(xué)軟件收集學(xué)生所提交的作業(yè)文件;提取作業(yè)文件名中的學(xué)號(hào)以及作業(yè)文件所存放的文件夾名中的計(jì)算機(jī)號(hào),然后將學(xué)號(hào)與計(jì)算機(jī)號(hào)進(jìn)行比較,從而得到亂坐座位的情況,并通過語音播報(bào)出來;自動(dòng)生成亂坐座位記錄并保存到記事本中。具體流程如圖2所示。
1.錄入學(xué)生信息
首先將全年級(jí)學(xué)生的信息匯總到Excel表格中,學(xué)生的信息包括學(xué)號(hào)和姓名,其中學(xué)號(hào)由兩位數(shù)的班級(jí)和兩位數(shù)的座位號(hào)組成,如11班1號(hào),則學(xué)號(hào)為1101。然后,編寫程序,將Excel表格中全部的學(xué)生信息導(dǎo)入,并保存到SQLite數(shù)據(jù)庫中,如圖3所示。
2.收集學(xué)生作業(yè)
首先,對(duì)計(jì)算機(jī)教室的計(jì)算機(jī)按順序進(jìn)行名稱修改,如第一臺(tái)計(jì)算機(jī)名稱為“xs01”,第二臺(tái)計(jì)算機(jī)名稱為“xs02”,依此類推,其中的“xs”為“學(xué)生”拼音首字母,“01”和“02”為計(jì)算機(jī)號(hào)。學(xué)生根據(jù)自己的學(xué)號(hào)就座相應(yīng)的計(jì)算機(jī)座位。課堂上學(xué)生通過紅蜘蛛多媒體教學(xué)軟件提交作業(yè),然后紅蜘蛛多媒體教學(xué)軟件會(huì)為每位學(xué)生在教師機(jī)端自動(dòng)生成一個(gè)文件夾以存放學(xué)生的作業(yè),文件夾名命名為對(duì)應(yīng)學(xué)生機(jī)的名稱(如下頁圖4)。學(xué)生提交的作業(yè)文件統(tǒng)一以“班級(jí)+學(xué)號(hào)+姓名”的形式名命,如11班1號(hào)張三,則命名為“1101張三”。
3.獲取學(xué)生作業(yè)
通過編寫程序獲取每位學(xué)生所提交的作業(yè)所在的文件夾的絕對(duì)路徑。
4.檢查亂坐座位
(1)算法設(shè)計(jì)
步驟1:提取絕對(duì)路徑中的作業(yè)文件所在文件夾的名稱(計(jì)算機(jī)名稱),接著從名稱中提取出計(jì)算機(jī)號(hào)(座位號(hào))。
步驟2:獲取絕對(duì)路徑下的作業(yè)文件,提取作業(yè)文件的文件名中的學(xué)號(hào)和姓名,通過學(xué)號(hào)從數(shù)據(jù)庫中查找是否有此人,如有則保存學(xué)號(hào),并將該生標(biāo)記為“出勤學(xué)生”。
步驟3:將步驟1中的計(jì)算機(jī)號(hào)和步驟2中的學(xué)號(hào)進(jìn)行比較,如不相同,則為亂坐座位。
步驟4:以班級(jí)為單位從數(shù)據(jù)庫中查找出該班所有的學(xué)生,“減去”標(biāo)記為“出勤學(xué)生”的學(xué)生,從而得到“缺勤學(xué)生”的學(xué)生。
(2)具體實(shí)現(xiàn)
①通過系統(tǒng)界面所選擇的班級(jí)匹配獲取數(shù)據(jù)庫中該班所有學(xué)生的學(xué)號(hào)和姓名。通過系統(tǒng)界面所選擇的文件格式獲取該格式后綴的作業(yè)文件以及作業(yè)文件所存放的文件夾的絕對(duì)路徑。
②根據(jù)文件夾的絕對(duì)路徑的特點(diǎn),利用lastIndexOf("/")截取絕對(duì)路徑中的文件夾名(計(jì)算機(jī)名稱),并利用正則表達(dá)式"[^0-9]+"提取文件夾名中的計(jì)算機(jī)號(hào)(座位號(hào))。另外,為盡量減少學(xué)生因疏忽而造成作業(yè)命名不規(guī)范的問題,先對(duì)文件名進(jìn)行去除空格和特殊符號(hào)等預(yù)處理,接著利用正則表達(dá)式"[^0-9]+"和"[^\u4e00-\u9fa5]"分別提取文件名中的學(xué)生學(xué)號(hào)和姓名。由于學(xué)號(hào)是唯一的,因此利用學(xué)號(hào)與數(shù)據(jù)庫中該班級(jí)的所有學(xué)生學(xué)號(hào)進(jìn)行對(duì)比,以查找學(xué)生信息數(shù)據(jù)庫中是否有此人,如有則保存學(xué)號(hào),并將該生標(biāo)記為“出勤學(xué)生”。
③判斷座位號(hào)和學(xué)號(hào)是否相同,如不相同,則為亂坐座位,并記錄下來。
④將該班學(xué)生“減去”標(biāo)記為“出勤學(xué)生”的學(xué)生,從而得到“缺勤學(xué)生”的學(xué)生。
⑤待所有的作業(yè)文件均被檢查完畢,將所有的亂坐座位記錄顯示以及語音播報(bào),并將其一并記錄到記事本文件中。
實(shí)驗(yàn)結(jié)果
批量檢查亂坐座位系統(tǒng)能在短短幾秒的時(shí)間內(nèi)高效檢查完全班學(xué)生是否存在亂坐座位的行為。在完成對(duì)2565份作業(yè)文件的檢查后,準(zhǔn)確率高達(dá)100%。
討論
批量檢查亂坐座位系統(tǒng)主要借助將作業(yè)文件名稱與計(jì)算機(jī)名稱進(jìn)行比較,進(jìn)而判斷亂坐座位的情況,由于計(jì)算機(jī)名稱是固定不變的,而作業(yè)文件名稱是隨學(xué)生的命名變化而變化的,因此作業(yè)文件命名是否正確對(duì)系統(tǒng)來說是一個(gè)很重要的因素。對(duì)于命名錯(cuò)誤的作業(yè)文件,系統(tǒng)也采取了一系列的處理措施,如:
①作業(yè)文件命名中出現(xiàn)空格或特殊字符等的情況,如“1 101 張三”或“1101張三*”等,系統(tǒng)在檢查文件前均對(duì)所有的文件名進(jìn)行去掉空格和特殊字符處理。
②作業(yè)文件命名中出現(xiàn)學(xué)號(hào)和姓名互相摻雜的情況,如“11張01三”等,系統(tǒng)利用正則表達(dá)式"[^0-9]+"和"[^\u4e00-\u9fa5]"分別提取數(shù)字和中文,無論學(xué)號(hào)和姓名如何摻雜,被提取出來的學(xué)號(hào)均為“1101”、姓名均為“張三”。
③作業(yè)文件命名中出現(xiàn)學(xué)號(hào)正確但姓名錯(cuò)誤的情況,系統(tǒng)利用學(xué)號(hào)去查找數(shù)據(jù)庫中對(duì)應(yīng)學(xué)號(hào)的姓名,從而得到正確的姓名。
以上命名錯(cuò)誤的情況,系統(tǒng)均可以自動(dòng)處理,并不影響系統(tǒng)對(duì)座位的檢查。但對(duì)于作業(yè)文件命名中學(xué)號(hào)出現(xiàn)錯(cuò)誤,則該生會(huì)被處理為“缺勤學(xué)生”,也就是說該生已經(jīng)來了,但仍被系統(tǒng)處理為“缺勤學(xué)生”。這種情況對(duì)系統(tǒng)來說是不可抗拒的人為因素。
結(jié)論
利用批量檢查亂坐座位系統(tǒng)自動(dòng)檢查學(xué)生是否亂坐座位,大大節(jié)省了課堂上人工檢查座位耗費(fèi)的時(shí)間,加強(qiáng)了課堂管理,提高了教學(xué)質(zhì)量。
參考文獻(xiàn):
[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]徐安令.正則表達(dá)式的應(yīng)用研究[J].數(shù)字技術(shù)與應(yīng)用,2016(05):68.