Java 初学之--嗒嗒租车系统

来源:互联网 发布:jira ubuntu 破解版 编辑:程序博客网 时间:2024/04/30 14:59

最近工作不好找啊,没事继续回去看看Java的基础视频。在学完Java入门第二季之后有一个小作业需要自己动手完成。项目名称为嗒嗒租车系统。下面是具体的需求:
此系统的功能是基础控制台来完成操作
功能:
1、展示所有可租车辆。
2、由用户自己选择需要的车型
3、展示租车清单,包含:总金额、总载货量及其车型以及总载人量
4、要求不同车型具有不同的功能,比如客车只能载人,货车只能载货,皮卡既能载货又能载人。
思路就是
1、创建两个接口载货跟载人,一个抽象父类Car;

2、实现-卡车类 继承 父类Car 实现 载货接口;

实现-客车类 继承 父类Car 实现 载客接口;

实现-皮卡类 继承 父类Car 实现载客和货接口;

3、租车系统类:一维数组 实例化 卡车对象、客车对象 和 皮卡对象;

4、客户选车、分类汇总车辆后,输出租车明细与总价。
在自己整理了思路和参考了其他幕友的代码之后实现效果如下:
这里写图片描述
下面是目录结构,包含2个接口,5个类文件
这里写图片描述
下面是具体的代码:
Car.java:

package com.tony;/* * 所有Car的父类 */public class Car {    protected String carName;//定义汽车的名字    protected int carId;//定义汽车的序号    protected double carPrice;//定义汽车的价格     public String getCarName() {        return carName;    }    public void setCarName(String carName) {        this.carName = carName;    }    public int getCarId() {        return carId;    }    public void setCarId(int carId) {        this.carId = carId;    }    public double getCarPrice() {        return carPrice;    }    public void setCarPrice(double carPrice) {        this.carPrice = carPrice;    }    public String toString() {        return carName + "日租金" + carPrice + "元";    }}

PassageCar.java:

package com.tony;/* * 轿车类 */public class PassageCar extends Car implements IPassengerCapacity{    public PassageCar() {        carName = "英菲尼迪";        carPrice = 1000;    }    @Override    public int passengerCapacity() {        // TODO Auto-generated method stub        int passengerCapacity = 4;        return passengerCapacity;    }    @Override    public String toString() {        return super.toString() + "     载客量:" + passengerCapacity() + "人。";    }}

Pickup.java:
package com.tony;
/*
* 皮卡类
*/
public class Pickup extends Car implements IPassengerCapacity, ICargoCapacity{

public  Pickup() {    carName = "皮卡雪";    carPrice = 500.0;}@Overridepublic double cargoCapacity() {    // TODO Auto-generated method stub    int cargoCapacity = 5;    return cargoCapacity;}@Overridepublic int passengerCapacity() {    // TODO Auto-generated method stub    int passengerCapacity = 2;    return passengerCapacity;}@Overridepublic String toString() {    return super.toString() + "     载货量:" + cargoCapacity() + "吨。" + "      载客量:" + passengerCapacity() + "人。";}

}
Truck.java:

package com.tony;/* * 货车类 */public class Truck extends Car implements ICargoCapacity{    public  Truck() {        carName = "松花江";        carPrice = 1500;    }    @Override    public double cargoCapacity() {        // TODO Auto-generated method stub        int cargoCapacity = 25;        return cargoCapacity;    }    @Override    public String toString() {        return super.toString() + "     载货量:" + cargoCapacity() + "吨。";     }}

IPassengerCapacity.java:

package com.tony;/* * 载客量接口 */public interface IPassengerCapacity {    public int passengerCapacity();}

ICargoCapacity.java:

package com.tony;/* * 载货量接口 */public interface ICargoCapacity {    public double cargoCapacity();}

主类Initial.java:

package com.tony;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Scanner;/* * 嗒嗒租车主类 */public class Initial {    public static void main(String[] args) {        // TODO Auto-generated method stub        systemInitial();    }    //系统初始化    private static void systemInitial() {        // TODO Auto-generated method stub        System.out.println("欢迎使用嗒嗒租车系统!" + "\n" + "租车请输入数字1,退出请按任意键。");        //获取用户输入内容        Scanner scanner = new Scanner(System.in);        //对用户输入的值进行判断并执行相应逻辑        try {            int input = scanner.nextInt();            if (input == 1) {                int count = 1;                System.out.println("        ******可选车型一览表******");                Car [] cars = new Car[] {new PassageCar(), new Pickup(), new Truck()};                for(Car carList : cars) {                    System.out.println(count + "." + carList.toString());                    count++;                }                selectCar(cars);//记录所选车辆            }        } catch (Exception e) {            // TODO: handle exception            System.out.println("退出系统!");            scanner.close();            System.exit(0);        }    }    //记录所选车辆    public static void selectCar(Car[] cars) {        // TODO Auto-generated method stub        System.out.println("***请输入车辆序号确认租车,输入数字'0'表示结束选车,输入'111'表示退出系统!***");        Scanner scanner = new Scanner(System.in);        List<Integer> list = new ArrayList<Integer>();        for (int i = 0; i < cars.length; i++) {            try {                int carNum = scanner.nextInt();                if (carNum != 0) {                    if (carNum <= cars.length) {                        list.add(carNum);//如果用输入的数字<=车辆列表的长度,就将用户输入的数字添加到list中                    } else if (carNum == 111) {                        System.out.println("取消租车,退出系统");                        System.exit(0);                    }                } else {                    int count = 0;                    int passengerCapacity = 0;//载客量                    double cargoCapacity = 0;//载货量                    int total = 0;//总价                    System.out.println("选车完毕,你租用的车辆有以下几款:***共计" + list.size() + "辆。***");                    Iterator<Integer> it = list.iterator();//迭代器                    while(it.hasNext()) {//类似游标                        int num = it.next();                        count++;                        System.out.println(count + "." + cars[num - 1].toString());                        passengerCapacity += getPassengerCapacity(cars[num - 1]);                        cargoCapacity += getICargoCapacity(cars[num - 1]);                        total += cars[num - 1].getCarPrice();                        }                        System.out.println("所选车辆载客总量为:" + passengerCapacity + "人。");                        System.out.println("所选车辆的载货总量为:" + cargoCapacity + "吨。");                        System.out.println("所选车辆的租金为:" + total + "元。");                        scanner.close();                        break;                    }                } catch (Exception e) {                    System.out.println("输入有误,系统关闭!");                    scanner.close();                     System.exit(0);                }            }        }    //累计载货量    public static double getICargoCapacity(Object object) {        if (object instanceof ICargoCapacity) {            double cargoCapacity = 0;            cargoCapacity += ((ICargoCapacity) object).cargoCapacity();            return cargoCapacity;        } else {            return 0;        }    }    //累计载客量    public static int getPassengerCapacity(Object object) {        if (object instanceof IPassengerCapacity) {            int passengerCapacity = 0;            passengerCapacity += ((IPassengerCapacity) object).passengerCapacity();            return passengerCapacity;        } else {            return 0;        }    }}
1 0
原创粉丝点击