基于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)
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();
txtticket_number.setBounds(350, 195, 146, 23);
add(txtticket_number);
txtticket_number.setColumns(10);
txtticket_number.setText(String.valueOf(ticket.getTicket_number()));
JLabel label_4 = new JLabel("车票余量:");
label_4.setBounds(280, 227, 146, 23);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
btnNewButton.setBounds(320, 400, 116, 23);
add(btnNewButton);
}
}
/**
* 添加用户
*/
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);
public UpdataUser(User user) {
setLayout(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(500, 100, 800, 800);
contentPane = new JPanel();
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);
txtname.setText(user.getName());
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);
txtidentity_number.setText(user.getIdentity_number());
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);
txtaccout.setText(user.getAccount());
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);
txtPassword.setText(user.getPassword());
userDao = new UserDaoImpl();
JButton btnNewButton = new JButton("修改用户");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
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;
}
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);
add(label_8);
txtticket_office = new JTextField();
txtticket_office.setBounds(350, 357, 146, 23);
add(txtticket_office);
txttickets_left.setColumns(10);
ticketDao = new TicketImpl();
JButton btnNewButton = new JButton("添加车票");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (txtstation_arrival.getText().equals("")) { //判断用户输入是否为空;
JOptionPane.showMessageDialog(null, "请输入到达站", "警告对话框", JOptionPane.WARNING_MESSAGE);
return;
} else if (txtstation_depart.getText().equals("")) {
JOptionPane.showMessageDialog(null, "请输入乘车站", "警告对话框", JOptionPane.WARNING_MESSAGE);
return;
} else if (txtdepart_date.getText().equals("")) {
JOptionPane.showMessageDialog(null, "请输入发车日期", "警告对话框", JOptionPane.WARNING_MESSAGE);
return;
} else if (txtdepart_time.getText().equals("")) {
JOptionPane.showMessageDialog(null, "请输入发车时间", "警告对话框", JOptionPane.WARNING_MESSAGE);
return;
} else if (txtticket_number.getText().equals("")) {
JOptionPane.showMessageDialog(null, "请输入车次", "警告对话框", JOptionPane.WARNING_MESSAGE);
return;
} else if (txttickets_left.getText().equals("")) {
JOptionPane.showMessageDialog(null, "请输入余票", "警告对话框", JOptionPane.WARNING_MESSAGE);
return;
} else if (txtfares.getText().equals("")) {
JOptionPane.showMessageDialog(null, "请输入票价", "警告对话框", JOptionPane.WARNING_MESSAGE);
return;
} else if (txtticket_office.getText().equals("")) {
JOptionPane.showMessageDialog(null, "请输入发售站", "警告对话框", JOptionPane.WARNING_MESSAGE);
return;
}
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();
query.del();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
public static void main(String[] args) {
Usermanagement_ui ss = new Usermanagement_ui();
ss.setVisible(true);
}
}
/**
* 用户车票操作界面
*/
public class User_user_db extends JPanel {
private JTable table;
private DefaultTableModel model;// 用于存储表格数据
private String oldValue = "";// 保存单元格编辑 前的值
private UserTicketDao usertickrtdao;
private UserDao userdao;
private TickeDao ticketdao;
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;
}
if (pass.trim().length() < 1) {
JOptionPane.showMessageDialog(null, "密码必须大于0位!");
return;
}
try {
userdao = new UserDaoImpl();
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();
txtticket_number.setBounds(350, 195, 146, 23);
add(txtticket_number);
txtticket_number.setColumns(10);
txtticket_number.setText(String.valueOf(ticket.getTicket_number()));
}
});
btnNewButton.setBounds(320, 400, 116, 23);
add(btnNewButton);
}
}
/**
* 添加用户
*/
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);
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 setUserticketstation_depart(String userticketstation_depart) {
this.userticketstation_depart = userticketstation_depart;
public class UserTicketImpl implements UserTicketDao {
@Override
public boolean add(int userticketuserid, int userticketticketid, String userticketname,
String userticketidentity_number, String userticketstation_arrival, String userticketstation_depart,
String userticketdepart_date, String userticketdepart_time, int userticketticket_number,
String userticketseattype, String usertickettickettype, String userticketfares,
String userticketticket_office) throws Exception {
Connection con = Util.getConnection();
String sqladd = "insert into userticket(userticketuserid,userticketticketid,userticketname,userticketidentity_number,userticketstation_arrival,"
+ "userticketstation_depart,userticketdepart_date,"
+ "userticketdepart_time,userticketticket_number,userticketseattype,"
+ "usertickettickettype,userticketfares,userticketticket_office) values"
+ "(?,?,?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement stmt = con.prepareStatement(sqladd);
stmt.setInt(1, userticketuserid);
stmt.setInt(2, userticketticketid);
stmt.setString(3, userticketname);
stmt.setString(4, userticketidentity_number);
stmt.setString(5, userticketstation_arrival);
stmt.setString(6, userticketstation_depart);
stmt.setString(7, userticketdepart_date);
stmt.setString(8, userticketdepart_time);
stmt.setInt(9, userticketticket_number);
stmt.setString(10, userticketseattype);
stmt.setString(11, usertickettickettype);
stmt.setString(12, userticketfares);
stmt.setString(13, userticketticket_office);
stmt.executeUpdate();
return true;
}
@Override
public boolean update(UserTicket UserTicket) throws SQLException {
// TODO Auto-generated method stub
return false;
}
@Override
public void delete(int userticketid) throws SQLException {
Connection con = Util.getConnection();
String sqladd = "delete from userticket where userticketid=?";
PreparedStatement stmt = con.prepareStatement(sqladd);
String userticketidentity_number;
String userticketstation_arrival;
String userticketstation_depart;
String userticketdepart_date;
String userticketdepart_time;
int userticketticket_number;
String userticketseattype;
String usertickettickettype;
String userticketfares;
String userticketticket_office;
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;
}
PreparedStatement stmt = con.prepareStatement(sqladd);
ResultSet rs = stmt.executeQuery();
List<UserTicket> userticket = new ArrayList<>();
while (rs.next()) {
int userticketid = rs.getInt(1);
int userticketuserid = rs.getInt(2);
int userticketticketid0 = rs.getInt(3);
String userticketname = rs.getString(4);
String userticketidentity_number = rs.getString(5);
String userticketstation_arrival = rs.getString(6);
String userticketstation_depart = rs.getString(7);
String userticketdepart_date = rs.getString(8);
String userticketdepart_time = rs.getString(9);
int userticketticket_number = rs.getInt(10);
String userticketseattype = rs.getString(11);
String usertickettickettype = rs.getString(12);
String userticketfares = rs.getString(13);
String userticketticket_office = rs.getString(14);
UserTicket userticket0 = new UserTicket(userticketid, userticketuserid, userticketticketid0,
userticketname, userticketidentity_number, userticketstation_arrival,
userticketstation_depart, userticketdepart_date,
userticketdepart_time, userticketticket_number, userticketseattype,
usertickettickettype, userticketfares, userticketticket_office);
userticket.add(userticket0);
}
Util.closeAll(con, stmt, rs);
return userticket;
}
@Override
public boolean buyTicket(int ticketid, int userid) throws 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, ticketid);
stmttt.executeUpdate();
ResultSet rs = null;
Util.closeAll(con, stmttt, rs);
return true;
}
@Override
// 为表格绑定修改值后的事件
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 {
ticketimpl.update(ticket);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
loadData();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
/**
* 用户信息修改
*/
public class UpdataUser extends JFrame {
JPanel contentPane;
private JTextField txtname;
private JTextField txtidentity_number;
private JTextField txtaccout;
private JTextField txtPassword;
private UserDaoImpl userDao;
public UpdataUser(User user) {
setLayout(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(500, 100, 800, 800);
contentPane = new JPanel();
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);
txtname.setText(user.getName());
}
}
/**
* 管理员用户操作UI
*/
public class Usermanagement_ui extends JFrame implements ActionListener {
JPanel panelBottom;
JPanel contentPane;
private JButton yhQue;
private JButton yhDel;
private JButton yhAdd;
private JButton yhUpdata;
private JButton yuchonfzhi;
private JButton tuichu;
private JButton tzcp;
private AddUser add;
private QueryUser query;
private UpdataUser updata;
public Usermanagement_ui() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(500, 100, 800, 800);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JPanel panel = new JPanel();
contentPane.add(panel, BorderLayout.NORTH);
panel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));//流式居中
public class Ticketmanagement_ui extends JFrame implements ActionListener {
JPanel contentPane4;
JPanel contentPane;
JPanel panelBottom;
private JButton tzyh;
private JButton btnQue;
private JButton btnDel;
private JButton btnAdd;
private JButton tuichu;
private JButton btnUpd;
private AddTicket add;
private QueryTicket query;
public Ticketmanagement_ui() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(500, 100, 800, 800);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JPanel panel = new JPanel();
contentPane.add(panel, BorderLayout.NORTH);
panel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));//流式居中
btnQue = new JButton("查看车票信息");
panel.add(btnQue);
btnQue.setActionCommand("que");
btnDel = new JButton("删除所选");
panel.add(btnDel);
btnDel.setActionCommand("del");
btnAdd = new JButton("添加车票");
panel.add(btnAdd);
btnAdd.setActionCommand("add");