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 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) ois.readObject();
// 调用collection中的sort方法实现内部类comparator接口进行排序
arrayList.sort(new Comparator() {
@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 it = arrayList.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
ois.close();
}
// 按目的地查找
public void findflight() {
HashSet 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 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 treeMap = new TreeMap<>(new Comparator() {
@Override
public int compare(String o1, String o2) {
int n= o2.compareTo(o1);
return n==0?1:n;
}
});
for(int i=0;i
// Set set= treeMap.keySet();
// for (String string : set) {
// System.out.println(string+”=”);
// System.out.println(treeMap.get(string));
// bw.newLine();
// }
Set