⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flightschedular.java

📁 一个航空管理系统的例子,可以查询航班,增加代理商等功能,大家需要的话可以看看的.
💻 JAVA
字号:
package com.tarena.abs.model;
import java.util.*;
public class FlightSchedular {
	private String flightNumber;//航班号
	private AirlineCompany company;//所属航空公司
	private MyDate startDate;//开始执行日期
	private MyDate endDate;//结束执行日期
	private String fromAddress;//起飞地
	private String toAddress;//目的地
	private MyTime fromTime;//起飞时间
	private MyTime toTime;//到达时间
	private int length;//总航程
	private PlaneModel plane;//执行飞机型号
	private byte schedular;//班期表
	private double datumPrice;//基准价格

	private FlightSchedular(String flightNumber,AirlineCompany company,MyDate startDate,
			MyDate endDate,String fromAddress,String toAddress,
			MyTime fromTime,MyTime toTime,int length,PlaneModel plane,
			double datumPrice) {
		this.flightNumber = flightNumber;
		this.company=company;
		this.startDate = startDate;
		this.endDate = endDate;
		this.fromAddress = fromAddress;
		this.toAddress = toAddress;
		this.fromTime = fromTime;
		this.toTime = toTime;
		this.length = length;
		setPlane(plane);
		this.datumPrice = datumPrice;
	}
	public FlightSchedular(String flightNumber,AirlineCompany company,MyDate startDate,
			MyDate endDate,String fromAddress,String toAddress,
			MyTime fromTime,MyTime toTime,int length,PlaneModel plane,
			int schedular,double datumPrice) {
		this(flightNumber,company,startDate,endDate,fromAddress,toAddress,fromTime,toTime,length,plane,datumPrice);
		this.schedular = (byte)schedular;
		
	}
	public FlightSchedular(String flightNumber,AirlineCompany company,MyDate startDate,
			MyDate endDate,String fromAddress,String toAddress,
			MyTime fromTime,MyTime toTime,int length,PlaneModel plane,
			String schedular,double datumPrice) {
		this(flightNumber,company,startDate,endDate,fromAddress,toAddress,fromTime,toTime,length,plane,datumPrice);
		this.schedular =(byte)(Integer.parseInt(schedular,2));
	}
	public void setPlane(PlaneModel p){
		if(p.getMaxLength()<this.length){
			System.out.println("对不起,不能将 "+p.getModel()+" 型号的飞机设置为"+this.flightNumber+"("+this.fromAddress+"--"+this.toAddress+") 的执行飞机。");
			System.out.println("--最大航程不够!");
			return;
		}
		this.plane=p;
	}
	
	
	
	public AirlineCompany getCompany() {
		return company;
	}
	public double getDatumPrice() {
		return datumPrice;
	}
	public MyDate getEndDate() {
		return endDate;
	}
	public String getFlightNumber() {
		return flightNumber;
	}
	public String getFromAddress() {
		return fromAddress;
	}
	public MyTime getFromTime() {
		return fromTime;
	}
	public int getLength() {
		return length;
	}
	public PlaneModel getPlane() {
		return plane;
	}
	public byte getSchedular() {
		return schedular;
	}
	public MyDate getStartDate() {
		return startDate;
	}
	public String getToAddress() {
		return toAddress;
	}
	public MyTime getToTime() {
		return toTime;
	}
	/**
	 * 该方法根据给定的日期和折扣生成一个航班对象。
	 * @param date 航班日期
	 * @param priceOff  折扣
	 * @return  生成的航班对象
	 */
	public Flight createNewFlight(MyDate date,double priceOff){
		if(hasFlight(date)){
			return new Flight(this,date,priceOff);
		}
		System.out.println("对不起,给定的日期没有航班!");
		return null;
	}
	
	/**
	 * 该方法根据给定的日期生成一个航班对象,折扣默认为1.0。
	 * @param date 航班日期
	 * @return 生成的航班对象
	 */
	public Flight createNewFlight(MyDate date){
		return createNewFlight(date,1.0);
	}
	
	/**
	 * 该方法用来判断在当前航班计划下给定的日期是否有航班。
	 * @param date 日期
	 * @return 如果该日期有航班,则返回true,否则返回false。
	 */
	public boolean hasFlight(MyDate date){
		int weekDay=date.getWeekDay();
		if(date.before(this.startDate)|| date.after(this.endDate)){
			return false;
		}
		if((this.schedular & (1<<weekDay-1))!=0){
			return true;
		}
		return false;
	}
	
	/**
	 * 该方法返回给定起始日期和结束日期之间的所有航班。
	 * @param startDate 起始日期
	 * @param endDate 结束日期
	 * @return 航班集合
	 */
	public Set<Flight> getAllFlights(MyDate startDate,MyDate endDate){
		HashSet<Flight> hs=new HashSet<Flight>();
		MyDate day=(MyDate)startDate.clone();
		for(;day.compareTo(endDate)<=0;day.add(Calendar.DAY_OF_MONTH,1)){
			if(hasFlight(day)){
				MyDate tempDay=(MyDate)day.clone();
				hs.add(this.createNewFlight(tempDay));
			}
		}
		return hs;
	}
	
	/**
	 * 该方法返回本航班计划下的所有航班。
	 * @return 所有航班集合
	 */
	public Set<Flight> getAllFlights(){
		return getAllFlights(this.startDate,this.endDate);
	}
	
	/**
	 * 该方法返回给定日期范围内的所有航班,并按给定的比较规则排序。
	 * @param start 起始日期
	 * @param end 结束日期
	 * @param com 比较器
	 * @return 所有航班的集合
	 */
	public SortedSet<Flight> allFightsSorted(MyDate start,MyDate end,Comparator<Flight> com){
		TreeSet<Flight> ts=new TreeSet<Flight>(com);
		ts.addAll(getAllFlights(start,end));
		return ts;
	}
	
	/**
	 * 该方法返回本航班计划下的所有航班对象的集合,并按给定的比较规则排序。
	 * @param com 比较规则
	 * @return 所有航班的集合
	 */
	public SortedSet<Flight> allFightsSorted(Comparator<Flight> com){
		TreeSet<Flight> ts=new TreeSet<Flight>(com);
		ts.addAll(getAllFlights());
		return ts;
	}
	//hashCode() and Equals()
}






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -