`
fengzhizi715
  • 浏览: 161693 次
  • 性别: Icon_minigender_1
  • 来自: 上海 苏州
社区版块
存档分类
最新评论

做了一个可以查询飞机航班、火车班次的小应用

阅读更多
做得很粗糙,代码量也很少,数据通过调用web service得到。

TrainActivity.java用于输入起点站、终点站,并将输入的值传入下一个Activity
package cn.salesuite.layout;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

/**
 * @author Tony Shen
 *
 */
public class TrainActivity extends Activity{
	
	int REQUEST_CODE=2;
	Button queryButton;  //查询按钮
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    	setTitle("火车班次查询");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.train);
        
        queryButton = (Button) findViewById(R.id.query);
        queryButton.setOnClickListener(queryListener);
    }

	// query按钮监听器
    OnClickListener queryListener = new OnClickListener() {
		public void onClick(View v) {
			CharSequence firstStationValue = ((EditText) findViewById(R.id.firstStation)).getText();
			CharSequence lastStationValue = ((EditText) findViewById(R.id.lastStation)).getText();
			String temp = firstStationValue.toString() + "," + lastStationValue.toString();
			Intent intent = new Intent(TrainActivity.this, ListTrainActivity.class);
			intent.setData(Uri.parse(temp));
            startActivityForResult(intent, REQUEST_CODE);//以传递参数的方式跳转到下一个Activity
		}
	};

}



ListTrainActivity.java用于显示所有的查询出来的火车航班,通过dom4j来解析xml
package cn.salesuite.layout;

import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpProtocolParams;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;

/**
 * @author Tony Shen
 *
 */
public class ListTrainActivity extends Activity {
	
	private List<Map<String, Object>> data;
	private ListView listView = null;
	SimpleAdapter adapter = null;
	String responseBody = null;
	Intent intent;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    	setTitle("个人生活助理beta");
        super.onCreate(savedInstanceState);
        listView = new ListView(this);
		
        intent=ListTrainActivity.this.getIntent();
        String tmp=intent.getDataString();
        String[] stations= tmp.split(",");
        
		try {
			responseBody = parseTrain(stations[0], stations[1]);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
        PrepareData(responseBody);
        
		// 利用系统的layout显示一项
		SimpleAdapter adapter = new SimpleAdapter(this, data,
				R.layout.train_row, new String[] { "TrainCode", "FirstStation","LastStation", "StartTime", "ArriveTime" }, 
				new int[] {R.id.text1, R.id.text2, R.id.text3, R.id.text4,R.id.text5 });
		listView.setAdapter(adapter);
		setContentView(listView);
		
		OnItemClickListener listener = new OnItemClickListener() {
			public void onItemClick(AdapterView<?> parent, View view, int position,
					long id) {
				setTitle(parent.getItemAtPosition(position).toString());
			}
		};
		listView.setOnItemClickListener(listener);
    }

	protected String parseTrain(String firstStation, String lastStation)
			throws Exception {
		String url = "/WebServices/TrainTimeWebService.asmx/getStationAndTimeByStationName";
		String host = "www.webxml.com.cn";
		String param = "StartStation="
				+ URLEncoder.encode(firstStation, "utf-8") + "&ArriveStation="
				+ URLEncoder.encode(lastStation, "utf-8") + "&userID=";

		HttpClient httpclient = new DefaultHttpClient();
		httpclient.getParams().setParameter(
				HttpProtocolParams.HTTP_CONTENT_CHARSET, "UTF-8");

		HttpGet httpget = new HttpGet("http://" + host + url + "?" + param);

		ResponseHandler<String> responseHandler = new BasicResponseHandler();
		return httpclient.execute(httpget, responseHandler);
	}

	private void PrepareData(String responseBody) {
		data = new ArrayList<Map<String, Object>>();
		Map<String, Object> item;
		Document document;
		try {
			document = DocumentHelper.parseText(responseBody);
			Element root = document.getRootElement();
			Iterator it = root.element("diffgram").element("getStationAndTime").elementIterator("TimeTable");
			while (it.hasNext()) {
				Element info = (Element) it.next();
				item = new HashMap<String, Object>();
				item.put("TrainCode", info.elementText("TrainCode"));
				item.put("FirstStation", info.elementText("FirstStation"));
				item.put("LastStation", info.elementText("LastStation"));
				item.put("StartTime", info.elementText("StartTime"));
				item.put("ArriveTime", info.elementText("ArriveTime"));
				data.add(item);
			}
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}
}



飞机航班的做法很类似,下面上效果图










  • 大小: 21.9 KB
  • 大小: 17.8 KB
  • 大小: 38.8 KB
  • 大小: 45.2 KB
  • 大小: 51.9 KB
分享到:
评论

相关推荐

    Android应用源码列车车次与航班信息查询

    本项目是一个查询火车车次信息和飞机航班信息的应用源码,可以查询一个城市到另外一个城市的车次和班次的信息,并且可以加入收藏以供日后使用,火车车次信息和飞机航班信息数据都是由webservice.webxml.com.cn提供,...

    Android应用源码列车车次与航班信息查询.zip

    本项目是一个查询火车车次信息和飞机航班信息的应用源码,可以查询一个城市到另外一个城市的车次和班次的信息,并且可以加入收藏以供日后使用,火车车次信息和飞机航班信息数据都是由webservice.webxml.com.cn提供,...

    基于springboot+layui实现的旅游信息管理系统源码+数据库,可以查看旅游路线、飞机火车的班次

    本系统是利用SpringBoot框架和Layui前端框架开发的一款旅游信息管理平台,旨在提供全面的旅游路线查询、航班及火车班次信息,帮助用户便捷地规划出行计划。下面我们将深入探讨这一系统的实现细节和技术要点。 一、...

    交通咨询系统数据结构课程设计(飞机火车)

    在本课程设计中,我们关注的是“交通咨询系统”,它是一个基于数据结构的应用程序,用于提供飞机和火车的旅行信息,如最短路径和最短时间。这个系统的设计旨在帮助用户规划他们的出行路线,考虑了多种交通方式的组合...

    火车、飞机票务管理系统(数据结构)

    在火车、飞机票务管理系统中,链表可以用来表示火车或飞机的班次信息。每个节点可能包含班次号、出发时间、到达时间、始发站、终点站、票价等信息,以及指向下一班次的链接。通过这种方式,系统可以高效地存储和检索...

    全国交通咨询模拟数据结构课程设计.docx

    - 系统中可能使用了图数据结构来表示城市的连接关系,因为飞机和火车的航线可以看作是有向图,其中每个顶点代表一个城市,每条边(弧)表示从一个城市到另一个城市的航班或火车班次。 - 为了存储每个城市的信息,...

    毕业论文-基于Android手机平台的买火车票软件的设计与实现.doc

    2. **火车票查询**:用户输入出发地、目的地和出行日期,即可查询相关的火车班次信息。 3. **在线支付**:支持多种支付方式,如支付宝、微信支付等,确保交易安全可靠。 4. **订单管理**:用户可以查看已购票的订单...

    最新发布暑期极品时刻表

    这也意味着用户可以使用此工具查询全国范围内的火车班次,计划他们的行程。 结合以上信息,我们可以推断出以下知识点: 1. **服务内容**:极品时刻表是一款专注于火车时刻查询的软件,同时新增了航线查询功能,...

    极品时刻表

    无论是火车、飞机还是住宿,只需一个应用就能解决所有问题,大大简化了出行的准备工作。对于旅行社人员来说,能够快速、准确地为客户提供交通和住宿信息,无疑提高了工作效率,增强了服务质量。因此,《极品时刻表》...

    交通咨询系统设计C语言.pdf

    - `createtrainfile()`:创建火车班次文件。 - `DeleteplaneArc(G)`:删除飞机航线。 - `DeleteQueue(Q, x)`:从队列中删除元素。 - `DeletetrainArc(G)`:删除火车线路。 - `DeleteVertex(G)`:删除顶点。 - ...

    大数据结构课程设计交通咨询系统设计.pdf

    - `TrafficNode`结构体用于存储单个交通节点信息,如航班或火车班次。 - 交通节点数组在`VNodeDat`结构体中,用于存储城市的所有交通信息。 这个交通咨询系统的设计结合了图结构、动态规划(如Dijkstra算法)以及...

    2020高三数学上册 16.3《加法原理》同步练习(1) 沪教版.doc

    加法原理是组合数学中的一个基本概念,它指出如果一个事件可以有多种方式发生,并且这些方式互不影响,那么计算所有可能的方式总数时,只需将每种方式的可能数相加即可。在高三数学的学习中,加法原理是解决计数问题...

    列车时刻表

    这款应用包含了全国各大火车站的所有列车班次,包括始发站、终点站、发车时间、到站时间等关键信息。用户只需输入起始站点和目的地,就能快速获得最匹配的列车时刻,方便快捷。不仅如此,它还提供了实时更新的列车...

    设计任务描述1

    每个城市之间通过飞机、火车和汽车三种交通工具连接,有近100个不同的班次供用户选择。这展示了系统在处理复杂交通网络和调度方面的设计能力,考虑到了实际交通系统的多样性。 ### 2. 制定旅行计划 用户可以根据...

    综合交通枢纽信息化系统概念设计及应用PPT学习教案.pptx

    这类交通枢纽将公交、地铁、火车、飞机等多种交通方式融合在一个统一的平台,旨在实现不同交通模式间的无缝对接,为旅客提供便捷、舒适的换乘环境。 信息化系统在综合交通枢纽中的应用具有关键作用。例如,通过实时...

    全国交通资讯模拟系统

    - `VNodeDat`:用于表示一个城市节点,包含城市编号、到达该城市的火车和飞机数量及具体信息。 - `PNodeDat`:路径节点,包含城市编号和交通编号。 #### 3. 关键函数 - `SeekCity(char* name)`:查找指定城市名称...

    信息学奥赛C++ 组合数学讲义.pdf

    比如,从北京到天津可以选择火车、汽车或飞机,每一种交通工具都有自己的班次,那么总的到达方法数就是这些班次数目的和。 乘法原理,又称为分步计数原理,当完成一件事需要分n个步骤,每个步骤有多种不同的完成...

    全国交通咨询模拟系统C++实现(课程设计报告).docx

    全国交通咨询模拟系统是一款基于C++开发的课程设计项目,旨在帮助用户规划旅程,寻找从一个城市到另一个城市的最优旅行方案。系统的核心是利用数据结构和算法解决实际问题,特别是图论中的最短路径问题。 首先,...

Global site tag (gtag.js) - Google Analytics