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

1 篇文章 0 订阅
1 篇文章 0 订阅

好久没写文章了,还是写一点填填,嘿嘿,文采不好。工作中可能会遇到很多问题,如何用计算机去解决这些问题,才是程序员的价值所在。我院招生办每次招生后最烦琐的事之一就是要验证那些报考本科的学员是否有正确的专科毕业证。以及毕业证上的信息是否与报考信息一致。一次偶然的机会看到招办的兄弟满头大汗一个一个学员的在“学信就业”网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(绝缘)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值