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