基于文本分析的公交线路查询
来源:互联网 发布:python导出docker镜像 编辑:程序博客网 时间:2024/04/29 09:45
老师给的一个作业,针对公交路线文本进行公交路线查询处理。附数据集。
代码如下:package example;
import java.applet.Applet;
import java.awt.*;
public class client {
public static void main(String args[]){
Windows w=new Windows("公交路线查询");
}
}//class
package example;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Windows extends Frame implements ActionListener{
WordCount a=new WordCount();
TextField begin,end,line,station; Button search1,search2,search3;
TextArea result;
public Windows(String s)
{
super(s);
a.readtxt("/home/cyl/桌面/KMBusLines.txt");
setLayout(new FlowLayout(FlowLayout.CENTER));
begin = new TextField("请输入起始点", 10);
begin.setEditable(true);
end = new TextField("请输入目的地",10);
end.setEditable(true);
line=new TextField("请输入要查询的路线",60);
line.setEditable(true);
station=new TextField("请输入要查询的站点",60);
station.setEditable(true);
search1=new Button("查询路线");
search2=new Button("查询线路信息");
search3=new Button("查询站点");
result=new TextArea("",30,60);
result.setEditable(true);
add(begin);
add(end);
add(search1);
add(line);
add(search2);
add(station);
add(search3);
add(result);
setBounds(500, 0, 600, 700);
setVisible(true);
validate();
search1.addActionListener(this);
search1.setActionCommand("road");
search2.addActionListener(this);
search2.setActionCommand("line");
search3.addActionListener(this);
search3.setActionCommand("station");
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==search1){
result.setText(a.onestep(begin.getText(),end.getText()));
//System.out.println(a.onestep(begin.getText(),end.getText())+"哈哈哈哈哈哈");
}
if(e.getSource()==search2){
result.setText(a.linesearch(line.getText()));
}
if(e.getSource()==search3){
result.setText(a.stasearch(station.getText()));
}
}
}
package example;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Scanner;
public class WordCount {
static String totalText=null;//所有文本信息
static ArrayList totallines=new ArrayList(); //所有线路信息
static ArrayList totalstation =new ArrayList();//所有站点信息
/*
* 读取文本信息*/
public String readtxt(String filepath){
try {
String encoding="GB2312"; //预定义文本编码格式
File busline=new File(filepath);
if(busline.isFile()&&busline.exists()){//判断文件在否
InputStreamReader read=new InputStreamReader(new FileInputStream(busline),encoding);
BufferedReader buff=new BufferedReader(read);
String text=null;String temarray[];//临时变量
temarray =new String [50];
while((text=buff.readLine())!=null){ //遍历文本文件
totallines.add(text);//把一条路线的信息加入数组totallines
text=null;//临时变量清零
}//while
}//try
else{
System.out.println("找不到文件");}//try
}catch(Exception e){
System.out.println("出错"); //打印异常信息
}
return null;
}
/*
*路线查询*/
public String linesearch(String s){
int i=0;String result=null;
for(;i<totallines.size();i++){//遍历totallines直到找到要找的路线
String[] temp=null;
temp=( (String) totallines.get(i)).split("/");
//System.out.println(temp[0]);
if(s.equals(temp[0]))
{
System.out.println(totallines.get(i));
result=totallines.get(i).toString();
break;}
temp=null;
}//for
if (result==null)
return "没有该条线路,请重新输入";
else
return result ;
}
/*
* 统计路线数目*/
public int countline(){
return totallines.size();
}
/*
*站点查询*/
public String stasearch(String s){
int i=0;String result=null;
for(;i<totallines.size();i++){
//遍历totallines来查找站点
String temp[]=null;
temp=((String) totallines.get(i)).split("/");
for(int t=0;t<temp.length;t++){
if(s.equals(temp[t])){
System.out.println(totallines.get(i));
result=totallines.get(i).toString();
}//if
}//for t
}//for i
if (result==null)
return "没有输入的站点,请重新输入";
else
return result ;
}
/*
* 站点数统计*/
public int countsta(){
for (int i=0;i<totallines.size();i++){//遍历totallines
String temp[]=null;
temp=((String) totallines.get(i)).split("/");
//对每一条路线文本进行切割,并把站点信息存入totalstation数组
if(totalstation.size()==0){
for(int l=1;l<temp.length;l++){
totalstation.add(temp[l]);
}
i++;continue;
}//if totalstation 不为空
for(int t=1;t<temp.length;t++){
//遍历totalstation,把不存在于该数组中的新站点加进去
for(int k=0;k<totalstation.size();k++){
if(temp[t].equals( (String) totalstation.get(k))){
break;
//若有相同马上跳出循环,提高效率
}//if
if(k==totalstation.size()-1){
totalstation.add(temp[t]);}
}//for totalstation
}//for temp
temp=null;
}//for totallines
System.out.println(totalstation.size());
return totalstation.size();
//返回totalstation数组的大小即是站点的数目
}
/*
* 打印所有路线*/
public void showlines (){
for(int i=0;i<totallines.size();i++){
//遍历totalstation数组,打印所有路线信息
System.out.println(totallines.get(i));
}
}
/*
* 打印所有站点*/
public void showstations(){
this.countsta();
//写的时候没想好,把totalstation的创建写在countsta函数中了,不想改了,只好调用该函数来获得totalstation数组
for(int o=0;o<totalstation.size();o++){
//遍历totalstation并打印出来
System.out.println(totalstation.get(o));
}
}
/*
* 路线查询-不换乘*/
public String onestep(String begin,String endding){
//参数表示起始点和目的地
int key=0,result=0;String stemp=null;
for(int i=0;i<totallines.size();i++){
String temp[]=null;int tb=0,te=0;
temp=((String )totallines.get(i)).split("/");
for(int t=1;t<temp.length;t++){
if(begin.equals(temp[t])){
key++;
tb=t;
}//if begin
if(endding.equals(temp[t])){
key++;te=t;
}
if(key==2&&tb<te){
//System.out.println(stemp=totallines.get(i).toString());
stemp=totallines.get(i).toString();
System.out.println(stemp);
key=3;
result++;
break;
}
}//for temp.length
key=0;tb=0;te=0;
}//for totaolines.seze
if(result==0){
System.out.println("不能直达,需要换乘");
//this.morestep(begin, endding);
}
if(stemp==null)
return "不可直达,需要换乘";
else return stemp;
}
/*
* public static void main(String[] args) {
// TODO Auto-generated method stub
// java.util.Scanner input =new Scanner(System.in);
//String instructor=input.next();
WordCount w=new WordCount();
w.readtxt("/home/cyl/桌面/KMBusLines.txt");
// w.linesearch("25路去程(6:00-21:30江东花城-永平路)");
// System.out.println( w.countline());
//w.stasearch("太平村(金马文化村)");
// w.countsta();
// w.showlines();
//w.showstations();
//String s=w.onestep("白马","昆明站");
//System.out.println(s);
}
*/
}
- 基于文本分析的公交线路查询
- 公交线路查询
- 公交线路查询
- 公交线路查询
- 基于词意的文本分析
- 文本分析--基于gensim的文本主题模型分析
- 上海公交线路查询
- 上海公交线路查询2
- 上海公交线路查询3
- 上海公交线路查询4
- 公交线路查询应用实例
- 保定公交线路查询系统
- 百度地图 公交线路查询
- 地图API公交线路查询
- 公交线路查询接口
- 基于文本内容的网络行为分析
- 基于RNN的文本分析及预测
- 基于斯坦福CoreNLP的情感分析(文本分析)
- 理解Javascript的闭包
- C++ MFC 初始化
- tableview加索引
- Hadoop集群性能优化一
- 【MyBatis框架】订单商品数据模型-分析思路
- 基于文本分析的公交线路查询
- cordova开发入门<一>
- android Motion Sensors 传感器 陀螺仪
- IplImage和Bitmap 互相转换
- TCP的流量控制与拥塞控制
- xcode6中如何添加pch文件
- Android NDK之----- C调用Java [GetMethodID方法的使用]
- haproxy参数配置说明
- Java中Map基本认识