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

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

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

向日葵_0026 2015-11-23 02:31:19
以下星号是为了慕友方便看 ************************************************汽车父类**************************************************** 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("********欢迎下次光临********"); } } }
查看完整描述

1 回答

已采纳
?
天启之魂

TA贡献174条经验 获得超85个赞

大概看了一下  给几个小建议

1,用了set和get方法 属性就要加上private,当然不加也没错

2,car中不要定义 busLoad;和truckLoading;

3,一开始的确认用户是否需要租车这里写的有点绕。。。。可以简化一点

4, 直接将所有的功能全封装成函数,然后直接在main中调用,这样main更简洁,修改更方便

    比如main中先创建车辆数组后,调用欢迎函数,然后调用打印信息的函数,然后调用要求用户输入租车信息的函数,之后调用打印租车结果的函数,over 整个main函数也就几行,逻辑清楚,简洁,易于修改。

后面代码没仔细看 不过既然你贴出来了应该运行是没什么问题的 。


查看完整回答
2 反对 回复 2015-11-23
  • 1 回答
  • 4 关注
  • 1348 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信