基于PHP的毕业生数据比对系统的设计与实现
2015-04-20陈智
陈智
摘 要:在毕业生生源和就业信息数据上报国家教育部和省教育厅的工作中,经常出现数据汇总、比对等问题。鉴于此,主要探讨、研究了PHP+MySQL环境开发项目,实现了对毕业生生源、学籍和就业信息等分散数据的汇总、比对,得出了上报所需要的数据,从而避免了大量、烦琐的重复性操作,减少了数据的错误率,提高了日常工作的效率。同时,还公布了部分源代码,以便在工作中共享和交流。
关键词:数据比对;PHP;MySQL;数据库
中图分类号:TP311.52 文献标识码:A DOI:10.15913/j.cnki.kjycx.2015.05.020
随着高校扩招,大学毕业生就业难的问题受到了国家的高度重视,教育部要求各高校每年定期上报毕业生就业情况,所以,每年整理毕业生的生源、学籍、就业等信息便是各高校必不可少的工作之一。但是,由于大多数高职院校实行院系两级管理模式,毕业生的相关数据也是按部门划分、分区域统计的,未在统一的平台上管理,并且其数据字段和数据格式等也各不相同,难以保证信息的准确性,所以,如何将这些大量零散的数据信息收集、处理形成有效的数据上报,已经成为了一个技术性的课题。
1 数据管理中存在的问题
就业部门要准确统计应届毕业生人数,并将其上报到上级教育主管部门。在统计的过程中,主要是以收集招生、学籍管理和班级等单位的数据为基础,进而分析数据的完整性,了解其中可能出现的数据差异。比如,招生录取而未报道的学生数据变化,中途休学、转学、退学、留级和入伍等学籍变动的学生数据变化等,其数据分属不同部门、不同系统管理。面对毕业生人数多、数据来源广,甚至还有临时手工采集的情况,如果就业部门利用普通的方法人工校对信息,不仅费时费工夫,而且校对过程中的多种不确定因素都可能使得其结果不可靠。
要想有效地解决如此庞大的数据校对工作,好的方法和工具是关键。笔者通过PHP+MySQL开发项目,格式化处理零散数据,从而形成多组数据,同时,再利用计算机比对数据,标记数据间的差异,从而生成预期设定的数据字段和数据格式。最后,仅需人工核准少量存在差异的数据即可。这种做法极大地提高了数据的准确性,较好地解决了实际工作中的困难,提高了工作效率。
2 关键技术研究
本文主要阐述了毕业生数据比对系统的运行环境、数据库的连接与访问和如何实现数据比对等内容。
2.1 系统运行环境搭建
2.1.1 PHP和MySQL运行环境的搭建
大多数管理部门的计算机都采用的是Windows系统,所以,推荐安装APMServ或XAMPP等PHP+MySQL集成工作环境。用户安装后,基本上不需要复杂的配置就可以直接运行PHP程序,如果准备部署为Web服务器,则建议用Windows+Apache+PHP+MySQL架构模式。
2.1.2 修改PHP代码的最大执行时间
PHP编写的计算机程序,其服务器解析运行默认工作时间是30 s,而在数据比对过程中,计算机则要大量读写数据,从而实现比对运算,有的可能是几千或上万条数据。例如,笔者所在学校每年的毕业生有3 000人左右,数据比对的次数就是3 000的平方,程序一般要运行5~10 min左右。如果比对的信息条数较多,则需要的时间会更长,其时间设定需要根据具体情况而定,这主要依赖于架设PHP系统的服务器CPU运算速度。一般考虑将程序的执行时间设为30 min,通过执行set_time_limit(1800)函数来实现,从而保障计算机程序的运行时间,避免程序运行过程中因系统设定时间过短而自动终止运行,致使数据比对工作只能完成一部分的情况发生。
2.1.3 统一数据编码
在系统设计中,为了有效避免数据编码不统一而引起的乱码,就要在设计初期考虑编码的统一性。为了避免浏览器输出中文乱码,要在HTML程序代码中添加,在PHP程序代码中添加header("Content-Type:text/html;char-set=utf-8"),并且确保设计程序以utf-8编码格式保存。同时,在MySQL数据库中的my.ini文件中添加character_set_server=utf8.在整个过程中,这样做不仅保证了数据的读取、写入、显示等环节都采用utf-8编码(还包括数据库连接时的编码格式设置等),还有效避免了系统在处理中文时出现乱码的情况。
2.1.4 格式化处理分散的毕业生信息
MySQL数据导入、导出一般采用PHP my admin提供的Web界面操作,它主要有SQL、XML和CSV等几种格式,并且采用SQL格式的较多。但是,对大多数用户而言,他们并不太熟悉SQL格式的数据文件,所以,笔者建议使用第三方软件Navicat for MySQL对其数据进行图形化操作。该软件能较好地处理从各部门收取的用EXCLE、ACCESS、Visual Foxpro等软件录入的毕业生数据,从而形成MySQL数据表,统一数据字段格式,比如字段id、姓名(xm)、身份证号码(sfzhm)和标记(sign)等。字段id需设为关键字,方便数据索引;标记字段记录比较结果,存储数据差异信息等;其他信息字段可根据实际需求设定,尽可能简化字段数量,提高程序的执行效率。
2.2 PHP与MySQL数据库服务器的连接
主程序采用include(conn.in.php)调用MySQL类,并进行实例化处理,实现PHP程序对MySQL数据库的连接。例如new mysql("localhost","root","password","sjbd"),其中,localhost表示数据库服务器名称或IP地址,root表示数据库服务器登录用户名,password是登录密码,sjbd表示数据库名。
2.3 数据比对模块的实现
判断待比对的数据表中毕业生数据是否重复。在比对数据之前,要确保参与比对的数据表本身数据行没有重复的毕业生信息,该项任务通过调用自定义函数compare()完成自校验工作。程序执行完后,到相对应的数据表中查看哪些记录重复,通过电话咨询对应班级辅导员或相关管理处室核实信息,再手动删除或修正重复信息。
该模块主程序关键代码为compare("xjsjb","xjsjb"),需要自校验的数据表主要有学籍数据表(xjsjb)、班级数据表(bjsjb)和招生数据表(zssjb)。在自校验中,以学生的姓名(xm)和身份证号码(sfzhm)为例判断数据是否重复,如果要判断其他数据的重复性,可以稍加修改compare函数或设计类似函数来完成。
不同数据表交叉比对会产生差异代码。完成数据表自校验工作后,将数据表相互交叉比对、查漏补缺后,才能得到需要上报的完整数据。该项任务也是通过调用自定义函数compare()来实现的,它只是调用时传入的参数不同。比如compare("xjsjb","bjsjb"),以学籍数据表(xjsjb)为基础表,分别与班级数据表、招生数据表等交叉比对,将差异关键代码写入学籍数据表sign字段中。程序执行完后,查看学籍数据表sign字段即可知道哪些数据是需要人工核实的。
3 结束语
笔者试过用VFP、ASP+ACCESS和PHP+MySQL等多种程序设计、解决数据比对问题,基本设计思路是一致的,主要涉及循环、数组和数据库的读写操作。与此同时,要在程序中设计合理的跳出循环条件,比如数据比对的compare()函数中$total作为if语句的条件,从而判断是否要对数据库执行读写操作等,即使每一次循环降低1/1 000 s,这对于大量数据比对工作而言还是具有非常重要的意义的。该思路完成的数据比对不仅可以用在毕业生数据处理上,还可以将其应用到更广泛的数据处理范畴,比如学校管理工作中的学生学籍管理、学生户档管理,企业的客户资料、产品资料等均可灵活应用,充分发挥计算机高速运算的本能,减少人力手动简单、重复的操作,从而提高人们的日常工作效率。
参考文献
[1]潘凯华,刘欣,李慧.实战突击:PHP项目开发案例与整合[M].北京:电子工业出版社,2011.
[2]W.Jason.Gilmore.PHP与MySQL程序设计[M].第4版.朱涛江,译.北京:人民邮电出版社,2001.
[3]谭贞军.深入体验PHP项目开发[M].北京:清华大学出版社,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