📄 ticketorder.java
字号:
package com.tarena.abs.model;
import java.awt.Color;
import java.util.Calendar;
import javax.swing.JButton;
import javax.swing.JLabel;
/**
* 订单项,用来描述订单中的一个条目,条目是指
* 某位乘客乘座某次航班的确定的预定记录。
* @author zhoukai
* @version 1.1.0
* 从数据库读出后还要进行操作
*/
public class TicketOrder implements java.io.Serializable{
private Long oid;
private String passengerName;//乘座飞机人姓名
private String passengerId;//乘座飞机人身份证号
private Flight flight;//预定的航班 //需映射
private Calendar cal; //下单时间
private Branch branch; //出票地
//private CabinClass f_class;//预定的舱位等级 //不映射,只在客户端计算价钱
//private TicketType t_type;//机票类型 //不映射,只在客户端计算价钱
//删掉枚举属性,保留原来的接口,用string实现枚举string数值是枚举值,英文,见CabinClass的main方法测试
//用于映射的new属性
private String cabinclass;
private String tickettype;
//private int seatnumber;
public TicketOrder(){}
public TicketOrder( String name,String number,Flight flight,
CabinClass f_class, TicketType t_type, Calendar cal,Branch b) {
//不映射属性
//this.f_class = f_class;
//this.t_type = t_type;
//映射属性
this.flight = flight;
this.passengerId = number;
this.passengerName = name;
this.cal=cal;
this.cabinclass=f_class.name();
this.tickettype=t_type.name();
this.branch=b;
}
//以下是get和set方法.
//删掉枚举属性,保留枚举的get,set方法。考虑到用jtable显示
public CabinClass getF_class() {
//return f_class;
return CabinClass.valueOf(cabinclass);
}
public void setF_class(CabinClass f_class) {
//this.f_class = f_class;
this.cabinclass=f_class.name();
}
public Calendar getCal() {
return cal;
}
public void setCal(Calendar cal) {
this.cal = cal;
}
public Flight getFlight() {
return flight;
}
public void setFlight(Flight flight) {
this.flight = flight;
}
public String getPassengerId() {
return passengerId;
}
public void setPassengerId(String idNumber) {
this.passengerId = idNumber;
}
public String getPassengerName() {
return passengerName;
}
public void setPassengerName(String name) {
this.passengerName = name;
}
public double getPrice() {
double datumPrice=flight.getSch().getPrice();
double offPrice=datumPrice*flight.getPriceOff();
//double price=offPrice*f_class.getPriceFactor()*t_type.getPriceFactor();
double price=offPrice*getF_class().getPriceFactor()*getT_type().getPriceFactor();
return price;
}
public TicketType getT_type() {
//return t_type;
return TicketType.valueOf(tickettype);
}
public void setT_type(TicketType t_type) {
//this.t_type = t_type;
this.tickettype=t_type.name();
}
//出票
public String toString2(){
StringBuffer sb1=new StringBuffer();
sb1.append(getFlight().getCalendar().get(Calendar.YEAR)+"年 ");
sb1.append(getFlight().getCalendar().get(Calendar.MONTH)+"月 ");
sb1.append(getFlight().getCalendar().get(Calendar.DAY_OF_MONTH)+"日 ");
sb1.append(getFlight().getSch().getFromTime().toString());
sb1.append(",从 "+getFlight().getSch().getFromAddress());
sb1.append(" 至 "+getFlight().getSch().getToAddress());
sb1.append("("+getFlight().getSch().getFlightNumber()+")\n");
sb1.append(getF_class().toString()+" ");
sb1.append(getT_type().toString()+" ");
sb1.append("乘客姓名:"+getPassengerName()+" ");
sb1.append("证件号码:"+getPassengerId()+" 座位号:"+this.numOfSeat()+" 票价:"+getPrice());
sb1.append("出票地"+getBranch().getCity()+" "+getBranch().getName()+"\n");
return sb1.toString();
}
//查询
public String toString(){
StringBuffer sb1=new StringBuffer();
sb1.append(getFlight().getCalendar().get(Calendar.YEAR)+"年 ");
sb1.append(getFlight().getCalendar().get(Calendar.MONTH)+"月 ");
sb1.append(getFlight().getCalendar().get(Calendar.DAY_OF_MONTH)+"日 ");
sb1.append(getFlight().getSch().getFromTime().toString());
sb1.append(",从 "+getFlight().getSch().getFromAddress());
sb1.append(" 至 "+getFlight().getSch().getToAddress());
sb1.append("("+getFlight().getSch().getFlightNumber()+")\n");
sb1.append(getF_class().toString()+" ");
sb1.append(getT_type().toString()+" ");
sb1.append("乘客姓名:"+getPassengerName()+" ");
sb1.append("证件号码:"+getPassengerId()+" 票价:"+getPrice());
sb1.append("出票地"+getBranch().getCity()+" "+getBranch().getName()+"\n");
return sb1.toString();
}
/*public static int getSeatnumber() {
return seatnumber;
}
public static void setSeatnumber(int seatnumber) {
TicketOrder.seatnumber = seatnumber;
}*/
//自动座位号+1,出票时操作。
public int numOfSeat(){
//switch(f_class){
switch(getF_class()){
case EconomyClass:{
//a是座位号=(最大座位-剩余座位+1)
int seatnumber=getFlight().getSch().getPlane().getECS()-getFlight().getECSRemain()+1;
//设置剩余座位-1
getFlight().setECSRemain(getFlight().getECSRemain()-1);
return seatnumber;
}
case OfficialClass:{
int seatnumber=getFlight().getSch().getPlane().getBCS()-getFlight().getBCSRemain()+1;
getFlight().setBCSRemain(getFlight().getBCSRemain()-1);
return seatnumber;
}
case FirstClass:{
int seatnumber=getFlight().getSch().getPlane().getFCS()-getFlight().getFCSRemain()+1;
getFlight().setFCSRemain(getFlight().getFCSRemain()-1);
return seatnumber;
}
default:return -1;
}
}
//用来映射的枚举属性
public String getCabinclass() {
return cabinclass;
}
public void setCabinclass(String cabinclass) {
this.cabinclass = cabinclass;
//f_class=CabinClass.valueOf(cabinclass);
//没有了枚举属性,用的时候调用get方法
}
public String getTickettype() {
return tickettype;
}
public void setTickettype(String tickettype) {
this.tickettype = tickettype;
//t_type=TicketType.valueOf(tickettype);
}
public Long getOid() {
return oid;
}
public void setOid(Long oid) {
this.oid = oid;
}
public Branch getBranch() {
return branch;
}
public void setBranch(Branch branch) {
this.branch = branch;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -