Java实现航班信息查询管理系统攻略
系统概述
航班信息查询管理系统是管理机场航班信息的系统,它可以提供航班信息的查询、添加、修改和删除等功能。该系统使用Java语言进行开发,采用MVC架构,使用MySQL数据库存储数据。
系统需求
该系统具备以下功能:
- 前端页面展示所有航班信息。
- 管理员登录,可添加、修改和删除航班信息。
- 普通用户不需要登录,可查询航班信息。
- 支持根据出发地、目的地、日期等条件查询航班信息。
开发流程
系统开发的主要流程如下:
- 设计数据库表结构。
- 搭建项目框架,使用Maven管理依赖。
- 使用Spring Boot框架进行开发,搭建Controller、Service和Dao层。
- 实现前端展示和用户操作页面。
- 对系统进行测试和调试。
- 部署系统运行。
代码实现
1. 配置数据源
使用Spring Boot框架,配置数据源相关信息和MySQL驱动:
spring.datasource.url=jdbc:mysql://localhost:3306/flight_management?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
2. 建立实体类
建立对应的Flight实体类,与数据库表t_flight相对应:
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "t_flight")
public class Flight {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String flightNo;
@Column(nullable = false)
private String departure;
@Column(nullable = false)
private String arrival;
@Column(nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date departureTime;
@Column(nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date arrivalTime;
@Column(nullable = false)
private Integer economySeats;
@Column(nullable = false)
private Integer businessSeats;
@Column(nullable = false)
private Double economyPrice;
@Column(nullable = false)
private Double businessPrice;
@Column(nullable = false)
private String status;
private String notes;
}
3. 建立DAO层
编写对应的FlightDAO接口,继承JpaRepository接口,实现数据的增删改查:
public interface FlightDAO extends JpaRepository<Flight, Long> {
Page<Flight> findByDepartureLikeAndArrivalLikeAndDepartureTimeBetween(
String departure, String arrival, Date departureTimeStart, Date departureTimeEnd, Pageable pageable);
Page<Flight> findByDepartureLikeAndArrivalLikeAndDepartureTimeBetweenAndStatus(
String departure, String arrival, Date departureTimeStart, Date departureTimeEnd, String status, Pageable pageable);
}
4. 建立Service层
建立对应的FlightService接口,实现业务逻辑的功能:
public interface FlightService {
void addFlight(Flight flight);
void updateFlight(Long id, Flight flight);
void deleteFlight(Long id);
Flight getFlight(Long id);
Page<Flight> searchFlight(String departure, String arrival, Date departureTimeStart, Date departureTimeEnd, String status, Pageable pageable, boolean isAdmin);
}
5. 建立Controller层
建立对应的FlightController接口,实现前端页面的接口:
@RestController
@RequestMapping("/api/flight")
public class FlightController {
@Autowired
private FlightService flightService;
@PostMapping("/")
public ResultVO addFlight(@RequestBody Flight flight) {
flightService.addFlight(flight);
return ResultVOUtil.success();
}
@PutMapping("/{id}")
public ResultVO updateFlight(@PathVariable Long id, @RequestBody Flight flight) {
flightService.updateFlight(id, flight);
return ResultVOUtil.success();
}
@DeleteMapping("/{id}")
public ResultVO deleteFlight(@PathVariable Long id) {
flightService.deleteFlight(id);
return ResultVOUtil.success();
}
@GetMapping("/{id}")
public ResultVO getFlight(@PathVariable Long id) {
Flight flight = flightService.getFlight(id);
return ResultVOUtil.success(flight);
}
@GetMapping("/")
public ResultVO searchFlight(@RequestParam(required = false) String departure, @RequestParam(required = false) String arrival,
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date departureTimeStart,
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date departureTimeEnd,
@RequestParam(required = false) String status,
@RequestParam(defaultValue = "0") Integer pageNum,
@RequestParam(defaultValue = "5") Integer pageSize,
@SessionAttribute(required = false) User user) {
boolean isAdmin = false;
if (user != null) {
if (user.getRole() == RoleEnum.ADMIN.getCode()) {
isAdmin = true;
}
}
PageRequest pageable = PageRequest.of(pageNum, pageSize, Sort.Direction.ASC, "departureTime");
return ResultVOUtil.success(flightService.searchFlight(departure, arrival, departureTimeStart, departureTimeEnd, status, pageable, isAdmin));
}
}
6. 建立前端页面
实现对应的HTML、CSS和JavaScript文件,实现前端页面展示和用户操作的功能。
示例说明
以下是几个功能的示例说明:
添加航班信息
请求:
POST http://localhost:8080/api/flight/
Content-Type: application/json
{
"flightNo": "HU011",
"departure": "北京",
"arrival": "上海",
"departureTime": "2021-12-20 14:00:00",
"arrivalTime": "2021-12-20 16:30:00",
"economySeats": 100,
"businessSeats": 20,
"economyPrice": 1000.00,
"businessPrice": 2000.00,
"status": "Unpublished",
"notes": ""
}
响应:
{
"code": 0,
"msg": "成功"
}
查询航班信息
请求:
GET http://localhost:8080/api/flight/?departure=北京&arrival=上海&departureTimeStart=2021-12-20%2000:00:00&departureTimeEnd=2021-12-21%2000:00:00&status=Published&pageNum=0&pageSize=5
响应:
{
"code": 0,
"msg": "成功",
"data": {
"content": [
{
"id": 1,
"flightNo": "HU011",
"departure": "北京",
"arrival": "上海",
"departureTime": "2021-12-20 14:00:00",
"arrivalTime": "2021-12-20 16:30:00",
"economySeats": 100,
"businessSeats": 20,
"economyPrice": 1000.0,
"businessPrice": 2000.0,
"status": "Published",
"notes": ""
}
],
"pageable": {
"sort": {
"sorted": true,
"unsorted": false,
"empty": false
},
"offset": 0,
"pageSize": 5,
"pageNumber": 0,
"unpaged": false,
"paged": true
},
"last": true,
"totalPages": 1,
"totalElements": 1,
"number": 0,
"size": 5,
"sort": {
"sorted": true,
"unsorted": false,
"empty": false
},
"first": true,
"numberOfElements": 1,
"empty": false
}
}
系统部署
将项目打包为jar包,并在服务器上运行命令:
java -jar flight-management-1.0.0.jar
该命令会在服务器上启动应用,监听8080端口,等待请求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现航班信息查询管理系统 - Python技术站