📄 公交查询系统界面.java
字号:
if(data1[i3] != 0) tjh(" 第 " + String.valueOf(data1[i3]*3-1) + " 车经过" + zd1 + "站"); //i3 只是临时定义
break;
}
if(i==2)break;
}
if(zhan.equals(zd2)){ //经过目的站点车次保存在data2中
i = i + 1;
data2[0] = rs.getInt(3);
data2[1] = rs.getInt(4);
data2[2] = rs.getInt(5);
data2[3] = rs.getInt(6);
data2[4] = rs.getInt(7);
data2[5] = rs.getInt(8);
data2[6] = rs.getInt(9);
data2[7] = rs.getInt(10);
if(i==2)break;
}
}
/*if(zd1.equals(zd2)){
for(int i3 =0;i3<8;i3++){
if(data1[i3] != 0) {tjh(" 第 " + String.valueOf(data1[i3]*3-1) + " 车经过" + zd1 + "站"); //i3 只是临时定义
data1[i3] = 0;}
else break;
}
break;
} */
// rs.close();
// 比较数组中是否有相同数据,有的话就是有直通车次,调用相应函数zhitong()
if(!zd1.equals(zd2)){ int a1 = zhitong(data1,data2,1,zd1,zd2);
if (a1 == 0){ // 没有直通车次调用中转站函数zhongzhuan()
zhongzhuan(data1,data2);
jLabel6.setText(" 没有直通车 ");
}
}} catch (SQLException ex) {
ex.printStackTrace();
}
}
public int zhitong(int[] data1,int[] data2,int xz,String zdian1,String zdian2){ //也是数组比较算法
int ii = 0,jj = 0; //局部变量后面有用
int a = data1[0];
int b = data2[0];
int bl = 0;
String zdm = null;
//int aa = Integer.parseInt(a);
if(xz == 1){
while(a != 0 && b != 0&&ii <= data1.length && jj <= data2.length ){ //优化
if(a>b)jj++;
else if(a<b)ii++;
else{
ii++;
jj++;
String bi =" 从 <" + zdian1 + "> 到 <" + zdian2 + "> 您可乘 " + String.valueOf(a*3 - 1) + " 路车" ;
//a*3-1是因为数据库特殊,通常要重新读取数据库表che然后找到相应车次号,a只是一个无意义编号
tjh(bi);
bl = 1; //用于标识有没有直达车
}
a = data1[ii];
b = data2[jj];
if (a == 0 || b == 0) break; //优化
}
}
if(xz == 0){
while(ii <= data1.length && jj <= data2.length){
if(a>b)jj++;
else if(a<b)ii++;
else {
ii++;
jj++;
if(a != 0 && b != 0){
try {
ResultSet rs2 = getResult("select * from zhan");
while (rs2.next()){ //搜索站点名
int kk = rs2.getInt(1);
if(a == kk){
zdm = rs2.getString(2);
tjh(" 从 " + zdian1 + " 到 " + zdian2 + " 没有直达车您可以选择<" + zdm + ">为中转站,路线方案如下" );
zdcx(zdian1,zdm);
zdcx(zdm,zdian2);
}
}
rs2.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
a = data1[ii];
b = data2[jj];
}
}
return bl;
}
public void zhongzhuan(int[] data1,int[] data2){
int [] data3 = new int[100];
int [] data4 = new int[100];
int j = 0,k = 0;
try {
ResultSet rs3 = getResult("select * from 代码表");
for(int i = 0;i < data1.length;i++) { //将经过起始站点车次的对应的所有站点保存下来
int i1 = data1[i];
while(i1 != 0 && rs3.next()){
int i3 = rs3.getInt(1);
if(i1 == i3){
data3[j] = rs3.getInt(3);j++;
data3[j] = rs3.getInt(4);j++;
data3[j] = rs3.getInt(5);j++;
data3[j] = rs3.getInt(6);j++;
data3[j] = rs3.getInt(7);j++;
data3[j] = rs3.getInt(8);j++;
data3[j] = rs3.getInt(9);j++;
data3[j] = rs3.getInt(10);j++;
data3[j] = rs3.getInt(11);j++;
data3[j] = rs3.getInt(12);j++;
data3[j] = rs3.getInt(13);j++;
break;
}
}
}
rs3.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
try {
ResultSet rs4 = getResult("select * from 代码表");
for(int i = 0;i < data2.length;i++) {//将经过目的站点车次的对应的所有站点保存下来
int i1 = data2[i];
while(i1 != 0 && rs4.next()){
int i3 = rs4.getInt(1);
if(i1 == i3){
data4[k] = rs4.getInt(3);k++;
data4[k] = rs4.getInt(4);k++;
data4[k] = rs4.getInt(5);k++;
data4[k] = rs4.getInt(6);k++;
data4[k] = rs4.getInt(7);k++;
data4[k] = rs4.getInt(8);k++;
data4[k] = rs4.getInt(9);k++;
data4[k] = rs4.getInt(10);k++;
data4[k] = rs4.getInt(11);k++;
data4[k] = rs4.getInt(12);k++;
data4[k] = rs4.getInt(13);k++;
break;
}
}
}
rs4.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
// 对data3 与 data4进行排序与比较找出相同的编号
maopao(data3);
maopao(data4);
zhitong(data3,data4,0,jComboBox1.getSelectedItem().toString(),jComboBox2.getSelectedItem().toString());
//输出建议搭乘的中转站,最好给出具体搭车路线,在zhitong()里实现;
}
public void maopao(int [] paixu){ //冒泡排序算法
int temp;
//int i;
// for (i = 0; i<paixu.length; i++) if (paixu[i] == 0) break;//获取数组的非零元素个数
for(int m=0;m<paixu.length;m++)
for(int j=0;j<paixu.length-1;j++){
//if (paixu[j+1] == 0) break; //如果有0的数据则跳出本次for循环
if(paixu[j]>paixu[j+1]) {
temp=paixu[j];
paixu[j]=paixu[j+1];
paixu[j+1]=temp;
}
}
}
public void tjh(String zt){ //jtable添加行
DefaultTableModel myModel=((DefaultTableModel)jTable3.getModel());
Vector newRow=new Vector();
int columnNum=myModel.getColumnCount();
for(int i=0;i<=columnNum;i++)
{
newRow.add(zt);
}
myModel.getDataVector().add(newRow);
myModel.fireTableStructureChanged();
}
public void scb(){ //jtable 删除行
DefaultTableModel myModel=(DefaultTableModel)jTable3.getModel();
int rowNum=myModel.getRowCount();
while(rowNum>0)
myModel.removeRow(rowNum-rowNum);
}
// 变量声明 - 不进行修改//GEN-BEGIN:variables
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JComboBox jComboBox1;
private javax.swing.JComboBox jComboBox2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JScrollPane jScrollPane4;
private javax.swing.JScrollPane jScrollPane5;
private javax.swing.JSplitPane jSplitPane1;
private javax.swing.JSplitPane jSplitPane4;
private javax.swing.JTabbedPane jTabbedPane2;
private javax.swing.JTable jTable1;
private javax.swing.JTable jTable2;
private javax.swing.JTable jTable3;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
// 变量声明结束//GEN-END:variables
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -