开发者社区> 水坚石青> 正文

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;
    }
    
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23605 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
22379 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
19923 0
使用SSH远程登录阿里云ECS服务器
远程连接服务器以及配置环境
14799 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
36494 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
16560 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
14908 0
+关注
189
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载