checi_procedure.java

来自「java做的 公交车查询系统....毕业设计」· Java 代码 · 共 451 行

JAVA
451
字号
//在checi.jsp页面中的处理
package gongjiaochexitong.gongjiaoche.checi_pkg;

import gongjiaochexitong.gongjiaoche.*;
import gongjiaochexitong.gongjiaoche.main_pkg.*;

import java.sql.*;
import java.util.Vector;

public class checi_procedure {
	
    //获取站点名
	public static String getStationName(conn_Bus db,int stationNo) throws Exception{
		String stationName=null;
		ResultSet rs;
		String sql="select stationName from stationinfo where stationNo='"
			+stationNo+"'";
		
		rs=db.exeQuery(sql);
		if(rs.next()) stationName=rs.getString("stationName");
		
		return stationName;
	}
	
	//将获取来的车次列表中的站点号换成站点名
	public static Vector stationNo2stationName(conn_Bus db,Vector cheCiList) throws Exception{
		Vector result=new Vector();    //result对象未初始化,出现"java.lang.NullPointerException"
		businfo bus=new businfo();
		String startStationName=null,endStationName=null;		
		
		for(int i=0;i<cheCiList.size();i++){
			bus = (businfo)cheCiList.get(i);
			
			checi_table checi=new checi_table();
			
			checi.setBusNo(bus.getBusNo());
			checi.setBusType(bus.getBusType());
			checi.setStartTime(bus.getStartTime());
			checi.setEndTime(bus.getEndTime());
			
			startStationName=getStationName(db,bus.getStartStation());
			endStationName=getStationName(db,bus.getEndStation());
			checi.setStartStationName(startStationName);
			checi.setEndStationName(endStationName);
						
			result.add(checi);
			
		}
		
		return result;
	}
	
	//获取某车次在上行或下行行程中最大站点序号
	public static int getMaxSeqNum(conn_Bus db,int busNo,
			String journey) throws Exception{
		int maxSeqNum=0;
		ResultSet rs;
		String sql="select max(seqNum) from course where busNo='"+busNo
		          +"' and journey='"+journey+"'";
		rs=db.exeQuery(sql);
		if(rs.next()) maxSeqNum=rs.getInt(1);
		
		return maxSeqNum;
	}
	
    //获取站点号
	public static int getStationNo(conn_Bus db,String stationName) throws Exception{
		int stationNo=0;
		ResultSet rs;
		String sql="select stationNo from stationinfo where stationName='"
			+stationName+"'";
		
		rs=db.exeQuery(sql);
		if(rs.next()) stationNo=rs.getInt("stationNo");
		
		return stationNo;
	}
	
    //查询车次号是否已经存在
	public static boolean isExist_CheCiHao(conn_Bus db,int busNo)  throws Exception{
		boolean result=false;
		ResultSet rs;
		String sql="select * from businfo where busNo='"+busNo+"'";
		rs=db.exeQuery(sql);
		if(rs.next()) result=true;
		
		return result;
	}
	
	//判断插入的站点是否已经存在(存在:true; 不存在:false)
	public static boolean isExist_ZhanDian(conn_Bus db,int busNo,
			String journey,int stationNo) throws Exception{
		boolean result=false;
		ResultSet rs;
		String sql="select * from course where busNo='"+busNo
		          +"' and stationNo='"+stationNo
		          +"' and journey='"+journey+"'";
		
		rs=db.exeQuery(sql);
		if(rs.next()) result=true;   //已经存在
		return result;
	}
	
    //使被插入站点位置及以后的站点序号加1
	public static int seqNum_Inc(conn_Bus db,int busNo,
			String journey,int seqNum) throws Exception{
		int result=0;
		String sql="update course set seqNum=seqNum+1 where busNo='"
			      +busNo+"' and journey='"+journey+"' and seqNum>='"+seqNum+"'";
		
		result=db.exeUpdate(sql);
		
		return result;
	}    
	
	//插入站点(先判断插入的位置,再获取对应的站点号,然后判断插入站点是否已存在)
	public static int insertZhanDian(conn_Bus db,int busNo,
			String stationName,String journey,int seqNum,String msg[]) throws Exception{
		int result=0;
		int stationNo=0;
		String sql=null;
		int maxSeqNum=0;
		
		if(!isExist_CheCiHao(db,busNo)){
			msg[0]="label.checi_insertedCheCiHaoNull";
			return result;
		}
		
		maxSeqNum=getMaxSeqNum(db,busNo,journey);
        //如果插入的位置远大于此行程中最大站点序号,重设为最大序号加1
		if(seqNum>maxSeqNum) seqNum=maxSeqNum+1;    
		if(seqNum<=0) seqNum=1;
		
		stationNo=getStationNo(db,stationName);
		if(stationNo!=0){
			//某些车次行程中有相同的站点,所以不必判断待插入站点已经存在
			sql="insert into course values('"+busNo+"','"+stationNo
		       +"','"+journey+"','"+seqNum+"')";
				
			seqNum_Inc(db,busNo,journey,seqNum);   //为插入移位
				
			result=db.exeUpdate(sql);
			
		}
		else{
			//插入的站点不存在,请先在zhandian.jsp中,添加此站点
			msg[0]="label.checi_insertedStationNull";
		}
		
		return result;
	}
	
    //获取此站点在行程中的序号(是在上行或上行),获取是第1个序号
	public static int getSeqNum(conn_Bus db,int busNo,
			int stationNo,String journey) throws Exception{
		int seqNum=0;
		ResultSet rs;
		String sql="select seqNum from course where busNo='"+busNo
		          +"' and stationNo='"+stationNo+"' and journey='"+journey+"' order by seqNum asc";
		
		rs=db.exeQuery(sql);
		if(rs.next()) seqNum=rs.getInt("seqNum");
		
		return seqNum;
	}
	
    //获取此站点在行程中的序号(是在上行或上行),获取是指定序号以后的序号
	public static int getSeqNum_2(conn_Bus db,int busNo,
			int stationNo,String journey,int seqNum) throws Exception{
		int seqNum_2=0;
		ResultSet rs;
		String sql="select seqNum from course where busNo='"+busNo
		          +"' and stationNo='"+stationNo+"' and journey='"+journey+"' and seqNum>'"+seqNum
		          +"' order by seqNum asc";
		
		rs=db.exeQuery(sql);
		if(rs.next()) seqNum_2=rs.getInt("seqNum");
		
		return seqNum_2;
	}
	
    //使被删除站点以后的站点序号减1
	public static int seqNum_Des(conn_Bus db,int busNo,
			String journey,int seqNum) throws Exception{
		int result=0;
		String sql="update course set seqNum=seqNum-1 where busNo='"
			      +busNo+"' and journey='"+journey+"' and seqNum>'"+seqNum+"'";
		
		result=db.exeUpdate(sql);
		
		return result;
	}
	
	//查询某车次在某行程中的个数(这项功能也就实现了验证某站点是在某个车次的行程中)
	public static int countStationInCourse(conn_Bus db,int busNo,int stationNo,
			String journey) throws Exception{
		int num=0;
		ResultSet rs;
		String sql="select count(busNo) from course where busNo='"+busNo
		          +"' and stationNo='"+stationNo+"' and journey='"+journey+"'";
		rs=db.exeQuery(sql);
		if(rs.next()) num=rs.getInt(1);
		
		return num;
	}
	
	//删除站点(其中number用于指示删除前面的还是后面的,或者说是第几个,像"美尔雅")
	public static int deleteZhanDian(conn_Bus db,int busNo,
			String stationName,String journey,int number,String msg[]) throws Exception{
		int result=0;
		int stationNo=0,seqNum=0,seqNum_2=0;
		String sql=null;
		int num=0;          //用于记录待删除站点在此行程中的个数
		
		if(!isExist_CheCiHao(db,busNo)){
			msg[0]="label.checi_deleteCheCiHaoNull";
			return result;
		}
		
		stationNo=getStationNo(db,stationName);
		System.out.println("待删除站点的站点号为 "+stationNo);
		if(stationNo==0){
			//待删除站点不在此站点列表中
			msg[0]="label.zhandian_deleteStationInListNull";
			return result;
		}
		
		num=countStationInCourse(db,busNo,stationNo,journey);
		System.out.println("待删除站点在本车次行程中出现了 "+num+"次.");
		if(num==0){
			//待删除站点不在此车次的行程中
			msg[0]="label.zhandian_deleteStationInCourseNull";
			return result;
		}
		else if(number==1){   
			//行程中只有一个时,删除站点不考虑前后位置;有两个,但number为1,说明删除的为第一个,与刚才的情况一样
			seqNum=getSeqNum(db,busNo,stationNo,journey);
			
            //!!!注意:因为sql为字符串,所以在取得stationNo值后,再连接成字符串
			sql="delete from course where busNo='"+busNo
	          +"' and stationNo='"+stationNo
	          +"' and journey='"+journey+"' and seqNum='"+seqNum+"'";
			result=db.exeUpdate(sql);   //执行删除
			
			if(result!=0) seqNum_Des(db,busNo,journey,seqNum);   //删除后移位(删除失败就不再移位)
			return result;
		}
		else if(number>1){
			seqNum=getSeqNum(db,busNo,stationNo,journey);
			System.out.println("待删除站点第1次出现在第"+seqNum+"个位置.");
			seqNum_2=getSeqNum_2(db,busNo,stationNo,journey,seqNum);
			System.out.println("待删除站点第2次出现在第"+seqNum_2+"个位置.");
			
			sql="delete from course where busNo='"+busNo
	          +"' and stationNo='"+stationNo
	          +"' and journey='"+journey+"' and seqNum='"+seqNum_2+"'";
			result=db.exeUpdate(sql);   //执行删除
			
			if(result!=0) seqNum_Des(db,busNo,journey,seqNum_2);   //删除后移位			
		}		
		
		return result;
	}
	
	//修改站点
	public static int modifyZhanDian(conn_Bus db,int busNo,
			String stationName_old,String stationName_new,String journey,String msg[]) throws Exception{
		int result=0;
		String sql=null;
		int stationNo_old=0,stationNo_new=0;
		
		if(!isExist_CheCiHao(db,busNo)){
			msg[0]="label.checi_modifiedCheCiHaoNull";
			return result;
		}
		
		stationNo_old=getStationNo(db,stationName_old);
		stationNo_new=getStationNo(db,stationName_new);
		
		if(stationNo_old==0){
			//旧站点不存在,请先确认
			msg[0]="label.checi_modifyNewStationNull";
			return result;
		}
		else if(stationNo_new==0){
			//新站点不存在,请先确认
			msg[0]="label.checi_modifyOldStationNull";
			return result;
		}
		else{
			//某车次行程中可能出现相同站点,像美尔雅,所以新更改的站点有可能与原行程的站点名相同的(有待考虑)
			
			sql="update course set stationNo='"+stationNo_new
			   +"' where busNo='"+busNo+"' and stationNo='"
			   +stationNo_old+"' and journey='"+journey+"'";
			result=db.exeUpdate(sql);
		}					
		
		return result;
	}	
	
	//增加车次
	public static int addCheCi(conn_Bus db,int busNo,String busType,Time startTime,
			Time endTime,String startStation,String endStation,String msg[]) throws Exception{
		int result=0;
		int startStationNo=0,endStationNo=0;
		String sql=null;
		
		if(isExist_CheCiHao(db,busNo)){         //车次号是否存在
		    msg[0]="label.checi_addCheCiHaoExist";			
			return result;		
		}
		
		startStationNo=getStationNo(db,startStation);
		endStationNo=getStationNo(db,endStation);
		if(startStationNo==0){         //起点不存在
			msg[0]="label.checi_addQiDianNull";			
			return result;	
		}
		if(endStationNo==0){           //终点不存在
			msg[0]="label.checi_addZhongDianNull";			
			return result;	
		}
		
		sql="insert into businfo values('"+busNo+"','"+busType+"','"
		   +startTime+"','"+endTime+"','"+startStationNo+"','"+endStationNo+"')";
		result=db.exeUpdate(sql);
		
		return result;
	}
	
	//查看某车次是否在行程中有记录
	public static boolean cheCiHasRecordInCourse(conn_Bus db,int busNo) throws Exception{
		boolean result=false;
		ResultSet rs;
		String sql="select * from course where busNo='"+busNo+"'";
		rs=db.exeQuery(sql);
		
		if(rs.next()) result=true;     //有记录,返回结果为真;
		
		return result;
	}
	
	//删除车次(先删除它在行程中信息,再删除它在车次信息中记录)
	public static int deleteCheCi(conn_Bus db,int busNo,String msg[]) throws Exception{
		int result=0;
		String sql="delete from businfo where busNo='"+busNo+"'";   //先删除车次列表中的车次信息
		String sql2="delete from course where busNo='"+busNo+"'";   //再删除行程中相关线路
		if(!isExist_CheCiHao(db,busNo)){         //车次号是否存在
		    msg[0]="label.checi_delete_checiCheCiHaoNull";			
			return result;		
		}
		
		if(cheCiHasRecordInCourse(db,busNo)) result=db.exeUpdate(sql2);
		result=db.exeUpdate(sql);				
		
		return result;
	}
	
	//增加行程
	public static int addCourse(conn_Bus db,int busNo,String stationName,
			String journey,int seqNum,String msg[]) throws Exception{
		int result=0;
		int stationNo=0;
		String sql="";
		int maxSeqNum=0;
		
		if(!isExist_CheCiHao(db,busNo)){     //车次号不存在
			msg[0]="label.checi_addCheCiHaoNull";			
			return result;
		}
		
		maxSeqNum=getMaxSeqNum(db,busNo,journey);
        //如果插入的位置远大于此行程中最大站点序号,重设为最大序号加1
		if(seqNum>maxSeqNum) seqNum=maxSeqNum+1;
		if(seqNum<=0) seqNum=1;
		
		stationNo=getStationNo(db,stationName);
		if(stationNo==0){     //添加的站点不存在
			msg[0]="label.checi_addZhanDianNull";			
			return result;			
		}
		else{
			sql="insert into course values('"+busNo+"','"
		            +stationNo+"','"+journey+"','"+seqNum+"')";
		    result=db.exeUpdate(sql);
		}		
		
		return result;
	}
	
	//删除行程
	public static int deleteCourse(conn_Bus db,int busNo,String journey,
	   String msg[]) throws Exception{
		   int result=0;
		   String sql="delete from course where busNo='"+busNo+"' and journey='"+journey+"'";
		   
		   if(!isExist_CheCiHao(db,busNo)){     //车次号不存在
				msg[0]="label.checi_delete_courseCheCiHaoNull";			
				return result;
			}
		   else if(journey.equals("up") && procedure.isJourney(db, busNo)==1){
			   //行程分上下行,但行程只有下行
			    msg[0]="label.checi_delete_courseNull";			
				return result;
		   } 
		   else{
			   result=db.exeUpdate(sql);
		   }
		   
		   return result;
	}
	
	//修改车次(零散的修改某些项,不便于操作.可以实现,但牺牲的是很多的判断.对于后台管理人员应该是可以接受的)
	public static int modifyCheCi(conn_Bus db,int busNo,String busType,Time startTime,
			Time endTime,String startStation,String endStation,String msg[]) throws Exception{
		int result=0;
		int startStationNo=0,endStationNo=0;
		String sql=null;
		
		if(!isExist_CheCiHao(db,busNo)){     //车次号不存在
			msg[0]="label.checi_modifiedCheCiHaoNull";			
			return result;
		}
		
		startStationNo=getStationNo(db,startStation);
		endStationNo=getStationNo(db,endStation);
		if(startStationNo==0){         //起点不存在
			msg[0]="label.checi_modifiedQiDianNull";			
			return result;	
		}
		if(endStationNo==0){           //终点不存在
			msg[0]="label.checi_modifiedZhongDianNull";			
			return result;	
		}		
		
		sql="update businfo set busType='"+busType+"' ,startTime='"+startTime
		   +"' ,endTime='"+endTime+"' ,startStation='"+startStationNo
		   +"',endStation='"+endStationNo+"' where busNo='"+busNo+"'";
		result=db.exeUpdate(sql);
		
		return result;
	}
	
	//显示车次号
	public static void showCheCiHao(conn_Bus db,int busNo) throws Exception{
		System.out.println("show checihao :"+busNo);
	}	

}

⌨️ 快捷键说明

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