快递状态查询系统 java课程设计.docx

上传人:b****0 文档编号:9452826 上传时间:2023-05-19 格式:DOCX 页数:10 大小:54.78KB
下载 相关 举报
快递状态查询系统 java课程设计.docx_第1页
第1页 / 共10页
快递状态查询系统 java课程设计.docx_第2页
第2页 / 共10页
快递状态查询系统 java课程设计.docx_第3页
第3页 / 共10页
快递状态查询系统 java课程设计.docx_第4页
第4页 / 共10页
快递状态查询系统 java课程设计.docx_第5页
第5页 / 共10页
快递状态查询系统 java课程设计.docx_第6页
第6页 / 共10页
快递状态查询系统 java课程设计.docx_第7页
第7页 / 共10页
快递状态查询系统 java课程设计.docx_第8页
第8页 / 共10页
快递状态查询系统 java课程设计.docx_第9页
第9页 / 共10页
快递状态查询系统 java课程设计.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

快递状态查询系统 java课程设计.docx

《快递状态查询系统 java课程设计.docx》由会员分享,可在线阅读,更多相关《快递状态查询系统 java课程设计.docx(10页珍藏版)》请在冰点文库上搜索。

快递状态查询系统 java课程设计.docx

快递状态查询系统java课程设计

目录

1课题介绍1

1.1课程设计目的1

1.2课程设计要求1

2总体设计2

2.1程序的模块划分2

2.2程序模块图2

2.3程序测试效果图2

3详细设计3

3.1文件下载模块的实现3

3.2XML解析模块的实现4

3.3图形界面模块的实现5

4问题与解决8

5课程设计心得9

6参考文献10

 

1课题介绍

1.1课程设计目的

课程设计题目:

快递状态查询系统

本课程设计的目的是可以使用户在局域网的情况下,进行查询相应的快递信息。

通过这个课程要学会通过java下载网上提供的XML接口文件,并将获取的XML数据解析后以文字或图片形式显示到图形界面上。

还需要掌握XML的所对应的相应形式。

1.2课程设计要求

将在网上下载的XML进行数据解析后以文字或图片形式显示到图形界面上榜。

要求正确显示用户所输入订单号查询的信息,且在输入错误时显示错误的信息,使用户能再次多次重新输入。

 

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程序流程图

2.3程序测试效果图

2-2程序效果图

 

3详细设计

3.1文件下载模块的实现

首先从程序主界面上的文本输入框中获取用户输入的待查询订单号,并将该订单号作为参数拼接到课题所规定的服务器查询地址中。

比如:

若用户在界面输入“6215530004”,则拼接得到的查询地址为“

然后将该查询地址传递给文件下载模块,通过该地址即可实例化一个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);

}

}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();//创建一个SAXParserFactory

SAXParsersp=sf.newSAXParser();

sp.parse(newInputSource("kuaidi.xml"),this);

}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图形界面模块的实现

创建图形界面后,设置对应的位置,宽度和高度,然后设置窗口属性。

以上过程的具体实现代码如下:

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);

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.addActionListener(this);//添加指定的动作侦听器,以接收发自此按钮的动作事件

but2.addActionListener(this);

//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//使用Systemexit方法退出应用程序

setVisible(true);//设置可见性

}

 

4问题与解决

编写程序的过程中遇到了很多问题,但是通过与同学讨论和网上查询都一一解决了,这些问题主要是以下几种类别:

1.XML文件解析错误

对应视频上的代码,大致一样的情况下,还出现了并不能正确得出相应的信息的错误,所以并不知道错误在哪里,之后问了同学之后,才解决了相应的问题。

2.图形界面未能显示

在最后的结果中,结果未能在图形界面上显示,只能在eclipse的结果中显示,当时并不知道是为什么,但在查询相应的API之后,才能显示到图形界面中。

3.在显示的结果中未能自动换行

在显示的结果中只能显示一行输出,在询问同学后使用了一个类之后实现了自动换行的功能。

 

5课程设计心得

经过这次课程设计,我对Java又有了一定地深入了解,这次我选的题目是快递状态查询系统,涉及的编程知识不是太多,主要的就是在文件下载模块和XML解析的模块,虽然之前并不懂这两个模块,但在仔细看了发的几个视频后,基本能了解大致的内容,但在很多地方有许多问题,比如并不知道某几行代码的意思,但只要按照视频所给的样例代码一样写上去就没错,并且能得出结果,之后也在XX查询了相应的意思,虽然能知道在文字上的大概意思,但其实并不知道真正的意思,只能按照别人写的方式来进行编程。

这样我并不能具有很强的编程能力,只能跟在别人的后面,别人做什么,我也做什么,所以此次对自己十分的不满意,并不能真正的理解并运用这次的文件下载和XML解析。

也知道了下次必须先要理解其相应的意思,然后按照自己的思路一步一步的做下去,虽然可能遇到很多的困难,但还是相信会成功的实现出结果的。

经过这次课程设计,知道了自己许多的不足,API文档十分不熟悉,图形界面相应的代码对需要在书上查询才能解决,说明自己的基础不是太好,要多看看相应的程序代码和API里各个类的解释。

 

6参考文献

[1]董小圆,编著,《java面向对象程序设计》,清华大学出版社,2011

[2]张化祥,陆晶,编著,《java程序设计》,清华大学出版社,2010

[3]依维恩著.王春楠,刘永金翻译.XML高级编程.北京:

清华大学出版社,2009.2

[4]张银鹤等编著.XML实践教程.北京:

清华大学出版社.2007.8

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2