您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > 基于Android平台的手机查询系统的设计与实现
基于Android平台的手机查询系统的设计与实现摘要:在Windows环境下搭建的Android平台上,以Eclipse为开发工具,应用Android网络组件包模拟浏览器的行为,向我校的教务管理系统服务器提交一个请求,服务器接到该请求后进行处理并返回一个HTML页面,然后利用Jsoup解析这个HTML页面,从中获得用户想要的数据并显示到App中,从而实现直接使用手机App方便快捷查询的功能。关键词:Android;SDK;Jsoup;Eclipse;便捷查询中图分类号:TP212文献标识码:A文章编号:2095-1302(2015)04-00-030引言在21世纪的今天,互联网已深入到世界的各个角落,而WAP技术的发展和无线业务的成熟,为人们获取各种信息提供了除Internet之外的另一种便捷的途径。考生成绩的查询方式经历了传统书信通知、电话查询、网上查询和手机短信查询阶段,其中以网上查询方式最为经济。当前,虽然Internet达到了前所未有的普及,但其终究受到“有线入户”的限制,在广大的农村、不发达地区以及学校学生宿舍还不能很方便的实现上网,而目前的无线通信网络几乎覆盖了全国每个角落,,只要有一部具有WAP功能的手机,就可以不受时间、地域和设备的限制,轻松获取到学生的考试成绩。Android是一个开放的手机平台,从Android的发布到其推广,以惊人的速度在短短的时间内,占据了大量的智能手机市场,而且将继续扩大其用户量。因此,开发基于Android的成绩查询系统有其深远的意义。1系统主要功能模块设计与实现1.1成绩查询模块先进行第一次连接服务器,拿到服务器返回的__VIEWSTATE字段的值,然后使用这个字段的值再进行成绩查询操作。publicclassQueryScore{publicFilequeryScore(Stringuid,Stringname,HashMapcookies){Stringscore_info=null;Filefile=newFile(“查询成绩完成.html);Stringurl=“http://jwgl.ldxy.edu.cn/xscj_gc.aspx?xh=”+uid+”&;xm=”+name+”&;gnmkdm=N121605”;//System.out.println(url);Connectionconn=Jsoup.connect(url);//conn1:第一次连接conn.timeout(30000);conn.data(“Button1”,“按学期查询);conn.header(“Connection”,“keep-alive”);conn.header(“Host”,“jwgl.ldxy.edu.cn”);conn.data(“Accept”,“image/png,image/*;q=0.8,*/*;q=0.5”);conn.data(“gnmkdm”,”N121605”);conn.data(“ddlXN”,“”);conn.data(“ddlXQ”,“”);conn.referrer(“http://jwgl.ldxy.edu.cn/xs_main.aspx?xh=”+uid);conn.cookies(cookies);String__VIEWSTATE=“”;try{Documentdoc1=conn.post();score_info=doc1.toString();Filetemp_file=newFile(“查询成绩开始.html);FileOutputStreamfos=newFileOutputStream(temp_file);fos.write(doc1.toString().getBytes());fos.close();__VIEWSTATE=ParserHTML.analysis__VIEWSTATE(temp_file);}catch(IOExceptione){//e.printStackTrace();System.out.println(“错误:IOExceptione1);returnnull;}conn.data(“__VIEWSTATE”,__VIEWSTATE);try{Documentdoc=conn.post();score_info=doc.toString();FileOutputStreamfos=newFileOutputStream(file);fos.write(doc.toString().getBytes());fos.close();}catch(IOExceptione){//e.printStackTrace();System.out.println(“错误:IOExceptione2);returnnull;}returnfile;}}1.2查看/选择选修课模块使用cookies和__VIEWSTATE直接获取所有可选选修课列表,并呈献给用户浏览。publicclassEnrollOptionalCourse{privateString__VIEWSTATE;publicListgainlOptionalCourse(HashMapcookies,Stringuid,Stringname){ArrayListoclist=null;Connectionc=Jsoup.connect(“http://jwgl.ldxy.edu.cn/xf_xsqxxxk.aspx?xh=”+uid+”&xm=”+name+”&gnmkdm=N121203”);c.timeout(30000);c.header(“Host”,“jwgl.ldxy.edu.cn”);c.referrer(“http://jwgl.ldxy.edu.cn/xf_xsqxxxk.aspx”);c.data(“__EVENTARGUMENT”,“”);c.data(“__EVENTTARGET”,“dpkcmcGrid:txtPageSize”);c.data(“__VIEWSTATE”,“”);//过长,不再给出c.data(“Button1”,“提交);c.data(“ddl_kcgs”,“”);c.data(“ddl_kcxz”,“”);c.data(“ddl_sksj”,“”);c.data(“ddl_xqbs”,“2”);c.data(“ddl_ywyl”,“有);//有无余量c.data(“dpkcmcGrid:txtChoosePage”,“1”);//跳转到页c.data(“dpkcmcGrid:txtPageSize”,“200”);//每页显示条c.data(“TextBox1”,“”);//根据课程名称查询c.cookies(cookies);Documentdoc;try{doc=c.post();System.out.println(“第一次得到的响应内容长度+doc.toString().length());Filetemp_file=newFile(“C:\\查询选修课开始.html);FileOutputStreamfos=newFileOutputStream(temp_file);fos.write(doc.toString().getBytes());fos.close();__VIEWSTATE=ParserHTML.analysis__VIEWSTATE(newFile(“C:\\查询选修课开始.html));Iteratorit_tr=doc.getElementById(“kcmcGrid”).getElementsByTag(“table”).select(“tr”).iterator();oclist=newArrayList();intcourse_count=1;//用于记录可选选修课的条数while(it_tr.hasNext()){Elemente_tr=it_tr.next();Iteratorit_td=e_tr.select(“td”).iterator();OptionalCourseoc=newOptionalCourse();oc.setKcmcGrid(course_count+++””);inti=0;while(it_td.hasNext()){Elemente_td=it_td.next();Stringtd_content=e_td.html();if((td_content.contains(“”))){intindex=0;index=td_content.indexOf(‘’);td_content=td_content.substring(index+1);td_content=td_content.replaceAll(“”,“”);}if(((td_content.contains(“”)))){intindex=0;index=td_content.indexOf(“/”);td_content=td_content.substring(index+2);}if(“ ;”.equals(td_content)){td_content=“”;}if(td_content.contains(“{第..)){td_content=td_content.substring(0,td_content.indexOf(“{第..));}switch(i++){case1:oc.setOcname(td_content);break;case2:oc.setOcid(td_content);break;case3:oc.setOcteacher(td_content);break;case4:oc.setOctime(td_content);break;case5:oc.setOcpace(td_content);break;case6:oc.setOcredit(td_content);break;case7:oc.setOcweektimes(td_content);break;case8:oc.setOcweekstart(td_content);break;case9:oc.setOcsize(td_content);break;case10:oc.setOcallowance(td_content);break;case11:oc.setOckcgs(td_content);break;case12:oc.setOcproperty(td_content);break;case13:oc.setOcschoolid(td_content);break;case14:oc.setOckkxy(td_content);break;case15:oc.setExamtime(td_content);break;}}oclist.add(oc);}}catch(IOExceptione){e.printStackTrace();}//choiceOptionalCourse(cookies,uid,name);returnoclist;}2结语我校的教务管理系统因为考虑到数据安全的问题,并没有给用户提供一个查询接口,但是,因为该系统是接入Internet网络,所以,就可以利用教务系统使用Web浏览器查询信息的原理,用户登录后选定自己所需的功能,然后向服务器提交一个表单,服务器经过处理后再返回给用户一个包含用户所需信息的HTML页面。那么,我们就可以应用这一原理,模拟浏览器的行为,也像浏览器一样,提交给服务器一个请求,服务器处理完返回一个HTML文件,然后我们再解析这个HTML文件,从中拿到我们想要的数据并显示到App中,从而实现直接使用手机App查询信息的功能。故开发基于Android平台的手机查询系统替代传统教务管理系统的信息查询是很有必要的,也是很有市场的。参考文献[1]王向辉,张国印,沈洁.Android应用程序开发[
本文标题:基于Android平台的手机查询系统的设计与实现
链接地址:https://www.777doc.com/doc-6508228 .html