您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 商业计划书 > 快递状态查询系统-JAVA课程设计
目录1课题介绍....................................................................................................................11.1课程设计目的.................................................................................................11.2课程设计要求.................................................................................................12总体设计....................................................................................................................22.1程序的模块划分.............................................................................................22.2程序模块图.....................................................................................................22.3程序测试效果图..............................................................................................33详细设计....................................................................................................................43.1文件下载模块的实现.....................................................................................43.2XML解析模块的实现......................................................................................53.3图形界面模块的实现.....................................................................................64问题与解决................................................................................................................95课程设计心得..........................................................................................................106参考文献..................................................................................................................111快递状态查询系统1课题介绍1.1课程设计目的课程设计题目:快递状态查询系统本课程设计的目的是可以使用户在局域网的情况下,进行查询相应的快递信息。通过这个课程要学会通过java下载网上提供的XML接口文件,并将获取的XML数据解析后以文字或图片形式显示到图形界面上。还需要掌握XML的所对应的相应形式。1.2课程设计要求将在网上下载的XML进行数据解析后以文字或图片形式显示到图形界面上榜。要求正确显示用户所输入订单号查询的信息,且在输入错误时显示错误的信息,使用户能再次多次重新输入。2快递状态查询系统2总体设计2.1程序的模块划分根据课题要求和程序需求,本快递状态查询系统总体上划分为如下四个模块:图形界面外模块(Frame类)、图形界面内模块(MyFrame类),文件下载模块(Downloader类)和XML数据解析模块(XML类)。程序的模块结构如图2-1所示。(1)图形界面模块先在图形界面上设置标签,文本框,按钮,文本区,调用Downloader类下载文件,然后写入文件”kuaidi.xml”中,调用XML类解析文件。(2)文件下载模块创建一个URL对象,创建Http链接,调用openConnection方法,使用IO流输出数据,每次读取一行数据,将它添加到StringBuffer对象后面,抛去异常,关闭IO流,将数据转为String对象返回出去。(3)文件解析模块创建一个解析器工厂,在其基础上创建一个解析器,开始解析文件。解析文件中的元素,若标签中的元素和正在解析的标签的名字一样,输出标签内的内容。2.2程序模块图图2-1程序流程图3快递状态查询系统2.3程序测试效果图2-2程序效果图4快递状态查询系统3详细设计3.1文件下载模块的实现首先从程序主界面上的文本输入框中获取用户输入的待查询订单号,并将该订单号作为参数拼接到课题所规定的服务器查询地址中。比如:若用户在界面输入“6215530004”,则拼接得到的查询地址为“=yuantong”。然后将该查询地址传递给文件下载模块,通过该地址即可实例化一个URL对象,该URL对象打开一个HTTP连接后,通过该HTTP连接的getInputStream()方法将获取到服务器对上述查询地址响应的XML接口数据字节流。最后将该字节流转换为字符流(InputStreamReader),再将字符流转换为带缓冲区的字符流(BufferReader),就可以利用BufferReader类提供的readLine()方法按行读取服务器返回的XML接口数据了。以上过程的具体实现代码如下:publicclassDownloader{privateURLurl=null;publicStringdownload(StringurlStr){StringBuffersb=newStringBuffer();//字符缓冲区Stringline=null;BufferedReaderbuffer=null;//字符输入流try{url=newURL(urlStr);HttpURLConnectionurlConn=(HttpURLConnection)url.openConnection();//使用ur1创建HttpsURLConnection。buffer=newBufferedReader(newInputStreamReader(urlConn.getInputStream(),UTF-8));while((line=buffer.readLine())!=null){sb.append(line);}5快递状态查询系统}catch(Exceptione){e.printStackTrace();}finally{try{buffer.close();}catch(Exceptione){e.printStackTrace();}}returnsb.toString();}}3.2XML解析模块的实现先创建一个SAXParserFactory,然后引用characters类得到标签里面的内容。以上过程的具体实现代码如下:publicclassXMLextendsDefaultHandler{//适配器模式publicStringstr=,str1=;publicXML(){super();try{SAXParserFactorysf=SAXParserFactory.newInstance();//创建一个SAXParserFactorySAXParsersp=sf.newSAXParser();sp.parse(newInputSource(kuaidi.xml),this);6快递状态查询系统}catch(Exceptione){e.printStackTrace();}System.out.println(str);}publicvoidcharacters(charch[],intstart,intlength)//得到标签里面的内容throwsSAXException{Stringtag=(String)tags.peek();if(tag.equals(message)){str1=newString(ch,start,length);str+=快递存在是否:+str1+\n;}elseif(tag.equals(time)){str1=newString(ch,start,length);str+=签收时间:+str1+\n;}elseif(tag.equals(context)){str1=newString(ch,start,length);str+=签收情况:+str1+\n;}}3.3图形界面模块的实现创建图形界面后,设置对应的位置,宽度和高度,然后设置窗口属性。7快递状态查询系统以上过程的具体实现代码如下:publicclassMyFrameextendsJFrameimplementsActionListener{BorderLayoutbl=newBorderLayout();//边框布局privateJButtonbut1,but2;//按钮privateJLabelnum;//空字符串privateJLabelshuoming1,shuoming,shuoming2,shuoming3;privateJTextFieldtname,tnum;//单行文本privateJTextAreatinformation;//多行文本XMLreader;MyFrame(Strings){super(s);setSize(480,500);//设置为指定的宽度和高度setLocationRelativeTo(null);//置于屏幕的中央JPanelcontentPanel=newJPanel();JPanelpan=newJPanel();JPanelpan1=newJPanel();JPanelpan2=newJPanel();setContentPane(contentPanel);//设置窗口属性contentPanel.setLayout(bl);shuoming2=newJLabel(圆通的快递一般为10个数字,以1、2、6、8及v等开头);tinformation=newJTextArea(20,30);//20行,20列but1=newJButton(确定);but2=newJButton(退出);num=newJLabel(单号:);tnum=newJTextField(15);tinformation.setLineWrap(true);8快递状态查询系统pan2.add(shuoming2);pan2.add(tinformation);pan.add(num);pan.add(tnum);contentPanel.add(pan,BorderLayout.NORTH);contentPanel.add(pan2,BorderLayout.CENTER);pan1.add(but1);pan1.add(but2);contentPanel.add(pan1,BorderLayout.SOUTH);but1.addActionLis
本文标题:快递状态查询系统-JAVA课程设计
链接地址:https://www.777doc.com/doc-5236679 .html