手记

java入门第二季 6-1综合练习 哒哒租车系统(根据老师示范效果编译)

共分11个类,其中一个主程序,一个管理类,两个接口(载人和载货),一个父类,六个子类(对应6个车型)。
PS: 1、代码中没有考虑异常,学过异常的朋友请忽略这点。
2、多数类名首字母没有大写,完成后才意识到,所以懒得改了。
3、如果有其他问题,可在下方留言。
父类:
vecle

package disizhang;

public abstract class vecle {
    String name;
    int price;
    String capacity;
}

两个接口:
1、 Icargo

package disizhang;

public interface Icargo {
    public double cargo();
}

2、 Iperson

package disizhang;

public interface Iperson {
    public int person();
}

然后是6个车型的子类:
1、aodi

package disizhang;

public class aodi extends vecle implements Iperson{
    aodi(){
    this.name="奥迪A4";
    this.price=500;
    this.capacity="载人:4人";
    }
    public int person(){
        return 4;
    }
}

2、jinlong

package disizhang;

public class jinlong extends vecle implements Iperson{
    jinlong(){
    this.name="金龙";
    this.price=800;
    this.capacity="载人:20人";
    }
    public int person(){
        return 20;
    }
}

3、mazida

package disizhang;

public class mazida extends vecle implements Iperson{
    mazida(){
    this.name="马自达6";
    this.price=400;
    this.capacity="载人:4人";
    }
    public int person(){
        return 4;
    }
}

4、pikaxue

package disizhang;

public class pikaxue extends vecle implements Iperson, Icargo{
    pikaxue(){
    this.name="皮卡雪6";
    this.price=450;
    this.capacity="载人:4人 载货:2吨";
    }
    public int person(){
        return 4;
    }
    public double cargo(){
        return 2;
    }
}

5、songhuajiang

package disizhang;

public class songhuajiang extends vecle implements Icargo{
    songhuajiang(){
    this.name="松花江";
    this.price=400;
    this.capacity="载货:4吨";
    }
    public double cargo(){
        return 4;
    }
}

6、yiweike

package disizhang;

public class yiweike extends vecle implements Icargo{
    yiweike(){
    this.name="依维柯";
    this.price=1000;
    this.capacity="载货:20吨";
    }
    public double cargo(){
        return 20;
    }
}

一个管理类,定义了输出车辆信息和计算价钱两个方法

package disizhang;
import java.util.Scanner;
public class admin {
    private static final boolean vecle = false;
    Scanner in=new Scanner(System.in);
    //定义一个备租车辆的数组
    vecle[] carList={new aodi(),new mazida(),new pikaxue(),
            new jinlong(),new songhuajiang(),new yiweike()};
    public void priceMenu(){//通过此方法输出车辆信息
        System.out.println("欢迎使用哒哒租车系统");
        System.out.println("您是否要租车:1是 0否");
        int inputNum=in.nextInt();
        if(inputNum==1){
            System.out.println("您可租车的类型及价目表");
            System.out.println("序号\t汽车名称\t租金\t容量");
            //通过遍历备租车辆,输出备租车辆信息
            for(int i=0;i<carList.length;i++){
                System.out.println((i+1)+"\t"+carList[i].name+"\t"+
                        carList[i].price+"元/天\t"+carList[i].capacity);
            }
        }else if(inputNum==0){
            System.out.println("系统已经退出");
            System.exit(0);
        }else{
        //怎么修改,可以在打印下面这句话后,循环输出以上操作,输出"欢迎使用哒哒租车系统"
        System.out.println("输入有误,请重新输入");
        }
    }
    public void priceSum(){//通过此方法,计算租金
        System.out.println("请输入您要租汽车的数量");
        int rentNum=in.nextInt();
        //定义一个客户已选车辆的数组
        vecle[] carSelected=new vecle[rentNum];
        for(int i=0;i<rentNum;i++){
            System.out.println("请输入第"+(i+1)+"辆车的序号");
            int carNum=in.nextInt();
            carSelected[i]=carList[carNum-1];                   
        }
        System.out.println("请输入您要租汽车的天数");
        int rentDay=in.nextInt();
        System.out.println("您的账单:");
        System.out.println("***可载人的车有:");   
        int sumPerson=0;
        //循环遍历carSelected,如果constanceof Iperson,则输出这些元素
        for(vecle car:carSelected){
            if(car instanceof Iperson){
                System.out.print(car.name+"\t");
                sumPerson=sumPerson+((Iperson) car).person();
            }
        }
        System.out.println("共载人:"+sumPerson+"人");
        System.out.println("***可载货的车有:");   
        double sumCargo=0;
        double sumPrice=0;
        for(vecle car:carSelected){//又循环了一边,增加了程序运行时间
            sumPrice=sumPrice+car.price*rentDay;
            if(car instanceof Icargo){
                System.out.print(car.name+"\t");
                //这里为什么系统把CAR强制转换成Icargo,不太明白
                sumCargo=sumCargo+((Icargo) car).cargo();
            }
        }
        System.out.println("共载货:"+sumCargo+"吨");
        System.out.println("***租车总价格:"+sumPrice+"元");
    }
}

一个主程序

package disizhang;
public class rent {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        admin a=new admin();
            a.priceMenu();
            a.priceSum();
    }

}

THE END 效果展示:
欢迎使用哒哒租车系统
您是否要租车:1是 0否
1
您可租车的类型及价目表
序号 汽车名称 租金 容量
1 奥迪A4 500元/天 载人:4人
2 马自达6 400元/天 载人:4人
3 皮卡雪6 450元/天 载人:4人 载货:2吨
4 金龙 800元/天 载人:20人
5 松花江 400元/天 载货:4吨
6 依维柯 1000元/天 载货:20吨
请输入您要租汽车的数量
3
请输入第1辆车的序号
1
请输入第2辆车的序号
3
请输入第3辆车的序号
6
请输入您要租汽车的天数
2
您的账单:
可载人的车有:
奥迪A4 皮卡雪6 共载人:8人
可载货的车有:
皮卡雪6 依维柯 共载货:22.0吨
***租车总价格:3900.0元

7人推荐
随时随地看视频
慕课网APP