


摘? 要: 教師往往需要將學生完成作業的情況輸入到電子表格中。但是,由于原始文檔中存在多個班級,學生完成作業的順序較為混亂,且數據量較大,直接輸入費時費力。針對該問題,提出利用PHP設計成績快速輸入系統的解決思路。首先將學生的學號信息導入到MySQL數據庫,然后通過PHP頁面的文本框接收輸入的學號字符串并自動增加新的作業字段,接著通過explode函數對字符串進行分割并提取學號,再根據學號與數據庫對比更新當前作業所在字段,最后將數據表導出到電子表格。實踐表明,該系統運行速度較快,穩定可靠,能夠極大地提高工作效率。
關鍵詞: 成績快速輸入; PHP; explode函數; MySQL; 字段
中圖分類號:TP319? ? ? ? ? 文獻標志碼:A? ? ?文章編號:1006-8228(2019)06-49-04
Abstract: Teachers often need to input student finished jobs into spreadsheet. However, due to the students in the original document belong to different classes, the order of the finished jobs is chaotic, and the amount of data is large, so the direct input is time-consuming and laborious. To solve this problem, a solution of designing a score fast input system with PHP is put forward. Firstly, the student's Student Number Information is imported into the MySQL database, then the string of Student Number Information is received by the text box of the PHP page and the new job field is automatically added. Then the string is segmented by the explode function to extract the Student Number, and the field is updated according to the comparison of the Student Number and the database, and the data table is finally exported to a spreadsheet. Practice shows that the system runs fast, stable and reliable, and can greatly improve the work efficiency.
Key words: score fast input; PHP; explode function; MySQL; field
1 成績輸入的困難
在高校、中職學校中,大部分的平時作業為上機操作或實驗[1]。教師需要記錄學生完成作業情況,這也是學生期末總評成績的重要組成部分。學生成績是學生學習情況和教學質量的晴雨表,其重要性不言而喻[2]。由于教學管理日趨嚴格,平時成績需要記錄,作為評估、考核的原始文檔,如果直接在紙質版的成績表上記錄,則需要從中找到某學生,再找到對應某次作業,才能進行登記。因為這樣的現場記錄要花費的時間太多,所以教師習慣于在白紙上記錄學生的學號,等期末再統一輸入到電子表格成績表。
由于學生完成作業的先后順序是隨機的,所以教師記錄在紙張上的學號自然雜亂無章。因此,在將其輸入到電子表格的時候,需要找到對應的行(學號)和列(某次作業),非常費時費力。如果是多個班級合班上的,則輸入效率更低。因此,如何設計一種能夠將不同班級的學號,快速地輸入到電子表格,成為一大挑戰。
2 快速輸入系統的思路
2.1 輸入的方便快捷
教師現場手寫的記錄比較潦草,圖像識別的硬件技術和軟件算法又比較復雜[3],難以通過圖像識別來提高輸入效率。由此,只能在記錄和輸入的策略上減少工作量。一方面,由于同一門課程經常存在合班現象,為了方便,用一位數字表示學生班別代號,用二位數字表示學生本班排序號,三位數字組合成學生的學號,如219為2班19號學生。現場記錄只需記錄學號。另一方面,輸入的時候,采用右手小鍵盤、左手分隔符的方式可以實現快速輸入。其中,分隔符采用最大的按鍵——空格鍵。例如,某次輸入的內容為“219 107”,就表示完成本次作業的學生的學號分別為219號和107號。按照“最短學號、左右手配合、最大按鍵”策略,使得輸入更為快捷。
2.2 提取學號并修改數據
輸入某次作業的一批學號之后,就需要從該字符串中提取學號并修改對應的作業一列的數據。每次作業,都會存在部分同學沒有完成、無法上交的情況,因此造成輸入的學號不連續,無法使用電子表格的排序功能進行自動處理。所以,最終只能通過設計程序來實現,解決思路如下。
第一步,將學生的學號信息從電子表格導入數據庫。
第二步,輸入完成某次作業的學生的學號,一般為幾十個學生的學號,從而形成一長串字符串。
第三步,以空格為分割符,對字符串進行分割,提取出每個學號,接下來就是根據提取出來的學號,與數據庫進行比對并進行相應的修改。
第四步,把修改好的成績導出到電子表格。
3 PHP應用程序的設計
3.1 動態技術的選擇
通過前面的分析可以看出,要實現設計要求,必須要設計程序。目前的程序從設計架構看可以分為C/S(Client/Server,客戶/服務器)和B/S(Brower/Server,瀏覽器/服務器)兩大類型。前者運行速度較快,但是需要安裝才能運行,如果要修改還需要在開發平臺中重新編譯,比較麻煩。后者速度稍慢,但是只要有瀏覽器即可運行,修改也比較便捷。目前,Web系統的應用日益廣泛,傳統需安裝的Foxmail等軟件都可以在Web頁面中完成[4]。由于Web開發成為發展主流,在此采用B/S模式設計該系統。
B/S模式的開發主流語言主要有PHP、JSP、ASP、ASP.NET幾種。雖然它們都能實現Web應用程序,但是差異還是比較大的。PHP具有完全開源、完全免費、跨平臺、開發容易、修改維護方便等諸多優點[5]。目前,在動態網頁上,PHP獲得了最廣泛的支持,全球排行前100萬的網站中有70%以上采用了PHP技術,例如國內的百度、淘寶、新浪等大型網站。在論壇、中小型企業網站中,PHP更是處于絕對壟斷的地位。另外,PHP的各種資源相當豐富,容易解決技術問題。因此,選擇PHP技術來設計系統。
3.2 環境與數據庫設置
采用phpStudy來配置環境。該軟件小巧精悍,集成了PHP編程環境、MySQL數據庫、phpMyAdmin管理工具、Apache服務器平臺等工具,自動完成常規的配置[6]。此時,在系統默認的網站根目錄下的WWW文件夾編寫php網頁文件,就可以通過http://localhost/來訪問了。
PHP默認采用MySQL數據庫。MySQL具有開源、免費、支持千萬條記錄、容易移植、安裝調試簡便等優點,特別適合中小型信息系統[7]。該系統的數據表中有兩種類型的字段:①學號,用于記錄若干行學生的學號;②某次作業,用于記錄某學生是否完成該次作業。由于作業的次數不是固定的,因此一般采用自動增加的方式來實現;而學號是固定的,需要從電子表格中導入。
要將學號導入到MySQL數據表,首先要將電子表格的成績表,保留nums(學號)這一列,另存為CSV格式的文件123.csv。然后在test數據庫中導入該文件。此處要注意勾選“文件首行包含數據表的字段名”,否則會影響該字段的名稱。完成之后,系統會自動新建數據表TABLE 1。例如,筆者的某門課程有兩個班,學號分別從101到135、201到235,導入test數據庫后如圖1所示。
默認表TABLE 1的名字中間含有空格不方便操作,而且名稱也不容易記憶,在此采用RENAME TABLE `test`.`table 1` TO `test`.`pingshi` 的命令將該表改名為pingshi,意思是平時作業的數據表。
3.3 Session控制新的字段
不管是電子表格,還是MySQL中的數據表,都是一個行(記錄)、列(字段)的二維表。現在nums列已經有了,學號數據也有了,只需要在網頁每次刷新的時候插入某次作業的新列即可。為了確保每一列都不相同,采用Session技術,分三個步驟:
第一,用Session_start()命令聲明使用Session變量。
第二,定義變量并使之自增,例如$_SESSION['wu']++。其中的wu變量就是一個在所有頁面中的全局變量。
第三,由于數字直接用于字段的名稱并不符合數據庫的命名規范,因此定義變量lie,用于產生新的字段。
3.4 字符串的接收與分割
為了接收用戶輸入的某次作業的學號,首先要在PHP頁面中添加一個Form窗體、一個textarea文本框、一個submit的提交按鈕,HTML代碼如下:
以上代碼中文本框的名字為text。當用戶按下提交按鈕后,PHP程序通過if(!empty($_POST['button1']))判斷是否產生響應,然后對text的字符串進行分割處理。字符串分割、模糊處理的算法很多[8],但是PHP提供了explode函數,本系統的分割處理較為簡單,因此直接使用explode將字符串打散為數組即可。核心代碼如下:
此時,$tmp[$i]就是某次作業所對應所有學號,將其插入到對應的列即可。
3.5 數據庫操作
成績快速輸入系統面向的是數據,因此核心的操作是數據庫。
第一步,PHP頁面要鏈接到MySQL數據庫:
第二步,將分割出來的各個學號的數值與pingshi表中的nums字段進行匹配,如果符合則修改當前作業列的內容:
第三步,循環遍歷本次輸入的字符串并修改數據庫之后,需要清空各種臨時變量并關閉數據庫鏈接:
4 系統測試
該系統在廣西欽州商貿學校的“網頁設計”、“Internet應用”等幾門課程中投入使用,獲得較好的效果。例如,將某次作業的成績輸入到系統中,如圖2所示:
第一行的“1”表示當前session變量。第二行表示插入新的字段L1成功。接下來的文本框用于輸入學生的學號。點擊提交后,通過MySQL管理工具phpMyAdmin中可以看到插入的作業完成情況已經成功,test數據庫中的pingshi表,里面除了nums字段外,還自動增加了L1字段。已經完成本次作業的101、103、104、105號同學,他們的L1列的內容被修改為1;而102號同學沒有完成,保持為初始化的數值0。
輸入并提交完15次的作業,就可以將該數據表導出為CSV格式,該格式可以在Excel中直接打開。最終效果如圖3所示。
采用PHP成績快速輸入系統,60秒就能輸入1個班的學號字符串并完成自動處理。
假設每位教師每個學期10個班、每個班級35人、每個學期15周次的作業,PHP系統所需要的時間為:10×15×60=9000秒。
而傳統的輸入方式是先在紙張上看到某學號,再在電子表格中找到該學號,將鼠標定位到某次作業的那一列,輸入1回車確定。該操作流程每處理1人次的作業就需要消耗10秒時間,同樣的工作量需要的時間為:10×35×15×10=52500秒。
經過比較可以看出,PHP系統所需要的時間僅為傳統方式的17.1%,效率獲得極大提高。
5 結束語
針對海量作業成績的輸入難題,利用PHP設計自動化處理系統,通過PHP自動增加新字段、對輸入字符串進行分割、將提取的學號與數據庫匹配、修改數據庫等步驟,將學號排列混亂、大量數據的平時作業成績快速輸入到電子表格中。實踐顯示,該系統具有輸入便捷、處理快速、穩定可靠等優點,能夠大大節約時間,減輕勞動量。該系統容易移植到其他亂序、海量輸入的應用場合中。
參考文獻(References):
[1] 吳國輝.基于AJAX的便攜式作業管理系統的設計[J].電子制作,2014.16:64-65
[2] 倪玲玲.高職院校學生成績管理系統的設計與實現[D].湖北工業大學碩士學位論文,2017.
[3] 許廣強,賈翠翠,詹念等.基于FPGA和DBN的手寫體圖像識別算法的實現[J].電子世界,2017.7:69
[4] 吳國輝.基于PXF模式快速提升網頁視覺效果的研究[J].電子技術與軟件工程,2016.14:107,165
[5] 丁寧.基于PHP的在線調研系統的設計與實現[D].北京郵電大學碩士學位論文,2017.
[6] phpstudy.phpstudy安裝及使用教程[EB/OL].http://www.phpstudy.net/jishu-php-2956.html
[7]李強.基于MySql的物流管理系統的設計與實現[J].西安文理學院學報(自然科學版),2017.20(2):50-54
[8] 何曉明,洪親,蔡堅勇等.基于n-gram中英文字符串分割算法實現[J].電腦知識與技術,2012.8(23):5530-5533