第一篇手记发的代码是不带父类子类的,后来看到了大家的代码,于是决定将自己的代码改进一下。
改进之后的代码,方便数据的增添和修改,如果按照第一篇手记里的代码,遇到需要修改汽车租赁表信息的情况,基本上等于要重写代码了。
package com.imooc3;
public class Car {//父类Car
int num;
String name;
int rental;
int manned;
int load;
public void print(){//打印租车列表信息
System.out.println(this.num+"\t"+this.name+"\t"+this.rental+"/天\t"+this.manned+"人 "+this.load+"吨");
};
public void setNum(int num){//带参方法,给Car类中的属性赋值用
this.num=num;
}
public void setName(String name){
this.name=name;
}
public void setRental(int rental){
this.rental=rental;
}
public void setManned(int manned){
this.manned=manned;
}
public void setLoad(int load){
this.load=load;
}
public int getNum(){//带返回值方法,获取属性值
return num;
}
public String getName(){
return name;
}
public int getRental(){
return rental;
}
public int getManned(){
return manned;
}
public int getLoad(){
return load;
}
}
package com.imooc3;
public class ManCar extends Car {//子类ManCar,只载人的车
//ManCar继承父类Car,调用父类set方法给参数赋值
public void print(){//方法重写Car类的print
System.out.println(this.num+"\t"+this.name+"\t"+this.rental+"/天\t"+this.manned+"人\t");
};
public ManCar(int newNum,String newName,int newRental,int newManned){
this.setNum(newNum);
this.setName(newName);
this.setRental(newRental);
this.setManned(newManned);
}
}
package com.imooc3;
public class Truck extends Car {//子类Truck,只载货的车
public void print(){//方法重写Car类的print
System.out.println(this.num+"\t"+this.name+"\t"+this.rental+"/天\t"+this.load+"吨");
};
public Truck(int newNum,String newName,int newRental,int newLoad){
this.setNum(newNum);
this.setName(newName);
this.setRental(newRental);
this.setLoad(newLoad);
}
}
package com.imooc3;
public class PickUp extends Car {//子类PickUp,既能载人,又能载货的车
public PickUp(int newNum,String newName,int newRental,int newManned,int newLoad){
this.setNum(newNum);
this.setName(newName);
this.setRental(newRental);
this.setManned(newManned);
this.setLoad(newLoad);
}
}
package com.imooc3;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class Initail {
public static void main(String args[]){
ManCar ao=new ManCar(1,"奥迪A4",500,4);
Car ma=new ManCar(2,"马自达6",400,4);
Car pi=new PickUp(3,"皮卡雪6",450,4,2);
Car jin=new ManCar(4,"金龙 ",800,20);
Car song=new Truck(5,"松花江",400,4);
Car yi=new Truck(6,"依维柯",1000,20);
System.out.println("欢迎使用答答租车系统!");
System.out.println("您是否要租车?租车请输入1,不租车请按2。");
Scanner input=new Scanner(System.in);//获取是否租车的信息
int n=input.nextInt();
if(n==1){
System.out.println("您可租车的类型及其价目表:");
System.out.println("序号\t汽车名称\t租金\t汽车容量");
ao.print();
ma.print();
pi.print();
jin.print();
song.print();
yi.print();
System.out.println("请输入您要租车的数量:");
Scanner input2=new Scanner(System.in);//获取租车数量,记为nums
int nums=input2.nextInt();
String zairen[]=new String[10];//存放载人汽车名称
String zaihuo[]=new String[10];//存放载货汽车名称
int money[]=new int[30];//存放每辆车租金的数组
int sumren=0;//租车能载人的总数量
int sumhuo=0;//租车能载货的总吨数
for(int i=1;i<=nums;i++){//让用户选择租车的车型
System.out.println("请输入第"+i+"辆车的序号");
Scanner input3=new Scanner(System.in);//获取消费者租车型号
int num1=input3.nextInt();
switch(num1){//根据输入的车辆型号,在数组中保存相应的信息
case 1:
zairen[i]=ao.getName();
money[i]=ao.getRental();
sumren=sumren+ao.getManned();
break;
case 2:
zairen[i]=ma.getName();
money[i]=ma.getRental();
sumren=sumren+ma.getManned();
break;
case 3:
zairen[i]=pi.getName();
zaihuo[i]=pi.getName();
money[i]=pi.getRental();
sumren=sumren+pi.getManned();
sumhuo=sumhuo+pi.getLoad();
break;
case 4:
zairen[i]=jin.getName();
money[i]=jin.getRental();
sumren=sumren+jin.getManned();
break;
case 5:
zaihuo[i]=song.getName();
money[i]=song.getRental();
sumhuo=sumhuo+song.getLoad();
break;
case 6:
zaihuo[i]=yi.getName();
money[i]=yi.getRental();
sumhuo=sumhuo+yi.getLoad();
break;
default:
System.out.println("请输入租车价目表中的汽车序号!");
break;
}
}
System.out.println("请输入租车天数:");
Scanner input4=new Scanner(System.in);//获取租车天数
int num2=input4.nextInt();
int daymoney=0;//一天租车租金
for(int j=0;j<money.length;j++){//统计所租车辆一天的租金
daymoney+=money[j];
}
int summoney=num2*daymoney;//计算租金总额
System.out.println("您的账单:");
System.out.println("***可载人的车有:");
Set<String> set1=new HashSet<String>();//创建一个HashSet
for(String s:zairen){//将zairen数组中的元素放到set中
set1.add(s);
}
zairen=set1.toArray(new String[0]);//将set转换成数组,并将去除重复后的新数组赋给zairen
for(int i=0;i<zairen.length;i++){//输出数组中除null以外的值
if(zairen[i]!=null)
System.out.print(" "+zairen[i]);
}
System.out.println(" 共载人: "+sumren+"人");
System.out.println("***可载货的车有:");
Set<String> set2=new HashSet<String>();//创建一个HashSet
for(String s:zaihuo){//将zaihuo数组中的元素放到set中
set2.add(s);
}
zaihuo=set2.toArray(new String[0]);//将set转换成数组,并将去除重复后的新数组赋给zaihuo
for(int i=0;i<zaihuo.length;i++){//输出数组中除null以外的值
if(zaihuo[i]!=null)
System.out.print(" "+zaihuo[i]);
}
System.out.println(" 共载货: "+sumhuo+"吨");
System.out.println("租车总价格: "+summoney);
}
else
System.out.println("欢迎您再次使用答答租车系统");
}
}
主方法和第一篇手记里写的差不多,父类子类的效果主要体现在数据处理方面。
如果谁有缘看到,还请多多指教~
打开App,阅读手记