Java实战之火车票预订系统的实现
系统概述
本项目实现一个简单的火车票预订系统,用户可以查询车次、座位信息,并进行订票、改签和退票操作。系统采用Java语言和MySQL数据库进行开发,使用Spring Boot框架构建项目,并搭配Thymeleaf模板引擎实现前端页面渲染。
开发环境
本项目所需的开发环境如下:
- JDK 1.8+
- Maven 3.6.2+
- IntelliJ IDEA
- MySQL 5.7+
数据库设计
本项目需要设计的数据库表包括:
- t_train 表,存储火车信息
- t_seat 表,存储座位信息
- t_order 表,存储订单信息
其中,t_train表的结构如下:
CREATE TABLE `t_train` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '火车ID',
`train_no` varchar(10) NOT NULL COMMENT '车次',
`from_station` varchar(20) NOT NULL COMMENT '起始站',
`to_station` varchar(20) NOT NULL COMMENT '终到站',
`start_time` varchar(10) NOT NULL COMMENT '发车时间',
`end_time` varchar(10) NOT NULL COMMENT '到站时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
t_seat表的结构如下:
CREATE TABLE `t_seat` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '座位ID',
`train_id` int(11) NOT NULL COMMENT '火车ID',
`seat_type` varchar(10) NOT NULL COMMENT '座位类型',
`seat_no` int(11) NOT NULL COMMENT '座位号',
`status` int(11) NOT NULL DEFAULT '0' COMMENT '座位状态:0-未售,1-已售,2-已锁定',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
t_order表的结构如下:
CREATE TABLE `t_order` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '订单ID',
`train_id` int(11) NOT NULL COMMENT '火车ID',
`seat_type` varchar(10) NOT NULL COMMENT '座位类型',
`seat_no` int(11) NOT NULL COMMENT '座位号',
`user_name` varchar(20) NOT NULL COMMENT '购票人姓名',
`create_time` datetime NOT NULL COMMENT '创建时间',
`status` int(11) NOT NULL DEFAULT '0' COMMENT '订单状态:0-未支付,1-已支付',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
实现步骤
本项目的实现步骤如下:
- 首先创建Maven项目,并导入所需的依赖。在pom.xml中添加如下代码:
<dependencies>
<!-- Spring Boot 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Thymeleaf 模板引擎依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- MySQL 驱动依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- MyBatis 依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
</dependencies>
- 配置Spring Boot及MyBatis相关配置。创建application.yml文件,并添加如下代码:
spring:
datasource:
url: jdbc:mysql://localhost:3306/train?useSSL=false&useUnicode=true&characterEncoding=UTF-8
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.example.train.entity
-
创建实体类。在src/main/java/com/example/train/entity/包下创建Train、Seat和Order三个实体类,并为其添加对应的属性和getter/setter方法。
-
创建DAO层。在src/main/java/com/example/train/mapper/包下创建TrainMapper、SeatMapper和OrderMapper三个接口,并使用MyBatis的注解方式实现对应的CRUD操作。
-
创建服务层。在src/main/java/com/example/train/service/包下创建TrainService、SeatService和OrderService三个服务类,并在其中注入DAO层依赖,实现对应的业务逻辑。
-
创建控制器层。在src/main/java/com/example/train/controller/包下创建TrainController、SeatController和OrderController三个控制器,并在其中注入服务层依赖,实现相应的请求处理和页面渲染。
-
创建前端页面。在src/main/resources/templates/目录下创建对应的HTML文件,使用Thymeleaf模板引擎进行页面渲染。
示例说明
以下是两个示例说明:
查询车次信息
在网站首页,用户可以进行火车查询操作,输入始发站、终点站和出发日期后,系统会返回符合条件的车次信息。
@GetMapping("/trains")
public String queryTrains(Model model, String from, String to, String time) {
List<Train> trains = trainService.queryTrains(from, to, time);
model.addAttribute("trains", trains);
return "train/trains";
}
订购火车票
在车次详情页面,用户可以进行订票操作,选择座位类型和座位编号,提交后系统会生成相应的订单。
@PostMapping("/order")
public String order(User user, @RequestParam("trainId") Integer trainId, @RequestParam("seatType") String seatType,
@RequestParam("seatNo") Integer seatNo, Model model) {
Order order = orderService.bookOrder(user, trainId, seatType, seatNo);
model.addAttribute("order", order);
return "order/detail";
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实战之火车票预订系统的实现 - Python技术站