java实现航班信息查询管理系统

Java实现航班信息查询管理系统攻略

系统概述

航班信息查询管理系统是管理机场航班信息的系统,它可以提供航班信息的查询、添加、修改和删除等功能。该系统使用Java语言进行开发,采用MVC架构,使用MySQL数据库存储数据。

系统需求

该系统具备以下功能:

  1. 前端页面展示所有航班信息。
  2. 管理员登录,可添加、修改和删除航班信息。
  3. 普通用户不需要登录,可查询航班信息。
  4. 支持根据出发地、目的地、日期等条件查询航班信息。

开发流程

系统开发的主要流程如下:

  1. 设计数据库表结构。
  2. 搭建项目框架,使用Maven管理依赖。
  3. 使用Spring Boot框架进行开发,搭建Controller、Service和Dao层。
  4. 实现前端展示和用户操作页面。
  5. 对系统进行测试和调试。
  6. 部署系统运行。

代码实现

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端口,等待请求。

阅读剩余 84%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现航班信息查询管理系统 - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月24日

相关文章

  • 详解SpringMVC中的四种跳转方式、视图解析器问题

    以下是关于“详解SpringMVC中的四种跳转方式、视图解析器问题”的完整攻略,其中包含两个示例。 SpringMVC中的四种跳转方式 SpringMVC中有四种跳转方式,分别是: forward redirect internalRedirect sendRedirect 1. forward forward是一种服务器内部跳转方式,它将请求转发给另一个控…

    Java 2023年5月16日
    00
  • 详解Spring如何整合Mybatis

    下面我会详细讲解如何整合Spring和MyBatis的攻略,包括必要的配置和示例。 一、添加依赖 首先需要在pom.xml中添加以下依赖: <!– Spring –> <dependency> <groupId>org.springframework</groupId> <artifactId>…

    Java 2023年5月19日
    00
  • YII2.0框架行为(Behavior)深入详解

    下面针对”YII2.0框架行为(Behavior)深入详解”进行详细讲解,并且提供两个示例说明。 什么是行为(Behavior) 行为是 Yii 2 中一个非常重要的概念,它常常被用来实现代码复用及属性的自定义处理。通俗点来说,行为可以看作是一种类的特殊封装。在 Yii 2 中,每个行为可以封装一个函数或者一组函数。 行为的分类 可以把行为分为两种:普通行为…

    Java 2023年6月15日
    00
  • nginx负载均衡下的webshell上传的实现

    nginx是一个常用的反向代理服务器,在web应用中常常被用作负载均衡的前端。在nginx负载均衡下进行webshell的上传需要以下步骤: 1. 伪造HTTP请求 攻击者需要通过伪造HTTP请求方式进行上传webshell。伪造HTTP请求通常会使用Burp Suite等类似的工具,伪造请求包括请求方式、请求头、请求内容等,攻击者需要抓取正常用户发出的上传…

    Java 2023年6月16日
    00
  • 如何实现Java的ArrayList经典实体类

    要实现Java的ArrayList经典实体类,我们需要完成以下步骤: 创建实体类:首先需要创建Java类作为实体类,用来描述我们希望在ArrayList中存储的数据结构。例如,我们创建一个书籍类Book,包括属性ISBN、书名、作者和价格。 public class Book { private String isbn; private String nam…

    Java 2023年5月26日
    00
  • Java 实现对称加密算法

    Java 实现对称加密算法攻略 对称加密算法指使用同一个密钥进行加解密的加密算法。本攻略将介绍 Java 如何实现对称加密算法,主要包括以下内容: 对称加密算法的种类 Java 中实现对称加密的常用类库 对称加密算法的实现步骤 示例说明 对称加密算法的种类 对称加密算法包括 DES、3DES、AES 等常用算法。其中,AES 目前是最常用的对称加密算法。 J…

    Java 2023年5月26日
    00
  • Spring Data JPA实现排序与分页查询超详细流程讲解

    下面我来详细讲解一下“Spring Data JPA实现排序与分页查询超详细流程讲解”的完整攻略。本教程共包含以下五个步骤: 引入依赖 在pom.xml文件中加入以下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>…

    Java 2023年6月2日
    00
  • Java 实现倒计时功能(由秒计算天、小时、分钟、秒)

    那我来为您详细讲解Java实现倒计时功能的步骤和示例。 首先,我们需要定义一个倒计时的时间间隔,例如30秒: int countDownTime = 30; // 定义倒计时时长,单位为秒 然后,我们需要定义一个计时器,使用Java的Timer和TimerTask类。 Timer timer = new Timer(); 接着,我们需要编写一个倒计时的任务,…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部