[Java] 用泛型数组实现基于控制台的航班信息查询|增添程序
来源:互联网 发布:绿茶软件园源码 编辑:程序博客网 时间:2024/05/18 03:22
OOP(机试)
程序基本要求
一、项目名称: 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类
四、具体要求及推荐实现步骤
- 创建实体类AirInfo,属性私有化,根据业务提供需要的构造方法和setter/getter方法。
- 创建航班管理AirInfoManager类,在类中提供列出所有航班的方法,按起飞时间查询的方法、按目的地查询的方法、删除航班的方法、更新航班的方法、退出程序的方法。
- 创建TestAirInfo类,启动和运行程序。
- 航班的信息用ArrayList(或数组)保存。
- 要求代码规范,命名正确。
源代码
// AirInfo.javapublic class AirInfo { /**航班编号(id) *航班号(flight_number) *目的地(destination) *起飞日期(flight_date) */ private int id; private String flight_number; private String destination; private String flight_date; public AirInfo(int id, String flight_number, String destination, String flight_date){ this.id=id; this.flight_number=flight_number; this.destination=destination; this.flight_date=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; }}
//AirInfoManager.javaimport java.util.*;public class AirInfoManager { //列出所有航班的方法 public void all_flight(ArrayList<AirInfo> flight){ System.out.println("编号\t 航班号\t目的地\t\t起飞日期"); for(AirInfo e:flight) System.out.println(e.getId()+"\t"+e.getFlight_number()+"\t"+e.getDestination()+" "+e.getFlight_date()); } //按起飞时间查询的方法 public void inquiry_date(ArrayList<AirInfo> flight){ System.out.print("请输入日期:"); Scanner in=new Scanner(System.in); String date=in.next(); for(AirInfo e:flight) { if(e.getFlight_date().equals(date)){ System.out.println("编号\t 航班号\t目的地\t\t起飞日期"); System.out.println(e.getId()+"\t"+e.getFlight_number()+"\t"+e.getDestination()+" "+e.getFlight_date()); } } } //按目的地查询的方法 public void inquiry_destination(ArrayList<AirInfo> flight){ System.out.print("请输入目的地:"); Scanner in=new Scanner(System.in); String destination=in.next(); for(AirInfo e:flight) { if(e.getDestination().equals(destination)){ System.out.println("编号\t 航班号\t目的地\t\t起飞日期"); System.out.println(e.getId()+"\t"+e.getFlight_number()+"\t"+e.getDestination()+" "+e.getFlight_date()); } } } //删除航班的方法 /* * 方法一:用remove(index)方式删除记录,此处需要注意的是调用Iterator方法, * 避免产生ConcurrentModificationException异常 * public void delete_flight(ArrayList<AirInfo> flight){ System.out.print("请输入需要删除的航班编号:"); Scanner in=new Scanner(System.in); int id=in.nextInt(); Iterator<AirInfo> iterator = flight.iterator(); while(iterator.hasNext()){ AirInfo e = iterator.next(); if(e.getId()==id){ iterator.remove(); System.out.println("删除成功!"); } } } */ /* * 方法二:将需要删除的记录用一个ArrayList()类包装起来, * 用removeAll(Collection<?> c)方法将其删除 */ public void delete_flight(ArrayList<AirInfo> flight){ System.out.print("请输入需要删除的航班编号:"); Scanner in=new Scanner(System.in); List delList = new ArrayList(); int id=in.nextInt(); for(AirInfo e:flight) { if(e.getId()==(id)) delList.add(e); } flight.removeAll(delList); System.out.println("删除成功!"); } //更新航班的方法 public void update_flight(ArrayList<AirInfo> flight){ Scanner in=new Scanner(System.in); int id; String flight_number,destinaton,flight_date; System.out.print("请输入需要更新的航班编码:"); id=in.nextInt(); System.out.print("请输入新的航班号:"); flight_number=in.next(); System.out.print("请输入新的目的地:"); destinaton=in.next(); System.out.print("请输入新的起飞时间:"); flight_date=in.next(); flight.add(new AirInfo(id,flight_number,destinaton,flight_date)); System.out.println("更新成功!"); } //退出系统的方法 public void exit(){ System.out.println("成功退出系统!"); System.exit(0); }}
//TestAirInfo.javaimport java.util.ArrayList;import java.util.Scanner;//启动和运行程序public class TestAirInfo { public static void main(String[] args) { AirInfoManager airInfoManager=new AirInfoManager(); //用Arraylist表示航班信息 ArrayList<AirInfo> flight=new ArrayList<>(); //为数组增加记录 flight.add(new AirInfo(1,"001","beijing","2016-1-1")); flight.add(new AirInfo(2,"002","shanghai","2016-2-20")); flight.add(new AirInfo(3,"003","guangzhou","2016-2-24")); Scanner in=new Scanner(System.in); while(true){ System.out.print("请选择操作(1.列出所有航班,2.按起飞时间查询,3.按目的地查询,4.删除航班,5.更新航班,6.退出系统)"); switch(in.nextInt()){ case 1: airInfoManager.all_flight(flight); break; case 2: airInfoManager.inquiry_date(flight); break; case 3: airInfoManager.inquiry_destination(flight); break; case 4: airInfoManager.delete_flight(flight); break; case 5: airInfoManager.update_flight(flight); break; case 6: airInfoManager.exit(); default:System.out.println("对不起,您输入的数字无效。请输入1~6之间的数字:"); } System.out.println(); } }}
程序运行截图
学习总结:
- 在Eclipse控制台下,光标不能自动定位到下一行,需手动按下Enter键,跳转到下一行,再输入。
对于ArrayList<>泛型数组,remove()和removeall()方法在实际使用中的区别:
- remove(Object o)移除此列表中首次出现的指定元素(如果存在)。如果列表不包含此元素,则列表不做改动。
- removeAll(Collection
仍需改进的地方:
- 将航班信息列表以表格的形式存储在数据库中。
- 将控制台交互升级为应用程序的窗体交互。
存在的问题:
- AirInfoManager.java的删除航班的方法中,将flight.removeAll(delList)方法改为flight.remove(delList)时程序无法进行删除操作,但不会报错,只是该条记录未被删除。
参考资料:
- Java ConcurrentModificationException异常原因和解决方法
http://www.cnblogs.com/dolphin0520/p/3933551.html - Java™ Platform, Standard Edition 8 API Specification
0 0
- [Java] 用泛型数组实现基于控制台的航班信息查询|增添程序
- Java编写的 基于控制台的航班信息系统
- Air Infomation System 基于控制台的航班信息系统(方法总结)
- 基于C语言的航班信息的查询与检索
- Java基于数组和循环实现的控制台五子棋
- 航班信息查询与检索(java)
- 上海出发的航班信息查询
- java基础 数组的增添改查
- 课程设计 航班信息的查询与检索
- 基于sqlite3实现的简单通讯录程序(控制台)
- 基于sqlite3实现的简单通讯录程序(控制台)
- Java程序实现捕获控制台输出的程序
- java 实现一个基于控制台的 扫雷 游戏
- 航班信息的查询与检索(C语言版)
- java 基于数组的栈的实现
- 用VB编写基于控制台的程序
- 基于UDP的控制台聊天程序
- 基于UDP的ECHO控制台程序
- jquery选择器篇
- Android中关于EditText点击事件的响应问题记录
- 数据类型之记录(record)
- TF框架,简单配置plist,一句代码搭建框架(iOS源代码)
- NPOI的调用
- [Java] 用泛型数组实现基于控制台的航班信息查询|增添程序
- 如何使用git svn 命令下载svn仓库的代码
- JavaSE入门学习38:Java集合框架之迭代器
- IOS 事件传递说明
- download and install Mongo db
- 浏览器友好的变量输出
- 树的最小支配集
- css3: nth-child(n)解析
- Hibernate基础介绍