Java---基于控制台的实现航空客运订票系统
2018-07-04 16:57
881 查看
版权声明:个人博客网站www.liuzhaopo.top;社区网站lewis.org.cn;欢迎转载,请注明作者以及出处! https://blog.csdn.net/know9163/article/details/80915043
航空客运订票的业务包括:查询航线、客票预订和办理退票等。试设计一个航空客运订票系统,以实现上述业务的计算机管理。
设计要求:每条航线所涉及的信息有终点站名、航班号、飞行号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级(1、2、3)以及等候替补客户名单(包括姓名、所需票量)。作为模拟系统,全部数据可以只放在内存中。
系统所实现的操作和功能有:
(1)查询询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行、
最近一天航班的日期和余票量。
(2)客票预订:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚
有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则则需重新询问
客户要求。若需要,可登记排队候补。
(3)办理退票:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该
航班是否有人排队候补,首先询问排在第一的客户,若所退票数能满足他的要求,则则为他办理
订票手续;否则依次询问其他排队候补的客户。
效果图:
源代码:分为三个Main、Method、Varible。
Main:
package Flight2; import java.util.ArrayList; import java.util.Scanner; //启动和运行程序 public class Main { public static void main(String[] args) { Method airInfoManager=new Method(); //用Arraylist表示航班信息 ArrayList<Variable> flight=new ArrayList<>(); //为数组增加记录 flight.add(new Variable(1,"k112","成都","美国","2018-6-1",600,20,580,"经济舱",10)); flight.add(new Variable(2,"k113","吉林","赣州","2018-6-20",700,30,670,"商务舱",15)); flight.add(new Variable(3,"k114","新疆","上海","2018-7-1",800,50,750,"经济舱",50)); Scanner in=new Scanner(System.in); while(true){ System.out.println("***************************欢迎来到航班购票系统!*************************"); System.out.println(); 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.购票系统********************************"); System.out.println("****************************7.退票系统********************************"); System.out.println("****************************8.退出系统********************************"); System.out.println("********************************************************************"); System.out.print("请选择要操作的序号:"); 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.buy(flight); break; case 7: airInfoManager.not(flight); break; case 8: airInfoManager.exit(); default:System.out.println("对不起,您输入的数字无效。请输入1~8之间的数字:"); } System.out.println(); } } }Method:
package Flight2; import java.util.*; public class Method { //创建一个全局Vector容器,供各个方法之间相互访问使用 static Vector<String> KH = new Vector<String>(); //列出所有航班的方法 public void all_flight(ArrayList<Variable> flight){ System.out.println("编号\t 航班号\t起始地\t目的地\t起飞日期\t\t成员定额\t\t余票量\t已订票票的客户人数\t舱位等级\t\t等候替补客户人数"); for(Variable e:flight) //增强for循环,遍历 System.out.println(e.getId()+"\t"+e.getFlight_number()+"\t"+e.getStart()+"\t"+e.getDestination()+"\t"+e.getFlight_date()+"\t"+e.getNumber()+"\t"+"\t"+e.getSurplus()+"\t"+"\t"+e.getCustomer()+"\t"+"\t"+e.getGrade()+"\t"+"\t"+"\t"+e.getList()); } //按起飞时间查询的方法 public void inquiry_date(ArrayList<Variable> flight){ System.out.print("请输入日期:"); Scanner in=new Scanner(System.in); String date=in.next(); for(Variable e:flight) { if(e.getFlight_date().equals(date)){ System.out.println("编号\t 航班号\t起始地\t目的地\t起飞日期\t\t成员定额\t\t余票量\t已订票票的客户人数\t舱位等级\t\t等候替补客户人数"); System.out.println(e.getId()+"\t"+e.getFlight_number()+"\t"+e.getStart()+"\t"+e.getDestination()+"\t"+e.getFlight_date()+"\t"+e.getNumber()+"\t"+"\t"+e.getSurplus()+"\t"+"\t"+e.getCustomer()+"\t"+"\t"+e.getGrade()+"\t"+"\t"+"\t"+e.getList()); } } } //按目的地查询的方法 public void inquiry_destination(ArrayList<Variable> flight){ System.out.print("请输入目的地:"); Scanner in=new Scanner(System.in); String destination=in.next(); for(Variable e:flight) { if(e.getDestination().equals(destination)){ System.out.println("编号\t 航班号\t起始地\t目的地\t起飞日期\t\t成员定额\t\t余票量\t已订票票的客户人数\t舱位等级\t\t等候替补客户人数"); System.out.println(e.getId()+"\t"+e.getFlight_number()+"\t"+e.getStart()+"\t"+e.getDestination()+"\t"+e.getFlight_date()+"\t"+e.getNumber()+"\t"+"\t"+e.getSurplus()+"\t"+"\t"+e.getCustomer()+"\t"+"\t"+e.getGrade()+"\t"+"\t"+"\t"+e.getList()); } } } //删除航班的方法 /* * 方法一:用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<Variable> flight){ System.out.print("请输入需要删除的航班编号:"); Scanner in=new Scanner(System.in); List delList = new ArrayList(); int id=in.nextInt(); for(Variable e:flight) { if(e.getId()==(id)) delList.add(e); } flight.removeAll(delList); System.out.println("删除成功!"); } //更新航班的方法 public void update_flight(ArrayList<Variable> flight){ Scanner in=new Scanner(System.in); int id; String flight_number; String destination; String start; String flight_date; int number; int surplus; int customer; String grade; int list; //id System.out.print("请输入需要更新的航班编码:"); id = in.nextInt(); //flight_number System.out.print("请输入新的航班号:"); flight_number = in.next(); //destination System.out.print("请输入新的目的地:"); destination = in.next(); //flight_data System.out.print("请输入新的起飞日期:"); flight_date = in.next(); //number System.out.print("请输入新的成员定额:"); number = in.nextInt(); //surplus System.out.print("请输入新的余票量:"); surplus = in.nextInt(); //customer System.out.print("请输入新的已订票票的客户名单:"); customer = in.nextInt(); //grade System.out.print("请输入新的舱位等级:"); grade = in.nextLine(); //list System.out.print("请输入新的等候替补客户名单:"); list = in.nextInt(); flight.add(new Variable(id,flight_number,destination,flight_date,grade, number,surplus,customer,grade,list)); System.out.println("更新成功!"); } //买票 public void buy(ArrayList<Variable> flight) { // TODO 自动生成的方法存根 System.out.println("请输入要购买的航班号:"); Scanner in=new Scanner(System.in); String hbh = in.next(); KH.addElement(hbh); System.out.println("请稍后,正在购票中..."); System.out.println("购票成功!"); System.out.println("您的航班号为"+hbh+"\n"+"相关信息如下:"); for(Variable e:flight) { if(e.getFlight_number().equals(hbh)){ System.out.println("编号\t 航班号\t起始地\t目的地\t起飞日期\t\t成员定额\t\t余票量\t已订票票的客户人数\t舱位等级\t\t等候替补客户人数"); System.out.println(e.getId()+"\t"+e.getFlight_number()+"\t"+e.getStart()+"\t"+e.getDestination()+"\t"+e.getFlight_date()+"\t"+e.getNumber()+"\t"+"\t"+e.getSurplus()+"\t"+"\t"+e.getCustomer()+"\t"+"\t"+e.getGrade()+"\t"+"\t"+"\t"+e.getList()); } } } //退票 public void not(ArrayList<Variable> flight) { // TODO 自动生成的方法存根 System.out.println("请输入需要退票的航班号:"); Scanner in=new Scanner(System.in); String hbh = in.next(); System.out.println("请稍后,正在退票中..."); for(Variable e:flight) { if(e.getFlight_number().equals(hbh)){ KH.clear(); //清空KH容器集合 } } System.out.println("退票成功!"); } //退出系统的方法 public void exit(){ System.out.println("成功退出系统!"); System.exit(0); } }Variable:
package Flight2; import java.util.Vector; public class Variable { /**航班编号(id) *航班号(flight_number) *起始地(start) *目的地(destination) *起飞日期(flight_date) *成员定额(number) *余票量(surplus) *已订票票的客户名单(customer) *舱位等级(grade) *等候替补客户名单(list) */ /* * Vector容器存放购票的客户 */ private int id; private String flight_number; private String destination; private String start; private String flight_date; private int number; private int surplus; private int customer; private String grade; private int list; public Variable(int id, String flight_number,String start, String destination, String flight_date, int number,int surplus,int customer,String grade,int list){ this.id = id; this.flight_number = flight_number; this.start = start; this.destination = destination; this.flight_date = flight_date; this.number = number; this.surplus = surplus; this.customer = customer; this.grade = grade; this.list = list; } //Id public int getId() { return id; } public void setId(int id) { this.id = id; } //start public String getStart() { return start; } public void setStart(String start) { this.start = start; } //Flight_number public String getFlight_number() { return flight_number; } public void setFlight_number(String flight_number) { this.flight_number = flight_number; } //Destination public String getDestination() { return destination; } public void setDestination(String destination) { this.destination = destination; } //Flight_data public String getFlight_date() { return flight_date; } public void setFlight_date(String flight_date) { this.flight_date = flight_date; } //Number public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } //Surplus public int getSurplus() { return surplus; } public void setSurplus(int surplus) { this.surplus = surplus; } //Customer public int getCustomer() { return customer; } public void setCustomer(int customer) { this.customer = customer; } //Grade public String getGrade() { return grade; } public void setGrade(String grade) { this.grade = grade; } //List public int getList() { return list; } public void setList(int list) { this.list = list; } }
相关文章推荐
- java毕设---基于servlet+jsp+mysql的航空订票系统
- 基于java的ACM online judge(OJ)在线判题系统实现
- 航空客运订票系统(c语言)
- 基于james3.0 的邮件系统(struts2.3.2 +spring3.0.1+jpa(hibernate3.6.5)实现)b/s模式--java邮件系统
- 基于rsync同步算法的文件同步系统JAVA实现(二)——校验码的生成
- 使用Python实现一个小型的航空订票系统(1)
- java 实现一个基于控制台的 扫雷 游戏
- 基于VC++6.0系统设计一个小型的信息管理应用程序。如航空订票系统、学生管理系统、图书管理系统,学生自选的项目等。
- 基于james3.0 的邮件系统(struts2.3.2 +spring3.0.1+jpa(hibernate3.6.5)实现)b/s模式--java邮件系统
- 航空客运订票系统
- 基于james3.0 的邮件系统(struts2.3.2 +spring3.0.1+jpa(hibernate3.6.5)实现)b/s模式--java邮件系统
- win API之航空客运订票系统(课程设计)
- 基于rsync同步算法的文件同步系统JAVA实现(三)——校验码哈希表的建立
- java分布式开发TCP/IP NIO无阻塞 Socket((基于消息方式实现系统间的通信) )(转)
- 基于JAVA实现的手机收发短消息系统
- 基于james3.0 的邮件系统(struts2.3.2 +spring3.0.1+jpa(hibernate3.6.5)实现)b/s模式--java邮件系统 .
- 数据结构课程设计--航空客运订票系统
- 基于james3.0 的邮件系统(struts2.3.2 +spring3.0.1+jpa(hibernate3.6.5)实现)b/s模式--java邮件系统
- 基于rsync同步算法的文件同步系统JAVA实现(四)——分析并发送不匹配数据块
- 基于JAVA的水泥三维图像特征提取系统设计与实现 之一 JAVA 3D学习笔记