铁路车票管理系统是一款高效的票务管理软件,专为铁路运输行业设计。它能实现自动化售票、退票及改签等功能,并提供实时列车信息更新服务,大大提升了运营效率和乘客购票体验。
模拟火车票管理系统
```java
package com.qdlg.trainticketmanger.service;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.swing.JOptionPane;
import com.qdlg.trainticketmanger.model.DBConnection;
import com.qdlg.trainticketmanger.model.Ticket;
public class TicketManager {
/**
* 添加单个票
*
* @param ticket 票对象
* @return 影响的行数
*/
public int addTicket(Ticket ticket){
String sql = insert into ticket(ticketNumber,trainNumber,trainDate,startStation,endStation,
+ price,carriageNum,seatNum,type,grade,userId,trainTime) values(?,?,?,?,?,?,?,?,?,?,?,?);
Connection conn = DBConnection.getConn();
PreparedStatement pst = null;
int number = 0;
try {
pst = conn.prepareStatement(sql);
pst.setString(1,ticket.getTicketNumber());
pst.setString(2,ticket.getTrainNumber());
pst.setString(3,ticket.getTrainDate());
pst.setString(4,ticket.getStartStation());
pst.setString(5,ticket.getEndStation());
pst.setDouble(6, ticket.getPrice());
pst.setInt(7, ticket.getCarriageNum());
pst.setInt(8, ticket.getSeatNum());
pst.setString(9,ticket.getType());
pst.setString(10,ticket.getGrade());
pst.setInt(11,ticket.getUserId());
pst.setString(12,ticket.getTrainTime());
number = pst.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return number;
}
/**
* 批量添加票
*
* @param list 票对象列表
* @return 影响的行数
*/
public int addAll(List list){
Connection conn = DBConnection.getConn();
Statement sta = null;
try {
sta=conn.createStatement();
conn.setAutoCommit(false);
Iterator iter = list.iterator();
while(iter.hasNext()){
Ticket ticket = iter.next();
String sql = insert into ticket(ticketNumber,trainNumber,trainDate,startStation,endStation,
+ price,carriageNum,seatNum,type,grade,userId) values (
+ticket.getTicketNumber() + ,
+ticket.getTrainNumber()+,
+ + ticket.getTrainDate() +,
//省略了部分代码以保持简洁
sta.addBatch(sql);
}
int[] batchNumber = sta.executeBatch();
conn.commit();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, 请检查 + e.getMessage(), 系统不允许您重复录入重名物料, JOptionPane.ERROR_MESSAGE);
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
finally{
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return 0;
}
/**
* 根据id删除票
*
* @param ticketId 票的ID
*/
public void delete(int ticketId){
String sql = delete from ticket where id=?;
Connection conn = DBConnection.getConn();
PreparedStatement pst=null;
try {
pst=conn.prepareStatement(sql);
pst.setInt(1,ticketId);
pst.executeUpdate();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, NOthing , youqingtishi, JOptionPane.ERROR_MESSAGE);
}
}
/**
* 根据票号和列车编号删除票
*
* @param ticketNumber 票号
* @param trainNumber 列车编号
*/
public boolean delete(String ticketNumber, String trainNumber){
String sql=delete from ticket where ticketNumber=? and trainNumber=?;
Connection conn = DBConnection.getConn();
PreparedStatement pst=null;
try {
pst=conn.prepareStatement(sql);
pst.setString(1,ticketNumber);
pst.setString(2,trainNumber);
int number=pst.executeUpdate();
if(number>0){ return true; }else{ return false; }
} catch (SQLException e) {
}
return false;
}
/**
* 更新票信息
*
* @param ticket 票对象
*/
public void update(Ticket ticket){
String sql=update ticket set ticketNumber=?,trainNumber=?,trainDate=?,startStation=?,
+ endStation