猿问

写完了《答答租车系统》,慕友帮忙看看,目前我自己没办法改进了,望慕友多多指正!!!

以下星号是为了慕友方便看
************************************************汽车父类****************************************************
package dadarentcar;

public abstract class Car {//汽车的父类
	//父类拥有的属性
	String name;//汽车姓名
	double price;//汽车租赁价格
	int busLoad;
	int truckLoading;
	
	public String getName() {//封装后获取修改属性的方法
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public double getPrice() {
		return price;
	}

	public void setPrice(double price) {
		this.price = price;
	}
	
	
	
	public int getBusLoad() {
		return busLoad;
	}

	public void setBusLoad(int busLoad) {
		this.busLoad = busLoad;
	}
	
	

	public int getTruckLoading() {
		return truckLoading;
	}

	public void setTruckLoading(int truckLoading) {
		this.truckLoading = truckLoading;
	}

	public abstract void showInfo();//抽象方法 子类会重写,展示 车名、价格、载货量或载客量

	
		
			
}

以下星号是为了慕友方便看
************************************************载客汽车类***************************************************

package dadarentcar;

public class Bus extends Car{
	int busLoad;//载客量
	
	public Bus(String name,double price,int busLoad){
		
		this.name=name;
		this.price=price;
		this.busLoad=busLoad;
		
	}

	public int getBusLoad() {//封装后的获取和修改方法
		return busLoad;
	}

	public void setBusload(int busLoad) {
		this.busLoad = busLoad;
	}

	@Override
	public void showInfo() {//重写父类showInfo方法
		// TODO Auto-generated method stub
		System.out.println(getName()+"\t\t"+getPrice()+"/天"+"\t\t"+getBusLoad()+"人");
	}
	
}

以下星号是为了慕友方便看
************************************************皮卡汽车类***************************************************

package dadarentcar;

public class Pickup extends Car {
	int busLoad;//皮卡载客量
	int truckLoading;//皮卡载货量
	
	public Pickup(String name,double price,int busLoad,int truckLoading){//Pickup的构造方法
		this.name=name;
		this.price=price;
		this.busLoad=busLoad;
		this.truckLoading=truckLoading;
	}
	
	

	public int getBusLoad() {//封装后的获取和修改属性方法
		return busLoad;
	}



	public void setBusLoad(int busLoad) {
		this.busLoad = busLoad;
	}



	public int getTruckLoading() {
		return truckLoading;
	}



	public void setTruckLoading(int truckLoading) {
		this.truckLoading = truckLoading;
	}



	@Override
	public void showInfo() {//重写父类showInfo方法
		// TODO Auto-generated method stub
		System.out.println(getName()+"\t\t"+getPrice()+"/天"+"\t\t"+getBusLoad()+"人\t"+getTruckLoading()+"吨");
		
	}
	
	
}

以下星号是为了慕友方便看
************************************************载货汽车类***************************************************

package dadarentcar;

public class Truck extends Car {
	int truckLoading;//货车载货量
	
	public Truck(String name,double price,int truckLoading){//Truck的构造方法
		this.name=name;
		this.price=price;
		this.truckLoading=truckLoading;
	}

	public int getTruckLoading() {//封装后获取或修改属性的方法
		return truckLoading;
	}

	public void setTruckLoading(int truckLoading) {
		this.truckLoading = truckLoading;
	}

	@Override
	public void showInfo() {//重写父类showInfo方法
		// TODO Auto-generated method stub
		System.out.println(getName()+"\t\t"+getPrice()+"/天"+"\t\t"+getTruckLoading()+"吨");
	}
	
	
	
}

以下星号是为了慕友方便看
************************************************主函数类***************************************************

package dadarentcar;
import java.util.Scanner;//导入扫描仪
public class DaDa_Rent_Car{
	
	public static void main(String[] ages){//主函数
		//使用数组统一创建汽车对象得到汽车数组
		Car[] carArray={new Bus("奥迪A4",500,4),new Bus("马自达6",400,4),new Pickup("皮卡雪6",450,4,2),new Bus("金龙",800,20),new Truck("松花江",400,4),new Truck("依维柯",1000,20)};
		//询问用户是否需要租车
		Scanner input=new Scanner(System.in);//创建Scanner对象
		
		System.out.println("****欢迎来到答答租车,是否需要租车? 输入“1”租车,输入“0”退出。****");
		//接受用户输入的答案
		int answer=input.nextInt();
		
		while(answer!=1&&answer!=0){//当用户输入除0和1以外的数时,进入循环,直到用户输入1和0跳出循环
			System.out.println("****欢迎来到答答租车,是否需要租车? 输入“1”租车,输入“0”退出。****");
			int answer1=input.nextInt();//新建一个局部变量answer1接受数据
			if(answer1==1){//当用户输入1后跳出循环,并把值赋给answer
			answer=answer1;	
				break;
			}
			if(answer1==0){//当用户输入0后跳出循环,并把值赋给answer
				answer=answer1;
				break;
			}
		}
		//判断用户输入的数据,得出不同结果
			if(answer==1){
				System.out.println("进入系统******");
				//打印出导航
				System.out.println("序号"+"\t"+"车名"+"\t\t"+"价格"+"\t\t"+"载客/载货");
				
				for(int i=0;i<carArray.length;i++){
						System.out.print(i+1+"\t");
						carArray[i].showInfo();
					}
			//询问用户需要租赁多少辆车
			System.out.println("需要租多少辆车?******");
			int rentNum=input.nextInt();//接受用户输入的数据
			Car[] rentCar=new Car[rentNum];//创建需要租赁的车的数组,数组长度为用户输入需要租赁汽车的个数
			for(int i=0;i<rentCar.length;i++){
				System.out.println("请输入第"+(i+1)+"辆车的序号");
				int carNum=input.nextInt();
				rentCar[i]=carArray[carNum-1];
			}
			
			//询问用户需要租赁多少天
			System.out.println("需要租多少天?******");
			int rentDay=input.nextInt();
			
			//打印账单
			System.out.println("******您的账单******");
			int allBusLoad=0;//统计总载人量
			int allTruckLoading=0;//统计总载货量
			int allPrice=0;//统计总租金
			System.out.println("您所租赁的车,可载人的车辆有:******");
			for(int i=0;i<rentCar.length;i++){
				if(rentCar[i] instanceof Bus||rentCar[i] instanceof Pickup){
					rentCar[i].showInfo();
					
				allBusLoad+=rentCar[i].getBusLoad();
				}
				
			}	
			System.out.println("您所租赁的车,可载货的车辆有:******");		
			for(int j=0;j<rentCar.length;j++){
				if(rentCar[j] instanceof Truck||rentCar[j] instanceof Pickup){			
						rentCar[j].showInfo();
						allTruckLoading+=rentCar[j].getTruckLoading();
				}
				allPrice+=rentCar[j].getPrice();
			}		
			//总载客数、总价钱和总载货量
			System.out.println("总载客数为:"+allBusLoad+"人");
			System.out.println("总载货量为:"+allTruckLoading+"吨");
			System.out.println("总租金为:"+(allPrice*rentDay)+"元");
				
			}else if(answer==0){
				System.out.println("********欢迎下次光临********");
				
			}
		
			
	}
	
	
}


向日葵_0026
浏览 1349回答 1
1回答

天启之魂

大概看了一下  给几个小建议1,用了set和get方法 属性就要加上private,当然不加也没错2,car中不要定义 busLoad;和truckLoading;3,一开始的确认用户是否需要租车这里写的有点绕。。。。可以简化一点4, 直接将所有的功能全封装成函数,然后直接在main中调用,这样main更简洁,修改更方便    比如main中先创建车辆数组后,调用欢迎函数,然后调用打印信息的函数,然后调用要求用户输入租车信息的函数,之后调用打印租车结果的函数,over 整个main函数也就几行,逻辑清楚,简洁,易于修改。后面代码没仔细看 不过既然你贴出来了应该运行是没什么问题的 。
随时随地看视频慕课网APP

相关分类

Java
我要回答