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

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

一、项目背景


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


功能:

展示所有可租车辆

选择车型,租车量

展示租车清单,包含:总金额,总载货量以及车型,总载客量以及车型


二、项目代码


父类:Car类

//父类:车类
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;
    }
}


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

//客车类
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();
    }
}


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

//载货车
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();
    }
}

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

//载客载货车
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();
    }
}

测试类:

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;
        }
    }
}

运行结果展示:

*****欢迎使用答答租车系统*****
您是否要租车: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类进行对控制台的输入。


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


相关文章
|
4天前
|
Java
排课系统【JSP+Servlet+JavaBean】(Java课设)
排课系统【JSP+Servlet+JavaBean】(Java课设)
18 5
|
1天前
|
前端开发 JavaScript Java
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)五(前端页面
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)五(前端页面
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)五(前端页面
|
2天前
|
数据采集 监控 安全
java数字工厂MES系统全套源码Java+idea+springboot专业为企业提供智能制造MES解决方案
"MES" 指的是制造执行系统(Manufacturing Execution System)。MES在制造业中扮演着至关重要的角色,它是位于企业资源计划(ERP)系统和车间控制系统之间的系统,用于实时收集、管理、分析和报告与制造过程相关的数据。
9 0
|
2天前
|
移动开发 监控 供应链
JAVA智慧工厂制造生产管理MES系统,全套源码,多端展示(app、小程序、H5、台后管理端)
一开始接触MES系统,很多人会和博主一样,对MES细节的应用不了解,这样很正常,因为MES系统相对于其他系统来讲应用比较多!
14 1
JAVA智慧工厂制造生产管理MES系统,全套源码,多端展示(app、小程序、H5、台后管理端)
|
3天前
|
存储 运维 Java
java云his系统源码一站式诊所SaaS系统Java版云HIS系统 八大特点
HIS系统采用面向技术架构的分析与设计方法,应用多层次应用体系架构设计,运用基于构件技术的系统搭建模式与基于组件模式的系统内核结构。通过建立统一接口标准,实现数据交换和集成共享,通过统一身份认证和授权控制,实现业务集成、界面集成。
28 1
|
4天前
|
Java 关系型数据库 MySQL
【Java Spring开源项目】新蜂(NeeBee)商城项目运行、分析、总结
【Java Spring开源项目】新蜂(NeeBee)商城项目运行、分析、总结
15 4
|
4天前
|
监控 前端开发 Java
Java公立医院绩效考核管理系统 医院绩效考核系统的优势有哪些? 
医院绩效管理系统解决方案紧扣新医改形势下医院绩效管理的要求,以“工作量为基础的考核方案”为核心思想,结合患者满意度、服务质量、技术难度、工作效率、医德医风等管理发展目标的考核体系,形成医院的内部绩效考核与分配机制,通过信息化手段为绩效考评管理人员实施医院绩效考评工作提供了有效工具,扩展了信息管理范围,增加了信息分析的广度与深度。这不仅使绩效评价工作更加科学化、规范化和自动化,而且从根本上改变了绩效评估工作方式,实现了绩效评价数据网络化采集,评价结果透明化管理,奖金分配数据自动化生成,极大地提高了绩效评估的全面性、准确性、时效性、公正性。从而推进医院绩效管理的专业化、规范化和精细化管理,充分发挥
14 0
|
4天前
|
存储 Java Maven
Maven 构建 Java 项目
使用 Maven 的 `maven-archetype-quickstart` 插件在 `C:\MVN` 创建 Java 应用项目 `consumerBanking`,命令行参数包括 `-DgroupId`, `-DartifactId` 和 `-DarchetypeArtifactId`。项目包含 src/main/java 和 src/test/java 目录,分别存放 Java 代码和测试代码,以及 src/main/resources 用于存储资源文件。默认生成的 `App.java` 和 `AppTest.java` 分别为应用主类和测试类。
|
4天前
|
数据采集 前端开发 Java
Java医院绩效考核系统源码maven+Visual Studio Code一体化人力资源saas平台系统源码
医院绩效解决方案包括医院绩效管理(BSC)、综合奖金核算(RBRVS),涵盖从绩效方案的咨询与定制、数据采集、绩效考核及反馈、绩效奖金核算到科到组、分配到员工个人全流程绩效管理;将医院、科室、医护人员利益绑定;全面激活人才活力;兼顾质量和效益、长期与短期利益;助力医院降本增效,持续改善、优化收入、成本结构。
18 0
|
4天前
|
移动开发 前端开发 Java
STS里的java 工程项目名称修改和目录设置成源代码
STS里的java 工程项目名称修改和目录设置成源代码