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

答答租车系统-Java面向对象的学习

慕粉3848213
关注TA
已关注
手记 5
粉丝 5
获赞 110
定义 2 个接口
  • 载人接口 IMannedCar.java

public interface IMannedCar {
    int mannedNumber();
}
  • 载货接口 ICarryFreight.java

public interface ICarryFreight {
    int carryFreightNumber();
}
定义抽线父类 Car.java,并定义两个抽象方法 name(), rental().

public abstract class Car {
    public abstract String name();
    public abstract int rental();
}
定义三个抽象类,继承 Car.java,并根据不同的需求实现不同的接口
  • PersonCar,载人汽车抽象类

public abstract class PersonCar extends Car implements IMannedCar {
}
  • CarryCar,载货汽车抽象类

public abstract class PersonCar extends Car implements IMannedCar {
}
  • PickupTruck,皮卡抽象类

public abstract class PickupTruck extends Car implements IMannedCar,ICarryFreight {
}
具体不同的汽车,实现不同的类
  • Audi.java,奥迪A4,载人汽车实现类

public class Audi extends PersonCar {
    @Override
    public int mannedNumber() {
        return 4;
    }

    @Override
    public String name() {
        return "奥迪 A4";
    }

    @Override
    public int rental() {
        return 500;
    }

    @Override
    public String toString() {
        return name() + "  " + rental() + "元/天  载人:" + mannedNumber();
    }
}
  • Mazada6.java,马自达6,载人汽车实现类

public class Mazada6 extends PersonCar {
    @Override
    public int mannedNumber() {
        return 4;
    }

    @Override
    public String name() {
        return "马自达6";
    }

    @Override
    public int rental() {
        return 400;
    }

    @Override
    public String toString() {
        return name() + "  " + rental() + "元/天  载人:" + mannedNumber();
    }
}
  • Xue6.java,雪6,皮卡实现类

public class Xue6 extends PickupTruck {
    @Override
    public int mannedNumber() {
        return 4;
    }

    @Override
    public int carryFreightNumber() {
        return 2;
    }

    @Override
    public String name() {
        return "皮卡雪6";
    }

    @Override
    public int rental() {
        return 450;
    }

    @Override
    public String toString() {
        return name() + "  " + rental() + "元/天  载人:" + mannedNumber() + " 载货:" + carryFreightNumber();
    }
}
  • YiWeiKe.java,依维柯,载货汽车实现类

public class YiWeiKe extends CarryCar {
    @Override
    public int carryFreightNumber() {
        return 20;
    }

    @Override
    public String name() {
        return "依维柯";
    }

    @Override
    public int rental() {
        return 1000;
    }

    @Override
    public String toString() {
        return name() + "  " + rental() + "元/天  载货:" + carryFreightNumber();
    }
}
  • SongHuaJiang.java,松花江,载货汽车实现类

public class SongHuaJiang extends CarryCar {
    @Override
    public int carryFreightNumber() {
        return 4;
    }

    @Override
    public String name() {
        return "松花江";
    }

    @Override
    public int rental() {
        return 400;
    }

    @Override
    public String toString() {
        return name() + "  " + rental() + "元/天  载货:" + carryFreightNumber();
    }
}
  • JinLong.java,金龙,载人汽车实现类

public class JinLong extends PersonCar {
    @Override
    public int mannedNumber() {
        return 20;
    }

    @Override
    public String name() {
        return "金龙";
    }

    @Override
    public int rental() {
        return 800;
    }

    @Override
    public String toString() {
        return name() + "  " + rental() + "元/天  载人:" + mannedNumber();
    }
}
  • PiCar.java,皮卡,皮卡实现类

public class PiCar extends PickupTruck {
    @Override
    public int mannedNumber() {
        return 4;
    }

    @Override
    public int carryFreightNumber() {
        return 5;
    }

    @Override
    public String name() {
        return "皮卡";
    }

    @Override
    public int rental() {
        return 600;
    }

    @Override
    public String toString() {
        return name() + "  " + rental() + "元/天  载人:" + mannedNumber()+" 载货:" + carryFreightNumber();
    }
}
租车系统 RentCar

public class RentCar {

    private List<Car> cars;
    private List<Car> rentCars;

    public void rent() {
        rentCars = new ArrayList<>();
        System.out.println("您可租车的类型及其价目表:");
        showRentCarList();

    }

    private void showRentCarList() {
        cars = new ArrayList<>();
        Car audi = new Audi();
        cars.add(audi);
        Car yiweike = new YiWeiKe();
        Car piCar = new PiCar();
        Car songhuajiang = new SongHuaJiang();
        Car mazada6 = new Mazada6();
        Car xue6 = new Xue6();
        Car jinlong = new JinLong();
        cars.add(piCar);
        cars.add(yiweike);
        cars.add(songhuajiang);
        cars.add(mazada6);
        cars.add(xue6);
        cars.add(jinlong);
        if (cars != null && cars.size() > 0) {
            System.out.println("序号  汽车名称  租金  容量");
            for (int i = 0; i < cars.size(); i++) {
                System.out.println(i + 1 + "   " + cars.get(i).toString());
            }
            int carsNumber = 0;
            boolean isCardNumber = false;
            System.out.println("请输入您要租赁车辆的数量:");
            while (!isCardNumber) {
                try {
                    carsNumber = inNumber();
                    if (carsNumber <= 0) {
                        isCardNumber = false;
                        continue;
                    }
                    isCardNumber = true;
                } catch (ParseErrorException e) {
                    isCardNumber = false;
                    System.out.println("请输入您要租赁车辆的数量:");
                }
            }

            for (int j = 0; j < carsNumber; j++) {
                System.out.println("请输入第" + (j + 1) + "辆车的序号:");
                boolean isSerial = false;
                while (!isSerial) {
                    int serial = 0;
                    try {
                        serial = inNumber();
                    } catch (ParseErrorException e) {
                        isSerial = false;
                        System.out.println("请正确的输入车辆需要");
                        continue;
                    }
                    if (serial <= 0  serial > cars.size()) {
                        System.out.println("请正确的输入车辆需要");
                        isSerial = false;
                        continue;
                    }
                    rentCars.add(cars.get(serial - 1));
                    isSerial = true;
                }

            }
            statisticsCars();
        } else {
            System.out.println("暂时没有可供租赁的车辆!");
            return;
        }

    }

    public int inNumber() throws ParseErrorException {
        Scanner scanner1 = new Scanner(System.in);
        try {
            String trim = scanner1.next().trim();
            return Integer.parseInt(trim);
        } catch (Exception e) {
            throw new ParseErrorException(e.getMessage());
        }
    }

    private void statisticsCars() {
        List<Car> carryName = new ArrayList<>();
        List<Car> personName = new ArrayList<>();
        int manned = 0;
        int carryFreight = 0;
        int rently = 0;
        if (rentCars != null && rentCars.size() > 0) {
            for (int i = 0; i < rentCars.size(); i++) {
                Car car = rentCars.get(i);
                rently += car.rental();
                if (car instanceof PersonCar) {
                    manned += ((IMannedCar) car).mannedNumber();
                    personName.add(car);
                } else if (car instanceof CarryCar) {
                    carryFreight += ((ICarryFreight) car).carryFreightNumber();
                    carryName.add(car);
                } else {
                    manned += ((IMannedCar) car).mannedNumber();
                    carryFreight += ((ICarryFreight) car).carryFreightNumber();
                    carryName.add(car);
                    personName.add(car);
                }
            }
            System.out.println("您租赁了:" + rentCars.size() + "辆车,总金额:" + rently);
            if (carryFreight != 0) {
                System.out.println("总载货量:" + carryFreight);
                System.out.print("车辆类型为:");
                for (Car car : carryName) {
                    System.out.print(car.name() + "  ");
                }
                System.out.println();
            }
            if (manned != 0) {
                System.out.println("总载人量:" + manned);
                System.out.print("车辆类型为:");
                for (Car car : personName) {
                    System.out.print(car.name() + "  ");
                }
                System.out.println();
            }

        } else {
            System.out.println("租赁信息有误");
        }
    }
}
答答租车系统入口:

public class DadaRentCar {

    public static void main(String[] args) {
        System.out.println("欢迎使用答答租车系统:");
        System.out.println("您是否要租车:1-是,0-否");
        boolean isRent = true;
        while (isRent) {
            Scanner scanner = new Scanner(System.in);
            String trim = scanner.next().trim();
            if (trim.equals("1")) {
                RentCar rentCar = new RentCar();
                rentCar.rent();
            } else if (trim.equals("0")) {
                isRent = false;
                System.out.println("再见!");
            } else {
                System.out.println("请输入正确的指令");
            }
        }

    }
}
打开App,阅读手记
3人推荐
发表评论
随时随地看视频慕课网APP

热门评论

租车系统哪里的if----else 看不懂 

查看全部评论