基于java+mysql的swing+mysql火车票售票管理系统(java+swing+mysql+gui)

这是一个使用JavaSwing图形界面和MySQL数据库构建的火车票售票管理系统。系统包括管理员管理车票和用户、用户购票等功能,支持查询、购买、退票等操作。代码实现了数据的增删改查,以及与数据库的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于java+mysql的swing+mysql火车票售票管理系统(java+swing+mysql+gui)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

管理员管理车票和用户、用户购买车票等

技术框架

Java Swing MySQL

基于java+mysql的Swing+MySQL火车票售票管理系统(java+swing+mysql+gui)

                }
            }
        });
    }

    public void loadData() throws SQLException {
        // 清除旧的数据
        model.getDataVector().clear();
        ticketDao = new TicketImpl();
        Inqurie_sg iqs = new Inqurie_sg();
        List<Ticket> list = ticketDao.quetida(iqs.getStation_arrival00(), iqs.getStation_depart00(), iqs.getDepart_date00());
        // 遍历每一条数据,添加到model中
        for (Ticket ticket : list) {
            // 添加 行数据
            //	cob.setSelectedItem(new Tickettype(ticket.getTicketid()));
            model.addRow(new Object[]{ticket.getTicketid(), ticket.getStation_arrival(), ticket.getStation_depart(),
                    ticket.getDepart_date(), ticket.getDepart_time(), ticket.getTicket_number(), ticket.getSeattypeid(),
                    ticket.getTickettypeid(), ticket.getTickets_left(), ticket.getFares(),
                    ticket.getTicket_office()
            });
        }
    }

    /**
     * 购票方法
     *
     * @throws Exception
     */
    public void buy() throws Exception {
        if (table.getSelectedRowCount() <= 0) {
            JOptionPane.showMessageDialog(null, "请选择要购买的车票");
            return;
        }
        System.out.println(table.getSelectedColumn());
        int result = JOptionPane.showConfirmDialog(null, "是否确定要购买该车票");
        // 判断用户是否点击
        if (result == JOptionPane.OK_OPTION) {
            int ticketidd = Integer.valueOf(table.getValueAt(
                    table.getSelectedRow(), 0).toString());

            Userlogin_db dg = new Userlogin_db();
            int usd = dg.getUseridDl();
            System.out.println(usd + "");
            System.out.println(ticketidd + "()()()()(" + usd);
            userticketdao = new UserTicketImpl();
            userdao = new UserDaoImpl();
            ticketim = new TicketImpl();
            int blance = userdao.selectbl(usd);
            int yuan = ticketim.fares(ticketidd);

                int ticketid = ticket.getTicketid();
                String station_arrival = txtstation_arrival.getText();
                String station_depart = txtstation_depart.getText();
                String depart_date = txtdepart_date.getText();
                String depart_time = txtdepart_time.getText();
                String ticket_number0 = txtticket_number.getText();
                int ticket_number = Integer.parseInt(ticket_number0);
                Seattype seattype = (Seattype) cmbseattype.getSelectedItem();
                String seattypeid = String.valueOf(seattype.getSeattypename()).toString();
                Tickettype tickettype = (Tickettype) cmbtickettype.getSelectedItem();
                String tickettypeid = String.valueOf(tickettype);
                String tickets_left0 = txttickets_left.getText();
                int tickets_left = Integer.parseInt(tickets_left0);
                String fares = txtfares.getText();
                String ticket_office = txtticket_office.getText();
                Ticket ticket = new Ticket(ticketid, station_arrival, station_depart,
                        depart_date, depart_time, ticket_number, seattypeid,
                        tickettypeid, tickets_left, fares, ticket_office);

                boolean flag;
                try {

                    flag = ticketDao.update(ticket);
                    if (flag) {
                        JOptionPane.showMessageDialog(null, "修改成功");
                        dispose();

                    } else {
                        JOptionPane.showMessageDialog(null, "修改失败");
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
        });
        btnNewButton.setBounds(320, 480, 146, 23);
        add(btnNewButton);

    }
}
            int ticketid0 = rs.getInt(1);
            String station_arrival = rs.getString(2);
            String station_depart = rs.getString(3);
            String depart_date = rs.getString(4);
            String depart_time = rs.getString(5);
            int ticket_number = (rs.getInt(6));
            String seattypeid = rs.getString(7);
            String tickettypeid = rs.getString(8);
            int tickets_left = rs.getInt(9);
            String fares = rs.getString(10);
            String ticket_office = rs.getString(11);
            Ticket ticket2 = new Ticket(ticketid0, station_arrival,
                    station_depart, depart_date, depart_time, ticket_number,
                    seattypeid, tickettypeid, tickets_left, fares, ticket_office);
            ticket.add(ticket2);
        }
        Util.closeAll(con, stmt, rs);
        return ticket;
    }

    @Override
    public List<Ticket> queryAll() throws SQLException {
        Connection con = Util.getConnection();
        String sqladd = "select * from ticket ";
        PreparedStatement stmt = con.prepareStatement(sqladd);
        ResultSet rs = stmt.executeQuery();
        List<Ticket> ticket = new ArrayList<>();
        while (rs.next()) {
            int ticketid0 = rs.getInt(1);
            String station_arrival = rs.getString(2);
            String station_depart = rs.getString(3);
            String depart_date = rs.getString(4);
            String depart_time = rs.getString(5);
            int ticket_number = (rs.getInt(6));
            String seattypeid = rs.getString(7);
            String tickettypeid = rs.getString(8);
            int tickets_left = rs.getInt(9);
            String fares = rs.getString(10);
            String ticket_office = rs.getString(11);
            Ticket ticket2 = new Ticket(ticketid0, station_arrival,
                    station_depart, depart_date, depart_time, ticket_number,
                    seattypeid, tickettypeid, tickets_left, fares, ticket_office);
            ticket.add(ticket2);
        }
        Util.closeAll(con, stmt, rs);
        return ticket;
    }

    @Override
            System.out.println(blance + "***" + yuan);
            if (blance >= yuan) {
                boolean falll = userdao.reduBlance(usd, yuan);
                boolean fal = userticketdao.SelectUidTid(ticketidd, usd);
                boolean fall = userticketdao.Left(ticketidd);
                System.out.println(fal + "23421434234" + fall);
                if (falll) {
                    if (fall) {
                        if (fal) {
                            boolean falg = userticketdao.buyTicket(ticketidd, usd);
                            boolean flag1 = userticketdao.buyTicketb(ticketidd, usd);
                            JOptionPane.showMessageDialog(null, "购买成功!");
                            System.out.println(falg + "1" + flag1);
                            System.out.println(usd);
                            System.out.println(ticketidd);
                            System.out.println();
                        } else {
                            JOptionPane.showMessageDialog(null, "您不能重复购买该票!");
                        }
                    } else {
                        JOptionPane.showMessageDialog(null, "该票已经售罄!");
                    }
                } else {
                    JOptionPane.showMessageDialog(null, "购买失败!");
                }

            } else {
                JOptionPane.showMessageDialog(null, "余额不足!");
            }
            try {
                loadData();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
	
package dao.Impl;

public class TicketImpl implements TickeDao {
            JOptionPane.showMessageDialog(null, "请选择要退的票");
            return;
        }
        int result = JOptionPane.showConfirmDialog(null, "是否确定退掉该票");
        // 判断用户是否点击
        if (result == JOptionPane.OK_OPTION) {
            int userticketid = Integer.valueOf(table.getValueAt(
                    table.getSelectedRow(), 0).toString());
            int userticketuserid = Integer.valueOf(table.getValueAt(
                    table.getSelectedRow(), 2).toString());
            int userticketticketid = Integer.valueOf(table.getValueAt(
                    table.getSelectedRow(), 1).toString());
            usertickrtdao = new UserTicketImpl();
            userdao = new UserDaoImpl();
            ticketdao = new TicketImpl();
            usertickrtdao.fundTicket(userticketid, userticketticketid);
            int yuan = ticketdao.fares(userticketticketid);
            System.out.println("票价" + yuan);
            userdao.addBlance(userticketuserid, yuan);
            try {
                loadData();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}
package auth;
/**
 * 用户注册
 */

public class Userregister_db extends JFrame implements ActionListener {

    JTextField textacc, textpass, textname, textidentity_number;
                String fares = table.getValueAt(e.getLastRow(), 9).toString();
                String ticket_office = table.getValueAt(e.getLastRow(), 10).toString();
                Ticket ticket = new Ticket(ticketid, station_arrival, station_depart,
                        depart_date, depart_time, ticket_number, seattype, tickettype,
                        tickets_left, fares, ticket_office);
                try {
                    ticketDao.update(ticket);
                } catch (SQLException e2) {
                    // TODO Auto-generated catch block
                    e2.printStackTrace();
                }
                try {
                    loadData();
                } catch (SQLException e1) {
                    e1.printStackTrace();
                }
            }
        });
    }

    public void loadData() throws SQLException {
        // 清除旧的数据
        model.getDataVector().clear();
        ticketDao = new TicketImpl();
        Inqurie_sg iqs = new Inqurie_sg();
        List<Ticket> list = ticketDao.quetida(iqs.getStation_arrival00(), iqs.getStation_depart00(), iqs.getDepart_date00());
        // 遍历每一条数据,添加到model中
        for (Ticket ticket : list) {
            // 添加 行数据
            //	cob.setSelectedItem(new Tickettype(ticket.getTicketid()));
            model.addRow(new Object[]{ticket.getTicketid(), ticket.getStation_arrival(), ticket.getStation_depart(),
                    ticket.getDepart_date(), ticket.getDepart_time(), ticket.getTicket_number(), ticket.getSeattypeid(),
                    ticket.getTickettypeid(), ticket.getTickets_left(), ticket.getFares(),
                    ticket.getTicket_office()
            });
        }
    }

    /**
     * 购票方法
     *
     * @throws Exception
     */
    public void buy() throws Exception {
                Ticket ticket = new Ticket(ticketid, station_arrival, station_depart,
                        depart_date, depart_time, ticket_number, seattypeid,
                        tickettypeid, tickets_left, fares, ticket_office);

                boolean flag;
                try {

                    flag = ticketDao.update(ticket);
                    if (flag) {
                        JOptionPane.showMessageDialog(null, "修改成功");
                        dispose();

                    } else {
                        JOptionPane.showMessageDialog(null, "修改失败");
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
        });
        btnNewButton.setBounds(320, 480, 146, 23);
        add(btnNewButton);

    }
}
package ui;
/**
 * 添加车票
 */

 * 添加用户
 */

public class AddUser extends JPanel {
    private JTextField txtname;
    private JTextField txtidentity_number;
    private JTextField txtaccout;
    private JTextField txtPassword;
    private UserDaoImpl userDao;

    /**
     * Create the panel.
     */
    public AddUser() {
        setLayout(null);

        JLabel label = new JLabel("用户姓名:");
        label.setBounds(250, 100, 70, 23);
        add(label);

        txtname = new JTextField();
        txtname.setBounds(350, 100, 180, 23);
        add(txtname);
        txtname.setColumns(10);

        JLabel label_1 = new JLabel("证件号码");
        label_1.setBounds(250, 170, 70, 23);
        add(label_1);

        txtidentity_number = new JTextField();
        txtidentity_number.setBounds(350, 170, 180, 23);
        add(txtidentity_number);
        txtidentity_number.setColumns(10);

        JLabel label_2 = new JLabel("账号");
        label_2.setBounds(250, 240, 70, 23);
        stmt.setString(7, tickettypeid);
        stmt.setInt(8, tickets_left);
        stmt.setString(9, fares);
        stmt.setString(10, ticket_office);
        ResultSet rs = null;
        stmt.executeUpdate();
        Util.closeAll(con, stmt, rs);
        return true;
    }

    @Override
    public boolean update(Ticket ticket) throws SQLException {
        Connection con = Util.getConnection();
        String sqladd = "update ticket set station_arrival=?,station_depart=?,depart_date=?,"
                + "depart_time=?,ticket_number=?,seattypeid=?,tickettypeid=?,tickets_left=?,fares=?,"
                + "ticket_office=? where ticketid=?";
        PreparedStatement stmt = con.prepareStatement(sqladd);
        stmt.setString(1, ticket.getStation_arrival());
        stmt.setString(2, ticket.getStation_depart());
        stmt.setString(3, ticket.getDepart_date());
        stmt.setString(4, ticket.getDepart_time());
        stmt.setInt(5, ticket.getTicket_number());
        stmt.setString(6, ticket.getSeattypeid());
        stmt.setString(7, ticket.getTickettypeid());
        stmt.setInt(8, ticket.getTickets_left());
        stmt.setString(9, ticket.getFares());
        stmt.setString(10, ticket.getTicket_office());
        stmt.setInt(11, ticket.getTicketid());
        ResultSet rs = null;
        stmt.executeUpdate();
        Util.closeAll(con, stmt, rs);
        return true;
    }

    @Override
    public void delete(int ticketid) throws SQLException {
        Connection con = Util.getConnection();
        String sqladd = "delete from ticket where ticketid=?";
        PreparedStatement stmt = con.prepareStatement(sqladd);
        stmt.setInt(1, ticketid);
        ResultSet rs = null;
        stmt.executeUpdate();
        Util.closeAll(con, stmt, rs);

    }

    @Override
    public List<Ticket> QueryById(int ticketid) throws SQLException {
        Connection con = Util.getConnection();
        String sqladd = "select * from ticket where ticketid=?";
        PreparedStatement stmt = con.prepareStatement(sqladd);
        ResultSet rs = stmt.executeQuery();
        List<Ticket> ticket = new ArrayList<>();
        while (rs.next()) {
                        }
                    } else {
                        JOptionPane.showMessageDialog(null, "该票已经售罄!");
                    }
                } else {
                    JOptionPane.showMessageDialog(null, "购买失败!");
                }

            } else {
                JOptionPane.showMessageDialog(null, "余额不足!");
            }
            try {
                loadData();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
	
package dao.Impl;

public class TicketImpl implements TickeDao {

    @Override
    public boolean add(String station_arrival, String station_depart, String depart_date, String depart_time,
                       int ticket_number, String seattypeid, String tickettypeid, int tickets_left, String fares,
                       String ticket_office) throws Exception {
        Connection con = Util.getConnection();
 */

public class AddTicket extends JPanel {

    private JTextField txtstation_arrival;
    private JTextField txtstation_depart;
    private JTextField txtdepart_date;
    private JTextField txtdepart_time;
    private JTextField txtticket_number;
    private JTextField txttickets_left;
    private JTextField txtfares;
    private JTextField txtticket_office;
    private JComboBox cmbtickettype;
    private JComboBox cmbseattype;
    private TickeDao ticketDao;
    private TickeDao seatidDao;
    private TicketImpl ticketimpl;
    private TickettypeImpl tickettypeDao;
    private SeattypeImpl seattypeDao;
    private QueryUser query;

    /**
     * Create the panel.
     *
     * @param tickettypeDao
     * @throws SQLException
     */
    public AddTicket() throws SQLException {
        setLayout(null);

        JLabel label = new JLabel("到达站:");
    public int getUserticketid() {
        return userticketid;
    }

    public void setUserticketid(int userticketid) {
        this.userticketid = userticketid;
    }

    public int getUserticketuserid() {
        return userticketuserid;
    }

    public void setUserticketuserid(int userticketuserid) {
        this.userticketuserid = userticketuserid;
    }

    public int getUserticketticketid() {
        return userticketticketid;
    }

    public void setUserticketticketid(int userticketticketid) {
        this.userticketticketid = userticketticketid;
    }

    public String getUserticketname() {
        return userticketname;
    }

    public String getUserticketidentity_number() {
        return userticketidentity_number;
    }

    public void setUserticketidentity_number(String userticketidentity_number) {
        this.userticketidentity_number = userticketidentity_number;
    }

    public void setUserticketname(String userticketname) {
        this.userticketname = userticketname;
    }

    public String getUserticketstation_arrival() {
        return userticketstation_arrival;
    }

    public void setUserticketstation_arrival(String userticketstation_arrival) {
        this.userticketstation_arrival = userticketstation_arrival;
    }

    public String getUserticketstation_depart() {
        return userticketstation_depart;
    }
    }

    public void setpassField(JTextField b) {
        textpass = b;
    }

    public void setnameField(JTextField c) {
        textname = c;
    }

    public void setidentity_numberField(JTextField f) {
        textidentity_number = f;
    }

    public void setokButton(JButton b1) {
        okButton = b1;
    }

    public void setresetButton(JButton b2) {
        resetButton = b2;
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == okButton) {
            if (textacc.getText().equals(""))            //判断用户输入是否为空;
                JOptionPane.showMessageDialog(null, "请输入账号", "警告对话框", JOptionPane.WARNING_MESSAGE);
            else if (textpass.getText().equals(""))
                JOptionPane.showMessageDialog(null, "请输入密码", "警告对话框", JOptionPane.WARNING_MESSAGE);
            else if (textname.getText().equals(""))
                JOptionPane.showMessageDialog(null, "请输入姓名", "警告对话框", JOptionPane.WARNING_MESSAGE);
            else if (textidentity_number.getText().equals(""))
                JOptionPane.showMessageDialog(null, "请输入身份证号", "警告对话框", JOptionPane.WARNING_MESSAGE);
            else {
                String acc = textacc.getText();
                String pass = textpass.getText();
                String name = textname.getText();
                String identity_number = textidentity_number.getText();
                if (acc.trim().length() < 1) {
                    JOptionPane.showMessageDialog(null, "账号必须大于0位!");

        JLabel label_3 = new JLabel("密码");
        label_3.setBounds(250, 310, 70, 23);
        add(label_3);

        txtPassword = new JTextField();
        txtPassword.setBounds(350, 310, 180, 23);
        add(txtPassword);
        txtPassword.setColumns(10);

        userDao = new UserDaoImpl();

        JButton btnNewButton = new JButton("添加用户");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {

                if (txtname.getText().equals("")) {    //判断用户输入是否为空;
                    JOptionPane.showMessageDialog(null, "请输入姓名", "警告对话框", JOptionPane.WARNING_MESSAGE);
                    return;
                }
                if (txtidentity_number.getText().equals("")) {    //判断用户输入是否为空;
                    JOptionPane.showMessageDialog(null, "请输入身份证号", "警告对话框", JOptionPane.WARNING_MESSAGE);
                    return;
                }
                if (txtaccout.getText().equals("")) {    //判断用户输入是否为空;
                    JOptionPane.showMessageDialog(null, "请输入账号", "警告对话框", JOptionPane.WARNING_MESSAGE);
                    return;
                }
                if (txtPassword.getText().equals("")) {    //判断用户输入是否为空;
                    JOptionPane.showMessageDialog(null, "请输入密码", "警告对话框", JOptionPane.WARNING_MESSAGE);
                    return;
                }

                String name = txtname.getText();
                String identity_number = txtidentity_number.getText();
                String account = txtaccout.getText();
                String password = txtPassword.getText();
                if (account.length() < 1) {
                    JOptionPane.showMessageDialog(null, "账号必须大于0位!");
                    txtname.setText("");
    JTextField textacc, textpass, textname, textidentity_number;
    JButton okButton, resetButton;
    Statement stmt;
    ResultSet rs;
    UserDao userdao;
//	double acc;
//	String name;
//	Connection con = null;

    public void setaccountField(JTextField a) {
        textacc = a;
    }

    public void setpassField(JTextField b) {
        textpass = b;
    }

    public void setnameField(JTextField c) {
        textname = c;
    }

    public void setidentity_numberField(JTextField f) {
        textidentity_number = f;
    }

    public void setokButton(JButton b1) {
        okButton = b1;
    }

    public void setresetButton(JButton b2) {
        resetButton = b2;
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == okButton) {
            if (textacc.getText().equals(""))            //判断用户输入是否为空;
                JOptionPane.showMessageDialog(null, "请输入账号", "警告对话框", JOptionPane.WARNING_MESSAGE);
            else if (textpass.getText().equals(""))
                JOptionPane.showMessageDialog(null, "请输入密码", "警告对话框", JOptionPane.WARNING_MESSAGE);
            else if (textname.getText().equals(""))
                JOptionPane.showMessageDialog(null, "请输入姓名", "警告对话框", JOptionPane.WARNING_MESSAGE);
            else if (textidentity_number.getText().equals(""))
                JOptionPane.showMessageDialog(null, "请输入身份证号", "警告对话框", JOptionPane.WARNING_MESSAGE);
            else {
                String acc = textacc.getText();
                String pass = textpass.getText();
                String name = textname.getText();
                String identity_number = textidentity_number.getText();
                if (acc.trim().length() < 1) {
                    JOptionPane.showMessageDialog(null, "账号必须大于0位!");

                    return;
                }
    public UpdataTicket(Ticket ticket) throws SQLException {
        setLayout(null);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(500, 100, 800, 800);
        contentPane = new JPanel();

        JLabel label = new JLabel("到达站:");
        label.setBounds(280, 65, 146, 23);
        add(label);

        txtstation_arrival = new JTextField();
        txtstation_arrival.setBounds(350, 65, 146, 23);
        add(txtstation_arrival);
        txtstation_arrival.setColumns(10);
        txtstation_arrival.setText(ticket.getStation_arrival());

        JLabel label1 = new JLabel("乘车站:");
        label1.setBounds(280, 97, 146, 23);
        add(label1);

        txtstation_depart = new JTextField();
        txtstation_depart.setBounds(350, 97, 146, 23);
        add(txtstation_depart);
        txtstation_depart.setColumns(10);
        txtstation_depart.setText(ticket.getStation_depart());

        JLabel label_20 = new JLabel("发车日期:");
        label_20.setBounds(280, 130, 146, 23);
        add(label_20);

        txtdepart_date = new JTextField();
        txtdepart_date.setBounds(350, 130, 146, 23);
        add(txtdepart_date);
        txtdepart_date.setColumns(10);
        txtdepart_date.setText(ticket.getDepart_date());

        JLabel label_2 = new JLabel("发车时间:");
        label_2.setBounds(280, 162, 146, 23);
        add(label_2);

        txtdepart_time = new JTextField();
        txtdepart_time.setBounds(350, 162, 146, 23);
        add(txtdepart_time);
        txtdepart_time.setColumns(10);
        txtdepart_time.setText(ticket.getDepart_time());

        JLabel label_3 = new JLabel("车次(整数):");
        label_3.setBounds(280, 195, 146, 23);
        add(label_3);

        txtticket_number = new JTextField();
            int ticket_number = Integer.valueOf(table.getValueAt(table.getSelectedRow(), 5).toString());
            String seattypeid = table.getValueAt(table.getSelectedRow(), 6).toString();
            String tickettypeid = table.getValueAt(table.getSelectedRow(), 7).toString();
            int tickets_left = Integer.valueOf(table.getValueAt(table.getSelectedRow(), 8).toString());
            String fares = table.getValueAt(table.getSelectedRow(), 9).toString();
            String ticket_office = table.getValueAt(table.getSelectedRow(), 10).toString();
            Ticket ticket = new Ticket(ticketid, station_arrival, station_depart, depart_date, depart_time,
                    ticket_number, seattypeid, tickettypeid, tickets_left, fares, ticket_office);
            UpdataTicket updataticket = new UpdataTicket(ticket);
            updataticket.setVisible(true);
        }
    }

}
package ui;
/**
 * 车票信息修改
 */

public class UpdataTicket extends JFrame {
    JPanel contentPane;
    private JTextField txtstation_arrival;
    private JTextField txtstation_depart;
    private JTextField txtdepart_date;
    private JTextField txtdepart_time;
    private JTextField txtticket_number;
        table.setModel(model);
        table.setRowHeight(30);

        scrollPane.setViewportView(table);

        tickettypeDao = new TickettypeImpl();
        ticketDao = new TicketImpl();
        loadData();
        // 为表格绑定修改值后的事件
        model.addTableModelListener(new TableModelListener() {

            @Override
            public void tableChanged(TableModelEvent e) {
                if (e.getColumn() < 0)
                    return;
                String nVal = table.getValueAt(e.getLastRow(), e.getColumn())
                        .toString();
                // 如果旧的值 和新的值一样,直接 返回
                if (nVal.equals(oldValue)) {
                    return;
                }
                // 判断当前编辑的单元格是否是主键列
                if (e.getColumn() == 0) {
                    // 还原旧的值
                    table.setValueAt(oldValue, e.getLastRow(), e.getColumn());
                    return;
                }
                // 更新数据

                int ticketid = Integer.valueOf(table.getValueAt(e.getLastRow(), 0).toString());
                String station_arrival = table.getValueAt(e.getLastRow(), 1).toString();
                String station_depart = table.getValueAt(e.getLastRow(), 2).toString();
                String depart_date = table.getValueAt(e.getLastRow(), 3).toString();
                String depart_time = table.getValueAt(e.getLastRow(), 4).toString();
                int ticket_number = Integer.valueOf(table.getValueAt(e.getLastRow(), 5).toString());
                String seattype = table.getValueAt(e.getLastRow(), 6).toString();
                String tickettype = table.getValueAt(e.getLastRow(), 7).toString();

                int tickets_left = Integer.valueOf(table.getValueAt(e.getLastRow(), 8).toString());
                String fares = table.getValueAt(e.getLastRow(), 9).toString();
                String ticket_office = table.getValueAt(e.getLastRow(), 10).toString();
                Ticket ticket = new Ticket(ticketid, station_arrival, station_depart, depart_date, depart_time, ticket_number
                        , seattype, tickettype, tickets_left, fares, ticket_office);
                try {
    private JTextField txtdepart_date;
    private JTextField txtdepart_time;
    private JTextField txtticket_number;
    private JTextField txttickets_left;
    private JTextField txtfares;
    private JTextField txtticket_office;
    private JComboBox cmbtickettype;
    private JComboBox cmbseattype;
    private TickeDao ticketDao;
    private TickeDao seatidDao;
    private TicketImpl ticketimpl;
    private TickettypeImpl tickettypeDao;
    private SeattypeImpl seattypeDao;
    private QueryUser query;

    /**
     * Create the panel.
     *
     * @param tickettypeDao
     * @throws SQLException
     */
    public AddTicket() throws SQLException {
        setLayout(null);

        JLabel label = new JLabel("到达站:");
        label.setBounds(280, 65, 146, 23);
        add(label);

        txtstation_arrival = new JTextField();
        txtstation_arrival.setBounds(350, 65, 146, 23);
        add(txtstation_arrival);
        txtstation_arrival.setColumns(10);

        JLabel label1 = new JLabel("乘车站:");
        label1.setBounds(280, 97, 146, 23);
        add(label1);

        txtstation_depart = new JTextField();
        txtstation_depart.setBounds(350, 97, 146, 23);
        add(txtstation_depart);
        txtstation_arrival.setColumns(10);

        JLabel label_20 = new JLabel("发车日期:");
        label_20.setBounds(280, 130, 146, 23);
        add(label_20);

        txtdepart_date = new JTextField();
        txtdepart_date.setBounds(350, 130, 146, 23);
        add(txtdepart_date);
        txtdepart_date.setColumns(10);


    public void setUserticketuserid(int userticketuserid) {
        this.userticketuserid = userticketuserid;
    }

    public int getUserticketticketid() {
        return userticketticketid;
    }

    public void setUserticketticketid(int userticketticketid) {
        this.userticketticketid = userticketticketid;
    }

    public String getUserticketname() {
        return userticketname;
    }

    public String getUserticketidentity_number() {
        return userticketidentity_number;
    }

    public void setUserticketidentity_number(String userticketidentity_number) {
        this.userticketidentity_number = userticketidentity_number;
    }

    public void setUserticketname(String userticketname) {
        this.userticketname = userticketname;
    }

    public String getUserticketstation_arrival() {
        return userticketstation_arrival;
    }

    public void setUserticketstation_arrival(String userticketstation_arrival) {
        this.userticketstation_arrival = userticketstation_arrival;
    }

    public String getUserticketstation_depart() {
        return userticketstation_depart;
    }

    public void setUserticketstation_depart(String userticketstation_depart) {
        this.userticketstation_depart = userticketstation_depart;
            String name = rs.getString(2);
            String identity_number = rs.getString(3);
            String account = rs.getString(4);
            String password = rs.getString(5);
            User user0 = new User(userid0, name, identity_number, account, password);
            user.add(user0);
        }
        Util.closeAll(con, stmt, rs);
        return user;
    }

    public List<User> queryAll() throws SQLException {
        Connection con = Util.getConnection();
        String sqladd = "select * from user";
        PreparedStatement stmt = con.prepareStatement(sqladd);
        ResultSet rs = stmt.executeQuery();
        List<User> user = new ArrayList<>();
        while (rs.next()) {
            int userid0 = rs.getInt(1);
            String name = rs.getString(2);
            String identity_number = rs.getString(3);
            String account = rs.getString(4);
            String password = rs.getString(5);
            User user0 = new User(userid0, name, identity_number, account, password);
            user.add(user0);
        }
        Util.closeAll(con, stmt, rs);
        return user;
    }

    @Override
    public boolean SlectAcPs(String account, String password) throws SQLException {
        boolean flag = false;
        String sql = "select account,password from user";
        Connection con = Util.getConnection();
        PreparedStatement stmt = con.prepareStatement(sql);
        ResultSet rr = stmt.executeQuery();
        while (rr.next()) {
            String account1 = rr.getString(1);
            String password1 = rr.getString(2);
            if (account.equals(account1) && password.equals(password1)) {
                flag = true;
                break;
            }
        }
        Util.closeAll(con, stmt, rr);
        return flag;
    }

    @Override
    public List<AcPs> getAC(String account, String password) throws SQLException {
            model.addRow(new Object[]{ticket.getTicketid(), ticket.getStation_arrival(), ticket.getStation_depart(),
                    ticket.getDepart_date(), ticket.getDepart_time(), ticket.getTicket_number(), ticket.getSeattypeid(),
                    ticket.getTickettypeid(), ticket.getTickets_left(), ticket.getFares(),
                    ticket.getTicket_office()
            });
        }
    }

    public void del() throws SQLException {
        if (table.getSelectedRowCount() <= 0) {
            JOptionPane.showMessageDialog(null, "请选择要删除的数据行");
            return;
        }
        int result = JOptionPane.showConfirmDialog(null, "是否确定要删除");
        // 判断用户是否点击
        if (result == JOptionPane.OK_OPTION) {
            int ticketid = Integer.valueOf(table.getValueAt(
                    table.getSelectedRow(), 0).toString());
            ticketDao.delete(ticketid);
            loadData();
        }
    }

    public void updata() throws SQLException {
        if (table.getSelectedRowCount() <= 0) {
            JOptionPane.showMessageDialog(null, "请选择要修改的数据行");
            return;
        }
        int result = JOptionPane.showConfirmDialog(null, "是否确定要修改");
        // 判断用户是否点击
        if (result == JOptionPane.OK_OPTION) {

            int ticketid = Integer.valueOf(table.getValueAt(table.getSelectedRow(), 0).toString());
            String station_arrival = table.getValueAt(table.getSelectedRow(), 1).toString();
            String station_depart = table.getValueAt(table.getSelectedRow(), 2).toString();
            String depart_date = table.getValueAt(table.getSelectedRow(), 3).toString();
            String depart_time = table.getValueAt(table.getSelectedRow(), 4).toString();
            int ticket_number = Integer.valueOf(table.getValueAt(table.getSelectedRow(), 5).toString());
            String seattypeid = table.getValueAt(table.getSelectedRow(), 6).toString();
            String tickettypeid = table.getValueAt(table.getSelectedRow(), 7).toString();
            int tickets_left = Integer.valueOf(table.getValueAt(table.getSelectedRow(), 8).toString());
            String fares = table.getValueAt(table.getSelectedRow(), 9).toString();
            String ticket_office = table.getValueAt(table.getSelectedRow(), 10).toString();
            Ticket ticket = new Ticket(ticketid, station_arrival, station_depart, depart_date, depart_time,
                    ticket_number, seattypeid, tickettypeid, tickets_left, fares, ticket_office);
            UpdataTicket updataticket = new UpdataTicket(ticket);
    public boolean fundTicket(int userticketid, int userticketticketid) throws SQLException, Exception {
        Connection con = Util.getConnection();
        String sqlll = "update ticket set tickets_left=tickets_left+1 where ticketid = ?";
        PreparedStatement stmttt = con.prepareStatement(sqlll);
        stmttt.setInt(1, userticketticketid);
        stmttt.executeUpdate();
        String sql = "delete from userticket where userticketid=?";
        PreparedStatement stmt = con.prepareStatement(sql);
        stmt.setInt(1, userticketid);
        stmt.executeUpdate();
        return true;
    }

    @Override
    public boolean SelectUidTid(int ticketid, int userid) throws SQLException {
        boolean flag = true;
        String sql = "select userticketuserid,userticketticketid from userticket";
        Connection con = Util.getConnection();
        PreparedStatement stmt = con.prepareStatement(sql);
        ResultSet rr = stmt.executeQuery();
        while (rr.next()) {
            int useridd = rr.getInt(1);
            int ticketidd = rr.getInt(2);
            if (useridd == userid && ticketidd == ticketid) {
                flag = false;
                break;
            }
        }
        Util.closeAll(con, stmt, rr);
        return flag;
		
		
		/*String sql = "select userticketuserid,userticketticketid";
		PreparedStatement stmt = con.prepareStatement(sql);
		stmt.setInt(1, ticketid);
		stmt.executeUpdate();
		
		ResultSet rs = null;
		DBcon.closeAll(stmt, rs);
		return true;*/
    }

public class QueryUser extends JPanel {
    private JTable table;
    private DefaultTableModel model;// 用于存储表格数据
    private UserDao userDao;
    private String oldValue = "";// 保存单元格编辑 前的值

    /**
     * Create the panel.
     */
    public QueryUser() {
        setLayout(new BorderLayout(0, 0));

        JScrollPane scrollPane = new JScrollPane();
        add(scrollPane, BorderLayout.CENTER);

        table = new JTable();

        scrollPane.setColumnHeaderView(table);
        // 初始化存储表格数据的对象
        model = new DefaultTableModel(new Object[][]{}, new String[]{"User Id",
                "user name", "ID", "User", "Password"});
        // 将数据绑定到对象中
        table.setModel(model);
        table.setRowHeight(30);
        scrollPane.setViewportView(table);
        userDao = new UserDaoImpl();
        loadData();
        // 为表格绑定修改值后的事件
        model.addTableModelListener(new TableModelListener() {

            @Override
            public void tableChanged(TableModelEvent e) {
                if (e.getColumn() < 0)
                    return;
                String nVal = table.getValueAt(e.getLastRow(), e.getColumn())
                        .toString();
                // 如果旧的值 和新的值一样,直接 返回
                if (nVal.equals(oldValue)) {
                    return;
                }
    }

    public void setUserticketuserid(int userticketuserid) {
        this.userticketuserid = userticketuserid;
    }

    public int getUserticketticketid() {
        return userticketticketid;
    }

    public void setUserticketticketid(int userticketticketid) {
        this.userticketticketid = userticketticketid;
    }

    public String getUserticketname() {
        return userticketname;
    }

    public String getUserticketidentity_number() {
        return userticketidentity_number;
    }

    public void setUserticketidentity_number(String userticketidentity_number) {
        this.userticketidentity_number = userticketidentity_number;
    }

    public void setUserticketname(String userticketname) {
        this.userticketname = userticketname;
    }

    public String getUserticketstation_arrival() {
        return userticketstation_arrival;
    }

    public void setUserticketstation_arrival(String userticketstation_arrival) {
        this.userticketstation_arrival = userticketstation_arrival;
    }

    public String getUserticketstation_depart() {
        return userticketstation_depart;
    }

    public void setUserticketstation_depart(String userticketstation_depart) {
        this.userticketstation_depart = userticketstation_depart;
    public AddUser() {
        setLayout(null);

        JLabel label = new JLabel("用户姓名:");
        label.setBounds(250, 100, 70, 23);
        add(label);

        txtname = new JTextField();
        txtname.setBounds(350, 100, 180, 23);
        add(txtname);
        txtname.setColumns(10);

        JLabel label_1 = new JLabel("证件号码");
        label_1.setBounds(250, 170, 70, 23);
        add(label_1);

        txtidentity_number = new JTextField();
        txtidentity_number.setBounds(350, 170, 180, 23);
        add(txtidentity_number);
        txtidentity_number.setColumns(10);

        JLabel label_2 = new JLabel("账号");
        label_2.setBounds(250, 240, 70, 23);
        add(label_2);

        txtaccout = new JTextField();
        txtaccout.setBounds(350, 240, 180, 23);
        add(txtaccout);
        txtaccout.setColumns(10);

        JLabel label_3 = new JLabel("密码");
        label_3.setBounds(250, 310, 70, 23);
        add(label_3);

        txtPassword = new JTextField();
        txtPassword.setBounds(350, 310, 180, 23);
        add(txtPassword);
        txtPassword.setColumns(10);

        userDao = new UserDaoImpl();

        JButton btnNewButton = new JButton("添加用户");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {

                if (txtname.getText().equals("")) {    //判断用户输入是否为空;
                    JOptionPane.showMessageDialog(null, "请输入姓名", "警告对话框", JOptionPane.WARNING_MESSAGE);
                    return;
                }
                if (txtidentity_number.getText().equals("")) {    //判断用户输入是否为空;
                    JOptionPane.showMessageDialog(null, "请输入身份证号", "警告对话框", JOptionPane.WARNING_MESSAGE);
                    return;
                }

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值