Java实现Web航空订票系统(servlet+jdbc+jsp+mysql)(上)

简介: Java实现Web航空订票系统(servlet+jdbc+jsp+mysql)
+关注继续查看

一、系统介绍


1.软件环境


Java:jdk1.8

Mysql:8.0.11

Tomcat:8.0.28


2.系统功能


机票查询

1.航行类型

2.出发城市

3.到达城市

4.出发日期

5.返回日期

选择航班

1.航班信息

2.起飞时间

3.到达时间

4.机票价格

填写乘客信息

1.姓名

2.护照

3.座位偏好

4.添加乘客

5.联系人

6.订单信息确认

7.提交订单

订单详情页

1.订单详细信息

2.航班详细信息

3.乘机人详细信息

4.联系人详细信息


3.数据库


/* create database */
drop database if exists AIRLINE_1;
drop database if exists AIRLINE_2;
drop database if exists AIRLINE_3;
drop database if exists ABS;

create database AIRLINE_1;
create database AIRLINE_2;
create database AIRLINE_3;
create database ABS;

/* create table of database Airline*/

use AIRLINE_1;

create table airline(
    code        varchar(3)  not null    primary key,
    name        varchar(20) not null,
    discount    float(2,2)  not null
);

create table airport(
    code        varchar(4)  not null    primary key,
    name        varchar(20) not null,
    city        varchar(20) not null,
    country     varchar(20) not null,
    connTime    int(3)      not null    /* minute */
);

create table airplane(
    name        varchar(20) not null    primary key,
    type        varchar(10) not null
);

create table seat(
    id          int(3)      not null    primary key auto_increment, 
    relativeID  int(3)      not null,   /* 飞机上作为的相对编号 */
    row         int(3)      not null,
    num         int(3)      not null,
    type        varchar(12) not null,   /* windowSeat middleSeat aisleSeat*/
    flightID    int(10)     not null,   /* Table:airplane Item:id */
    passport    varchar(20)             /* passenger passport */
);

create table flight(
    id              int(10)     not null    primary key,
    airlineCode     varchar(3)  not null,
    number          int(6)      not null,
    depatureDate    Date        not null,
    depatureTime    time        not null,
    arrivalDate     Date        not null,
    arrivalTime     time        not null,
    fare            float(6,2)  not null,
    depatureAirport varchar(4)  not null,   /* Table:airport Item:code */
    arrivalAirport  varchar(4)  not null,   /* Table:airport Item:code */
    airplaneName    varchar(20) not null,   /* Table:airplane Item:name */
    airplaneType    varchar(10) not null    /* Table:airplane Item:type */
);


use AIRLINE_2;

create table airline(
    code        varchar(3)  not null    primary key,
    name        varchar(20) not null,
    discount    float(2,2)  not null
);

create table airport(
    code        varchar(4)  not null    primary key,
    name        varchar(20) not null,
    city        varchar(20) not null,
    country     varchar(20) not null,
    connTime    int(3)      not null    /* minute */
);

create table airplane(
    name        varchar(20) not null    primary key,
    type        varchar(10) not null
);

create table seat(
    id          int(3)      not null    primary key auto_increment, 
    relativeID  int(3)      not null,   /* 飞机上作为的相对编号 */
    row         int(3)      not null,
    num         int(3)      not null,
    type        varchar(12) not null,   /* windowSeat middleSeat aisleSeat*/
    flightID    int(10)     not null,   /* Table:airplane Item:id */
    passport    varchar(20)             /* passenger passport */
);

create table flight(
    id              int(10)     not null    primary key,
    airlineCode     varchar(3)  not null,
    number          int(6)      not null,
    depatureDate    Date        not null,
    depatureTime    time        not null,
    arrivalDate     Date        not null,
    arrivalTime     time        not null,
    fare            float(6,2)  not null,
    depatureAirport varchar(4)  not null,   /* Table:airport Item:code */
    arrivalAirport  varchar(4)  not null,   /* Table:airport Item:code */
    airplaneName    varchar(20) not null,   /* Table:airplane Item:name */
    airplaneType    varchar(10) not null    /* Table:airplane Item:type */
);


use AIRLINE_3;

create table airline(
    code        varchar(3)  not null    primary key,
    name        varchar(20) not null,
    discount    float(2,2)  not null
);

create table airport(
    code        varchar(4)  not null    primary key,
    name        varchar(20) not null,
    city        varchar(20) not null,
    country     varchar(20) not null,
    connTime    int(3)      not null    /* minute */
);

create table airplane(
    name        varchar(20) not null    primary key,
    type        varchar(10) not null
);

create table seat(
    id          int(3)      not null    primary key auto_increment, 
    relativeID  int(3)      not null,   /* 飞机上作为的相对编号 */
    row         int(3)      not null,
    num         int(3)      not null,
    type        varchar(12) not null,   /* windowSeat middleSeat aisleSeat*/
    flightID    int(10)     not null,   /* Table:airplane Item:id */
    passport    varchar(20)             /* passenger passport */
);

create table flight(
    id              int(10)     not null    primary key,
    airlineCode     varchar(3)  not null,
    number          int(6)      not null,
    depatureDate    Date        not null,
    depatureTime    time        not null,
    arrivalDate     Date        not null,
    arrivalTime     time        not null,
    fare            float(6,2)  not null,
    depatureAirport varchar(4)  not null,   /* Table:airport Item:code */
    arrivalAirport  varchar(4)  not null,   /* Table:airport Item:code */
    airplaneName    varchar(20) not null,   /* Table:airplane Item:name */
    airplaneType    varchar(10) not null    /* Table:airplane Item:type */
);



/* create table of database ABS*/

use ABS;

create table airline(
    code        varchar(3)  not null    primary key,
    name        varchar(20) not null,
    discount    float(2,2)  not null
);

create table flightInfo(
    id              int(10)     not null    primary key  auto_increment,
    airlineCode     varchar(3)  not null,   /* Table:airline Item:code */
    flightID        int(10)     not null,   /* Database:Airline Table:flight Item: */
    
    number          int(6)      not null,   /* Database:Airline Table:flight Item:number */
    depatureDate    Date        not null,   /* Database:Airline Table:flight Item:depatureDate */
    depatureTime    time        not null,   /* Database:Airline Table:flight Item:depatureTime */
    arrivalDate     Date        not null,   /* Database:Airline Table:flight Item:arrivalDate */
    arrivalTime     time        not null,   /* Database:Airline Table:flight Item:arrivalTime */
    fare            float(6,2)  not null,   /* Database:Airline Table:flight Item:fare */
    depatureAirport varchar(4)  not null,   /* Database:Airline Table:flight Item:depatureAirport */
    arrivalAirport  varchar(4)  not null,   /* Database:Airline Table:flight Item:arrivalAirport */
    
    airlineName     varchar(20) not null,   /* Table:airline Item:name */
    airplaneName    varchar(20) not null,   /* Database:Airline Table:airplane Item:name */
    airplaneType    varchar(10) not null,   /* 大:240 中:160 小:80 */
    depatureAirportName     varchar(20) not null,
    arrivalAirportName      varchar(20) not null,
    depatureAirportCity     varchar(20) not null,
    arrivalAirportCity      varchar(20) not null,
    
    airplaneEmptySeats  int(3)  not null    /* Database:Airline Table:airplane Item:conunt of empty seats */
);

create table airport(
    code        varchar(4)  not null    primary key,
    name        varchar(20) not null,
    city        varchar(20) not null,
    country     varchar(20) not null,
    connTime    int(3)      not null    /* minute */
);

create table passenger(
    passport    varchar(20) not null,   /* no primary key for test */
    name        varchar(20) not null    
);

create table trip(
    id              int(10)     not null    primary key,
    flightInfoID    int(10)     not null,   /* Database:Airline Table:flight Item: */
    fare            float(6,2)  not null,   /* fare不同于 flightInfo中的 fare */
    passport        varchar(20) not null,   /* Table:passenger Item:passport */
    seatID          int(3)      not null    /* Database:Airline Table:seat Item:relativeID */
);

create table orders(
    id              int(10)     not null,   /* id 相同的为同一个订单 */
    tripID          int(10)     not null,   /* Table:tirp Item:id */
    createDate      date        not null,
    createTime      time        not null,
    totalFare       float(6,2)  not null,
    contactName     varchar(20) not null,
    contactPhone    varchar(20) not null
);


二、系统展示


1.机票查询


20210623235554581.png

2.选择航班


20210623235650895.png

3.填写乘客和联系人信息、提交订单


20210623235846778.png

4.订单详细信息


20210623235929256.png


三、部分代码


SearchAction


package com.abs.action;

import java.sql.Date;
import java.sql.Time;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.*;

import com.abs.db.DBName;
import com.abs.factory.DaoFactory;
import com.abs.model.*;

public class SearchAction {
    
    public static List<FlightInfo> searchFlightDirectly(String departureCity, String arrivalCity, String departureDateString) throws Exception {
        List<FlightInfo> list = null;
        
        Date departureDate = null;
        if (checkDate(departureDateString)) {   //  测试Date格式是否合格
            departureDate = Date.valueOf(departureDateString);
        }
        
        list = DaoFactory.getFlightInfoDaoInstance(DBName.ABS).findByAirport(departureCity, arrivalCity, departureDate);
        
        return list;
    }
    
    public static List<List<FlightInfo>> searchFlightTransfer(String departureCity, String arrivalCity, String departureDateString) throws Exception {
        List<List<FlightInfo>> list = new ArrayList<List<FlightInfo>>();
        
        Date departureDate = null;
        if (checkDate(departureDateString)) {   //  测试Date格式是否合格
            departureDate = Date.valueOf(departureDateString);
        }
        
        List<FlightInfo> departureList = DaoFactory.getFlightInfoDaoInstance(DBName.ABS).findByDepatureAirport(departureCity, departureDate);
        
        for (FlightInfo depatureFlight : departureList) {
            Airport transferAirport = DaoFactory.getAirportDaoInstance(DBName.ABS).findByCode(depatureFlight.getArrivalAirport());
            
            if(null != transferAirport){
                int connTime = transferAirport.getConnTime();   
                Time depatureTime = new Time(depatureFlight.getArrivalTime().getTime() + connTime * 60 * 1000);
                String transferCity = depatureFlight.getArrivalAirportCity();
                
                List<FlightInfo> arrivalList = DaoFactory.getFlightInfoDaoInstance(DBName.ABS).findByTransferArrivalAirport(transferCity, arrivalCity, departureDate, depatureTime);
                
                for (FlightInfo arrivalFlight : arrivalList) {
                    List<FlightInfo> item = new ArrayList<FlightInfo>();
                    if(depatureFlight.getAirlineCode().equals(arrivalFlight.getAirlineCode())){
                        double discount = DaoFactory.getAirlineDaoInstance(DBName.ABS).findByCode(depatureFlight.getAirlineCode()).getDiscount();
                        arrivalFlight.setFare(arrivalFlight.getFare() * discount); 
                    }
                    
                    item.add(depatureFlight);
                    item.add(arrivalFlight);
                    list.add(item);
                }
            }else {
                System.err.println(depatureFlight.getArrivalAirportCity() + depatureFlight.getArrivalAirport() + ":没有找到机场信息");
            }
        }
        
        return list;
    }
    
    public static boolean checkDate(String date) {
        String regex= "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))";   
        return Pattern.compile(regex).matcher(date).matches(); 
    }
}

OrderAction

package com.abs.action;

import java.sql.Date;
import java.sql.Time;
import java.util.List;

import com.abs.db.DBName;
import com.abs.factory.DaoFactory;
import com.abs.model.Flight;
import com.abs.model.FlightInfo;
import com.abs.model.Orders;
import com.abs.model.Passenger;
import com.abs.model.Seat;
import com.abs.model.Trip;

public class OrderAction {

    public static Orders createOrder(List<FlightInfo> flightInfos, List<Passenger> passengers, String[] seatTypeList, String contactName, String contactPhone) throws Exception {
        //  生成订单编号
        Orders.addIdCounter();
        
        Orders order = null;
        double total = 0;
        
        for (FlightInfo flightInfo : flightInfos) {
            total += flightInfo.getFare();
        }
        total = total * passengers.size();      //  计算总费用
        
        for (Passenger passenger : passengers) {
            DaoFactory.getPassengerDaoInstance(DBName.ABS).add(passenger);
        }
        
        for (FlightInfo flightInfo : flightInfos) {
            for (Passenger passenger : passengers) {
                Trip trip = new Trip();
                trip.setId(Trip.getIdCounter());
                trip.setFlightInfoID(flightInfo.getId());
                trip.setFare(flightInfo.getFare());
                trip.setPassport(passenger.getPassport());
                trip.setSeatID(OrderAction.orderSeat(flightInfo, passenger, seatTypeList[passengers.indexOf(passenger)]));  //  分配座位
                flightInfo.setAirplaneEmptySeats(flightInfo.getAirplaneEmptySeats() - 1);       //  空闲座位数 - 1
                DaoFactory.getFlightInfoDaoInstance(DBName.ABS).addPassenger(flightInfo.getId());   //  空闲座位数 - 1
                DaoFactory.getTripDaoInstance(DBName.ABS).add(trip);
                
                Orders orders = new Orders();
                orders.setId(Orders.getIdCounter());    //  同一个订单号,代表为同一个订单
                orders.setTripID(trip.getId());         //  每个Orders item 与一个 Trip 一一对应
                java.util.Date date = new java.util.Date();
                orders.setCreateDate(new Date(date.getTime()));
                orders.setCreateTime(new Time(date.getTime()));
                orders.setTotalFare(total);
                orders.setContactName(contactName);
                orders.setContactPhone(contactPhone);
                DaoFactory.getOrdersDaoInstance(DBName.ABS).add(orders);
                
                order = orders;     //  返回一个 Orders item用于显示
            }
        }
        
        return order;
    }
    
    public static int orderSeat(FlightInfo flightInfo, Passenger passenger, String seatType) throws Exception {
        int seatID = -1;
        
        String airlineCode = flightInfo.getAirlineCode();
        Flight flight = null;   
        //  airline_1  MU(东方航空), airline_2  CZ(南方航空), airline_3  CA(中国国航) 
        if(airlineCode.equals("MU")){           //  airline_1  MU(东方航空)
            flight = DaoFactory.getFlightDaoInstance(DBName.AIRLINE_1).findByID(flightInfo.getFlightID()); 
            List<Seat> emptySeats = DaoFactory.getSeatDaoInstance(DBName.AIRLINE_1).findEmptySeatByFlightID(flight.getId());
            
            if (emptySeats.size() > 0) {
                Seat seat = null;
                for (Seat emptySeat : emptySeats) {
                    if(emptySeat.getType() == seatType){
                        seat = emptySeat;
                        break;
                    }
                }
                if(seat == null){
                    seat = emptySeats.get(0);
                }
                
                seat.setPassport(passenger.getPassport());
                DaoFactory.getSeatDaoInstance(DBName.AIRLINE_1).modify(seat);
                
                seatID = seat.getRelativeID();
            }
        }else if (airlineCode.equals("CZ")) {   //  airline_2  CZ(南方航空)
            flight = DaoFactory.getFlightDaoInstance(DBName.AIRLINE_2).findByID(flightInfo.getFlightID()); 
            List<Seat> emptySeats = DaoFactory.getSeatDaoInstance(DBName.AIRLINE_2).findEmptySeatByFlightID(flight.getId());
            
            if (emptySeats.size() > 0) {
                Seat seat = null;
                for (Seat emptySeat : emptySeats) {
                    if(emptySeat.getType() == seatType){
                        seat = emptySeat;
                    }
                }
                if(seat == null){
                    seat = emptySeats.get(0);
                }
                
                seat.setPassport(passenger.getPassport());
                DaoFactory.getSeatDaoInstance(DBName.AIRLINE_2).modify(seat);

                seatID = seat.getRelativeID();
            }
        }else {                             //  airline_3  CA(中国国航) 
            flight = DaoFactory.getFlightDaoInstance(DBName.AIRLINE_3).findByID(flightInfo.getFlightID()); 
            List<Seat> emptySeats = DaoFactory.getSeatDaoInstance(DBName.AIRLINE_3).findEmptySeatByFlightID(flight.getId());
            
            if (emptySeats.size() > 0) {
                Seat seat = null;
                for (Seat emptySeat : emptySeats) {
                    if(emptySeat.getType() == seatType){
                        seat = emptySeat;
                    }
                }
                if(seat == null){
                    seat = emptySeats.get(0);
                }
                
                seat.setPassport(passenger.getPassport());
                DaoFactory.getSeatDaoInstance(DBName.AIRLINE_3).modify(seat);

                seatID = seat.getRelativeID();
            }
        }
        
        return seatID;
    }
}

AirlineDaoImpl

package com.abs.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.abs.dao.AirlineDao;
import com.abs.db.DBConnection;
import com.abs.db.DBName;
import com.abs.model.Airline;

public class AirlineDaoImpl implements AirlineDao {
    
    private Connection conn = null;
    private PreparedStatement pstmt = null;
    
    public AirlineDaoImpl(Connection conn) {
        // TODO Auto-generated constructor stub
        this.conn = conn;
    }

    @Override
    public boolean add(Airline airline) throws Exception {
        // TODO Auto-generated method stub
        String sql = "insert into airline(code, name, discount) values(?,?,?)";
        this.pstmt = this.conn.prepareStatement(sql);
        this.pstmt.setString(1, airline.getCode());
        this.pstmt.setString(2, airline.getName());
        this.pstmt.setDouble(3, airline.getDiscount());
        
        int update = this.pstmt.executeUpdate();
        this.pstmt.close();
        if(update > 0){
            return true;
        }else{
            return false;
        }
    }

    @Override
    public Airline findByCode(String code) throws Exception {
        // TODO Auto-generated method stub
        String sql = "select * from airline where code=?";
        this.pstmt = this.conn.prepareStatement(sql);
        this.pstmt.setString(1, code);
        ResultSet resultSet = this.pstmt.executeQuery();
        
        Airline airline = null;
        if(resultSet.next()){
            airline = new Airline();
            airline.setCode(resultSet.getString(1));
            airline.setName(resultSet.getString(2));
            airline.setDiscount(resultSet.getDouble(3));
        }
        this.pstmt.close();
        return airline;
    }

    @Override
    public List<Airline> findAll() throws Exception {
        // TODO Auto-generated method stub
        String sql = "select * from airline";
        this.pstmt = this.conn.prepareStatement(sql);
        ResultSet resultSet = this.pstmt.executeQuery();
        
        List<Airline> list = new ArrayList<>();
        Airline airline = null;
        while(resultSet.next()){
            airline = new Airline();
            airline.setCode(resultSet.getString(1));
            airline.setName(resultSet.getString(2));
            airline.setDiscount(resultSet.getDouble(3));
            list.add(airline);
        }
        this.pstmt.close();
        return list;
    }

    public static void main(String args[]) throws Exception {
        Airline airline = new Airline();
        airline.setCode("MU");
        airline.setName("东方航空");
        airline.setDiscount(0.9);
        
        new AirlineDaoImpl(new DBConnection().getConnection(DBName.AIRLINE_1)).add(airline);
    }
}

FlightDaoImpl

package com.abs.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.sql.*;
import java.util.List;

import com.abs.dao.FlightDao;
import com.abs.db.DBName;
import com.abs.factory.DaoFactory;
import com.abs.model.Flight;

public class FlightDaoImpl implements FlightDao {
    
    private Connection conn = null;
    private PreparedStatement pstmt = null;
    
    public FlightDaoImpl(Connection conn) {
        // TODO Auto-generated constructor stub
        this.conn = conn;
    }
    
    @Override
    public boolean add(Flight flight) throws Exception {
        // TODO Auto-generated method stub
        String sql = "insert into flight(id, airlineCode, number, depatureDate, depatureTime, arrivalDate, arrivalTime, fare, "
                + "depatureAirport, arrivalAirport, airplaneName, airplaneType) values(?,?,?,?,?,?,?,?,?,?,?,?)";
        this.pstmt = this.conn.prepareStatement(sql);
        this.pstmt.setInt(1, flight.getId());
        this.pstmt.setString(2, flight.getAirlineCode());
        this.pstmt.setInt(3, flight.getNumber());
        this.pstmt.setDate(4, flight.getDepatureDate());
        this.pstmt.setTime(5, flight.getDepatureTime());
        this.pstmt.setDate(6, flight.getArrivalDate());
        this.pstmt.setTime(7, flight.getArrivalTime());
        this.pstmt.setDouble(8, flight.getFare());
        this.pstmt.setString(9, flight.getDepatureAirport());
        this.pstmt.setString(10, flight.getArrivalAirport());
        this.pstmt.setString(11, flight.getAirplaneName());
        this.pstmt.setString(12, flight.getAirplaneType());
        
        int update = this.pstmt.executeUpdate();
        this.pstmt.close();
        if(update > 0){
            return true;
        }else {
            return false;
        }
    }

    @Override
    public Flight findByID(int id) throws Exception {
        // TODO Auto-generated method stub
        String sql = "select * from flight where id=?";
        this.pstmt = this.conn.prepareStatement(sql);
        this.pstmt.setInt(1, id);
        ResultSet resultSet = this.pstmt.executeQuery();
        
        Flight flight = null;
        if(resultSet.next()){
            flight = new Flight();
            flight.setId(resultSet.getInt(1));
            flight.setAirlineCode(resultSet.getString(2));
            flight.setNumber(resultSet.getInt(3));
            flight.setDepatureDate(resultSet.getDate(4));
            flight.setDepatureTime(resultSet.getTime(5));
            flight.setArrivalDate(resultSet.getDate(6));
            flight.setArrivalTime(resultSet.getTime(7));
            flight.setFare(resultSet.getDouble(8));
            flight.setDepatureAirport(resultSet.getString(9));
            flight.setArrivalAirport(resultSet.getString(10));
            flight.setAirplaneName(resultSet.getString(11));
            flight.setAirplaneType(resultSet.getString(12));
        }
        this.pstmt.close();
        return flight;
    }

    @Override
    public List<Flight> findAll() throws Exception {
        // TODO Auto-generated method stub
        String sql = "select * from flight";
        this.pstmt = this.conn.prepareStatement(sql);
        ResultSet resultSet = this.pstmt.executeQuery();
        
        List<Flight> list = new ArrayList<>();
        Flight flight = null;
        while(resultSet.next()){
            flight = new Flight();
            flight.setId(resultSet.getInt(1));
            flight.setAirlineCode(resultSet.getString(2));
            flight.setNumber(resultSet.getInt(3));
            flight.setDepatureDate(resultSet.getDate(4));
            flight.setDepatureTime(resultSet.getTime(5));
            flight.setArrivalDate(resultSet.getDate(6));
            flight.setArrivalTime(resultSet.getTime(7));
            flight.setFare(resultSet.getDouble(8));
            flight.setDepatureAirport(resultSet.getString(9));
            flight.setArrivalAirport(resultSet.getString(10));
            flight.setAirplaneName(resultSet.getString(11));
            flight.setAirplaneType(resultSet.getString(12));
        }
        this.pstmt.close();
        return list;
    }

    public static void main(String agrs[]) throws Exception {
        Flight flight = new Flight();
        flight.setNumber(123);
        flight.setDepatureDate(new Date(new java.util.Date().getTime()));
        flight.setDepatureTime(new Time(new java.util.Date().getTime()));
        flight.setArrivalDate(new Date(new java.util.Date().getTime()));
        flight.setArrivalTime(new Time(new java.util.Date().getTime()));
        flight.setFare(599.0);
        flight.setDepatureAirport("ecb");
        flight.setArrivalAirport("abc");
        flight.setAirplaneName("空客A320");
        flight.setAirplaneType("中");
        
        DaoFactory.getFlightDaoInstance(DBName.AIRLINE_1).add(flight);
    }
}

FlightInfoDaoImpl

package com.abs.dao.impl;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Time;
import java.util.ArrayList;
import java.util.List;

import com.abs.dao.FlightInfoDao;
import com.abs.db.DBName;
import com.abs.factory.DaoFactory;
import com.abs.model.FlightInfo;

public class FlightInfoDaoImpl implements FlightInfoDao {
    
    private Connection conn = null;
    private PreparedStatement pstmt = null;
    
    public FlightInfoDaoImpl(Connection conn) {
        // TODO Auto-generated constructor stub
        this.conn = conn;
    }
    
    @Override
    public boolean add(FlightInfo flightInfo) throws Exception {
        // TODO Auto-generated method stub
        String sql = "insert into flightInfo(airlineCode, flightID, number, "
                + "depatureDate, depatureTime, arrivalDate, arrivalTime,"
                + "fare, depatureAirport, arrivalAirport, airlineName, airplaneName,"
                + "airplaneType, depatureAirportName, arrivalAirportName, depatureAirportCity, arrivalAirportCity, airplaneEmptySeats) "
                + "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
        this.pstmt = this.conn.prepareStatement(sql);
        this.pstmt.setString(1, flightInfo.getAirlineCode());
        this.pstmt.setInt(2, flightInfo.getFlightID());
        this.pstmt.setInt(3, flightInfo.getNumber());
        this.pstmt.setDate(4, flightInfo.getDepatureDate());
        this.pstmt.setTime(5, flightInfo.getDepatureTime());
        this.pstmt.setDate(6, flightInfo.getArrivalDate());
        this.pstmt.setTime(7, flightInfo.getArrivalTime());
        this.pstmt.setDouble(8, flightInfo.getFare());
        this.pstmt.setString(9, flightInfo.getDepatureAirport());
        this.pstmt.setString(10, flightInfo.getArrivalAirport());
        this.pstmt.setString(11, flightInfo.getAirlineName());
        this.pstmt.setString(12, flightInfo.getAirplaneName());
        this.pstmt.setString(13, flightInfo.getAirplaneType());
        this.pstmt.setString(14, flightInfo.getDepatureAirportName());
        this.pstmt.setString(15, flightInfo.getArrivalAirportName());
        this.pstmt.setString(16, flightInfo.getDepatureAirportCity());
        this.pstmt.setString(17, flightInfo.getArrivalAirportCity());
        this.pstmt.setInt(18, flightInfo.getAirplaneEmptySeats());
        
        int update = this.pstmt.executeUpdate();
        this.pstmt.close();
        if(update > 0){
            return true;
        }else {
            return false;
        }
    }

    @Override
    public FlightInfo findByID(int id) throws Exception {
        // TODO Auto-generated method stub
        String sql = "select * from flightInfo where id=?";
        this.pstmt = this.conn.prepareStatement(sql);
        this.pstmt.setInt(1, id);
        ResultSet resultSet = this.pstmt.executeQuery();
        
        FlightInfo flightInfo = null;
        if(resultSet.next()){
            flightInfo = new FlightInfo();
            flightInfo.setId(resultSet.getInt(1));
            flightInfo.setAirlineCode(resultSet.getString(2));
            flightInfo.setFlightID(resultSet.getInt(3));
            flightInfo.setNumber(resultSet.getInt(4));
            flightInfo.setDepatureDate(resultSet.getDate(5));
            flightInfo.setDepatureTime(resultSet.getTime(6));
            flightInfo.setArrivalDate(resultSet.getDate(7));
            flightInfo.setArrivalTime(resultSet.getTime(8));
            flightInfo.setFare(resultSet.getDouble(9));
            flightInfo.setDepatureAirport(resultSet.getString(10));
            flightInfo.setArrivalAirport(resultSet.getString(11));
            flightInfo.setAirlineName(resultSet.getString(12));
            flightInfo.setAirplaneName(resultSet.getString(13));
            flightInfo.setAirplaneType(resultSet.getString(14));
            flightInfo.setDepatureAirportName(resultSet.getString(15));
            flightInfo.setArrivalAirportName(resultSet.getString(16));
            flightInfo.setDepatureAirportCity(resultSet.getString(17));
            flightInfo.setArrivalAirportCity(resultSet.getString(18));
            flightInfo.setAirplaneEmptySeats(resultSet.getInt(19));
        }
        this.pstmt.close();
        return flightInfo;
    }
    
    @Override
    public List<FlightInfo> findByAirport(String depatureAirportCity, String arrivalAirportCity, Date depatureDate) throws Exception {
        // TODO Auto-generated method stub
        String sql = "select * from flightInfo where depatureAirportCity=? and arrivalAirportCity=? and depatureDate=?";
        this.pstmt = this.conn.prepareStatement(sql);
        this.pstmt.setString(1, depatureAirportCity);
        this.pstmt.setString(2, arrivalAirportCity);
        this.pstmt.setDate(3, depatureDate);
        ResultSet resultSet = this.pstmt.executeQuery();
        
        List<FlightInfo> list = new ArrayList<>();
        FlightInfo flightInfo = null;
        while(resultSet.next()){
            flightInfo = new FlightInfo();
            flightInfo.setId(resultSet.getInt(1));
            flightInfo.setAirlineCode(resultSet.getString(2));
            flightInfo.setFlightID(resultSet.getInt(3));
            flightInfo.setNumber(resultSet.getInt(4));
            flightInfo.setDepatureDate(resultSet.getDate(5));
            flightInfo.setDepatureTime(resultSet.getTime(6));
            flightInfo.setArrivalDate(resultSet.getDate(7));
            flightInfo.setArrivalTime(resultSet.getTime(8));
            flightInfo.setFare(resultSet.getDouble(9));
            flightInfo.setDepatureAirport(resultSet.getString(10));
            flightInfo.setArrivalAirport(resultSet.getString(11));
            flightInfo.setAirlineName(resultSet.getString(12));
            flightInfo.setAirplaneName(resultSet.getString(13));
            flightInfo.setAirplaneType(resultSet.getString(14));
            flightInfo.setDepatureAirportName(resultSet.getString(15));
            flightInfo.setArrivalAirportName(resultSet.getString(16));
            flightInfo.setDepatureAirportCity(resultSet.getString(17));
            flightInfo.setArrivalAirportCity(resultSet.getString(18));
            flightInfo.setAirplaneEmptySeats(resultSet.getInt(19));
            
            list.add(flightInfo);
        }
        this.pstmt.close();
        return list;
    }

    @Override
    public List<FlightInfo> findByDepatureAirport(String depatureAirportCity, Date depatureDate) throws Exception {
        // TODO Auto-generated method stub
        String sql = "select * from flightInfo where depatureAirportCity=? and depatureDate=?";
        this.pstmt = this.conn.prepareStatement(sql);
        this.pstmt.setString(1, depatureAirportCity);
        this.pstmt.setDate(2, depatureDate);
        ResultSet resultSet = this.pstmt.executeQuery();
        
        List<FlightInfo> list = new ArrayList<>();
        FlightInfo flightInfo = null;
        while(resultSet.next()){
            flightInfo = new FlightInfo();
            flightInfo.setId(resultSet.getInt(1));
            flightInfo.setAirlineCode(resultSet.getString(2));
            flightInfo.setFlightID(resultSet.getInt(3));
            flightInfo.setNumber(resultSet.getInt(4));
            flightInfo.setDepatureDate(resultSet.getDate(5));
            flightInfo.setDepatureTime(resultSet.getTime(6));
            flightInfo.setArrivalDate(resultSet.getDate(7));
            flightInfo.setArrivalTime(resultSet.getTime(8));
            flightInfo.setFare(resultSet.getDouble(9));
            flightInfo.setDepatureAirport(resultSet.getString(10));
            flightInfo.setArrivalAirport(resultSet.getString(11));
            flightInfo.setAirlineName(resultSet.getString(12));
            flightInfo.setAirplaneName(resultSet.getString(13));
            flightInfo.setAirplaneType(resultSet.getString(14));
            flightInfo.setDepatureAirportName(resultSet.getString(15));
            flightInfo.setArrivalAirportName(resultSet.getString(16));
            flightInfo.setDepatureAirportCity(resultSet.getString(17));
            flightInfo.setArrivalAirportCity(resultSet.getString(18));
            flightInfo.setAirplaneEmptySeats(resultSet.getInt(19));
            
            list.add(flightInfo);
        }
        this.pstmt.close();
        return list;
    }

    @Override
    public List<FlightInfo> findByTransferArrivalAirport(String depatureAirportCity, String arrivalAirportCity, Date depatureDate, Time depatureTime) throws Exception {
        // TODO Auto-generated method stub
        String sql = "select * from flightInfo where depatureAirportCity=? and arrivalAirportCity=? and depatureDate>=? and depatureTime>=?";
        this.pstmt = this.conn.prepareStatement(sql);
        this.pstmt.setString(1, depatureAirportCity);
        this.pstmt.setString(2, arrivalAirportCity);
        this.pstmt.setDate(3, depatureDate);
        this.pstmt.setTime(4, depatureTime);
        ResultSet resultSet = this.pstmt.executeQuery();
        
        List<FlightInfo> list = new ArrayList<>();
        FlightInfo flightInfo = null;
        while(resultSet.next()){
            flightInfo = new FlightInfo();
            flightInfo.setId(resultSet.getInt(1));
            flightInfo.setAirlineCode(resultSet.getString(2));
            flightInfo.setFlightID(resultSet.getInt(3));
            flightInfo.setNumber(resultSet.getInt(4));
            flightInfo.setDepatureDate(resultSet.getDate(5));
            flightInfo.setDepatureTime(resultSet.getTime(6));
            flightInfo.setArrivalDate(resultSet.getDate(7));
            flightInfo.setArrivalTime(resultSet.getTime(8));
            flightInfo.setFare(resultSet.getDouble(9));
            flightInfo.setDepatureAirport(resultSet.getString(10));
            flightInfo.setArrivalAirport(resultSet.getString(11));
            flightInfo.setAirlineName(resultSet.getString(12));
            flightInfo.setAirplaneName(resultSet.getString(13));
            flightInfo.setAirplaneType(resultSet.getString(14));
            flightInfo.setDepatureAirportName(resultSet.getString(15));
            flightInfo.setArrivalAirportName(resultSet.getString(16));
            flightInfo.setDepatureAirportCity(resultSet.getString(17));
            flightInfo.setArrivalAirportCity(resultSet.getString(18));
            flightInfo.setAirplaneEmptySeats(resultSet.getInt(19));
            
            list.add(flightInfo);
        }
        this.pstmt.close();
        return list;
    }

    @Override
    public int addPassenger(int id) throws Exception {
        // TODO Auto-generated method stub
        String sql = "select airplaneEmptySeats from flightInfo where id=?";
        this.pstmt = this.conn.prepareStatement(sql);
        this.pstmt.setInt(1, id);
        ResultSet resultSet = this.pstmt.executeQuery();
        
        int emptySeats = 0;
        if(resultSet.next()){
            emptySeats = resultSet.getInt(1);
        }
        emptySeats--;
        
        sql = "update flightInfo set airplaneEmptySeats=? where id=?";
        this.pstmt = this.conn.prepareStatement(sql);
        this.pstmt.setInt(1, emptySeats);
        this.pstmt.setInt(2, id);
        this.pstmt.executeUpdate();
        this.pstmt.close();
        
        return emptySeats;
    }
    
}

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
Java 关系型数据库 MySQL
Java连接MySQL数据库 jdbc编写
首先我们要去下载,我这里快速的一波走下去。选中第二个下载好后解压。
|
3天前
|
SQL Java 关系型数据库
【MySQL】 Java的JDBC编程
【MySQL】 Java的JDBC编程
|
7天前
|
SQL Java 数据库连接
java jdbc
JDBC(Java Database Connectivity)是Java连接数据库的标准API,可以通过JDBC连接各种类型的数据库。具体步骤包括:加载驱动、获取连接、获取数据库操作对象、执行SQL语句、处理结果集等。JDBC提供了一组用Java语言编写的类和接口,使得Java程序员可以使用统一的接口访问不同的数据库。JDBC的优势在于可以编写一次程序,就可以在任何平台上运行,同时也可以避免为不同的数据库编写不同的程序。
8 0
|
7天前
|
Java 数据库连接 应用服务中间件
java-初识Servlet,Tomcat,JDBC
我们在此文章知道了servlet 是基于Java语言编写的服务器端程序,可以处理Web容器(如Tomcat)发送过来的HTTP请求,也写了实例代码,另外servlet的过滤器,可以用来处理请求前与请求后的一些逻辑。;接着简单了介绍了tomcat,知道Tomcat 作为一个 Web 服务器,可以通过 Servlet 容器来管理和运行 Servlet;最后介绍jdbc,以及jdbc连接数据库的实例代码。
10 0
|
1月前
|
存储 SQL Java
Java JDBC编程
Java JDBC编程
24 0
|
1月前
|
SQL Java 数据库连接
Java的JDBC编程
JDBC的介绍,常用的接口和使用等
|
1月前
|
SQL Java 数据库连接
Java JDBC中的批处理SQL语句的详解
Java JDBC中的批处理SQL语句的详解
31 0
|
1月前
|
Java 数据库连接 数据库
Java JDBC程序中对于数据库事务的处理详解
Java JDBC程序中对于数据库事务的处理详解
17 0
|
1月前
|
Java 数据库连接
Java 中封装JDBC连接到JDBCUtils工具类的详解
Java 中封装JDBC连接到JDBCUtils工具类的详解
21 0
|
1月前
|
SQL Java 数据库连接
Java Jdbc的详解
Java Jdbc的详解
28 0
推荐文章
更多