设计一个租车系统,车有载货和载人,也有既载货又载人的车,模拟租车系统,实现一点小功能!

综合运用所学知识,完善系统(异常处理,接口使用,封装继承等等~)


异常处理还是有些缺陷,对选车过程中输错序号还没有很好的处理,等掌握的知识多了再来解决。


代码如下:

package example1;

public class Car {
private int carNumber;
private String carName;
private int carMoney;
public int getCarNumber() {
return carNumber;
}
public void setCarNumber(int carNumber) {
this.carNumber = carNumber;
}
public String getCarName() {
return carName;
}
public void setCarName(String carName) {
this.carName = carName;
}
public int getCarMoney() {
return carMoney;
}
public void setCarMoney(int carMoney) {
this.carMoney = carMoney;
}
}


package example1;

public class PassengerCar extends Car {
private int carCapacity;
public PassengerCar(int carNumber,String carName,int carMoney,int carCapacity){
this.setCarNumber(carNumber);
this.setCarName(carName);
this.setCarMoney(carMoney);
this.carCapacity=carCapacity;
}
public int getCarCapacity() {
return carCapacity;
}

public void setCarCapacity(int carCapacity) {
this.carCapacity = carCapacity;
}
}


package example1;

public class Trunk extends Car{
private int carCarry;
public Trunk(int carNumber,String carName,int carMoney,int carCarry){
this.setCarNumber(carNumber);
this.setCarName(carName);
this.setCarMoney(carMoney);
this.carCarry=carCarry;
}
public int getCarCarry() {
return carCarry;
}

public void setCarCarry(int carCarry) {
this.carCarry = carCarry;
}
}


public class PickUp extends Car {
private int carCapacity; //定义皮卡的载客量
private int carCarry; //定义皮卡的载货量

public PickUp(int carNumber,String carName,int carRentMoney,int carCapacity,int carCarry){
this.setCarNumber(carNumber);
this.setCarName(carName);
this.setCarMoney(carRentMoney);
this.carCapacity=carCapacity;
this.carCarry=carCarry;
}

public int getCarCapacity() {
return carCapacity;
}

public void setCarCapacity(int carCapacity) {
this.carCapacity = carCapacity;
}

public int getCarCarry() {
return carCarry;
}

public void setCarCarry(int carCarry) {
this.carCarry = carCarry;
}

}



package example1;
import java.util.Scanner;
import java.util.*;

public class Test {

public static void main(String[] args) {
System.out.println("欢迎使用哒哒租车系统!\n");
while(true){
int kase=0;
System.out.println("您是否需要租车? :1 是 0 否");
try{
Scanner input=new Scanner(System.in);
int k=input.nextInt();
if(k==1)
{
kase=1;
System.out.println("您可租车的类型及价目表:");
Car [] carRent={new PassengerCar(1,"奥迪",500,4),new PassengerCar(2,"马自达",400,4),
new PickUp(3,"皮卡雪",450,4,2),new PassengerCar(4,"金龙",800,20),new Trunk(5,"松花江",400,4),new Trunk(6,"解放",500,5)
};
System.out.println("序号"+"\t"+"汽车名称"+"\t"+"租金"+"\t"+"容量");
for (Car car : carRent) {
//用instanceOf来测试左边类型的对象是否是右边类型的实例,返回值为Boolean
if(car instanceof PassengerCar){
//若它是客车类型的实例,则打印出客车应该有的属性值,这里注意强转,否则不会出现
//passengerCar类的CarCapacity属性
System.out.println(car.getCarNumber()+"\t"+car.getCarName()+"\t"+car.getCarMoney()
+"/天"+"\t"+"载人:"+((PassengerCar)car).getCarCapacity()+"人");
}
if(car instanceof PickUp){
System.out.println(car.getCarNumber()+"\t"+car.getCarName()+"\t"+car.getCarMoney()
+"/天"+"\t"+"载人:"+((PickUp)car).getCarCapacity()+"人"+"\t"
+"载货:"+((PickUp)car).getCarCarry()+"吨");
}
if(car instanceof Trunk){
System.out.println(car.getCarNumber()+"\t"+car.getCarName()+"\t"+car.getCarMoney()
+"/天"+"\t"+"载货:"+((Trunk)car).getCarCarry()+"吨");
}
}
System.out.println("请输入您要租车的数量");
int n=input.nextInt();
List<Car> carList=new ArrayList<Car>();
int p=0;
List<Car> carList1=new ArrayList<Car>();
List<Car> carList2=new ArrayList<Car>();
int pnum=0;
int cnum=0;
int mnum=0;
for(int i=0;i<n;i++){
System.out.println("请输入第"+(i+1)+"辆车的序号: ");
int nnum=input.nextInt();
carList.add(carRent[nnum-1]);
System.out.println("成功添加:"+carList.get(p).getCarName());
if(carRent[nnum-1] instanceof PassengerCar){
pnum+=((PassengerCar)carList.get(p)).getCarCapacity();
mnum+=(carList.get(p)).getCarMoney();
carList1.add(carList.get(p));
}
if(carRent[nnum-1]instanceof PickUp){
cnum+=((PickUp)carList.get(p)).getCarCarry();
pnum+=((PickUp)carList.get(p)).getCarCapacity();
mnum+=(carList.get(p)).getCarMoney();
carList2.add(carList.get(p));
carList1.add(carList.get(p));
}
if(carRent[nnum-1]instanceof Trunk){
cnum+=((Trunk)carList.get(p)).getCarCarry();
mnum+=(carList.get(p)).getCarMoney();
carList2.add(carList.get(p));
}
p++;
}
System.out.println("请输入租车的天数:");
int dnum=input.nextInt();
mnum=mnum*dnum;
if(carList1.isEmpty()){
System.out.println("没有可以载客的车~");
}
else{
System.out.println("********************可载客的车有********************");
for (Car car : carList1) {
System.out.println(car.getCarName());
}
System.out.println("载客量为"+pnum+"人");
}
if(carList2.isEmpty()){
System.out.println("没有可以载客的车~");
}
else{
System.out.println("********************可载货的车有********************");
for (Car car : carList2) {
System.out.println(car.getCarName());
}
System.out.println("载货量为"+cnum+"吨");
}
System.out.println("********************租车的总价格********************");
System.out.println(mnum);
}
else if(k==0){
kase=1
System.out.println("感谢您的再次使用!再见!");
}
else{
System.out.println("您输入的指令有误,请重新输入!");
}
}catch(Exception e){
System.out.println("请输入数字!谢谢~");
}
if(kase==1)
break;
}
}
}





运行结果:

哒哒租车系统(慕课网学习)_i++