为了账号安全,请及时绑定邮箱和手机立即绑定

我的嗒嗒租车系统----- 花了一下午做出来,还有很多不足,请大家指正~

package com.imooc;

public abstract class Car { //所有车的父类
	public  String name;		//车名
	public int price;		//价格
	
	public abstract void showInfo();	//抽象方法,子类继承时重写,显示车名、价格、载客或载货量

	public String getName() {
		return name;
	}

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

	public int getPrice() {
		return price;
	}

	public void setPrice(int price) {
		this.price = price;
	}

}
package com.imooc;

public class Auto extends Car {	//汽车类
	public String name;
	public int price;
	public int capPerson;	//载客量
	
	public Auto(String name,int price,int capPerson){
		this.name=name;
		this.price=price;
		this.capPerson=capPerson;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getPrice() {
		return price;
	}
	public void setPrice(int price) {
		this.price = price;
	}
	public int getCapPerson() {
		return capPerson;
	}
	public void setCapPerson(int capPerson) {
		this.capPerson = capPerson;
	}
	@Override
	public void showInfo() {
		// TODO 自动生成的方法存根
		System.out.println(getName() + '\t' +getPrice() +"元/天" + '\t' + "载人:"+getCapPerson() +"人");
	}

}
package com.imooc;

public class Pickup extends Car {	//皮卡类
	public String name;
	public int price;
	public int capPerson;	//载客量
	public int capThings;	//载货量
	
	//构造方法
	public Pickup(String name,int price,int capPerson,int capThings){
		this.name = name;
		this.price = price;
		this.capPerson = capPerson;
		this.capThings = capThings;
	}
	
	
	
	public String getName() {
		return name;
	}

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

	public int getPrice() {
		return price;
	}

	public void setPrice(int price) {
		this.price = price;
	}

	public int getCapPerson() {
		return capPerson;
	}

	public void setCapPerson(int capPerson) {
		this.capPerson = capPerson;
	}

	public int getCapThings() {
		return capThings;
	}

	public void setCapThings(int capThings) {
		this.capThings = capThings;
	}



	@Override
	public void showInfo() {
		// TODO 自动生成的方法存根
		System.out.println(getName() + '\t' +getPrice() +"元/天" + '\t' + "载人:"+getCapPerson() +"人"+ "  载货:"+getCapThings() +"吨");
	}

}
package com.imooc;

public class Truck extends Car {	//货车类
	public String name;
	public int price;
	public int capThings;
	
	//构造方法
	public Truck(String name,int price,int capThings){
		this.name = name;
		this.price = price;
		this.capThings = capThings;	//载货量
	}
	
	public String getName() {
		return name;
	}


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


	public int getPrice() {
		return price;
	}


	public void setPrice(int price) {
		this.price = price;
	}


	public int getCapThings() {
		return capThings;
	}


	public void setCapThings(int capThings) {
		this.capThings = capThings;
	}

	
	@Override
	public void showInfo() {
		// TODO 自动生成的方法存根
		System.out.println(getName() + '\t' +getPrice() +"元/天" + '\t' + "载货:"+getCapThings() +"吨");
	}

}
package com.imooc;

import java.util.*;

public class DadaRent {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根

//创建车辆信息
		Car[] allRent = {new Auto("奥迪A4",500,4),new Auto("马自达6",400,4),new Pickup("皮卡雪6",450,4,2),new Auto("金龙  ",800,20),new Truck("松花江",400,4),new Truck("依维河",1000,20)};
		System.out.println("欢迎使用嗒嗒租车系统:");
		System.out.println("您是否想要租车:1是  0否");

	
//显示租车信息
		Scanner input = new Scanner(System.in);
		int choice = input.nextInt();
		while(choice!=0||choice !=1)
		{	//如果输入不为0或1,则重新输入
			if(choice ==0){
				System.out.println("感谢您使用嗒嗒租车系统,下次再见!");
				break;
			}else if(choice ==1){
				System.out.println("您可租车的类型及其价目表:");
				System.out.println("序号" + '\t' + "汽车名称" + '\t' + "租金" + '\t' +"容量");
				for(int i=0;i<allRent.length;i++){
					System.out.print((i+1) + ".\t");
					allRent[i].showInfo();
				}
				System.out.println("请输入想要租车的数量:");
				break;
			}else {
					System.out.println("请输入正确的数字:1是  0否");
					choice = input.nextInt();
				}
			}
		
		int carNum = input.nextInt();	//租车数量
		Car[] choiceCar = new Car[carNum];		//将客户选择的车辆对象放入choiceCar数组
		for(int i=0;i<carNum;i++){
			System.out.println("请输入第" + (i+1) +"辆车的序号:");
			int num =input.nextInt();//每辆车的序号
			choiceCar[i]=allRent[num-1];
		}
		
		System.out.println("请输入想要租车的天数:");
		int rentDay = input.nextInt();  //租车天数
		
		
//计算并显示账单
		System.out.println("********************您的账单信息如下:********************");
		int dayPrice=0;	//每天租车总价
		
		
		System.out.println(">>>>>>>您要租的车是:   ");
			for(int i=0;i<choiceCar.length;i++){
				dayPrice=choiceCar[i].getPrice()+dayPrice;

				choiceCar[i].showInfo();
			}
			//System.out.println("每天总价:"+dayPrice);
		System.out.println(">>>>>>>您总共要租借:  " + rentDay  + "  天");
		
//计算总载客载货量
		int totalCapPerson = 0;		//总载客量
		int totalCapThings = 0;		//总载货量
		for(int i = 0; i < choiceCar.length; i++){
			//判断所选车是Auto、Truck还是Pickup
			if(choiceCar[i] instanceof Auto){	//汽车载客量
				totalCapPerson += ((Auto)choiceCar[i]).getCapPerson(); 
			}
			
			if(choiceCar[i] instanceof Truck){	//货车载货量
				totalCapThings += ((Truck)choiceCar[i]).getCapThings();
			}
			
			if(choiceCar[i] instanceof Pickup){		//皮卡载客和载货量
				totalCapPerson +=((Pickup)choiceCar[i]).getCapPerson();
				totalCapThings +=((Pickup)choiceCar[i]).getCapThings();
			}
		}
		
		//输出总载货量和总载客量
		System.out.println(">>>>>>>您所要租借的总载客量为: " + totalCapPerson + "人\t" + "总载货量为:" + totalCapThings + "吨");
		int totalPrice = dayPrice*rentDay;	//总价
		System.out.println(">>>>>>>您总共需要支付:  " + totalPrice  + "  元");
		System.out.println("感谢您使用嗒嗒租车系统,下次再见!");
		input.close();
	}
	

	
}


正在回答

28 回答

写的不错哦~~学习了……将客户选择的车辆对象放入choiceCar数组这点很棒,我就觉得自己学的太死板了

提点小建议:

1、楼主的instanceof用法不是特别推荐啊,没有好好利用面向对象中的多态性,可以在父类里面直接定义属性——载客量和载货量

2、还有关于异常的处理,如果能加上就更完美了~~~


0 回复 有任何疑惑可以回复我~
#1

biofool_0001 提问者

非常感谢!
2015-04-28 回复 有任何疑惑可以回复我~
#2

慕粉3904766

想问下不用instanceof怎么分类?他最后要输出“可载人的车有:xxxx 总载客量:xxxxx”。
2016-09-04 回复 有任何疑惑可以回复我~
#3

慕雪0737679 回复 慕粉3904766

可以看看我写的
2017-10-11 回复 有任何疑惑可以回复我~

choiceCar[i]=allRent[num-1];   请问这一句可以解释一下吗


0 回复 有任何疑惑可以回复我~

厉害,我最近也在看慕客网,菜鸟阶段,大三了,希望好好学习一下,请多帮助。

0 回复 有任何疑惑可以回复我~

好多病句!整个抄下来了!不过还是谢谢了!我一点不会写!最重要的你没抓dayprice!晕

0 回复 有任何疑惑可以回复我~

为什么我自己写的是这样的?

http://img1.sycdn.imooc.com//59872c0e0001052e07450352.jpg

0 回复 有任何疑惑可以回复我~
这个程序有不足的地方吗? 子类中可以不写父类里的属性了

0 回复 有任何疑惑可以回复我~

要输出序号的时候,输出的序号数大于车的数量这个怎么没有加个判断?

0 回复 有任何疑惑可以回复我~

感谢楼主的代码,给了很大的启发。不然都觉得无从下手

0 回复 有任何疑惑可以回复我~

谢谢   非常好

0 回复 有任何疑惑可以回复我~

我想了一下午都没想好怎么写。。。

0 回复 有任何疑惑可以回复我~
首页上一页123下一页尾页

举报

0/150
提交
取消

我的嗒嗒租车系统----- 花了一下午做出来,还有很多不足,请大家指正~

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信