Java课程设计开发项目 火车运营管理系统

先看一下题目:
1、一列火车在 WA——WB之间行驶,两地相距 110公里,之间还有等距的 10 个站点,如下:
WA-W1-W2-W3-W4-W5-W6-W7-W8-W9-W10-WB 当火车到达 WB 时反向行驶(即返航) ,当到达 WA 后火车还会正向行驶;
2、火车匀速行驶 60 公里/小时;
3、系统在每 30 分钟在下面站点(一次循环示例)施行交通管制:
在这里插入图片描述

4、运营时间 7:30 至 21:30,21:30 之后乘客均下车;
5、乘客上下车不计算耗时;
6、乘客任何时刻均可候车;
7、火车最多乘客数为 20 人[CK01,CK20],编号可以超出 CK20 范围;
8、火车乘客计费: 起车价 10 元(包括 10 公里起步里程);超出起步里程每公里 1.5 元;停车等候每累 计 5 分钟加收 1 公里费用;

我们就先把运营时间表写出来,然后存储到一个类中去
第一个类LXT:


public class LXT {
    public  String zdqd;  //站点起点
    public String zdzd; //终点站点
    public String qssj;  //起始时间
    public String zzsj;  //终止时间
    public int tlsj; //停留时间
    public int cd;
    public LXT(){
        zdqd="";
        zdzd="";
        qssj="";
        zzsj="";
        tlsj=0;
        cd=0;
    }

    @Override
    public String toString() {
        return "LXT{" +
                "zdqd='" + zdqd + '\'' +
                ", zdzd='" + zdzd + '\'' +
                ", qssj='" + qssj + '\'' +
                ", zzsj='" + zzsj + '\'' +
                ", tlsj=" + tlsj +
                ", cd=" + cd +
                '}';
    }
}

然后创建类LXTTABLE ,存储各个时间段。

public class  LXTTable {
    public static LXT[] lxt=new LXT[79];
    public static String[] zd=new String[12];
   public static String zzsj(String qssj){
        String[] ss=qssj.split(":");
        String tt;
        if(Integer.parseInt(ss[1])+10==60){
            if(Integer.parseInt(ss[0])+1>9)
                tt=(Integer.parseInt(ss[0])+1) +":00";
            else
                tt="0"+(Integer.parseInt(ss[0])+1)+":00";
        }
        else
            tt=ss[0]+":"+(Integer.parseInt(ss[1])+10);

          return tt;
    }
    static {
        String sj="07:30";
        zd[0]="WA";
        for(int i=1;i<=10;i++){
            zd[i]="W"+i;
        }
        zd[11]="WB";
        for(int h=0;h<lxt.length;h++){     //开始注册lxt ,即时间表
            if(h<=10||(h>=22&&h<=32)||(h>=44&&h<=54)||(h>=66&&h<=76))
            {
                lxt[h]=new LXT();
                lxt[h].cd=10;
                lxt[h].zdqd=zd[h%11];
                lxt[h].zdzd=zd[h%11+1];
                lxt[h].tlsj=0;
                lxt[h].qssj=sj;
                if(h==66){
                    lxt[h].qssj="19:10";
                    lxt[h].tlsj=10;
                }
                if(h==68){
                    lxt[h].qssj="19:40";
                    lxt[h].tlsj=10;
                }
                lxt[h].zzsj=zzsj(lxt[h].qssj);
                sj=lxt[h].zzsj;
            }
            if(h>=11&&h<=21||(h>=33&&h<=43)||(h>=55&&h<=65)||(h>=77&&h<=78)){
                lxt[h]=new LXT();
                lxt[h].cd=10;
                lxt[h].zdqd=zd[11-h%11];
                lxt[h].zdzd=zd[11-(h%11+1)];
                lxt[h].qssj=sj;
                lxt[h].tlsj=0;
                if(h==33){
                    lxt[h].qssj="13:10";
                    lxt[h].tlsj=10;
                }
                if(h==41){
                    lxt[h].qssj="14:40";
                    lxt[h].tlsj=10;
                }
                if(h==58){
                    lxt[h].qssj="17:40";
                    lxt[h].tlsj=10;
                }
                lxt[h].zzsj=zzsj(lxt[h].qssj);
                sj=lxt[h].zzsj;
            }
        }
    }
}

然后创建乘客类:

public class CK {
    private  String ckbh="";//乘客编号
    private String qszd="";//起始站点
    private String zzzd="";//终止站点
    private String hcsk="";//候车时间
    private double fy=0;//费用
    private int cfzdxb=0; //出发站点下标

    public double getFy() {
        return fy;
    }

    public void setFy(double fy) {
        this.fy = fy;
    }

    public int getCfzdxb() {
        return cfzdxb;
    }

    public void setCfzdxb(int cfzdxb) {
        this.cfzdxb = cfzdxb;
    }

    public int getMdzdxb() {
        return mdzdxb;
    }

    public void setMdzdxb(int mdzdxb) {
        this.mdzdxb = mdzdxb;
    }

    public int getTlsj() {
        return tlsj;
    }

    public void setTlsj(int tlsj) {
        this.tlsj = tlsj;
    }

    int mdzdxb=0;//目的站点下标
    int tlsj=0;   //停留时间
    public void setCkbh(String ckbh) {
        this.ckbh = ckbh;
    }

    public void setQszd(String qszd) {
        this.qszd = qszd;
    }

    public void setZzzd(String zzzd) {
        this.zzzd = zzzd;
    }

    public void setHcsk(String hcsk) {
        this.hcsk = hcsk;
    }
      public CK(){
       }
    public String getCkbh() {
        return ckbh;
    }

    public String getQszd() {
        return qszd;
    }

    public String getZzzd() {
        return zzzd;
    }

    public String getHcsk() {
        return hcsk;
    }

    public  CK(String bh){
        this.ckbh=bh;
        this.fy=0;
        this.tlsj=0;
    }

    @Override
    public String toString() {
        return "CK{" +
                "ckbh='" + ckbh + '\'' +
                ", qszd='" + qszd + '\'' +
                ", zzzd='" + zzzd + '\'' +
                ", hcsk='" + hcsk + '\'' +
                ", fy=" + fy +
                ", cfzdxb=" + cfzdxb +
                ", mdzdxb=" + mdzdxb +
                ", tlsj=" + tlsj +
                '}';
    }
    public void jstlsj(){    //计算停留时间
        int s=0;
        for(int i=cfzdxb;i<mdzdxb;i++){
            s=s+LXTTable.lxt[i].tlsj;
            tlsj=s;
        }
    }
    public void jsfy(){  //计算费用
        if(this.mdzdxb-this.cfzdxb>=1) {
            this.fy = ((this.mdzdxb - this.cfzdxb )*10 + (this.tlsj / 5)) * 1.5 + 10;
            HC.hcfy += fy;
        }
        else {
            this.fy=10 + (this.tlsj/5)*1.5;
            HC.hcfy+=this.fy;
        }
    }
}

然后创建火车类:

import java.util.ArrayList;
import java.util.List;

public class HC {
    public  static String CurrentTime="07:30";  //当前时间
    static double hcfy=0;//费用
    static  int timeindex=0; //用来给current Time赋值的
    public  static List<CK> ck=new ArrayList<CK>();      //乘客
    public  static List<CK> hcck=new ArrayList<CK>();    //候车乘客
    public  static List<CK> xcck=new ArrayList<CK>();  //下车乘客
    public  static void   Init(){
        HC.CurrentTime="07:30";
        HC.hcfy=0;
        HC.timeindex=0;
        ck.clear();
        hcck.clear();
        xcck.clear();
    }
    public static boolean pdsfncc(CK ck){  //判断是否能上车
        int qi=-1,zi=-1;
        int Flag=0;
        for(int i=0;i<79;i++){
            if(qi==-1&&LXTTable.lxt[i].zdqd.equals(ck.getQszd())) {    //从时间表里面找起始站点,这里是起始站点相同的时候
                qi = i;
                for (int k = i; k < 79; k++){
                    if(zi==-1&&LXTTable.lxt[k].zdzd.equals(ck.getZzzd())){
                        zi=k;
                        if(ck.getHcsk().compareTo(LXTTable.lxt[qi].qssj)<=0&&(HC.CurrentTime.compareTo(LXTTable.lxt[qi].qssj)<=0))    //候车时刻要比起始时刻小的时候才取这个值
                        {
                            ck.setCfzdxb(qi);
                            ck.setMdzdxb(zi);
                            ck.jstlsj();   //计算好停留时间
                            ck.jsfy();     //计算费用
                            Flag=1;
                            break;
                        }
                        else
                        {
                            i=qi+1;
                            qi=-1;
                            zi=-1;
                            break;
                        }
                    }
                }
                if(Flag==1) return true;
            }
        }
        return false;
    }
    public static void AddHCCK(CK x){
        HC.hcck.add(x);
        if((HC.CurrentTime.compareTo("07:30"))>=0&&(HC.CurrentTime.compareTo("21:30")<=0)) {    //把候车乘客到时间的转换为上车乘客
            for (int i = 0; i < HC.hcck.size(); i++) {
                if (ck.size() < 20) {
                    CK temp = HC.hcck.get(i);
                    if (temp.getCfzdxb()==HC.timeindex) { //也就是站点刚好相等,起始时间和当前时间相等
                        ck.add(temp);
                        System.out.println(temp.getCkbh() + "上车");
                        System.out.println();
                        HC.hcck.remove(i);
                    }
                } else {
                    System.out.println("火车已满!");
                    break;
                }
            }
        }

        for(int i=0;i<ck.size();i++){  //检测能下车的乘客
            CK temp=(ck.get(i));
            if(temp.getMdzdxb()==HC.timeindex){   //这里就在检测下车乘客,就是你每次添加候车乘客的
                System.out.println(temp.getCkbh()+"下车");
                HC.xcck.add(temp);
                ck.set(i,null);
            }
        }
        for(int i=0;i<ck.size();i++)//在乘客列表里面删除下车乘客
        {
            if(ck.get(i)==null){
                ck.remove(i);
            }
        }
    }
   public static void CXZD(String name){   //查询账单

       if(xcck.size()==0){
           System.out.println(name+"没有账单");
       }
       for(int index=0;index<xcck.size();index++) {
           CK ck1=xcck.get(index);
           if(ck1.getCkbh().equals(name)){
               System.out.println("系统当前时间:" +CurrentTime);
               System.out.println("乘客编号:"+name);
               System.out.println("上车站点:"+ck1.getQszd());
               System.out.println("下车站点:"+ck1.getZzzd());
               System.out.println("候车时刻:"+ck1.getHcsk());
               System.out.println("上车时刻:"+LXTTable.lxt[ck1.getCfzdxb()].qssj);
               System.out.println("下车时刻:"+LXTTable.lxt[ck1.getMdzdxb()].zzsj);
               System.out.println("乘车里程:"+(ck1.getMdzdxb()-ck1.getCfzdxb()+1)*10);
               System.out.println("停车等待时间:"+ck1.getTlsj());
               System.out.println("金额(乘车发生的费用):"+ck1.getFy());
           }
       }
   }
   public static void HCZT(){
       System.out.println("系统当前时间:" +CurrentTime);
       System.out.println("当前位置:"+LXTTable.lxt[timeindex].zdqd+"--"+LXTTable.lxt[timeindex].zdzd);
       if(timeindex==0)
           System.out.println("当前状态:匀速行驶");
       else
       System.out.println("当前状态:"+(LXTTable.lxt[timeindex-1].tlsj==10?"停车等候":"匀速行驶"));
       System.out.println("当前乘客人数:"+ck.size());
       System.out.println("行驶总里程"+timeindex*10);
       System.out.println("当前总收入(包括车上和下车乘客费用):"+hcfy);
   }
   public static void  HCCX(){
       System.out.println("系统当前时间:" +CurrentTime);
       System.out.println("当前候乘人数:"+hcck.size());
       if(hcck.size()!=0) {
           System.out.print("候车乘客:");
           for (CK ck : hcck) {
               System.out.print(ck.getCkbh());
           }
       }
       System.out.println();
   }
}

最后创建主程序类:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class mymain {
    public static void main(String[] args) throws  Exception{
        HC.CurrentTime=LXTTable.lxt[HC.timeindex].qssj;
        System.out.println("欢迎进入火车运营管理系统");
        BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("乘客候车:HC ,如HC CK01 07:20 WA W4"+"\r\n"+"退出系统: exit");
        System.out.println("初始化: Init");
        System.out.println("查询账单: CXZD CK01");
        System.out.println("查询火车状态: HCZT");
        System.out.println("查询候车状态: HCCX");
        while(true){          //这里开始运行了
            System.out.println("----------------------------------------------------------");
            System.out.println("当前时间为"+HC.CurrentTime); //每次输入前都要看到时间
            if(HC.hcck.size()>0){       //有乘客就先输出
                System.out.println("已候车乘客编号为:");
                for(int i=0;i<HC.hcck.size();i++) {     //这个就简单的输出
                    CK ckt1 =  (HC.hcck.get(i));
                    System.out.println(ckt1.getCkbh() + "");
                    if (i == HC.hcck.size() - 1) System.out.println();   //到最后一个乘客的时候就打印空行了
                }
            }
            if(HC.ck.size()>0){
                System.out.println("已上车乘客编号为:");   //看看上车乘客的数量
                for(int i=0;i<HC.ck.size();i++){           //简单的输出
                    CK ckt2=(HC.ck.get(i));
                    if(ckt2!=null)
                    System.out.println(ckt2.getCkbh()+"");
                }
                System.out.println();  //到最后一个乘客的时候就打印空行了
            }
            System.out.println("请输入命令:");
            String sinstr=bufferedReader.readLine();     //输入命令
            if(sinstr.equals("exit")){
                System.out.println("您已退出本系统");
                System.out.println();
                break;
            }
            if(sinstr.startsWith("CXZD")){
                if(sinstr.length()<9) {
                    System.out.println("输入错误了");
                    continue;
                }
                    sinstr = sinstr.substring(5);   //这里就是把sinstr字符串前面的HC去掉了
                String[] CKHCStr = sinstr.split(" ");  //分别把CK01,07:30,WA,W4分开到字符串数组里
                HC.CXZD(CKHCStr[0]);
                System.out.println();
                continue;
            }
            if(sinstr.equals("Init")){
                HC.Init();
                System.out.println("初始化成功");
                System.out.println();
                continue;
            }
            if(sinstr.equals("HCZT")){
                HC.HCZT();
                System.out.println();
                continue;
            }
            if(sinstr.equals("HCCX"))
            {
                HC.HCCX();
                System.out.println();
                continue;
            }
            if(sinstr.startsWith("HC")&&(!sinstr.equals("HCCX"))&&(!sinstr.equals("HCZT"))) {
                sinstr = sinstr.substring(3);   //这里就是把sinstr字符串前面的HC去掉了
                String[] CKHCStr = sinstr.split(" ");  //分别把CK01,07:30,WA,W4分开到字符串数组里
                int Flag = 0;
                for (int i = 0; i < HC.hcck.size(); i++) {
                    CK ckt1 = (HC.hcck.get(i));
                    if (CKHCStr[0].equals(ckt1.getCkbh())) {       //看一看乘客名字是否有存在
                        Flag = 1;
                        break;
                    }
                }
                if (Flag == 1) {
                    System.out.println("编号为" + CKHCStr[0] + "的乘客已在候车!");     //如果存在,执行这里
                    continue;    //直接进行下次输入
                }
                Flag = 0;
                for (int i = 0; i < HC.ck.size(); i++){    //这里检查已经上车的乘客里面有没有
                    CK ckt2 =(HC.ck.get(i));
                    if (CKHCStr[0].equals(ckt2.getCkbh())) {
                        Flag = 1;
                        break;
                    }
                }
                if (Flag == 1) {
                    System.out.println("编号为" + CKHCStr[0] + "的乘客已在车上");//如果存在,执行这里
                    continue;
                }
                if(CKHCStr.length<4){
                    System.out.println("输入有错误");
                    continue;
                }
                CK ck = new CK();
                ck.setCkbh(CKHCStr[0]);
                ck.setHcsk(CKHCStr[1]);
                ck.setQszd(CKHCStr[2]);
                ck.setZzzd(CKHCStr[3]);
                if (HC.pdsfncc(ck)) {            //判断能上车, 还有怎么判断能下车?
                    System.out.println(ck.getCkbh() + "开始候车!");
                    HC.AddHCCK(ck);
                    System.out.println(ck);
                } else {
                    System.out.println("该乘客不能候车");
                }
                System.out.println();
                HC.timeindex++;
                HC.CurrentTime=LXTTable.lxt[HC.timeindex].qssj; //这里就是在变化时间
                continue;

            }
            sinstr=bufferedReader.readLine();
        }
    }
}

完成代码后,我们可以实现如下要求:
1、初始化命令 Init
设置系统初始时刻为 7:30;火车位置是 WA;乘客 0 人;收入 0 元;行驶里程 0 公 里;火车时速 60 公里/小时;火车停车等候 0 分钟
在这里插入图片描述
2、候车命令 HC
在这里插入图片描述
3、查询乘客账单命令 CXZD(只针对下了车的乘客)
在这里插入图片描述
4、火车状态命令 HCZT
在这里插入图片描述
5、候车查询命令 HCCX
在这里插入图片描述

这里要说的是时间只有在执行HC CK01 这样的命令时才会改变,其他命令是无法改变时间的。这是大学java课程的项目设计,做完了,特此记下

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
     目录 第一章 列车车次管理系统需求分析 2 1.1 需求分析和概述 2 1.2 系统分析 2 第二章 数据库的设计 4 2.1 E-R图 4 2.2 表的结构说明 4 第三章 前台主界面的设计 5 3.1主界面概述 5 3.2前台主界面的实现 5 3.3数据库的连接 8 3.4界面事件监听 8 附录 14 第一章 列车车次管理系统需求分析 1.1 需求分析和概述    中国地域辽阔,铁路线纵横繁多,给人们的出行带来了极大的方便,但随着火车站客流量的不断增长,越来越多的弊端暴露在人们面前,如:    火车查询效率低下    浪费乘客大量时间    浪费大量人力资源 在这样的情景下更需要良好的系统来管理列车的时间及列车所到车站。      本系统对于指定的列车车次,可以对它的出发时间、到站时间、途经车站等进行添加、修改和删除。 1.2 系统分析 本系统是针对管理员对列车车次的管理的开发的,其主要功能是:   1)增加、修改、删除一个列车车次信息。   2)按条件显示车次信息(条件有按车次、出发时间、到站时间、途经车站等)。       系统结构图如下 第二章 数据库的设计 2.1 E-R图   这一设计阶段是在系统功能结构图的基础上进行的,设计出能够满足用户需求的各种实体以及它们之间的关系,为后面的逻辑结构设计打下基础。根据以上的分析设计结果,得到列车实体。下面来介绍车次实体的E-R图。 列车实体包括:车次,出发时间,结束时间,途径车站。E-R图如图2.1.1所示。    2.2 表的结构说明   在本系统中,。train数据表中保存婴儿出生信息,该表的结构如下表 表2.2.1 train表结构 字段名 信息说明 类型 最大字符数 备注 number 列车车次 char 4 主键 starttime 出发时间 char 10 允许为空 endtime 到站时间 char 10 允许为空 via 途经车站 char 10 允许为空 第三章 前台主界面的设计 3.1主界面概述   界面是用户与程序进行交互的接口,用户可以从界面中查看程序显示给用户的信息,程序可以从界面中获取用户输入的数据。通常用户不会去关心程序的界面是如何实现的,更多的会在意界面中提供的信息、功能及界面的布局是否合理。所以在进行界面设计时,不仅要从程序开发的角度上分析,还要考虑到界面的美观及布局。   本系统前台主界面的运行效果如图4.1所示。    前台主界面效果图 3.2前台主界面的实现 为了方便的实现查询功能,在jtable里面显示数据库信息,主界面里自定义了CreateTable类。 class CreateTable{ public Vector vector = null; public AbstractTableModel tm = null; public JScrollPane scroll; public String[] title;//表格表头 public CreateTable(String[] head) { JTable table; title=(String[])head.clone(); vector = new Vector(); tm = new AbstractTableModel() { //通过重写table来定义自己的表格模式 public int getColumnCount() { return title.length; } public int getRowCount() { return vector.size(); } public Object getValueAt(int row, int column) { if (!vector.isEmpty()) { return ((Vector) vector.elementAt(row)).elementAt(column); } else { return null; } } public void setValueAt(Object value, int row, int column) { } public String getColumnName(int column) { return title[column]; } public Class getColumnClass(int c) { return getValueAt(0, c).getClass(); } public boolean isCellEditable(int row, int column) { return false; } }; table = new JTable(tm); scroll = new JScrollPane(table); } } 主界面代码如下class Train extends JFrame implements ActionListener{ public JTextField jt_num,jt_stt,jt_ent,jt_pas; public JButton jb_seh,jb_add,jb_rec,jb_del; Train(){ super("列车车次管理系统"); String[] cond={"车次","出发时间","到站时间","途径车站"}; Object[][] data=new Object[4][4]; JLabel jl_num=new JLabel("车次"); JLabel jl_stt=new JLabel("出发时间"); JLabel jl_ent=new JLabel("到站时间"); JLabel jl_pas=new JLabel("途经车站"); jt_num=new JTextField(6); jt_stt=new JTextField(10); jt_ent=new JTextField(10); jt_pas=new JTextField(20); jb_seh=new JButton("查询"); jb_seh.addActionListener(this); jb_add=new JButton("添加"); jb_add.addActionListener(this); jb_rec=new JButton("修改"); jb_rec.addActionListener(this); jb_del=new JButton("删除"); jb_del.addActionListener(this); CreateTable table=new CreateTable(cond); JPanel jp1=new JPanel(); JPanel jp2=new JPanel(); JPanel jp3=new JPanel(); JPanel jp4=new JPanel(); jp1.add(jl_num); jp1.add(jt_num); jp1.add(jl_stt); jp1.add(jt_stt); jp2.add(jl_ent); jp2.add(jt_ent); jp2.add(jl_pas); jp2.add(jt_pas); jp3.add(jb_seh); jp3.add(jb_add); jp3.add(jb_rec); jp3.add(jb_del); jp4.add(table.scroll); setLayout(new GridLayout(4,1)); this.add(jp1); this.add(jp2); this.add(jp3); this.add(jp4); setResizable(false); } } 3.3数据库的连接 数据库的连接有DBConnect类实现提代码如下 import java.sql.*; public class DBConnect { public static Connection getConn() throws Exception{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); return DriverManager.getConnection("jdbc:odbc:123",""); } } 3.4界面事件监听 在前台中,每个按钮都有库的操作的事件。当用户想要增或删除时,点击按钮,而系统会对这些按钮进行监听,并做相应的处理,其实现代码如下: public void actionPerformed(ActionEvent e){ if(e.getSource()==jb_add){ num=jt_num.getText(); stt=jt_stt.getText(); ent=jt_ent.getText(); pas=jt_pas.getText(); try { con = DBConnect.getConn(); st= con.createStatement(); st.executeUpdate("insert into Train values('"+num+"','"+stt+"','"+ent+"','"+pas+"')"); jt_num.setText(""); jt_stt.setText(""); jt_ent.setText(""); jt_pas.setText(""); JOptionPane.showMessageDialog(this, "添加成功!"); }catch(SQLException ae){ while (ae != null) { JOptionPane.showMessageDialog(this, "ERROR" ); ae = ae.getNextException(); } }catch(Exception ex){ ex.printStackTrace(); }finally { try { if (st != null) { st.close(); } if (con != null) { con.close(); } } catch (SQLException t) { JOptionPane.showMessageDialog(this, "ERROR:" + "----- SQLException -----\r\n" ); } } } if(e.getSource()==jb_del){ num= jt_num.getText(); if (JOptionPane.showConfirmDialog(this, "确认要删除吗?") == JOptionPane.YES_OPTION) { try { Connection con = DBConnect.getConn(); Statement st = con.createStatement(); st.executeUpdate("delete from Train where number='"+ num + "'"); JOptionPane.showMessageDialog(this, "已删除!"); jt_num.setText(""); }catch(SQLException ae){ while (ae!= null) { JOptionPane.showMessageDialog(this, "ERROR" ); ae = ae.getNextException(); } }catch(Exception ex){ ex.printStackTrace(); }finally { try { if (st != null) { st.close(); } if (con != null) { con.close(); } } catch (SQLException ex) { JOptionPane.showMessageDialog(this, "ERROR"); } } } } if(e.getSource()==jb_rec){ num=jt_num.getText(); stt=jt_stt.getText(); ent=jt_ent.getText(); pas=jt_pas.getText(); try { Connection con = DBConnect.getConn(); Statement st = con.createStatement(); st.executeUpdate("update Train set starttime='"+stt+"',endtime='"+ent+"',via='"+pas+"' where number='"+num+"'"); jt_num.setText(""); jt_stt.setText(""); jt_ent.setText(""); jt_pas.setText(""); JOptionPane.showMessageDialog(this, "修改成功!"); }catch (SQLException ex) { while (ex != null) { JOptionPane.showMessageDialog(this, "ERROR"); ex = ex.getNextException(); } } catch (Exception ex) { ex.printStackTrace(); } finally { try { if (st != null) { st.close(); } if (con != null) { con.close(); } } catch (SQLException ex) { JOptionPane.showMessageDialog(this, "ERROR" ); } } } if(e.getSource()==jb_seh){ num=jt_num.getText(); try { Connection con = DBConnect.getConn(); Statement st = con.createStatement(); ResultSet rst = null; rst=st.executeQuery("select * from Train where number='"+num+"'"); if (rst.next() == false) { JOptionPane.showMessageDialog(this, "找不到该列车"); }else{ ResultSet rs=st.executeQuery("select * from Train where number='"+num+"'"); jt_num.setText(""); table.vector.removeAllElements(); table.tm.fireTableStructureChanged(); while (rs.next()) { Vector vector=new Vector(); vector.addElement(rs.getString(1)); vector.addElement(rs.getString(2)); vector.addElement(rs.getString(3)); vector.addElement(rs.getString(4)); table.vector.addElement(vector); } table.tm.fireTableStructureChanged(); } }catch (SQLException ex) { while (ex != null) { JOptionPane.showMessageDialog(this, "ERROR" ); ex = ex.getNextException(); } } catch (Exception ex) { ex.printStackTrace(); } finally { try { if (st != null) { st.close(); } if (con != null) { con.close(); } } catch (SQLException ex) { JOptionPane.showMessageDialog(this, "ERROR:" + "----- SQLException -----\r\n"); } } } }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值