现在有一家航空公司为了提高用户体验,希望做一个航班信息系统,用户 可以根据需求去对航班信息进行操作。组长把这个任务安排给了程序员赵丹, 赵丹发现这里需要通过 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("欢迎使用航空信息系统!");
}
}