1、秦皇岛公交信息查询系统单机测试平台/BusSystem.java /秦皇岛公交信息查询系统单机测试平台/用于以窗口形式输入查询站点,输出乘车方案import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.TitledBorder;public class BusSystem extends JFrame implements ActionListener private JTextField jtfBeginSta=new JTextField(10); private JTe
2、xtField jtfEndSta=new JTextField(10); private JTextArea jtaResult; private JButton jbtQuery=new JButton(查询); public BusSystem() /jtfBeginSta.setHorizontalAlignment(JTextField.RIGHT); /jtfEndSta.setHorizontalAlignment(JTextField.RIGHT); JScrollPane scrollPane=new JScrollPane(jtaResult=new JTextArea()
3、; jtaResult.setEditable(false); JPanel p1=new JPanel(); p1.setLayout(new GridLayout(2,3); p1.add( new Label( 起点车站); p1.add( jtfBeginSta); p1.add( new Label( 终点车站); p1.add( jtfEndSta); JPanel p3=new JPanel(); p3.setLayout(new BorderLayout(2,1); p3.add( new Label(查询结果),BorderLayout.NORTH); p3.add( scr
4、ollPane,BorderLayout.CENTER ); p1.setBorder(new TitledBorder( ); JPanel p2=new JPanel(); p2.setLayout( new FlowLayout(FlowLayout.RIGHT); p2.add( jbtQuery ); getContentPane().add(p1,BorderLayout.NORTH); getContentPane().add(p2,BorderLayout.SOUTH); getContentPane().add(p3,BorderLayout.CENTER); jbtQuer
5、y.addActionListener(this); public static void main(String args) BusSystem frame=new BusSystem(); frame.setTitle(秦皇岛公交信息查询系统); frame.setSize(300,500); frame.setVisible(true); public void actionPerformed(ActionEvent e) if(e.getSource ()=jbtQuery ) String beginSta=jtfBeginSta.getText(); String endSta=j
6、tfEndSta.getText(); String resultQuery; boolean isFinded; Finding_way myFind=new Finding_way(); myFind.createFindWay( beginSta,endSta ); isFinded=myFind. find_bestway (); if(isFinded) resultQuery=myFind.output(); / System.out.println(myFind.output(); else resultQuery=对不起,未找到可行方案!n; jtaResult.setText
7、(resultQuery); /Finding_way.java/该类用来计算乘车方案。import .URL;import java.sql.*;public class Finding_way private Beg_end_sta inputstation;/起始站点 private Path bestpath;/20个乘车方案 private boolean isfinding;/是否找到可行的乘车方案 private int pathTotal; private int errState=0;/1 表示没有直达方案 2表示起点站与终点站为同一站点 /3 表示间接查询中,起点站不存在
8、5该车次无车站 /6 倒一次车的中间站点不存在 public Finding_way() public Finding_way( Beg_end_sta inputstation,Path bestpath, boolean isfinding ) this.inputstation=inputstation; this.bestpath=bestpath; this.isfinding=isfinding; public Finding_way ( Beg_end_sta inputstation ) this.inputstation=inputstation; public void c
9、reateFindWay(Beg_end_sta inputstation) this.inputstation=new Beg_end_sta(); this.inputstation=inputstation; this.bestpath=new Path20; public void createFindWay(Station begining,Station ending ) inputstation=new Beg_end_sta(); inputstation.set_be_sta( begining , ending ); bestpath=new Path20; for ( i
10、nt i=0; i20; i+) bestpathi=new Path(); public void createFindWay(String begining,String ending ) inputstation=new Beg_end_sta(); inputstation.set_be_sta( new Station(begining) , new Station (ending) ); bestpath=new Path20; for ( int i=0; i20; i+) bestpathi=new Path(); public void setinputstation (Be
11、g_end_sta inputstation ) this.inputstation=inputstation; public Beg_end_sta getinputstation( ) return inputstation; public void setbestpath(Path bestpath ) this.bestpath=bestpath; public Path getbestpath() return bestpath; public void setisfinding( boolean isfinding ) this.isfinding=isfinding; /给出不倒
12、车直接到达的方案 public boolean direct_find() int i=0; int resBegSeq,resEndSeq; int resBegSeqShadow,resEndSeqShadow; int distance;/起点站到终点站所经过的车站数 String resBusNo=new String 20; String begining,ending; String queryBusNo,queryBegSeq,queryEndSeq,queryPassSta; String queryPath; /String busNo; begining=inputstat
13、ion.getBegName(); ending=inputstation.getEndName(); if(begining=ending) /System.out.println(起点和终点是同一站点); errState=2; /起点和终点是同一站点 return false; queryBusNo=SELECT bus_no FROM bus_table WHERE station_name= + begining + AND bus_no In ( SELECT bus_no FROM bus_table WHERE station_name= + ending +); try Cl
14、ass.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection con=DriverManager.getConnection(jdbc:odbc:bus); Statement stmt; stmt=con.createStatement(); ResultSet resultBusNo ,resultBegSeq,resultEndSeq,resultPassSta; resultBusNo=stmt.executeQuery( queryBusNo ); /System.out.println(resultBusNo); /找到从起点直达终点的
15、一系列公交车次 /System.out.println(resultBusNo); /* if (resultBusNo)/找到合适的函数来检查是否有有效数据! System.out.println(无可行方案 ); errState=1; return false; */ if( !resultBusNo.next() ) errState=1; /System.out.println(resBusNo0+dd); return false; else resBusNoi=resultBusNo.getString(1); bestpathi.addSegment( resBusNoi );
16、 i+; while( resultBusNo.next() & i20 ) resBusNoi=resultBusNo.getString(1); bestpathi.addSegment( resBusNoi ); /System.out.print(s+resBusNoi+f ); i+; pathTotal=i; resultBusNo.close(); /System.out.println( ); /System.out.println( ); /找到各公交车次中从起点车站到终点车站在整条公交线路中所经过的车站 /System.out.println( i=+i); for(int
17、 j=0;j0) queryPath= ; else queryPath= DESC ; /System.out.println(queryPath); queryPath=SELECT station_name FROM bus_table WHERE bus_no=+resBusNoj+ AND station_sequence BETWEEN +resBegSeq+ AND +resEndSeq+ ORDER BY station_sequence +queryPath; /System.out.println(queryPath); resultPassSta=stmt.execute
18、Query(queryPath); /ResultSetMetaData rsmd=resultPassSta.getMetaData(); /int numCols=rsmd.getColumnCount(); /System.out.print( 乘车路线: +resBusNoj+路车方案 ); String busStation; int q=0; while(resultPassSta.next() busStation=resultPassSta.getString(1); / System.out.print( busStation+ ); bestpathj.setPassSeg
19、ment( busStation,q,0); /System.out.print( ); q+; /resEndSeq=resultEndSeq.getInt(station_sequence); /System.out.println(resEndSeq); resultPassSta.close(); /System.out.println(); /System.out.println(); /System.out.println( ); / System.out.println(Create successfully!); /resultBegSeq.close(); /resultEn
20、dSeq.close(); stmt.close(); con.close(); catch(SQLException ex) System.out.println(n*SQLException Caught *n); while(ex!=null) System.out.println( SQLState: +ex.getSQLState() ); System.out.println( Message: +ex.getMessage() ); System.out.println(Vendor: +ex.getErrorCode(); ex=ex.getNextException(); S
21、ystem.out.println( ); catch(java.lang.Exception ex ) ex.printStackTrace(); return true; /给出倒一次车的,间接到达方案 public boolean indirect_find() String begining=inputstation.getBegName(); String ending=inputstation.getEndName(); String queBegBusNo=SELECT bus_no FROM bus_table WHERE station_name=+begining+; St
22、ring queEndBusNo=SELECT bus_no FROM bus_table WHERE station_name=+ending+; String begBusNo=new String 20; String endBusNo=new String 20; String midBusSta=new String 20; int i=0,j=0; /System.out.println(queBegBusNo); try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection con=DriverManager.getCon
23、nection(jdbc:odbc:bus); Statement stmt; stmt=con.createStatement(); ResultSet resultBegBusNo,resultEndBusNo; /经过起始站点的线路名称 resultBegBusNo=stmt.executeQuery( queBegBusNo ); if( !resultBegBusNo.next() ) /System.out.println(resBusNo0+dd); /间接查询中,起点站不存在,为错误三 errState=3; return false; else begBusNoi=resul
24、tBegBusNo.getString(1); /System.out.print(begBusNoi+ ); i+; while( resultBegBusNo.next() & i20 ) begBusNoi=resultBegBusNo.getString(1); /System.out.print(begBusNoi+ ); i+; resultBegBusNo.close(); /System.out.println(beging and end); resultEndBusNo=stmt.executeQuery( queEndBusNo ); if( !resultEndBusN
25、o.next() ) /间接查询中,终点站不存在,为错误三 errState=3; return false; else endBusNoj=resultEndBusNo.getString(1); / System.out.print(endBusNoj+ ); j+; while( resultEndBusNo.next() & i20 ) endBusNoj=resultEndBusNo.getString(1); /System.out.print(endBusNoj+ ); j+; resultEndBusNo.close(); /System.out.println(bus station); int q=0,l=0,k=0; /ResultSet resultBegBusNo,resultEndBusNo; String passBegSta=new String 40; String passEndSta=new String 40; String quePassBegSta, quePassEndSta; /System.out.println(i+bus station+j); for(int n=0; ni; n+) for(int m=0; mj; m+) /查找起点站可以到
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1