根据所学知识,编写一个控制台版的租车系统。 
功能: 
1、 展示所有可租车辆 
2、 选择车型、租车辆 
3、 展示租车清单,包含:总金额、总载货量及其车型、总载人量及其车型


代码参考imooc中Java课程Demo编写


父类Car:

package com.RentCar;

public class Car {
    String name;
    int money;
    int people;
    int goods;
    public String getName() {
        return name;
        }
    public int getMoney() {
        return money;
        }
    public int getPeople() {
        return people;
        }
    public int getGoods() {
        return goods;
        }

}

  

Car 的子类——载人汽车CarPeople:

package com.RentCar;

public class CarPeople extends Car{
    String name;
    int money;
    int people;
    public CarPeople(String name,int money,int people){
        this.name = name;
        this.money = money;
        this.people = people;
        }
    @Override
    public String toString() {
        return this.name + "" + this.money + this.people;
        }
    public String getName() {
        return name;
        }
    public int getMoney() {
        return money;
        }
    public int getPeople() {
        return people;
        }
}

  

Car 的子类——载货汽车CarGoods:

package com.RentCar;

public class CarGoods extends Car {
    String name;
    int money;
    int goods;
    public CarGoods(String name,int money,int goods){
        this.name = name;
        this.money = money;
        this.goods = goods;
        }
    @Override
    public String toString() {
        return this.name + this.money + this.goods;
        }
    public String getName() {
        return name;
        }
    public int getMoney() {
        return money;
        }
    public int getGoods() {
        return goods;
        }
}

  

Car 的子类——载人载货CarAll:

package com.RentCar;

public class CarAll extends Car {
    String name;
    int money;
    int people;
    int goods;
    public CarAll(String name,int money,int people,int goods){
        this.name = name;
        this.money = money;
        this.people = people;
        this.goods = goods;
        }
    @Override
    public String toString() {
        return this.name + this.money + this.people + this.goods;
        }
    public String getName() {
        return name;
        }
    public int getMoney() {
        return money;
        }
    public int getPeople() {
        return people;
        }
    public int getGoods() {
        return goods;
        }
}

  

主函数:

package com.RentCar;
import java.util.Scanner; 

public class CarRentingSystem {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        while (true) {
            System.out.println("你到底要不要租虎哥的车?(租/不租)");
            Scanner scanner = new Scanner(System.in);
            String input = scanner.next();
            if(input.equals("租")){
                Car[] cars = {new CarPeople("奥迪A4",400,4),new CarPeople("马自达",400,4),new CarAll("皮卡6",450,4,20), new CarPeople("金龙",800,20), new CarGoods("松花江",400,4),new CarGoods("依维柯",1000,20)
                        };
                System.out.println("下面是您能租的车:");
                System.out.println("序号 品牌 价格 载人/货量");
                for(int i = 0;i < cars.length;i++){
                    System.out.printf("%-3d %-6s% 6d %3d个人,%d吨货",i+1,cars[i].getName(),cars[i].getMoney(),cars[i].getPeople(),cars[i].getGoods());
                    }
                System.out.println("你想要租几辆啊:");
                int number = scanner.nextInt();
                Car[] chooseCars = new Car[number];
                Car[] chooseCarsPeople = new Car[number];
                int CCPNum = 0;//选择的载人汽车的数目
                Car[] chooseCarsGoods = new Car[number];
                int CCGNum = 0;//选择的载货汽车的数目
                //定义总共的钱数,载客量,载货量
                int money = 0;
                int people = 0;
                int goods = 0;
                for(int i = 0,j = 1;i < number;i++,j++){
                    System.out.println("请输入第" + j + "辆车的序号:");
                    int carNum = scanner.nextInt() - 1;
                    try { chooseCars[i] = cars[carNum];
                    money += chooseCars[i].getMoney();
                    people += chooseCars[i].getPeople();
                    goods += chooseCars[i].getGoods();
                    if(chooseCars[i].getPeople() != 0){
                        chooseCarsPeople[CCPNum] = chooseCars[i]; CCPNum++;
                        }
                    if(chooseCars[i].getGoods() != 0){
                        chooseCarsGoods[CCGNum] = chooseCars[i]; CCGNum++;
                        }
                    }
                    catch (Exception e) {
                        System.out.println("说了几遍了,输入1~6的序号!\n"); i--; j--;
                        }
                    }
                System.out.println("你想要租几天啊:");
                int dayNum = scanner.nextInt();
                System.out.printf("你一共花了:%d元\n您总共租了%d辆车,租赁%d天\n",money*dayNum,number,dayNum);
                System.out.println("其中,载人的车有" + CCPNum + "辆");
                try { for(Car CarsPeople:chooseCarsPeople){
                    System.out.println(CarsPeople.getName());
                    }
                }
                catch (Exception e) { 

                }
                System.out.printf("总载客量:%d人\n",people*dayNum);
                System.out.println("载货的车有" + CCGNum + "辆");
                try { for(Car CarsGoods:chooseCarsGoods){
                    System.out.println(CarsGoods.getName());
                    }
                }
                catch (Exception e) { }
                System.out.printf("总载货量:%d吨\n",goods*dayNum);
                break;
                }
            else if(input.equals("不租")){
                System.out.println("不租你过来干嘛!");
                break;
                }
            else {
                System.out.println("你输错了大兄弟!\n");
                }
            }
        System.out.println("慢走不送!");
            }
    }

  

Java学习笔记(四)——好记性不如烂键盘(答答租车)的更多相关文章

  1. Java学习笔记四---打包成双击可运行的jar文件

    写笔记四前的脑回路是这样的: 前面的学习笔记二,提到3个环境变量,其中java_home好理解,就是jdk安装路径:classpath指向类文件的搜索路径:path指向可执行程序的搜索路径.这里的类文 ...

  2. Java学习笔记四:Java的八种基本数据类型

    Java的八种基本数据类型 Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. Java基本类型共有八种,基本类型可以分为三类,字符类型char,布 ...

  3. Java学习笔记四——运算符

    算术运算符 加减乘除(+.-.*./)就不说了. 求余运算符% 描述:第一个操作数除以第二个操作数,得到一个整除的结果后剩下的值就是余数 注意:求余预算的结果不一定总是整数,当操作数是浮点数时,结果可 ...

  4. Java 学习笔记 (四) Java 语句优化

    这个问题是从headfirst java看到的. 需求: 一个移动电话用的java通讯簿管理系统,要求最有效率的内存使用方法. 下面两段程序的优缺点,哪个占用内存更少. 第一段: Contact[]c ...

  5. Java学习笔记四:三目运算符与字符串连接符等

    一 .三目运算符与自增自减 GitHub代码练习地址:https://github.com/Neo-ML/JavaPractice/blob/master/OperPrac02.java 条件运算符由 ...

  6. Java学习笔记四

    1.简介.进程和线程:简单的说就是进程负责为程序开辟内存空间,线程负责具体的执行单元(执行路径). 一个进程中可以有多个执行路径,称为多线程.CPU一次只能执行一个进程,但是一个进程内部可以有多个线程 ...

  7. 面向对象三大特征之封装与static——(Java学习笔记四)

    面向对象     编程本质:以类的方式组织代码,以对象的方式组织(封装)数据 对象:具体的事物,某个类的对象(实例) 类:是对对象的抽象,用于描述同一类型的对象的一个抽象概念 对象和类的关系:特殊到一 ...

  8. java之jvm学习笔记四(安全管理器)

    java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...

  9. 零拷贝详解 Java NIO学习笔记四(零拷贝详解)

    转 https://blog.csdn.net/u013096088/article/details/79122671 Java NIO学习笔记四(零拷贝详解) 2018年01月21日 20:20:5 ...

随机推荐

  1. [leetcode]984. 不含 AAA 或 BBB 的字符串

    给定两个整数 A 和 B,返回任意字符串 S,要求满足: S 的长度为 A + B,且正好包含 A 个 'a' 字母与 B 个 'b' 字母: 子串 'aaa' 没有出现在 S 中: 子串 'bbb' ...

  2. Java类加载机制(加载、验证、准备、解析、初始化)

    如下图所示,Java的类加载机制主要分为三个部分,分别为加载.链接.初始化.其中链接又分为三个小部分--验证.准备.解析. 加载--在经过对Java代码进行编译后,JVM将Java类编译后的二进制文件 ...

  3. 1.写页面 2.css的继承属性有哪些 3.margin对布局的影响

    1. sparent 透明的 2. placeholder 提示语 写页面 1.搞清结构层次 2. 保证模块化 让它们之间不能收到影响. (1) 元素性质 (2)标准流 浮动带来的脱离文档流撑不起父级 ...

  4. Verification and validation

    Verification Verification is the process to make sure the product satisfies the conditions imposed a ...

  5. Flask 系列之 LoginManager

    说明 操作系统:Windows 10 Python 版本:3.7x 虚拟环境管理器:virtualenv 代码编辑器:VS Code 实验目标 通过使用 flask-login 进行会话管理的相关操作 ...

  6. #WEB安全基础 : HTML/CSS | 0x2初识a标签

    教你点厉害玩意,尝尝HTML的厉害! 我为了这节课写了一些东西,你来看看

  7. input file图片上传

    <div class="div-title"> <h5>图片上传</h5> <div class="photo-box" ...

  8. Java Filter防止sql注入攻击

    原理,过滤所有请求中含有非法的字符,例如:, & < select delete 等关键字,黑客可以利用这些字符进行注入攻击,原理是后台实现使用拼接字符串,案例:某个网站的登入验证的SQ ...

  9. Android为TV端助力 Service 两种启动方式的区别

    服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务.这两个方法都 可以启动Service,但是它们的使用场合有所不同.使 ...

  10. Docker Data Center系列(三)- DTR安装指南

    本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 系统要求 1.1 硬件和软件要求 成为UCP管理的 ...