继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

答答租车系统改进版(用到继承)

人生是不断的选择
关注TA
已关注
手记 2
粉丝 0
获赞 6
     第一篇手记发的代码是不带父类子类的,后来看到了大家的代码,于是决定将自己的代码改进一下。
    改进之后的代码,方便数据的增添和修改,如果按照第一篇手记里的代码,遇到需要修改汽车租赁表信息的情况,基本上等于要重写代码了。
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,阅读手记
2人推荐
发表评论
随时随地看视频慕课网APP