陳智
摘 要:在畢業(yè)生生源和就業(yè)信息數(shù)據(jù)上報國家教育部和省教育廳的工作中,經(jīng)常出現(xiàn)數(shù)據(jù)匯總、比對等問題。鑒于此,主要探討、研究了PHP+MySQL環(huán)境開發(fā)項目,實現(xiàn)了對畢業(yè)生生源、學(xué)籍和就業(yè)信息等分散數(shù)據(jù)的匯總、比對,得出了上報所需要的數(shù)據(jù),從而避免了大量、煩瑣的重復(fù)性操作,減少了數(shù)據(jù)的錯誤率,提高了日常工作的效率。同時,還公布了部分源代碼,以便在工作中共享和交流。
關(guān)鍵詞:數(shù)據(jù)比對;PHP;MySQL;數(shù)據(jù)庫
中圖分類號:TP311.52 文獻標(biāo)識碼:A DOI:10.15913/j.cnki.kjycx.2015.05.020
隨著高校擴招,大學(xué)畢業(yè)生就業(yè)難的問題受到了國家的高度重視,教育部要求各高校每年定期上報畢業(yè)生就業(yè)情況,所以,每年整理畢業(yè)生的生源、學(xué)籍、就業(yè)等信息便是各高校必不可少的工作之一。但是,由于大多數(shù)高職院校實行院系兩級管理模式,畢業(yè)生的相關(guān)數(shù)據(jù)也是按部門劃分、分區(qū)域統(tǒng)計的,未在統(tǒng)一的平臺上管理,并且其數(shù)據(jù)字段和數(shù)據(jù)格式等也各不相同,難以保證信息的準(zhǔn)確性,所以,如何將這些大量零散的數(shù)據(jù)信息收集、處理形成有效的數(shù)據(jù)上報,已經(jīng)成為了一個技術(shù)性的課題。
1 數(shù)據(jù)管理中存在的問題
就業(yè)部門要準(zhǔn)確統(tǒng)計應(yīng)屆畢業(yè)生人數(shù),并將其上報到上級教育主管部門。在統(tǒng)計的過程中,主要是以收集招生、學(xué)籍管理和班級等單位的數(shù)據(jù)為基礎(chǔ),進而分析數(shù)據(jù)的完整性,了解其中可能出現(xiàn)的數(shù)據(jù)差異。比如,招生錄取而未報道的學(xué)生數(shù)據(jù)變化,中途休學(xué)、轉(zhuǎn)學(xué)、退學(xué)、留級和入伍等學(xué)籍變動的學(xué)生數(shù)據(jù)變化等,其數(shù)據(jù)分屬不同部門、不同系統(tǒng)管理。面對畢業(yè)生人數(shù)多、數(shù)據(jù)來源廣,甚至還有臨時手工采集的情況,如果就業(yè)部門利用普通的方法人工校對信息,不僅費時費工夫,而且校對過程中的多種不確定因素都可能使得其結(jié)果不可靠。
要想有效地解決如此龐大的數(shù)據(jù)校對工作,好的方法和工具是關(guān)鍵。筆者通過PHP+MySQL開發(fā)項目,格式化處理零散數(shù)據(jù),從而形成多組數(shù)據(jù),同時,再利用計算機比對數(shù)據(jù),標(biāo)記數(shù)據(jù)間的差異,從而生成預(yù)期設(shè)定的數(shù)據(jù)字段和數(shù)據(jù)格式。最后,僅需人工核準(zhǔn)少量存在差異的數(shù)據(jù)即可。這種做法極大地提高了數(shù)據(jù)的準(zhǔn)確性,較好地解決了實際工作中的困難,提高了工作效率。
2 關(guān)鍵技術(shù)研究
本文主要闡述了畢業(yè)生數(shù)據(jù)比對系統(tǒng)的運行環(huán)境、數(shù)據(jù)庫的連接與訪問和如何實現(xiàn)數(shù)據(jù)比對等內(nèi)容。
2.1 系統(tǒng)運行環(huán)境搭建
2.1.1 PHP和MySQL運行環(huán)境的搭建
大多數(shù)管理部門的計算機都采用的是Windows系統(tǒng),所以,推薦安裝APMServ或XAMPP等PHP+MySQL集成工作環(huán)境。用戶安裝后,基本上不需要復(fù)雜的配置就可以直接運行PHP程序,如果準(zhǔn)備部署為Web服務(wù)器,則建議用Windows+Apache+PHP+MySQL架構(gòu)模式。
2.1.2 修改PHP代碼的最大執(zhí)行時間
PHP編寫的計算機程序,其服務(wù)器解析運行默認(rèn)工作時間是30 s,而在數(shù)據(jù)比對過程中,計算機則要大量讀寫數(shù)據(jù),從而實現(xiàn)比對運算,有的可能是幾千或上萬條數(shù)據(jù)。例如,筆者所在學(xué)校每年的畢業(yè)生有3 000人左右,數(shù)據(jù)比對的次數(shù)就是3 000的平方,程序一般要運行5~10 min左右。如果比對的信息條數(shù)較多,則需要的時間會更長,其時間設(shè)定需要根據(jù)具體情況而定,這主要依賴于架設(shè)PHP系統(tǒng)的服務(wù)器CPU運算速度。一般考慮將程序的執(zhí)行時間設(shè)為30 min,通過執(zhí)行set_time_limit(1800)函數(shù)來實現(xiàn),從而保障計算機程序的運行時間,避免程序運行過程中因系統(tǒng)設(shè)定時間過短而自動終止運行,致使數(shù)據(jù)比對工作只能完成一部分的情況發(fā)生。
2.1.3 統(tǒng)一數(shù)據(jù)編碼
在系統(tǒng)設(shè)計中,為了有效避免數(shù)據(jù)編碼不統(tǒng)一而引起的亂碼,就要在設(shè)計初期考慮編碼的統(tǒng)一性。為了避免瀏覽器輸出中文亂碼,要在HTML程序代碼中添加,在PHP程序代碼中添加header("Content-Type:text/html;char-set=utf-8"),并且確保設(shè)計程序以utf-8編碼格式保存。同時,在MySQL數(shù)據(jù)庫中的my.ini文件中添加character_set_server=utf8.在整個過程中,這樣做不僅保證了數(shù)據(jù)的讀取、寫入、顯示等環(huán)節(jié)都采用utf-8編碼(還包括數(shù)據(jù)庫連接時的編碼格式設(shè)置等),還有效避免了系統(tǒng)在處理中文時出現(xiàn)亂碼的情況。
2.1.4 格式化處理分散的畢業(yè)生信息
MySQL數(shù)據(jù)導(dǎo)入、導(dǎo)出一般采用PHP my admin提供的Web界面操作,它主要有SQL、XML和CSV等幾種格式,并且采用SQL格式的較多。但是,對大多數(shù)用戶而言,他們并不太熟悉SQL格式的數(shù)據(jù)文件,所以,筆者建議使用第三方軟件Navicat for MySQL對其數(shù)據(jù)進行圖形化操作。該軟件能較好地處理從各部門收取的用EXCLE、ACCESS、Visual Foxpro等軟件錄入的畢業(yè)生數(shù)據(jù),從而形成MySQL數(shù)據(jù)表,統(tǒng)一數(shù)據(jù)字段格式,比如字段id、姓名(xm)、身份證號碼(sfzhm)和標(biāo)記(sign)等。字段id需設(shè)為關(guān)鍵字,方便數(shù)據(jù)索引;標(biāo)記字段記錄比較結(jié)果,存儲數(shù)據(jù)差異信息等;其他信息字段可根據(jù)實際需求設(shè)定,盡可能簡化字段數(shù)量,提高程序的執(zhí)行效率。
2.2 PHP與MySQL數(shù)據(jù)庫服務(wù)器的連接
主程序采用include(conn.in.php)調(diào)用MySQL類,并進行實例化處理,實現(xiàn)PHP程序?qū)ySQL數(shù)據(jù)庫的連接。例如new mysql("localhost","root","password","sjbd"),其中,localhost表示數(shù)據(jù)庫服務(wù)器名稱或IP地址,root表示數(shù)據(jù)庫服務(wù)器登錄用戶名,password是登錄密碼,sjbd表示數(shù)據(jù)庫名。
2.3 數(shù)據(jù)比對模塊的實現(xiàn)
判斷待比對的數(shù)據(jù)表中畢業(yè)生數(shù)據(jù)是否重復(fù)。在比對數(shù)據(jù)之前,要確保參與比對的數(shù)據(jù)表本身數(shù)據(jù)行沒有重復(fù)的畢業(yè)生信息,該項任務(wù)通過調(diào)用自定義函數(shù)compare()完成自校驗工作。程序執(zhí)行完后,到相對應(yīng)的數(shù)據(jù)表中查看哪些記錄重復(fù),通過電話咨詢對應(yīng)班級輔導(dǎo)員或相關(guān)管理處室核實信息,再手動刪除或修正重復(fù)信息。
該模塊主程序關(guān)鍵代碼為compare("xjsjb","xjsjb"),需要自校驗的數(shù)據(jù)表主要有學(xué)籍?dāng)?shù)據(jù)表(xjsjb)、班級數(shù)據(jù)表(bjsjb)和招生數(shù)據(jù)表(zssjb)。在自校驗中,以學(xué)生的姓名(xm)和身份證號碼(sfzhm)為例判斷數(shù)據(jù)是否重復(fù),如果要判斷其他數(shù)據(jù)的重復(fù)性,可以稍加修改compare函數(shù)或設(shè)計類似函數(shù)來完成。
不同數(shù)據(jù)表交叉比對會產(chǎn)生差異代碼。完成數(shù)據(jù)表自校驗工作后,將數(shù)據(jù)表相互交叉比對、查漏補缺后,才能得到需要上報的完整數(shù)據(jù)。該項任務(wù)也是通過調(diào)用自定義函數(shù)compare()來實現(xiàn)的,它只是調(diào)用時傳入的參數(shù)不同。比如compare("xjsjb","bjsjb"),以學(xué)籍?dāng)?shù)據(jù)表(xjsjb)為基礎(chǔ)表,分別與班級數(shù)據(jù)表、招生數(shù)據(jù)表等交叉比對,將差異關(guān)鍵代碼寫入學(xué)籍?dāng)?shù)據(jù)表sign字段中。程序執(zhí)行完后,查看學(xué)籍?dāng)?shù)據(jù)表sign字段即可知道哪些數(shù)據(jù)是需要人工核實的。
3 結(jié)束語
筆者試過用VFP、ASP+ACCESS和PHP+MySQL等多種程序設(shè)計、解決數(shù)據(jù)比對問題,基本設(shè)計思路是一致的,主要涉及循環(huán)、數(shù)組和數(shù)據(jù)庫的讀寫操作。與此同時,要在程序中設(shè)計合理的跳出循環(huán)條件,比如數(shù)據(jù)比對的compare()函數(shù)中$total作為if語句的條件,從而判斷是否要對數(shù)據(jù)庫執(zhí)行讀寫操作等,即使每一次循環(huán)降低1/1 000 s,這對于大量數(shù)據(jù)比對工作而言還是具有非常重要的意義的。該思路完成的數(shù)據(jù)比對不僅可以用在畢業(yè)生數(shù)據(jù)處理上,還可以將其應(yīng)用到更廣泛的數(shù)據(jù)處理范疇,比如學(xué)校管理工作中的學(xué)生學(xué)籍管理、學(xué)生戶檔管理,企業(yè)的客戶資料、產(chǎn)品資料等均可靈活應(yīng)用,充分發(fā)揮計算機高速運算的本能,減少人力手動簡單、重復(fù)的操作,從而提高人們的日常工作效率。
參考文獻
[1]潘凱華,劉欣,李慧.實戰(zhàn)突擊:PHP項目開發(fā)案例與整合[M].北京:電子工業(yè)出版社,2011.
[2]W.Jason.Gilmore.PHP與MySQL程序設(shè)計[M].第4版.朱濤江,譯.北京:人民郵電出版社,2001.
[3]譚貞軍.深入體驗PHP項目開發(fā)[M].北京:清華大學(xué)出版社,2011.
〔編輯:白潔〕
Abstract: The reported to the State Ministry of education and the Provincial Department of education in the graduate and employment information data work, often appear in data collection, than the equivalence problem. In view of this, the main study, study the development environment of PHP+MySQL project, the realization of the graduate student employment information, and the spread of the data summary, comparison, obtained the report required data, thereby avoiding the repetitive operation of large, cumbersome, reduce the data error rate, improve the efficiency of daily work. At the same time, also released some source code, to share in the work and communication.
Key words: data comparison; PHP; MySQL; database