由于英语水平有限部分地方用的拼音!(简单粗暴)
//总车类接口。
package com.catv.car_rental;
public interface Cars {}
//货车接口。
package com.catv.car_rental;
public interface HuoChe extends Cars{}
//客车接口。
package com.catv.car_rental;
public interface KeChe extends Cars {}
//客车类,get和set太长省略了。
package com.catv.car_rental;
public class HuoCar implements HuoChe {
private int cargo;
private String cname;
private double price;
public HuoCar(int cargo, String cname, double price) {
this.cargo = cargo;
this.cname = cname;
this.price = price;
}
//get和set省略。
@Override
public String toString() {
return cname + "\t价格:" + price + "元/天" + "\t载货:" + cargo + "吨";
}
}
//客车类。
package com.catv.car_rental;
//创建客车类。
public class KeCars implements KeChe {
// 定义成员变量。
private int manned;// 载客量。
private String cname;// 车辆名称。
private double price;// 租车价格。
// 构造函数。
public KeCars(int manned, String cname, double price) {
this.manned = manned;
this.cname = cname;
this.price = price;
}
// get和set略。
@Override
public String toString() {
return cname + "\t价格:" + price + "元/天" + "\t载人:" + manned + "人";
}
}
//皮卡类。
package com.catv.car_rental;
public class PickUpTruck implements HuoChe, KeChe {
private String cname;
private double price;
private int cargo;
private int manned;
public PickUpTruck(String cname, double price, int cargo, int manned) {
this.cname = cname;
this.price = price;
this.cargo = cargo;
this.manned = manned;
}
//get和set略。
@Override
public String toString() {
return cname + "\t价格:" + price + "元/天" + "\t载人:" + manned + "人\t载货:" + cargo + "吨";
}
}
//租车系统类。
package com.catv.car_rental;
import java.util.Scanner;
public class CarRental {
private Cars[] cars = new Cars[] { new KeCars(4, "奥迪A4", 500), new KeCars(4, "马自达6", 400),
new PickUpTruck("皮卡雪6", 450, 2, 4), new KeCars(20, "金龙", 800), new HuoCar(4, "松花江", 400),
new HuoCar(20, "依维柯", 1000) };
private int lease;
private int num;
private Cars[] newCars;
public int getLease() {
return lease;
}
public void setLease(int lease) {
this.lease = lease;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
newCars = new Cars[num];
}
public void addCars(int x) {
for (int i = 0; i < newCars.length; i++) {
if (newCars[i] == null) {
newCars[i] = cars[x - 1];
break;
} else {
continue;
}
}
}
public void welcome() {
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
System.out.println("欢迎使用哒哒租车系统:\r\n您是否要租车:1是0否");
if (sc.nextInt() != 1) {
System.out.println("谢谢使用哒哒租车系统!");
return;
}
System.out.println("您可租车的类型以及价目表:");
getList();
System.out.println("请输入您要租汽车的数量:");
int y;
while (true) {
y = sc.nextInt();
if (y <= 0 || y > 7) {
System.out.println("请输入1-6的数字");
} else {
setNum(y);
break;
}
}
int count = 1;
int x;
while (true) {
System.out.println("请输入第" + count + "辆车的序号:");
x = sc.nextInt();
if (x >0 && x < 7) {
addCars(x);
if (count == getNum()) {
break;
}
count++;
} else {
System.out.println("请输入1-6的序号");
continue;
}
}
}
public void getNewCarsList() {
double sumPrice = 0;
int sumCargo = 0;
int sumManned = 0;
StringBuffer sb1 = new StringBuffer();// 载客车。
StringBuffer sb2 = new StringBuffer();// 载货车。
for (int i = 0; i < newCars.length; i++) {
if (newCars[i] instanceof KeCars) {
sumPrice = ((KeCars) newCars[i]).getPrice() + sumPrice;
} else if (newCars[i] instanceof HuoCar) {
sumPrice = ((HuoCar) newCars[i]).getPrice() + sumPrice;
} else if (newCars[i] instanceof PickUpTruck) {
sumPrice = ((PickUpTruck) newCars[i]).getPrice() + sumPrice;
}
if (newCars[i] instanceof KeChe) {
if (newCars[i] instanceof KeCars) {
sb1.append(((KeCars) newCars[i]).getCname() + "\t");
sumManned = ((KeCars) newCars[i]).getManned() + sumManned;
} else if (newCars[i] instanceof PickUpTruck) {
sb1.append(((PickUpTruck) newCars[i]).getCname() + "\t");
sb2.append(((PickUpTruck) newCars[i]).getCname() + "\t");
sumManned = ((PickUpTruck) newCars[i]).getManned() + sumManned;
sumCargo = ((PickUpTruck) newCars[i]).getCargo() + sumCargo;
}
} else if (newCars[i] instanceof HuoChe) {
sb2.append(((HuoCar) newCars[i]).getCname() + "\t");
sumCargo = ((HuoCar) newCars[i]).getCargo() + sumCargo;
}
}
System.out.println("***可载人的车有:\r\n" + sb1 + "\t共载人:" + sumManned + "人");
System.out.println("***可载货的车有:\r\n" + sb2 + "\t共载货:" + sumCargo + "吨");
System.out.println("***租车总价格:" + sumPrice + "元");
}
public void getList() {
System.out.println("序号\t汽车名称\t租金\t\t容量");
for (int i = 0; i < cars.length; i++) {
System.out.println((i + 1) + "\t" + cars[i].toString());
}
}
}
//测试类。
package com.catv.car_rental;
public class Test {
public static void main(String[] args) {
CarRental cr = new CarRental();
//欢迎界面。
cr.welcome();
//打印租车清单。
cr.getNewCarsList();
}
}
//测试结果。
欢迎使用哒哒租车系统:
您是否要租车:1是0否
1
您可租车的类型以及价目表:
序号 汽车名称 租金 容量
1 奥迪A4 价格:500.0元/天 载人:4人
2 马自达6 价格:400.0元/天 载人:4人
3 皮卡雪6 价格:450.0元/天 载人:4人 载货:2吨
4 金龙 价格:800.0元/天 载人:20人
5 松花江 价格:400.0元/天 载货:4吨
6 依维柯 价格:1000.0元/天 载货:20吨
请输入您要租汽车的数量:
4
请输入第1辆车的序号:
3
请输入第2辆车的序号:
1
请输入第3辆车的序号:
5
请输入第4辆车的序号:
2
可载人的车有:
皮卡雪6 奥迪A4 马自达6 共载人:12人
可载货的车有:
皮卡雪6 松花江 共载货:6吨
***租车总价格:1750.0元
//选车哪里不太理想后续会完善,希望高手指正。