前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java小项目之“答答租车系统”。

Java小项目之“答答租车系统”。

作者头像
百思不得小赵
发布2022-12-01 14:01:36
3890
发布2022-12-01 14:01:36
举报
文章被收录于专栏:小赵Java总结

一、项目背景

编写一个控制台版的“答答”租车系统

功能:
  1. 展示所有可租车辆
  2. 选择车型,租车量
  3. 展示租车清单,包含:总金额,总载货量以及车型,总载客量以及车型

二、项目代码

父类:Car类

代码语言:javascript
复制
//父类:车类
public class Car {
    //序号
    private String id;
    //汽车名称
    private String name;
    //租金
    private int rent;

    public Car(String id, String name, int rent) {
        this.id = id;
        this.name = name;
        this.rent = rent;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getRent() {
        return rent;
    }

    public void setRent(int rent) {
        this.rent = rent;
    }
}

子类:客车类(只能载客)

代码语言:javascript
复制
//客车类
public class PassengerCar extends Car{
    //载客量
    private int busload;


    public PassengerCar(String id, String name, int rent, int busload) {
        super(id, name, rent);
        this.busload=busload;
    }

    public int getBusload() {
        return busload;
    }

    public void setBusload(int busload) {
        this.busload = busload;
    }

    @Override
    public String toString() {
        return getId()+"\t"+getName()+"\t"+getRent()+"元/天\t载人:"+getBusload();
    }
}

子类:货车类(只能载货)

代码语言:javascript
复制
//载货车
public class Truck extends Car{
    //载货量
    private int loadage;

    public Truck(String id, String name, int rent,int loadage) {
        super(id, name, rent);
        this.loadage=loadage;
    }
    

    public int getLoadage() {
        return loadage;
    }

    public void setLoadage(int loadage) {
        this.loadage = loadage;
    }
    @Override
    public String toString() {
        return getId()+"\t"+getName()+"\t"+getRent()+"元/天\t载货:"+getLoadage();
    }
}

子类:皮卡类(既可载货,也可载客)

代码语言:javascript
复制
//载客载货车
public class PickUp extends Car{
    //载客量
    private int busload;
    //载货量
    private int loadage;

    public PickUp(String id, String name, int rent,int busload,int loadage) {
        super(id, name, rent);
        this.busload=busload;
        this.loadage=loadage;
    }

    public int getBusload() {
        return busload;
    }

    public void setBusload(int busload) {
        this.busload = busload;
    }

    public int getLoadage() {
        return loadage;
    }

    public void setLoadage(int loadage) {
        this.loadage = loadage;
    }
    @Override
    public String toString() {
        return getId()+"\t"+getName()+"\t"+getRent()+"元/天\t载人:"+getBusload()+"\t载货:"+getLoadage();
    }
}

测试类:

代码语言:javascript
复制
import java.util.Scanner;

public class DaDaCarRentalSystem {

    static Scanner sc = new Scanner(System.in);
    //租金
    static int money = 0;
    //总载客量
    static int passTotal = 0;
    //总载货量
    static int goodTotal = 0;
    //客车名
    static String passName = "";
    //货车名
    static String goodName = "";

    public static void main(String[] args) {


        Car[] cars = {
                new PassengerCar("1", "奥迪A4", 500, 4),
                new PassengerCar("2", "马自达6", 400, 4),
                new PickUp("3", "皮卡雪6", 450, 4, 2),
                new PassengerCar("4", "金龙 ", 800, 20),
                new Truck("5", "松花江", 400, 4),
                new Truck("6", "依维柯", 1000, 20)
        };

        System.out.println("*****欢迎使用答答租车系统*****");
        System.out.println("您是否要租车:1是 0否");
        int num = sc.nextInt();
        if (num == 1) {
            System.out.println("您可租车的类型及其价目表:");
            System.out.println("序号\t汽车名称\t租金\t容量");
            for (int i = 0; i < cars.length; i++) {
                System.out.println(cars[i].toString());
            }

            System.out.println("请输入您要租车的数量:");
            int rentNum = sc.nextInt();
            int[] carsRent = new int[rentNum];
            for (int i = 0; i < rentNum; i++) {
                System.out.println("请输入第" + (i + 1) + "辆车的的序号:");
                int sNum = sc.nextInt();
                carsRent[i] = sNum;
            }
            System.out.println("请输入您要租车的天数:");
            int day = sc.nextInt();
            for (int i = 0; i < rentNum; i++) {
                money += cars[carsRent[i] - 1].getRent();
                if (cars[carsRent[i] - 1] instanceof PassengerCar) {
                    passTotal += ((PassengerCar) cars[carsRent[i] - 1]).getBusload();
                    passName += cars[carsRent[i] - 1].getName() + "\t";
                }
                if (cars[carsRent[i] - 1] instanceof Truck) {
                    goodTotal += ((Truck) cars[carsRent[i] - 1]).getLoadage();
                    goodName += cars[carsRent[i] - 1].getName() + "\t";
                }
                if (cars[carsRent[i] - 1] instanceof PickUp) {
                    passTotal += ((PickUp) cars[carsRent[i] - 1]).getBusload();
                    goodTotal += ((PickUp) cars[carsRent[i] - 1]).getLoadage();
                    passName += cars[carsRent[i] - 1].getName() + "\t";
                    goodName += cars[carsRent[i] - 1].getName() + "\t";
                }
            }
            System.out.println("******消费清单******");
            System.out.println("可载客车型:");
            System.out.println(passName + "\t" + "客车载客量:" + passTotal);
            System.out.println("可在载货车型:");
            System.out.println(goodName + "\t" + "货车载货量:" + goodTotal);
            System.out.println("您本次消费总价钱:" + money * day);

        } else if (num == 0) {
            System.out.println("感谢您进入本系统,欢迎下次使用!!再见!!!");
            return;
        }
    }
}

运行结果展示:

代码语言:javascript
复制
*****欢迎使用答答租车系统*****
您是否要租车: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辆车的的序号:
2
请输入第3辆车的的序号:
3
请输入您要租车的天数:
2
******消费清单******
可载客车型:
奥迪A4	马自达6	皮卡雪6		客车载客量:12
可在载货车型:
皮卡雪6		货车载货量:2
您本次消费总价钱:2700

Process finished with exit code 0

三、总结

本次项目主要涉及以下知识: 1.面向对象思想,包括:封装、继承、多态 2.数组的相关知识,包括:定义数组,数组遍历 3.运用Scanner类进行对控制台的输入。

在写这次代码的过程中,整体书写还算思路清晰,就是在计算清单数据的时候卡了很久,一个思路没写完就会冒出其他思路,导致写代码效率有点低,总的来说:这个程序还有很多缺点,集成度有些高,规范上还有很多不足,有待提高,继续加油。

今天的分享就到这里啦!!~感谢大家的观看,希望对大家有帮助的话麻烦给个丝滑三连击。(点赞+转发+关注) 一起加油,一起努力,一起秃见成效!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、项目背景
    • 编写一个控制台版的“答答”租车系统
    • 二、项目代码
      • 父类:Car类
        • 子类:客车类(只能载客)
          • 子类:货车类(只能载货)
            • 子类:皮卡类(既可载货,也可载客)
              • 测试类:
                • 运行结果展示:
                • 三、总结
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档