开发基于控制台的航班信息系统(上)

1:(1)显示航班信息系统主菜单,如图-1所示,
功能包括:
1)列出所有航班
2)按目的地查询
3)删除航班
4)更新航班
5)更新航班列表文件
6)退出系统
需要定义如下类:
航班信息实体类(AirInfo)
航班编号(id) int类型
航班号(flight_number) String类型
目的地(destination) String 类型
起飞日期(flight_date) String 类型 (扩展 最好是LocalDate /Date)
航班信息管理类AirInfoManager类
程序入口类TestAirInfo类
具体要求及推荐实现步骤:
1. 每次功能操作执行完 都回到图1 主菜单页面 (循环 直到选择 6 退出系统为止);
2:创建实体类AirInfo,属性私有化,根据业务提供需要的构造方法和setter/getter方法。
3:使用File+IO流 创建airList.txt文件 存储到当前项目根目录 该文件存储航班信息 航班属性以逗号分隔 每行存储一条航班
航班编号 航班号 目的地 起飞日期
1,NH0001,Beijing,2018-08-08
2,NH0002,Shanghai,2018-09-10
3,GH0003,Tianjin,2018-10-21
4,HH0004,Beijing,2018-11-22
5,NH0001,Beijing,2018-08-08
6,HH0007,Chongqing,2017-12-30
7,NH0002,Beijing,2018-08-08
4. 创建航班管理AirInfoManager类,在类中提供以下方法
(1):列出所有航班的方法
① 读取airList.txt文件中的信息 存入到ArrayList集合中 按照目的地 字母a-z顺序输出排列显示到控制台上
② 使用两种方式遍历集合(最好其中一种是用到jdk1.8 forEach()方法),
实际显示到控制台的只要一种遍历结果就可以 另一种请写完后注释掉(要求注释的遍历代码 可执行)
(2):按目的地查询的方法
① 输入目的地 查询该目的地的航班列表(在1小题的ArrayList集合中查找) 将查询结果的航班列表存储到HashSet集合中 完成排重操作 去除重复数据 (排重条件 航班号 目的地 相同 认为是同一架航班)
将排重后的结果 遍历输出到控制台上
例如 输入 beijing (不区分大小写匹配)
显示结果:
1,NH0001,Beijing,2018-08-08
4,HH0004,Beijing,2018-11-22
7,NH0002,Beijing,2018-08-08
(3):删除航班的方法
① 输入航班编号 删除指定航班(基于1小题的ArrayList集合)
输入 航班编号为 6 的航班 删除该航班信息
如果输入的航班号不存在 提示 “您输入的+航班号 不存在”
删除成功 提示 “已删除 航班编号为”+6的航班 航班号为变量
并删除airList.txt中对应的信息
(4):更新航班的方法
① 发现有一些信息录入错误,需要在集合中进行数据修改(基于1小题的ArrayList集合) 将航班编号为5的航班信息 修改为
5 HH0005 Beijing 2019-01-01
并修改airList.txt中对应的信息
反向遍历修改后的ArrayList集合 并输出到控制台

(5)
更新航班列表文件的方法
① 将修改后的航班列表(ArrayList集合) 的数据存入TreeMap集合中
键为航班编号 值为目的地 以等号进行连接
按照 航班编号的首字母 倒序排序 (使用 两种比较方式的任意一种)
例如 NH0001=Beijing

② 写入到项目根目录下新文件newList.txt中 要求支持续写操作 使用File(每次在保留原有数据基础上 获取当前时间+学员姓名 存入newList.txt文件中后 换行 将修改后的航班列表按照航班编号顺序存入
格式要求:
2018年8月11日陈朋辉
NH0001=Beijing
…..
更新成功 提示”列表更新成功”
(6)退出系统的方法。
① 程序结束运行
5. 创建TestAirInfo类,启动和运行系统。
6. 要求代码规范,命名正确。
7. 要求方法的抽取


package hangbanproject;

import java.io.Serializable;

public class Airinfo implements Serializable {
private int id;
private String flight_number;
private String destination;
private String flight_date;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFlight_number() {
return flight_number;
}
public void setFlight_number(String flight_number) {
this.flight_number = flight_number;
}
public String getDestination() {
return destination;
}
public void setDestination(String destination) {
this.destination = destination;
}
public String getFlight_date() {
return flight_date;
}
public void setFlight_date(String flight_date) {
this.flight_date = flight_date;
}
public Airinfo() {
// TODO Auto-generated constructor stub
}
public Airinfo(int id, String flight_number, String destination, String flight_date) {
super();
this.id = id;
this.flight_number = flight_number;
this.destination = destination;
this.flight_date = flight_date;
}
@Override
public String toString() {
return id + “, ” + flight_number + “, ” + destination
+ “, ” + flight_date ;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((destination == null) ? 0 : destination.hashCode());
result = prime * result + ((flight_number == null) ? 0 : flight_number.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Airinfo other = (Airinfo) obj;
if (destination == null) {
if (other.destination != null)
return false;
} else if (!destination.equals(other.destination))
return false;
if (flight_number == null) {
if (other.flight_number != null)
return false;
} else if (!flight_number.equals(other.flight_number))
return false;
return true;
}

}


package hangbanproject;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.ListIterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;

import javax.xml.crypto.Data;

public class AirInfoManager {
ArrayList arrayList = new ArrayList<>();

// 把航班信息保存到文件中
public static void fileflight() throws Exception {
    File file = new File("airList.txt");
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));

    Airinfo airinfo1 = new Airinfo(1, "NH0001", "Beijing", "2018-08-08");
    Airinfo airinfo2 = new Airinfo(2, "NH0002", "Shanghai", "2018-09-10");
    Airinfo airinfo3 = new Airinfo(3, "GH0003", "Tianjing", "2018-10-22");
    Airinfo airinfo4 = new Airinfo(4, "HH0004", "Beijing", "2018-11-22");
    Airinfo airinfo5 = new Airinfo(5, "NH0001", "Beijing", "2048-08-08");
    Airinfo airinfo6 = new Airinfo(6, "HH0007", "Chongqing", "2017-12-30");
    Airinfo airinfo7 = new Airinfo(7, "NH0002", "Beijing", "2018-08-08");
    ArrayList<Airinfo> arrayList = new ArrayList<>();
    arrayList.add(airinfo1);
    arrayList.add(airinfo2);
    arrayList.add(airinfo3);
    arrayList.add(airinfo4);
    arrayList.add(airinfo5);
    arrayList.add(airinfo6);
    arrayList.add(airinfo7);
    oos.writeObject(arrayList);
    oos.close();
}

// 列出所有航班
@SuppressWarnings("unchecked")
public void showflight() throws Exception {

    ObjectInputStream ois = new ObjectInputStream(new FileInputStream("airList.txt"));
    // 将读出的数据存到集合中
    arrayList = (ArrayList<Airinfo>) ois.readObject();
    // 调用collection中的sort方法实现内部类comparator接口进行排序
    arrayList.sort(new Comparator<Airinfo>() {

        @Override
        public int compare(Airinfo o1, Airinfo o2) {
            int n = o1.getDestination().compareTo(o2.getDestination());
            return n;
        }
    });
    // foreach遍历
    // for (AirInfo airInfo : arrayList) {
    // System.out.println(airInfo);
    // }
    // Itertor迭代器
    Iterator<Airinfo> it = arrayList.iterator();
    while (it.hasNext()) {
        System.out.println(it.next());
    }
    ois.close();
}

// 按目的地查找
public void findflight() {
    HashSet<Airinfo> hashSet = new HashSet<>();
    System.out.println("请输入目的地");
    Scanner input = new Scanner(System.in);
    String s = input.next();
    for (int i = 0; i < arrayList.size(); i++) {
        if (arrayList.get(i).getDestination().compareToIgnoreCase(s) == 0) {
            hashSet.add(arrayList.get(i));

        }
    }
    for (Airinfo airinfo : hashSet) {
        System.out.println(airinfo);
    }
}

// 删除航班
public void deleteflight() throws Exception {
    System.out.println("请输入要删除的航班编号");
    boolean flag = false;
    Scanner input = new Scanner(System.in);
    int a = input.nextInt();
    for (int i = 0; i < arrayList.size(); i++) {
        if (arrayList.get(i).getId() == a) {
            arrayList.remove(arrayList.get(i));
            flag = true;
        }
    }
    if (flag) {
        System.out.println("删除成功!航班号为:" + a + "航班已删除");
    } else {
        System.out.println("您输入的航班号:" + a + "不存在");
    }
    // 修改成功后,保存到文件夹
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("airList.txt"));
    oos.writeObject(arrayList);
    for (Airinfo airinfo : arrayList) {
        System.out.println(airinfo);
    }

}

// 更新航班
public void updateflight() throws Exception {
    System.out.println("请输入航班编号");
    Scanner input = new Scanner(System.in);
    String s1 = input.next();
    System.out.println("请输入航班目的地");
    Scanner inp = new Scanner(System.in);
    String s2 = inp.next();
    System.out.println("请输入航班起飞时间");
    Scanner inpu = new Scanner(System.in);
    String s3 = input.next();
    for (int i = 0; i < arrayList.size(); i++) {
        if (arrayList.get(i).getId() == 5) {
            arrayList.get(i).setFlight_number(s1);
            arrayList.get(i).setDestination(s2);
            arrayList.get(i).setFlight_date(s3);
        }
    }
    ListIterator<Airinfo> listIterator = arrayList.listIterator();
    while (listIterator.hasPrevious()) {
        System.out.println(listIterator.previous());
    }
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("airList.txt"));
    oos.writeObject(arrayList);
    for (Airinfo airinfo : arrayList) {
        System.out.println(airinfo);
    }

}
public void  updateFlightList()throws Exception {
    TreeMap<String, String> treeMap = new TreeMap<>(new Comparator<String>() {

        @Override
        public int compare(String o1, String o2) {
            int n= o2.compareTo(o1);
            return n==0?1:n;
        }
    });
    for(int i=0;i<arrayList.size();i++) {
        treeMap.put(arrayList.get(i).getFlight_number(),arrayList.get(i).getDestination());
        //treeMap.put(arrayList.get(i).getDestination(),arrayList.get(i).getDestination());
    }
    File file= new File("newList.txt");
    BufferedWriter bw= new BufferedWriter(new FileWriter(file));
    BufferedReader br= new BufferedReader(new FileReader(file));

    Date date= new Date();
    String dString=new SimpleDateFormat("yyyy年MM月dd日").format(date);
    bw.write(dString);
    bw.newLine();
    bw.write("张三");
    bw.newLine();

// Set set= treeMap.keySet();
// for (String string : set) {
// System.out.println(string+”=”);
// System.out.println(treeMap.get(string));
// bw.newLine();
// }
Set

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OOP(机试)[具体要求在压缩文档中给出] 项目名称: Air Infomation System 基于控制台航班信息系统,简称AIS 具体要求如下: (1)显示航班信息系统主菜单,如图-1所示,包括: 1)列出所有航班 2)按起飞时间查询 3)按目的地查询 4)删除航班 5)更新航班 6)退出系统 (2)列出所有航班:查出所有航班的信息,以列表形式显示,包括:编号,航班号,目的地,起飞日期。 (3)按起飞时间查询:输入起飞时间(格式如2011-2-25),查出所有这一天的航班。 (4)按目的地查询:输入目的地,查出所有飞往此地的航班。 (5)删除航班:删除指定编号的航班。 (6)更新航班:更新指定编号的航班。 (7)退出系统。 三、类的设计 需要定义如下类 航班信息实体类(AirInfo) 航班编号(id) 航班号(flight_number) 目的地(destination) 起飞日期(flight_date) 航班信息管理类AirInfoManager类 程序入口类TestAirInfo类 四、具体要求及推荐实现步骤 6.创建实体类AirInfo,属性私有化,根据业务提供需要的构造方法和setter/getter方法。 7.创建航班管理AirInfoManager类,在类中提供列出所有航班的方法,按起飞时间查询 的方法、按目的地查询的方法、删除航班的方法、更新航班的方法、退出系统的方法。 8.创建TestAirInfo类,启动和运行系统。 9.航班的信息用ArrayList(或数组)保存。 10.要求代码规范,命名正确。
# OOP(机试) 本程序总结文章:http://blog.qiji.tech/?p=10344 - - - ## 程序基本要求 一、项目名称: Air Infomation Programming 基于控制台航班信息程序,简称AIP 二、具体要求如下: (1)显示航班信息程序主菜单,如图-1所示,包括: * 1)列出所有航班 * 2)按起飞时间查询 * 3)按目的地查询 * 4)删除航班 * 5)更新航班 * 6)退出系统 (2)列出所有航班:查出所有航班的信息,以列表形式显示,包括:编号,航班号,目的地,起飞日期。 (3)按起飞时间查询:输入起飞时间(格式如2011-2-25),查出所有这一天的航班。 (4)按目的地查询:输入目的地,查出所有飞往此地的航班。 (5)删除航班:删除指定编号的航班。 (6)更新航班:更新指定编号的航班。 (7)退出系统。 三、类的设计 需要定义如下类 * 航班信息实体类(AirInfo) * 航班编号(id) * 航班号(flight_number) * 目的地(destination) * 起飞日期(flight_date) * 航班信息管理类AirInfoManager类 * 程序入口类TestAirInfo类 四、具体要求及推荐实现步骤 1. 创建实体类AirInfo,属性私有化,根据业务提供需要的构造方法和setter/getter方法。 1. 创建航班管理AirInfoManager类,在类中提供列出所有航班的方法,按起飞时间查询的方法、按目的地查询的方法、删除航班的方法、更新航班的方法、退出程序的方法。 2. 创建TestAirInfo类,启动和运行程序。 3. 航班的信息用ArrayList(或数组)保存。 4. 要求代码规范,命名正确。 - - -

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值