Java---基于控制台的实现航空客运订票系统

版权声明:欢迎访问我搭建的个人博客www.liuzhaopo.top 同时,欢迎各位转载,转载请注明出处! 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;
 }
}



猜你喜欢

转载自blog.csdn.net/know9163/article/details/80915043