⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 finder.java

📁 一个专门为手机写的程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/***********************************************************************
 *
 *
 *		软件:公交路线选择软件
 *		作者:李蛟
 *		学校:浙江工业大学计本
 *		邮箱:joke_leee@163.com
 *
 *		说明:本软件是用于查询市公交路线选择的软件。
 *			  本软件在对相应文件进行修改后可用于任何类似各个城市的公交路线等的查询。
 *			  除了用于商业需经得本人同意外,你可以学习使用甚至修改。
 *			  第一次发布,难免很多的错误和不足,欢迎有兴趣的朋友批评指正,发现问
 *			  题请与本人联系,咱们可以交流交流!
 *
 *
 ***********************************************************************/

/***********************************************************************
 *
 *此文件为最外层的操作。
 *主要是用于手机的显示,接受输入,对内部数据、函数的调用
 *来完成功能
 *
 *并有一些附加类,帮助完成操作
 *
 ***********************************************************************/


import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.io.*;
import java.lang.Thread;
//import query.*;

/**********************************************
 *主类
 **********************************************/
public class Finder extends MIDlet implements CommandListener
{
	public Finder()
	{
		display=Display.getDisplay(this);
		inputStop=new List("公交站点", List.IMPLICIT);
		inputBusBox=new TextBox("输入车次号", null, 3,TextField.NUMERIC);
		inputBus=new List("车次选择", List.IMPLICIT);

		//用于inputbox
		okBusCmd=new Command("查询", Command.OK, 0);
		cancelBusCmd=new Command("取消", Command.OK,1);
		inputBusCmd=new Command("输入车次", Command.BACK,0);

		//用于外围的
		inputCmd=new Command("输入站点", Command.BACK, 0);
		startCmd=new Command("设为起点站",Command.OK,1);
		endCmd=new Command("设为目的站",Command.OK,2);
		depthCmd=new Command("最多转车数",Command.OK,3);
		queryCmd=new Command("开始搜索",Command.OK,4);
		stopCmd=new Command("站点查询", Command.OK, 5);
		busCmd=new Command("车次查询", Command.OK, 6);
		helpCmd=new Command("使用帮助",Command.OK,7);
		inputHelpCmd=new Command("输入法",Command.OK,8);
		aboutCmd=new Command("关于本软件",Command.OK,9);
		exitCmd=new Command("退出",Command.HELP,3);
		
		okCmdInput=new Command("确定", Command.OK, 0);
		cancelCmdInput=new Command("取消", Command.CANCEL, 0);

		inputStop.addCommand(inputCmd);			
		inputStop.addCommand(startCmd);
		inputStop.addCommand(endCmd);
		inputStop.addCommand(queryCmd);
		inputStop.addCommand(depthCmd);
		inputStop.addCommand(stopCmd);
		inputStop.addCommand(busCmd);
		inputStop.addCommand(helpCmd);
		inputStop.addCommand(inputHelpCmd);
		inputStop.addCommand(aboutCmd);
		inputStop.addCommand(exitCmd);
		
		inputBusBox.addCommand(okBusCmd);
		inputBusBox.addCommand(cancelBusCmd);
		
		inputBus.addCommand(okBusCmd);
		inputBus.addCommand(cancelBusCmd);
		inputBus.addCommand(inputBusCmd);
		
		setCurrent(inputStop);
		query=new Query();
	}
	
	public void startApp()
	{
		new About(this, "帮助", Strings.help);
		//display.setCurrent(new Alert("提示","按(输入站点)模糊查找站点。", null, AlertType.ERROR));
		
		literalInput=new LiteralInput();
		literalInput.addCommand(okCmdInput);
		literalInput.addCommand(cancelCmdInput);
		addStopName();
	}
	public void pauseApp(){}
	public void destroyApp(boolean conditional){}
	public void setCurrent()
	{
		m_currDisplay.setCommandListener(this);
		display.setCurrent(m_currDisplay);
	}
	public void setCurrent(Displayable d)
	{
		m_currDisplay=d;
		m_currDisplay.setCommandListener(this);
		display.setCurrent(m_currDisplay);
	}
	public void commandAction(Command c,Displayable d)
	{
		if((c==List.SELECT_COMMAND || c==stopCmd) && d==inputStop)
		{
			//query.createStopAndBus();
			setCurrent(inputBus);
			display.setCurrent(new Alert("显示", "经过此站的车次", null, AlertType.INFO));
			addBuss(inputStop.getString(inputStop.getSelectedIndex()));
		}else  if(c==inputCmd)
		{
			setCurrent(literalInput);
		}else if(c==startCmd)
		{
			setStartStop();
			//System.out.println("start");
			//String info=inputStop.getString(inputStop.getSelectedIndex());
			//display.setCurrent(new Alert("出发站点", info, null, AlertType.INFO));
			//info=null;
		}else if(c==endCmd)
		{
			setEndStop();
			//System.out.println("end");
			//String info=inputStop.getString(inputStop.getSelectedIndex());
			//display.setCurrent(new Alert("目的站点", info, null, AlertType.INFO));
			//info=null;

		}else if(c==depthCmd)
		{
			new SetDepth(this);	
		}else if(c==queryCmd)
		{
			display.setCurrent(new Alert("提示", "开始查询!\n请等待...", null, AlertType.INFO));
			query.createStopAndBus();
			System.gc();
			gotoRouteSee(query.isFinded());
		}else if(c==busCmd)
		{
			if(inputBus.size()<=0)
				setCurrent(inputBusBox);
			else 
				setCurrent(inputBus);
		}else if(c==exitCmd)
		{
			destroyApp(false);
			notifyDestroyed();
		}else if(c==aboutCmd)
		{ 
			new About(this, "关于本软件", Strings.about);
		}else if(c==helpCmd)
		{
			new About(this, "帮助", Strings.help);
		}else if(c==inputHelpCmd)
		{
			new About(this, "关于输入法", Strings.input);
		}else if(c==okCmdInput)
		{
			String input=literalInput.getOutputString();
			if(input==null)
			{
				display.setCurrent(new Alert("错误", "未输入任何字符", null, AlertType.ERROR));
			}else
			{
				query.searchStopName(input, inputStop);
				//addStopName();
				setCurrent(inputStop);
				input=null;
			}
		}else if(c==cancelCmdInput)
		{
			setCurrent(inputStop);
		}//下面是用于bus查询的
		else if(c==inputBusCmd && d==inputBus)
		{
			setCurrent(inputBusBox);
		}else if(c==okBusCmd && d==inputBusBox)
		{
			String busInput=inputBusBox.getString();
			setCurrent(inputBus);
			addBus(busInput);
			busInput=null;
		}else if((c==okBusCmd || c==List.SELECT_COMMAND) && d==inputBus)
		{
			if(inputBus.size()<=0) return;
			String bus=inputBus.getString(inputBus.getSelectedIndex());
			setCurrent(inputStop);
			addStops(bus);
			display.setCurrent(new Alert("显示", "所经过的站点", null, AlertType.INFO));
			bus=null;
		}else if(c==cancelBusCmd && d==inputBusBox)
		{
			setCurrent(inputBus);
		}else if(c==cancelBusCmd && d==inputBus)
		{
			setCurrent(inputStop);
		}
		
	}

	//在stops中加入站点名称
	private void addStopName()
	{
		new AddStops(this).start();
	}
	
	private void gotoRouteSee(boolean found)
	{
		new RouteSee(this);
	}

	//向inputBus中加入站点上的bus
	private void addBuss(final String stop)
	{
		int number=query.getStopIDFromName(stop);
		if(number<0 || number>=query.getStopNum()) return;
		int num=inputBus.size();
		for(int i=0; i<num; ++i) inputBus.delete(0);
		//某条路线的长度
		num=query.m_stopList.getBusNumOnStop(number);
		int busID;
		for(int i=0; i<num; ++i)
		{
			busID=query.m_stopList.getBusIDOnStop(number, i);
			inputBus.append(query.getBusName(busID),null);
		}
	}

	//根据输入的号码,向inputBus中加入车次名
	private void addBus(String busInput)
	{
		int num=inputBus.size();
		for(int i=0; i<num; ++i) inputBus.delete(0);
		if(busInput.length()<=0) return;
		
		query.searchBusName(busInput, inputBus);
		if(inputBus.size()<=0)
		{	
			display.setCurrent(new Alert("错误", "没有符合条件的答案", null, AlertType.ERROR));
		}
	}
	
	//根据选择的bus,来加入相应的站点名
	private void addStops(final String bus)
	{
		int num=inputStop.size();
		for(int i=0; i<num; ++i) inputStop.delete(0);

		int busID=query.getBusIdFromName(bus);
		//某条路线的长度
		num=query.m_busList.getStopNumOnBus(busID);
		int stopID;
		for(int i=0; i<num; ++i)
		{
			stopID=query.m_busList.getStopIDOnBus(busID, i);
			inputStop.append(query.getStopName(stopID), null);
		}
	}
	/*public String getFileString(String filename)
	{
		try{
			DataInputStream	file=new DataInputStream(getClass().getResourceAsStream("help.txt"));
			int num=file.available()/2;
			System.out.println(num);
			char []str=new char[num];
			for(int i=0; i<num; i++)
				str[i]=file.readChar();
			String string=new String(str, 1, 9);
			str=null;
			file.close();
			return string;
		}catch(Exception e){}
		return null;
	}*/
	public void setDepth(int i){query.setDepth(i);}
	public int 	getDepth(){return query.getDepth();}
	public void setStartStop(int i){query.setStartStop(i);}
	public void setStartStop()
	{
		if(inputStop.size()<=0) return;
		query.setStartStop(inputStop.getString(inputStop.getSelectedIndex()));
	}
	public int 	getStartStop(){return (int)(query.getStartStop());}
	
	public void setEndStop(int i){query.setEndStop(i);}
	public void setEndStop()
	{
		if(inputStop.size()<=0) return;
		query.setEndStop(inputStop.getString(inputStop.getSelectedIndex()));
	}
	public int 	getEndStop(){return (int)(query.getEndStop());}
//############ATTRIBUTE @1##################
	//用于存放结果
	private String []routeRst=new String[5];
	Query query=null;

	Display display=null;
	private Displayable m_currDisplay=null;
	LiteralInput literalInput;
	private Command aboutCmd,exitCmd,depthCmd,startCmd,endCmd,queryCmd, stopCmd;
	private Command busCmd,helpCmd,inputCmd,okCmdInput,cancelCmdInput,inputHelpCmd;
	List inputStop;
	
	//用于bus查询
	List inputBus;
	TextBox inputBusBox;//用于输入bus号码,来查询
	Command okBusCmd, cancelBusCmd,inputBusCmd;
	String stops=null,bus;
}

///////////////////////////////////////////////////////////////////////////////////


/**********************************************
 *查看所的的路线
 **********************************************/
class RouteSee implements CommandListener
{
	public RouteSee(Finder own)
	{
		this.owner=own;
		
		text=new Form("可达路线");
		next=new Command("下一条", Command.OK, 0);
		last=new Command("上一条", Command.OK, 1);
		exit=new Command("退出", Command.HELP, 1);

		text.addCommand(next);
		text.addCommand(last);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -