4)车票管理系统 一车站每天有n个发车班次,每个班次都有一班此号(1,2,3,....n),固定的发车时间,固定的路线(起始站,终点站),大致的行车时间,固定的额定载客量。 (1)班次信息的增删改查,支持导入班次信息(格式自定义) (2)浏览班次信息可显示所有班次当前状况,如果当前系时间超过了耨班次的发车时间,则显示“此班已发出”的提示信息。 (3)查询路线:可按班次号查询,可按终点站查询 (4)统计售票情况 (5)售票和退票功能 (6)支持用户导出购票情况设计环境为Windows+Eclipse+JDK+Tomcat+MySQL用代码实现

时间: 2024-01-10 14:03:27 浏览: 25
以下是一个简单的示例代码,使用了Java语言和MySQL数据库: 1. 数据库设计 ```sql CREATE TABLE `ticket` ( `id` int(11) NOT NULL AUTO_INCREMENT, `train_number` varchar(20) NOT NULL, `start_station` varchar(50) NOT NULL, `end_station` varchar(50) NOT NULL, `departure_time` datetime NOT NULL, `estimated_time` int(11) NOT NULL, `capacity` int(11) NOT NULL, `sold_tickets` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ); ``` 2. 后端Java代码 Ticket.java ```java public class Ticket { private int id; private String trainNumber; private String startStation; private String endStation; private Date departureTime; private int estimatedTime; private int capacity; private int soldTickets; // 构造函数、getter和setter方法省略 } ``` TicketDAO.java ```java public class TicketDAO { private Connection conn; public TicketDAO() { try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/ticket_management"; String user = "root"; String password = "root"; conn = DriverManager.getConnection(url, user, password); } catch (Exception e) { e.printStackTrace(); } } public List<Ticket> getAllTickets() { List<Ticket> tickets = new ArrayList<Ticket>(); try { Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM ticket"); while (rs.next()) { Ticket ticket = new Ticket(); ticket.setId(rs.getInt("id")); ticket.setTrainNumber(rs.getString("train_number")); ticket.setStartStation(rs.getString("start_station")); ticket.setEndStation(rs.getString("end_station")); ticket.setDepartureTime(rs.getDate("departure_time")); ticket.setEstimatedTime(rs.getInt("estimated_time")); ticket.setCapacity(rs.getInt("capacity")); ticket.setSoldTickets(rs.getInt("sold_tickets")); tickets.add(ticket); } rs.close(); stmt.close(); } catch (Exception e) { e.printStackTrace(); } return tickets; } public List<Ticket> getTicketsByTrainNumber(String trainNumber) { List<Ticket> tickets = new ArrayList<Ticket>(); try { PreparedStatement stmt = conn.prepareStatement("SELECT * FROM ticket WHERE train_number = ?"); stmt.setString(1, trainNumber); ResultSet rs = stmt.executeQuery(); while (rs.next()) { Ticket ticket = new Ticket(); ticket.setId(rs.getInt("id")); ticket.setTrainNumber(rs.getString("train_number")); ticket.setStartStation(rs.getString("start_station")); ticket.setEndStation(rs.getString("end_station")); ticket.setDepartureTime(rs.getDate("departure_time")); ticket.setEstimatedTime(rs.getInt("estimated_time")); ticket.setCapacity(rs.getInt("capacity")); ticket.setSoldTickets(rs.getInt("sold_tickets")); tickets.add(ticket); } rs.close(); stmt.close(); } catch (Exception e) { e.printStackTrace(); } return tickets; } public List<Ticket> getTicketsByEndStation(String endStation) { List<Ticket> tickets = new ArrayList<Ticket>(); try { PreparedStatement stmt = conn.prepareStatement("SELECT * FROM ticket WHERE end_station = ?"); stmt.setString(1, endStation); ResultSet rs = stmt.executeQuery(); while (rs.next()) { Ticket ticket = new Ticket(); ticket.setId(rs.getInt("id")); ticket.setTrainNumber(rs.getString("train_number")); ticket.setStartStation(rs.getString("start_station")); ticket.setEndStation(rs.getString("end_station")); ticket.setDepartureTime(rs.getDate("departure_time")); ticket.setEstimatedTime(rs.getInt("estimated_time")); ticket.setCapacity(rs.getInt("capacity")); ticket.setSoldTickets(rs.getInt("sold_tickets")); tickets.add(ticket); } rs.close(); stmt.close(); } catch (Exception e) { e.printStackTrace(); } return tickets; } public void addTicket(Ticket ticket) { try { PreparedStatement stmt = conn.prepareStatement("INSERT INTO ticket (train_number, start_station, end_station, departure_time, estimated_time, capacity, sold_tickets) VALUES (?, ?, ?, ?, ?, ?, ?)"); stmt.setString(1, ticket.getTrainNumber()); stmt.setString(2, ticket.getStartStation()); stmt.setString(3, ticket.getEndStation()); stmt.setDate(4, new java.sql.Date(ticket.getDepartureTime().getTime())); stmt.setInt(5, ticket.getEstimatedTime()); stmt.setInt(6, ticket.getCapacity()); stmt.setInt(7, ticket.getSoldTickets()); stmt.executeUpdate(); stmt.close(); } catch (Exception e) { e.printStackTrace(); } } public void updateTicket(Ticket ticket) { try { PreparedStatement stmt = conn.prepareStatement("UPDATE ticket SET train_number = ?, start_station = ?, end_station = ?, departure_time = ?, estimated_time = ?, capacity = ?, sold_tickets = ? WHERE id = ?"); stmt.setString(1, ticket.getTrainNumber()); stmt.setString(2, ticket.getStartStation()); stmt.setString(3, ticket.getEndStation()); stmt.setDate(4, new java.sql.Date(ticket.getDepartureTime().getTime())); stmt.setInt(5, ticket.getEstimatedTime()); stmt.setInt(6, ticket.getCapacity()); stmt.setInt(7, ticket.getSoldTickets()); stmt.setInt(8, ticket.getId()); stmt.executeUpdate(); stmt.close(); } catch (Exception e) { e.printStackTrace(); } } public void deleteTicket(int id) { try { PreparedStatement stmt = conn.prepareStatement("DELETE FROM ticket WHERE id = ?"); stmt.setInt(1, id); stmt.executeUpdate(); stmt.close(); } catch (Exception e) { e.printStackTrace(); } } public void sellTicket(int id) { try { PreparedStatement stmt = conn.prepareStatement("UPDATE ticket SET sold_tickets = sold_tickets + 1 WHERE id = ?"); stmt.setInt(1, id); stmt.executeUpdate(); stmt.close(); } catch (Exception e) { e.printStackTrace(); } } public void refundTicket(int id) { try { PreparedStatement stmt = conn.prepareStatement("UPDATE ticket SET sold_tickets = sold_tickets - 1 WHERE id = ?"); stmt.setInt(1, id); stmt.executeUpdate(); stmt.close(); } catch (Exception e) { e.printStackTrace(); } } public void exportTicketSales() { try { Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM ticket"); FileWriter writer = new FileWriter("ticket_sales.csv"); writer.append("id,train_number,start_station,end_station,departure_time,estimated_time,capacity,sold_tickets\n"); while (rs.next()) { writer.append(String.valueOf(rs.getInt("id"))); writer.append(","); writer.append(rs.getString("train_number")); writer.append(","); writer.append(rs.getString("start_station")); writer.append(","); writer.append(rs.getString("end_station")); writer.append(","); writer.append(rs.getDate("departure_time").toString()); writer.append(","); writer.append(String.valueOf(rs.getInt("estimated_time"))); writer.append(","); writer.append(String.valueOf(rs.getInt("capacity"))); writer.append(","); writer.append(String.valueOf(rs.getInt("sold_tickets"))); writer.append("\n"); } writer.flush(); writer.close(); rs.close(); stmt.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` TicketController.java ```java public class TicketController extends HttpServlet { private TicketDAO ticketDAO; public void init() { ticketDAO = new TicketDAO(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getParameter("action"); if (action == null) { action = "list"; } switch (action) { case "list": listTickets(request, response); break; case "add": addTicket(request, response); break; case "edit": editTicket(request, response); break; case "update": updateTicket(request, response); break; case "delete": deleteTicket(request, response); break; case "sell": sellTicket(request, response); break; case "refund": refundTicket(request, response); break; case "export": exportTicketSales(request, response); break; default: listTickets(request, response); break; } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } private void listTickets(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<Ticket> tickets = ticketDAO.getAllTickets(); request.setAttribute("tickets", tickets); request.getRequestDispatcher("list_tickets.jsp").forward(request, response); } private void addTicket(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Ticket ticket = new Ticket(); ticket.setTrainNumber(request.getParameter("train_number")); ticket.setStartStation(request.getParameter("start_station")); ticket.setEndStation(request.getParameter("end_station")); try { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date departureTime = dateFormat.parse(request.getParameter("departure_time")); ticket.setDepartureTime(departureTime); } catch (Exception e) { e.printStackTrace(); } ticket.setEstimatedTime(Integer.parseInt(request.getParameter("estimated_time"))); ticket.setCapacity(Integer.parseInt(request.getParameter("capacity"))); ticket.setSoldTickets(Integer.parseInt(request.getParameter("sold_tickets"))); ticketDAO.addTicket(ticket); response.sendRedirect("ticket?action=list"); } private void editTicket(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int id = Integer.parseInt(request.getParameter("id")); Ticket ticket = ticketDAO.getTicketById(id); request.setAttribute("ticket", ticket); request.getRequestDispatcher("edit_ticket.jsp").forward(request, response); } private void updateTicket(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Ticket ticket = new Ticket(); ticket.setId(Integer.parseInt(request.getParameter("id"))); ticket.setTrainNumber(request.getParameter("train_number")); ticket.setStartStation(request.getParameter("start_station")); ticket.setEndStation(request.getParameter("end_station")); try { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm

相关推荐

最新推荐

recommend-type

C语言火车车票管理系统

一车站每天有n个发车班次,每个班次都有一班次号(1、2、3…n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。 功能要求:用c++设计一系统,能提供下列服务: (1)录入班次...
recommend-type

铁路订票系统查询VB ADO ACCESS

铁路信息查询系统是企业信息决策和管理的重要的组成部分,是一种典型的信息管理系统(MIS),其开发主要包括后台的数据库的建立、维护以及前端的相应应用程序的开发两个方面的内容,数据库的建立和维护主要要求其...
recommend-type

debugpy-1.7.0-cp310-cp310-win32.whl

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

ipython-5.0.0b2.zip

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

debugpy-1.1.0-cp36-cp36m-manylinux1_x86_64.whl

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

帮我设计一个基于Android平台的便签APP的代码

很抱歉,我是一个语言模型AI,无法提供完整的Android APP代码。但是,我可以给您一些设计便签APP的建议和思路。 1. 界面设计 首先考虑APP的界面设计,便签APP通常需要一个主界面用于显示所有的便签,以及一个编辑界面用于编辑单个便签。主界面可以采用列表的形式,列出所有的便签,每个便签可以显示标题和摘要内容。在编辑界面中,用户可以输入标题和正文内容,并且可以设置提醒时间、标签、优先级等。 2. 数据存储 便签APP需要一个数据存储的方案,可以考虑使用SQLite数据库来存储便签数据。每个便签可以存储标题、正文内容、提醒时间、标签、优先级等信息。 3. 便签操作 便签APP
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。