简单订票处理(java)

(注:本题来自软考初级真题)
本代码实现两类交通工具(Flight 和 Train)的简单订票处理,类Vehicle、Flight、Train之间的关系入下图。
在这里插入图片描述
首先可以看到Vehicle是Flight和Train的父类
简单的订票就针对这两种交通工具,每次订票根据所选订票的交通工具和所需订票数2进行操作。
订票操作book在余票满足条件的时,会将余票总数减去 所订票数。不足时,给出给出相应类型“余票不足”的提示。
所以在父类Vehicle中定义并实现void book (int n)方法。
每类具体交通工具获取自身类型的票数(getTicket) ,订票也只减少自身类型的票数(decreaseTicket (int n))等类以及相关操作。因此在父类中,分别定义针对上述两个操作的抽象方法。而且抽象方法必须由子类实现。
在订票过程中 每次的票数需要记录,且每次操作需要对总数进行操作,所以定义为变量。在Java中定义类变量的方法是static 修饰。
for循环使得每个订票请求进行订票,并输出剩余票数。
在main方法中,依次加入5个对象,按顺序类型为:Flight,Train,Flight,Train,Train ,加入v中的index分别为0,1,2,3,4。在for循环中按顺序存取。链表集合中的对象元素,并进行订票,数量为i+!张,然后输出剩余票数。采用v.get(i).book(i+!)进行订票,采用v.get(i).getTicket()获得当前对象元素所属类的剩余票数。
具体代码如下:

package com.School.priv.Test;

import java.util.ArrayList;

public class Test2 {
public static void main(String[] args) {
System.out.println(“欢迎订票”);
ArrayListv =new ArrayList();
v.add(new Flight());
v.add(new Train());
v.add(new Flight());
v.add(new Train());
v.add(new Train());

for(int i=0;i<v.size();i++){
	v.get(i).book(i+1);
	System.out.println("剩余票数:"+v.get(i).getTicket());
}

}
}

abstract class Vehicle{
void book(int n){ //订n张票
if(getTicket()>=n){
decreaseTicket(n);
} else {
System.out.println(“余票不足”);
}
}
abstract int getTicket();
abstract void decreaseTicket (int n);
};

class Flight extends Vehicle{
	private static int tickets=216;   // Flight的票数
	int getTicket (){
		return tickets;
		
	}
	void decreaseTicket (int n){
		tickets=tickets-n;
	}
}
	class Train extends Vehicle{  
		private static int tickets=2016;    // Train 的票数
		int getTicket(){
			return tickets;
		}
		void decreaseTicket (int n){
			tickets=tickets-n;
		}
		
	}

运行结果如下:
欢迎订票
剩余票数:215
剩余票数:2014
剩余票数:212
剩余票数:2010
剩余票数:2005

猜你喜欢

转载自blog.csdn.net/weixin_40805072/article/details/88354281