航空客运订票的业务包括:查询航线、客票预订和办理退票等。试设计一个航空客运订票系统,以实现上述业务的计算机管理。
设计要求:每条航线所涉及的信息有终点站名、航班号、飞行号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级(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 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 KH = new Vector();
//列出所有航班的方法
public void all_flight(ArrayList 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 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 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 flight){
System.out.print("请输入需要删除的航班编号:");
Scanner in=new Scanner(System.in);
int id=in.nextInt();
Iterator 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 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 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 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 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;
}
}