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 + -
显示快捷键?