“21天好习惯”第一期-6

        现在有一家航空公司为了提高用户体验,希望做一个航班信息系统,用户 可以根据需求去对航班信息进行操作。组长把这个任务安排给了程序员赵丹, 赵丹发现这里需要通过 java 代码操作数据库,并且用户是可以在控制台做对 应的操作,JDBC 可以帮她解决这个问题。学习起来,试着把这个系统实现出 来。 1. 显示航班信息系统主菜单 2. 列出所有的航班信息 3. 按起飞时间查询 新职课教研教学中心 2 4. 按目的地查询 5. 删除航班 6. 更新航班 7.退出系统

 1.AirInfo

package Flight;
//实体类
public class AirInfo {
    private int no;
    private String airId;
    private String destination;
    private String flyDate;

    @Override
    public String toString() {
        return "AirInfo{" +
                "no=" + no +
                ", airId='" + airId + '\'' +
                ", destination='" + destination + '\'' +
                ", flyDate='" + flyDate + '\'' +
                '}';
    }

    public int getNo() {
        return no;
    }

    public void setNo(int no) {
        this.no = no;
    }

    public String getAirId() {
        return airId;
    }

    public void setAirId(String airId) {
        this.airId = airId;
    }

    public String getDestination() {
        return destination;
    }

    public void setDestination(String destination) {
        this.destination = destination;
    }

    public String getFlyDate() {
        return flyDate;
    }

    public void setFlyDate(String flyDate) {
        this.flyDate = flyDate;
    }
}

2. AirInfoDaoImpl

package Flight;

import java.util.ArrayList;
import java.util.List;

public class AirInfoDaoImpl extends BaseDao implements AirinfoDao {
    //定义变量
    private String sql=null;
    private List list=new ArrayList();
    int count;

    /**
     * 1.列出航班信息
     * @return
     */
    @Override
    public List<AirInfo> getAll() {
        sql="select * from airInfo";
        return deal(sql,list);
    }

    /**
     * 2.按起飞时间查询
     * @param date
     * @return
     */
    @Override
    public List<AirInfo> getByDate(String date) {
        sql="select * from airInfo where flyDate=?";
        list.add(date);
        return deal(sql,list);
    }

    /**
     * 3.按目的地查询
     * @param des
     * @return
     */
    @Override
    public List<AirInfo> getByDes(String des) {
        sql="select * from airInfo where destination=?";
        list.add(des);
        return deal(sql,list);
    }

    /**
     * 删除航班信息
     * @param
     * @return
     */
    @Override
    public int delete(int no) {
        sql="delete from airInfo where no=?";

        count=update(sql,list);
        return count;
    }

    @Override
    public int updateByNo(AirInfo air) {
        sql="update airInfo set airId=?,destination=?,flyDate=?where no=? ";
        list.add(air.getAirId());
        list.add(air.getDestination());
        list.add(air.getFlyDate());
        list.add(air.getNo());
        count=update(sql,list);
        return count;
    }

    @Override
    public List<AirInfo> getByNo(int no) {
        sql="select from airInfo where no=?";
        list.add(no);
        return deal(sql,list);
    }
}

3.BaseDao

package Flight;

import Flight.AirInfo;
import com.alibaba.druid.pool.DruidDataSource;

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

public class BaseDao {
    private Connection connection = null;
    private PreparedStatement pps = null;
    private ResultSet resultSet = null;
    private int count = 0;

    private static String username;
    private static String password;
    private static String url;
    private static String drivername;
    //引入德鲁伊连接池
    private static DruidDataSource dds = new DruidDataSource();

    //初始化
    static {
        ResourceBundle bundle = ResourceBundle.getBundle("db");
        drivername = bundle.getString("driver");
        url = bundle.getString("url");
        username = bundle.getString("uname");
        password = bundle.getString("password");
        dds.setUsername(username);
        dds.setPassword(password);
        dds.setUrl(url);
        dds.setDriverClassName(drivername);
    }

    /**
     * 建立连接,设为protected是为了方便让子类继承
     */

    protected Connection getConnection() {
        try {
            connection = dds.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }

    /**
     * 根据传入的sql语句建立预状态通道pps
     * sql 传入的sql语句
     * list 存放填充占位符
     */

    protected PreparedStatement getPps(String sql, List list) {
        try {
            pps = getConnection().prepareStatement(sql);
            if (list != null && list.size() > 0) {
                for (int i = 0; i < list.size(); i++) {
                    pps.setObject(i + 1, list.get(i));
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return pps;
    }

    /**
     * 启用pps,实现增删改的功能
     */
    protected int update(String sql, List list) {
        pps = getPps(sql, list);
        try {
            count = pps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return count;
    }

    /**
     * 启用pps,实现查询功能
     */
    protected ResultSet query(String sql, List list) {
        pps = getPps(sql, list);
        try {
            resultSet = pps.executeQuery();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return resultSet;
    }

    /**
     * 执行查询结果集的处理
     */
    public List<AirInfo> deal(String sql, List list) {
        List<AirInfo> airs = new ArrayList<>();
        try {
            ResultSet result = query(sql, list);
            while (result.next()) {
                AirInfo air = new AirInfo();
                air.setNo(result.getInt("no"));
                air.setAirId(result.getString("airId"));
                air.setDestination(result.getString("destination"));
                air.setFlyDate(result.getString("flyDate"));
                airs.add(air);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            closeAll();
        }
        return airs;
    }

    private void closeAll() {
        try {
            if (connection != null) {
                connection.close();
            }
            if (pps != null) {
                pps.close();
            }
            if (resultSet != null) {
                resultSet.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
4.Menu

package Flight;

import javax.management.MBeanRegistration;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Menu {
    //定义变量
    private AirinfoDao dao=new AirInfoDaoImpl();
    private List<AirInfo> airs=new ArrayList<>();
    private AirInfo air=new AirInfo();
    private Scanner sc=new Scanner(System.in);
    

    public Menu(int in){

        switch (in){
            case 1:
                case1();
                break;
            case 2:
                case2();
                break;
            case 3:
                case3();
                break;
            case 4:
                case4();
                break;
            case 5:
                case5();
                break;
            case 6:
                System.exit(0);;
        }
    }

    private void case1() {
        System.out.println("-------------所有航班信息如下-------------");
        airs=dao.getAll();
        printAir();
    }

    private void printAir() {
        if (airs != null && airs.size() > 0) {
            System.out.println("编号\t航班号\t\t目的地\t\t起飞日期");
            for (int i = 0; i < airs.size(); i++) {
                air = airs.get(i);
                System.out.println(air);
            }
        }
    }


    private void case2() {
        System.out.println("请输入您要查询航班的起飞时间:");
        String date=sc.next();
        airs=dao.getByDate(date);
        System.out.println("----------于"+date+"起飞的航班信息如下:");
        printAir();
    }
    private void case3(){
        System.out.println("请输入您要查询航班的目的地:");
        String des=sc.next();
        airs=dao.getByDes(des);
        System.out.println("----------飞往"+des+"的航班的信息如下");
        printAir();
    }
    private void case4(){
        System.out.println("请输入您要删除航班的编号");
        int no=sc.nextInt();
        airs=dao.getByNo(no);
        System.out.println("您要删除航班的信息如下:");
        printAir();
        System.out.println("请您确认是否要删除(1.是 2.否)");
        int choose=sc.nextInt();
        if (choose==1){
            int count1=dao.delete(no);
            if (count1>0){
                System.out.println("删除成功!");
            }else {
                System.out.println("删除失败!请检查.");
            }
        }

    }
    private void case5(){
        //接收用户输入的新信息
        System.out.println("请输入需要更新的航班编号:");
        air.setNo(sc.nextInt());
        System.out.println("请输入新的航班号");
        air.setAirId(sc.next());
        System.out.println("请输入新的目的地");
        air.setDestination(sc.next());
        System.out.println("请输入新的起飞日期");
        air.setFlyDate(sc.next());
        //用新信息覆盖旧信息
        int i = dao.updateByNo(air);
        if (i > 0) {
            System.out.println("更新成功");
        } else {
            System.out.println("更新失败");
        }

    }

}
5.

package Flight;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        welcome();
        while (true){
            System.out.println("请选择操作:");
            System.out.println("1-列出所有航班");
            System.out.println("2-按起飞时间查询");
            System.out.println("3-按目的地查询");
            System.out.println("4.删除航班");
            System.out.println("5.更新航班");
            System.out.println("6:离开系统");
            Scanner sc=new Scanner(System.in);
            int num=sc.nextInt();
            new Menu(num);
        }


    }
    private static void welcome(){
        System.out.println("欢迎使用航空信息系统!");
    }
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值