package com.lf;
//构造一个车的抽象类
public abstract class Car {
private int number;
private String carName;
private int rentMoney;
private String capacity;
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getCarName() {
return carName;
}
public void setCarName(String carName) {
this.carName = carName;
}
public int getRentMoney() {
return rentMoney;
}
public void setRentMoney(int rentMoney) {
this.rentMoney = rentMoney;
}
public abstract String getCapacity();
public void setCapacity(String capacity) {
this.capacity = capacity;
}
@Override
public String toString() {
return number + ". " + carName + " " + rentMoney + " "
+ this.getCapacity();
}
}
package com.lf;
//货车载货量的接口
public abstract interface ICarryGoods {
//载货量
public abstract String carryGoods();
}
package com.lf;
//客车载客量的接口
public interface ICarryPassenger {
//客车载客量
public abstract String carryPassenger();
}
package com.lf;
//客车
public class PassengerCar extends Car implements ICarryPassenger {
public int passengerCapcity;
public PassengerCar(int number, String carName,int rentMoney,int capacityNum) {
this.setNumber(number);
this.setCarName(carName);
this.setRentMoney(rentMoney);
this.passengerCapcity = capacityNum;
}
public int getPassengerCapcity() {
return passengerCapcity;
}
public void setPassengerCapcity(int passengerCapcity) {
this.passengerCapcity = passengerCapcity;
}
public String getCapacity(){
return carryPassenger();
}
@Override
public String carryPassenger() {
return "载人:" + this.passengerCapcity + "人";
}
}
package com.lf;
//货车
public class GoodsCar extends Car implements ICarryGoods {
private int goodsCapacity;
public int getGoodsCapacity() {
return goodsCapacity;
}
public void setGoodsCapacity(int goodsCapacity) {
this.goodsCapacity = goodsCapacity;
}
public String getCapacity(){
return this.carryGoods();
}
public GoodsCar(int number, String carName,int rentMoney,int capacityNum) {
this.setNumber(number);
this.setCarName(carName);
this.setRentMoney(rentMoney);
this.goodsCapacity = capacityNum;
}
@Override
public String carryGoods() {
return "载货:" + this.goodsCapacity + "吨";
}
}
package com.lf;
//皮卡车,即可载货,又可载人
public class PicaCar extends Car implements ICarryGoods, ICarryPassenger {
private int goodsCapacity;
private int passengerCapacity;
public PicaCar(int number, String carName,int rentMoney,int goodsCapNum,int passengerCapNum) {
this.setNumber(number);
this.setCarName(carName);
this.setRentMoney(rentMoney);
this.goodsCapacity = goodsCapNum;
this.passengerCapacity = passengerCapNum;
}
public int getGoodsCapacity() {
return goodsCapacity;
}
public void setGoodsCapacity(int goodsCapacity) {
this.goodsCapacity = goodsCapacity;
}
public int getPassengerCapacity() {
return passengerCapacity;
}
public void setPassengerCapacity(int passengerCapacity) {
this.passengerCapacity = passengerCapacity;
}
public String getCapacity(){
return carryGoods()+carryPassenger();
}
@Override
public String carryPassenger() {
return "载人:" + this.passengerCapacity + "人:";
}
@Override
public String carryGoods() {
return "载货:" + this.goodsCapacity + "吨:";
}
}
package com.lf;
//租车系统
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class DaDaRental {
public static void main(String[] args) {
System.out.println("***请问您是否需要租车?是/否(1/0)");
Scanner sc = new Scanner(System.in);
if (sc.nextInt() == 0) {
System.out.println("感谢您使用本系统,欢迎您下次选购,谢谢!");
} else {
System.out.println("***可选车类型和价目表如下:");
ArrayList<Car> cars = saveCars();
System.out.println("序号 汽车名称 租金(元/月) 容量 ");
Iterator<Car> it = cars.iterator();
while (it.hasNext()) {
System.out.println(it.next().toString() + "");
}
System.out.println("***请输入租车数量(不超过" + cars.size() + "辆)");
int choseNum = sc.nextInt();
int[] carNums = new int[choseNum];
for(int i=0;i<choseNum;i++){
System.out.println("***请输入第"+(i+1)+"辆车的序号:");
carNums[i] = sc.nextInt();
}
System.out.println("***您选择的车为:");
for(int i :carNums){
System.out.println(cars.get(i-1).toString());
}
System.out.println("请输入租车天数:");
int rentDay = sc.nextInt();
System.out.println("***您的账单为:");
//统计可载人车辆和载人总数
System.out.println("****可载人的车有:");
int totalPassengers = 0;
for(int i :carNums){
if(cars.get(i-1) != null&&(cars.get(i-1) instanceof PassengerCar|| cars.get(i-1) instanceof PicaCar)){
System.out.print(cars.get(i-1).getCarName()+" ");
if(cars.get(i-1) instanceof PassengerCar){
PassengerCar pasCar = (PassengerCar)cars.get(i-1);
totalPassengers += pasCar.getPassengerCapcity();
}
if(cars.get(i-1) instanceof PicaCar){
PicaCar picaCar = (PicaCar)cars.get(i-1);
totalPassengers += picaCar.getPassengerCapacity();
}
}
}
System.out.println("总载人数:"+totalPassengers+"人");
//统计可以载货的车和总载货数
System.out.println();
System.out.println("****可载货的车有:");
int totalGoods = 0;
for(int i :carNums){
if(cars.get(i-1) != null&&(cars.get(i-1) instanceof GoodsCar|| cars.get(i-1) instanceof PicaCar) ){
System.out.print(cars.get(i-1).getCarName()+" ");
if(cars.get(i-1) instanceof GoodsCar){
GoodsCar pasCar = (GoodsCar)cars.get(i-1);
totalGoods += pasCar.getGoodsCapacity();
}
if(cars.get(i-1) instanceof PicaCar){
PicaCar picaCar = (PicaCar)cars.get(i-1);
totalGoods += picaCar.getGoodsCapacity();
}
}
}
System.out.println("总载货数:"+totalGoods+"吨");
//统计所选车的总租金
System.out.println();
int totalMoney = 0;
for(int i :carNums){
totalMoney += cars.get(i-1).getRentMoney();
}
System.out.println("***总租金为:"+totalMoney*rentDay);
}
}
public static ArrayList<Car> saveCars() {
ArrayList<Car> cars = new ArrayList<Car>();
Car passengerCar1 = new PassengerCar(1,"奥迪A4",500,4);
cars.add((Car) passengerCar1);
Car goodsCar1 = new GoodsCar(2,"马自达", 400, 4);
cars.add(goodsCar1);
Car picaCar1 = new PicaCar(3,"东风汽车",450,4,5);
cars.add((Car) picaCar1);
Car passengerCar2 = new PassengerCar(4,"奥迪A8",300,4);
cars.add((Car) passengerCar2);
return cars;
}
}