列车信息系统Java+MySQL(没完全实现)

功能

1、与数据库连接,展示列车信息
2、增删改查

学老师给的实例写的,有(好多)bug,功能不能全部实现。暂时懒得改,以后一定行!

MainFrame

MainFrame

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

public class MainFrame extends JFrame implements ActionListener {

    JLabel idlabel;
    JTextField idtxt;
    JButton idbutton,addbutton,delbutton,upbutton;
    JTable table;
    JScrollPane panel;


    public MainFrame(){
        this.setSize(800,600);
        this.setTitle("列车信息系统");
        this.setLayout(null);
        //根据列车号查找
        //idLabel
        idlabel = new JLabel("列车号");
        idlabel.setSize(60,30);
        idlabel.setLocation(30,30);
        this.add(idlabel);
        //idTxt
        idtxt = new JTextField();
        idtxt.setSize(150,30);
        idtxt.setLocation(90,30);
        this.add(idtxt);
        //idButton
        idbutton = new JButton("列车号查找");
        idbutton.setSize(120,30);
        idbutton.setLocation(280,30);
        idbutton.addActionListener(this);
        this.add(idbutton);

        //addButton
        addbutton = new JButton("增加");
        addbutton.setSize(60,30);
        addbutton.setLocation(30,90);
        addbutton.addActionListener(this);
        this.add(addbutton);
        //delButton
        delbutton = new JButton("删除");
        delbutton.setSize(60,30);
        delbutton.setLocation(120,90);
        delbutton.addActionListener(this);
        this.add(delbutton);
        //upButton
        upbutton = new JButton("修改");
        upbutton.setSize(60,30);
        upbutton.setLocation(210,90);
        upbutton.addActionListener(this);
        this.add(upbutton);

        TrainDAO dao = new TrainDAO();
        ArrayList list = dao.findTrainByID("");
        initTable(list);
        this.setVisible(true);
    }

    void initTable(ArrayList<TrainInformation> list) {
        if((list!=null)||(list.size()!=0)){
            if(panel!=null){
                this.remove(panel);
            }
            String[] column = {"列车号","出发时刻","到达时刻","出发站","到达站","经过站台数","二等座价格","一等座价格","商务座价格"};
            String[][] values = new String[list.size()][9];
            for (int i = 0; i < list.size(); i++) {
                TrainInformation train = (TrainInformation)list.get(i);
                values[i][0] = train.getTrainid();
                values[i][1] = train.getDt();
                values[i][2] = train.getAt();
                values[i][3] = train.getDs();
                values[i][4] = train.getAs();
                values[i][5] = String.valueOf(train.getStationnum());
                values[i][6] = String.valueOf(train.getPrice1());
                values[i][7] = String.valueOf(train.getPrice2());
                values[i][8] = String.valueOf(train.getPrice3());
            }
            table = new JTable(values,column);
            panel = new JScrollPane(table);
            panel.setSize(750,400);
            panel.setLocation(20,150);
            this.add(panel);
        }
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        JButton bt = (JButton)e.getSource();
        if(bt.getText().equals("列车号查找")){
            TrainDAO dao = new TrainDAO();
            ArrayList list = dao.findTrainByID(idtxt.getText());
            initTable(list);
        }else if(bt.getText().equals("删除")){
                if(table.getSelectedRow()==-1){
                    JOptionPane.showMessageDialog(this,"请选择要删除的列车");
                }else{
                    TrainDAO dao = new TrainDAO();
                    dao.delTrain(table.getValueAt(table.getSelectedRow(),0).toString());
                    ArrayList list = dao.findTrainByID("");
                    initTable(list);
                }
        }else if (bt.getText().equals("修改")){
            if(table.getSelectedRow()==-1){
                JOptionPane.showMessageDialog(this,"请选择要删除的列车");
            }else{
                int row = table.getSelectedRow();
                String id = table.getValueAt(row,0).toString();
                String dt = table.getValueAt(row,1).toString();
                String at = table.getValueAt(row,2).toString();
                String ds = table.getValueAt(row,3).toString();
                String as = table.getValueAt(row,4).toString();
                int num = Integer.parseInt(table.getValueAt(row,5).toString());
                int p1 = Integer.parseInt(table.getValueAt(row,6).toString());
                int p2 = Integer.parseInt(table.getValueAt(row,7).toString());
                int p3 = Integer.parseInt(table.getValueAt(row,8).toString());
                TrainInformation train = new TrainInformation(id,dt,at,ds,as,num,p1,p2,p3);
                AddOrUpdateFrame newFrame = new AddOrUpdateFrame("修改",train,this);
            }
        }else{
            AddOrUpdateFrame newFrame = new AddOrUpdateFrame("增加",null,this);
        }
    }
}

TrainDAO

import java.sql.*;
import java.util.*;
import java.lang.String;

import static java.lang.Class.forName;

public class TrainDAO {
    private Connection con;
    public TrainDAO(){
        try{
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/train?characterEncoding=UTF-8","root","admin");
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }

    public ArrayList<TrainInformation> findTrainByID(String s) {
        ArrayList<TrainInformation> result = new ArrayList<>();
        try{
            Statement st = con.createStatement();
            String sql = "select * from train";
            ResultSet rs = st.executeQuery(sql);
            if(rs.next()){
                String id = rs.getString(1);
                String dt = rs.getString(2);
                String at = rs.getString(3);
                String ds = rs.getString(4);
                String as = rs.getString(5);
                int num = rs.getInt(6);
                int p1 = rs.getInt(7);
                int p2 = rs.getInt(8);
                int p3 = rs.getInt(9);
                TrainInformation train = new TrainInformation(id,dt,at,ds,as,num,p1,p2,p3);
                result.add(train);
            }
            st.close();
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return result;
    }

    public void delTrain(String s) {
        try{
            PreparedStatement ps = con.prepareStatement("delete from train where s = ?");
            ps.setString(1,s);
            ps.execute();
            ps.close();
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void addTrain(TrainInformation train){
        try{
            PreparedStatement ps = con.prepareStatement("insert into train values(?,?,?,?,?,?,?,?,?)");
            ps.setString(1,train.getTrainid());
            ps.setString(2,train.getDt());
            ps.setString(3,train.getAt());
            ps.setString(4,train.getDs());
            ps.setString(5,train.getAs());
            ps.setInt(6,train.getStationnum());
            ps.setInt(7,train.getPrice1());
            ps.setInt(8,train.getPrice2());
            ps.setInt(9,train.getPrice3());
            ps.execute();
            ps.close();
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void updateTrain(TrainInformation train){
        try{
            PreparedStatement ps = con.prepareStatement("update train set trainID=?,depaertureTime=?,arriveTime=?,departureStation=?," +
                    "arriveStation=?,numberOdStations=?,price1=?,price2=?,price3=?");
            ps.setString(1,train.getTrainid());
            ps.setString(2,train.getDt());
            ps.setString(3,train.getAt());
            ps.setString(4,train.getDs());
            ps.setString(5,train.getAs());
            ps.setInt(6,train.getStationnum());
            ps.setInt(7,train.getPrice1());
            ps.setInt(8,train.getPrice2());
            ps.setInt(9,train.getPrice3());
            ps.execute();
            ps.close();
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

AddOrUpdateFrame

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

public class AddOrUpdateFrame extends JFrame implements ActionListener {
    JLabel idLa,dtLa,atLa,dsLa,asLa,numLa,p1La,p2La,p3La;
    JTextField idtxt,dttxt,attxt,dstxt,astxt,numtxt,p1txt,p2txt,p3txt;
    JButton bt;
    MainFrame main;

    public AddOrUpdateFrame(String type, TrainInformation train, MainFrame main) {
        this.setSize(300,600);
        this.setLayout(null);

        idLa = new JLabel("列车号");
        idLa.setSize(60,30);
        idLa.setLocation(30,30);
        this.add(idLa);
        idtxt = new JTextField();
        idtxt.setSize(120,30);
        idtxt.setLocation(100,30);
        this.add(idtxt);

        dtLa = new JLabel("出发时间");
        dtLa.setSize(60,30);
        dtLa.setLocation(30,80);
        this.add(dtLa);
        dttxt = new JTextField();
        dttxt.setSize(120,30);
        dttxt.setLocation(100,80);
        this.add(dttxt);

        atLa = new JLabel("到达时间");
        atLa.setSize(60,30);
        atLa.setLocation(30,130);
        this.add(atLa);
        attxt = new JTextField();
        attxt.setSize(120,30);
        attxt.setLocation(100,130);
        this.add(attxt);

        dsLa = new JLabel("出发站");
        dsLa.setSize(60,30);
        dsLa.setLocation(30,180);
        this.add(dsLa);
        dstxt = new JTextField();
        dstxt.setSize(120,30);
        dstxt.setLocation(100,180);
        this.add(dstxt);

        asLa = new JLabel("到达站");
        asLa.setSize(60,30);
        asLa.setLocation(30,230);
        this.add(asLa);
        astxt = new JTextField();
        astxt.setSize(120,30);
        astxt.setLocation(100,230);
        this.add(astxt);

        numLa = new JLabel("经过站台数");
        numLa.setSize(60,30);
        numLa.setLocation(30,280);
        this.add(numLa);
        numtxt = new JTextField();
        numtxt.setSize(120,30);
        numtxt.setLocation(100,280);
        this.add(numtxt);

        p1La = new JLabel("二等座价格");
        p1La.setSize(60,30);
        p1La.setLocation(30,330);
        this.add(p1La);
        p1txt = new JTextField();
        p1txt.setSize(120,30);
        p1txt.setLocation(100,330);
        this.add(p1txt);

        p2La = new JLabel("一等座价格");
        p2La.setSize(60,30);
        p2La.setLocation(30,380);
        this.add(p2La);
        p2txt = new JTextField();
        p2txt.setSize(120,30);
        p2txt.setLocation(100,380);
        this.add(p2txt);

        p3La = new JLabel("商务座价格");
        p3La.setSize(60,30);
        p3La.setLocation(30,430);
        this.add(p3La);
        p3txt = new JTextField();
        p3txt.setSize(120,30);
        p3txt.setLocation(100,430);
        this.add(p3txt);

        if(type.equals("增加")){
            this.setTitle("增加");
            bt = new JButton("增加");
            bt.setSize(60,30);
            bt.setLocation(90,480);
        }else{
            this.setTitle("修改");
            bt = new JButton("修改");
            bt.setSize(60,30);
            bt.setLocation(90,480);
            if(train!=null){
                idtxt.setText(train.getTrainid());
                dttxt.setText(train.getDt());
                attxt.setText(train.getAt());
                dstxt.setText(train.getDs());
                astxt.setText(train.getAs());
                numtxt.setText(String.valueOf(train.getStationnum()));
                p1txt.setText(String.valueOf(train.getPrice1()));
                p2txt.setText(String.valueOf(train.getPrice2()));
                p3txt.setText(String.valueOf(train.getPrice3()));
            }
        }
        this.add(bt);
        bt.addActionListener(this);
        this.setVisible(true);
        this.main = main;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        JButton bt = (JButton)e.getSource();
        TrainDAO dao = new TrainDAO();
        String id = idtxt.getText().trim();
        String dt = dttxt.getText().trim();
        String at = attxt.getText().trim();
        String ds = dstxt.getText().trim();
        String as = astxt.getText().trim();
        int num = Integer.parseInt(numtxt.getText().trim());
        int p1 = Integer.parseInt(p1txt.getText().trim());
        int p2 = Integer.parseInt(p2txt.getText().trim());
        int p3 = Integer.parseInt(p3txt.getText().trim());
        TrainInformation train = new TrainInformation(id,dt,at,ds,as,num,p1,p2,p3);
        if(bt.getText().equals("修改")){
            dao.updateTrain(train);
        }else{
            dao.addTrain(train);
        }
        ArrayList list = dao.findTrainByID("");
        main.initTable(list);
        this.dispose();
    }
}

TrainInformation

public class TrainInformation {
    private String trainid;
    private String dt;
    private String at;
    private String ds;
    private String as;
    private int stationnum;
    private int price1;
    private int price2;
    private int price3;

    public String getTrainid() {
        return trainid;
    }

    public String getDt() {
        return dt;
    }

    public String getAt() {
        return at;
    }

    public String getDs() {
        return ds;
    }

    public String getAs() {
        return as;
    }

    public int getStationnum() {
        return stationnum;
    }

    public int getPrice3() {
        return price3;
    }

    public int getPrice2() {
        return price2;
    }

    public int getPrice1() {
        return price1;
    }

    public void setTrainid(String trainid) {
        this.trainid = trainid;
    }

    public void setAs(String as) {
        this.as = as;
    }

    public void setAt(String at) {
        this.at = at;
    }

    public void setDs(String ds) {
        this.ds = ds;
    }

    public void setDt(String dt) {
        this.dt = dt;
    }

    public void setStationnum(int stationnum) {
        this.stationnum = stationnum;
    }

    public void setPrice1(int price1) {
        this.price1 = price1;
    }

    public void setPrice2(int price2) {
        this.price2 = price2;
    }

    public void setPrice3(int price3) {
        this.price3 = price3;
    }

    public TrainInformation(){};

    public TrainInformation(String trainid,String dt,String at,String ds,String as,int stationnum,int price1,int price2,int price3){
        this.trainid = trainid;
        this.dt = dt;
        this.at = at;
        this.ds = ds;
        this.as = as;
        this.stationnum = stationnum;
        this.price1 = price1;
        this.price2 = price2;
        this.price3 = price3;
    }
}

Test

public class Test {
    public static void main(String[] args) {
        MainFrame main = new MainFrame();
    }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值