网络教育学院招生毕业证验证程序

好久没写文章了,还是写一点填填,嘿嘿,文采不好。工作中可能会遇到很多问题,如何用计算机去解决这些问题,才是程序员的价值所在。我院招生办每次招生后最烦琐的事之一就是要验证那些报考本科的学员是否有正确的专科毕业证。以及毕业证上的信息是否与报考信息一致。一次偶然的机会看到招办的兄弟满头大汗一个一个学员的在“学信就业”网http://job.chsi.com.cn/上查询,可能同一时间段访问的比较多吧,速度很慢、效率很低。兄弟都这样了,不帮忙就说不过去了。于是又操起家伙打算搞一个程序自动实现毕业证号信息的验证程序,其实原理很简单,就是用IdHttp控件及正规表达式模拟整个验证操作。并把结果返回保存、设置验证结果标志。费话就不说了,关键代码如下:

function TInfoCheck.Login(uid, pwd: string): Boolean; //登陆函数,查询前先登陆
var s:string;
begin
  m_lst.Clear;
  m_lst.Add(Format('%s=%s',['loginName',uid]));
  m_lst.Add(Format('%s=%s',['loginPwd',pwd]));
  m_lst.Add(Format('%s=%s',['userType','1']));
  s:=PostData('http://job.chsi.com.cn/user/checkLogin.do');
  Result:=Pos('欢迎您:',s)<>0;  //如果登陆成功,那么会返回带有“欢迎您”的关键字。  
end;
function TInfoCheck.GetHtml(xm, zjhm, bynf: string): string;  //登陆成功后就可以进行查询操作了。
var s,id:string; ms:IMatchCollection2;
begin
  //查询页面1  
  m_lst.Clear;
  m_lst.Add(Format('%s=%s',['xm',xm]));        //输入姓名
  m_lst.Add(Format('%s=%s',['zsbh',zjhm]));    //输入毕业证号
  m_lst.Add(Format('%s=%s',['bynf',bynf]));    //输入毕业年份
  s:=PostData('http://job.chsi.com.cn/admin/xlcx/simpleXL/input.do');
  if Pos(zjhm,s)=0 then begin
    if s='' then Result:='页面1失败或超时' else Result:='页面1找不到证书号';
    Exit;
  end;

  //提交成功后,会出现一个页面,这个页面里有一个隐藏的ID字段,需要获取页面1中的ID值
  m_reg.Pattern:='<input type="hidden" name="id" value="(.*?)" />';
  ms:=m_reg.Execute(s) as IMatchCollection2;
  if ms.Count<=0 then begin
    Result:='页面1找不到ID';
    Exit;
  end;
  id:=VarToStr(((ms.Item[0] as IMatch2).SubMatches as ISubMatches).Item[0]);
  
  //查询页面2
  m_lst.Clear;
  m_lst.Add(Format('%s=%s',['id',id]));         //使用页面1中的ID在页面2中查询
  m_lst.Add(Format('%s=%s',['selectXm','1']));  //其它需要提交的字段信息
  m_lst.Add(Format('%s=%s',['methodXm','0']));
  m_lst.Add(Format('%s=%s',['selectZsbh','1']));
  s:=PostData('http://job.chsi.com.cn/admin/xlcx/common/selectResult.do');
  if Pos('查询结果',s)=0 then begin
    if s='' then Result:='页面2失败或超时' else Result:='页面2找不到[查询结果]';
    Exit;
  end;

  m_htm:=s;                   //保存查询结果。
  Result:='';
end;

 查询结果是一个HTML的表格,内容如下:

function TInfoCheck.GetHtmlTableInfo(sKey: string): string;    //好了,现在已经有了HTML,再把HTML中指定的信息取出来就完成啦
var ms:IMatchCollection2;                   //用这个函数取出指定的信息,如调用GetHtmlTableInfo('毕业时间')就会返回20030630
begin
  m_reg.Pattern:='>'+sKey+'<[\s\S]*?<span[\s\S]*?>(.*?)</span>';
  ms:=m_reg.Execute(m_htm) as IMatchCollection2;
  if ms.Count>0 then begin
    Result:=VarToStr(((ms.Item[0] as IMatch2).SubMatches as ISubMatches).Item[0]);
  end else begin
    Result:='';
  end;
end;

代码很简单,也有注释,其它就不多说了哈。刚开始开发的时候不知道查询是收费的,调试的时候可能测试了400多条,浪费了好多钱~~,像这样的程序有很大的局限性,一旦别人的网页有改动,那么程序就不能工作了,所以使用前最好先用一条正确的信息测试一下,如果结果也正确那么说明网页还没有改动,就可以批量处理了。当然,最好的办法还是希望“学信就业”网向网院提供查询接口,那么就好办了。

希望这篇文章能对兄弟网院有帮助,如有问题可以和我联系QQ:8442861(绝缘)

阅读更多
想对作者说点什么? 我来说一句

继续教育学院教务管理系统

2012年08月09日 9.24MB 下载

大学毕业证样本模板下载

2011年05月13日 1.08MB 下载

毕业证打印模板

2014年06月26日 39.63MB 下载

江苏省高中毕业证书批量打印系统

2014年06月10日 49.42MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭