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

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

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


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


代码如下:

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;
	        }
	}
}



运行结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值