package com.zhiyou100;
public class Flight {
//航班编号
private String flightNo;
//目的地
private String address;
//起飞日期
private String flyDate;
//空参构造方法
public Flight() {
}
//全参构造
public Flight(String flightNo, String address, String flyDate) {
this.flightNo = flightNo;
this.address = address;
this.flyDate = flyDate;
}
// alt+insert 快捷键
public String getFlightNo() {
return flightNo;
}
public void setFlightNo(String flightNo) {
this.flightNo = flightNo;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getFlyDate() {
return flyDate;
}
public void setFlyDate(String flyDate) {
this.flyDate = flyDate;
}
//重写toString方法
@Override
public String toString() {
return "Flight{" +
"flightNo='" + flightNo + '\'' +
", address='" + address + '\'' +
", flyDate='" + flyDate + '\'' +
'}';
}
}
package com.zhiyou100;
// 航班信息系统主启动类
import java.util.Scanner;
public class FlySystem {
public static void main(String[] args) {
//进行输出"欢迎使用航班信息管理系统"
System.out.println("******************欢迎使用航班信息管理系统********************");
//构建一个Scanner类对象
Scanner sc = new Scanner(System.in);
//构建一个容器存储航班信息 使用数组容器 数据类型使用Flight类型
Flight[] arr = {new Flight("001", "Beijing", "2010-1-1"),
new Flight("002", "Shanghai", "2011-2-20")
, new Flight("003", "Guangzhou", "2011-2-24")};
//构建一个可持续访问的管理系统
while (true) {
//进行输出"请选择操作"(1.列出所有航班,2.按起飞时间查询,3.按目的地查询,4.删除航班,5.更新航班
// ,6退出系统):)
System.out.println("请选择操作(1.列出所有航班,2.按起飞时间查询,3.按目的地查询,4.删除航班,5.更新航班,6.退出系统):");
//输出需要操作的数字
int inputNum = sc.nextInt();
//根据输入的数字进行情形判断
switch (inputNum) {
case 1:
//拼接表头
System.out.println("编号\t航班号\t目的地\t起飞日期");
//遍历arr航班容器
for (int i = 0; i < arr.length; i++) {
//输出对象中的属性值
System.out.println((i + 1) + "\t" + arr[i].getFlightNo() + "\t" + arr[i].getAddress() + "\t" + arr[i].getFlyDate());
}
break;
case 2:
//输入"起飞时间"
System.out.print("请输入日期:");
String time = sc.next();
//根据time值判断arr容器中哪些信息需要输出到控制台
//遍历arr容器
//表头输出
System.out.println("编号\t航班号\t目的地\t起飞日期");
for (int i = 0; i < arr.length; i++) {
//判断输入的time值与arr容器中的date值作比较
if (arr[i].getFlyDate().equals(time)) {
//表面当前的航班信息符合输入的日期值
System.out.println((i + 1) + "\t" + arr[i].getFlightNo() + "\t" + arr[i].getAddress() + "\t" + arr[i].getFlyDate());
}
}
break;
case 3:
//输入"目的地"
System.out.print("请输入目的地:");
String dst = sc.next();//destination
System.out.println("编号\t航班号\t目的地\t起飞日期");
//根据dst值判断
for (int i = 0; i < arr.length; i++) {
if (arr[i].getAddress().equals(dst)) {
System.out.println((i + 1) + "\t" + arr[i].getFlightNo() + "\t" + arr[i].getAddress() + "\t" + arr[i].getFlyDate());
}
}
break;
//情形4 删除对应的航班信息 数组的长度不变 创建新的数组容器(arr.length-1)存储删除之后的航班信息
//需要赋值给arr数组变量 替换覆盖
case 4:
//输入"需要删除的航班编号"
System.out.print("请输入需要删除的航班编号:");
String num = sc.next();
//构建一个空的数组容器,长度为arr.length-1
if (arr.length == 1) {
//初始化数组容器长度
Flight[] arrNew = new Flight[3];
}
//遍历arr容器
boolean isReplace = false;//定义一个开关
//数组索引越界
int index = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i].getFlightNo().equals(num)) {
isReplace = true;
index = i;
}
}
//判断是否需要替换
if (isReplace == true) {
Flight[] arrNew = new Flight[arr.length - 1];//3---2
//再次遍历arr数组
int count = 0;
for (int i = 0; i < arr.length; i++) {
//判断index == i 3 0 1 2
if (index == i) {
continue;
} else {
// 0 1
arrNew[count] = arr[i];
count++;
}
}
System.out.println("删除成功!");
arr = arrNew;
}
break;
case 5:
//根据航班号修改对应的航班信息
System.out.print("请输入需要修改的航班对应的航班号:");
String id = sc.next();
boolean isUpdate = false;
for (int i = 0; i < arr.length; i++) {
if (arr[i].getFlightNo().equals(id)) {
isUpdate = true;
//请输入航班信息
System.out.println("请输入目的地");
String address = sc.next();
System.out.println("请输入起飞日期");
String date = sc.next();
arr[i].setAddress(address);
arr[i].setFlyDate(date);
}
}
if(isUpdate){
System.out.println("修改成功");
}else{
System.out.println("没有该航班号");
}
break;
case 6:
System.out.println("退出系统!");
//程序结束
System.out.println("欢迎下次使用!");
return;
default:
System.out.println("输入的数值不符合要求!请重新输入!");
break;
}
}
}
}