首页 > 编程语言 >Java--阶段练习(汽车租赁)

Java--阶段练习(汽车租赁)

时间:2024-07-07 17:30:15浏览次数:19  
标签:breed Java String -- price 练习 day int public

阶段练习

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

面向对象的设计过程

1.分析需求

2.找名词(类,属性)

父类:汽车:品牌,车牌,日租金

子类:

轿车:型号

客车:座位数

汽车业务类

汽车租赁管理类

3.动词(方法)

汽车类(计算租金)

汽车业务类(初始化车信息,提供租赁服务)

汽车租赁管理类(入口和系统界面)

4.优化设计

父子类的关系:汽车类—>轿车,客车(子类)

汽车类(抽象类).(计算租金):抽象方法

5.梳理运行过程

汽车类业务(MotorOpration)

初始化车---->构造车(轿车,客车)

–>构造的这些车用对象数组存储(Car[])

(Car car1=new Motoncar(…); )

(Car car2=new Bus(…) ; )

租车

根据用户条件去查询相应的车辆,并返回相应的车辆,用户的租车条件:方法参数

循环遍历车辆数组Car

拿到的每一辆车(MotorCar,Bus)

将车辆转换为自己实际的子类型

instanceof

根据用户不同的条件进行比较

MotorCar:brand,moder

Bus:brand,setnumber

发下符合用户条件的车辆进行返回

测试和调试

定义车子父类和抽象方法租金的计算

package carRental;

public abstract class Car {
   private String breed;
    private String numberplace;
    private int rent;
    public Car(){

    }
    public Car(String breed,String numberplace,int rent){
        this.breed=breed;
        this.numberplace=numberplace;
        this.rent=rent;
    }
    public void setBreed(String breed) {
        this.breed = breed;
    }

    public String getBreed() {
        return breed;
    }

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

    public int getRent() {
        return rent;
    }

    public void setNumberplace(String numberplace) {
        this.numberplace = numberplace;
    }

    public String getNumberplace() {
        return numberplace;
    }
    public abstract float countrent (int day);
}

定义子类轿车

package carRental;

public class Motorcar extends Car {
    private String moder;

    public void setModer(String moder) {
        this.moder = moder;
    }

    public String getModer() {
        return moder;
    }

    public Motorcar(){

    }
    public Motorcar(String breed,String numberplace,int rent,String moder){
        super(breed,numberplace,rent);
        this.moder=moder;
    }

    public float countrent(int day) {
        float price = this.getRent();
        if (day > 7 && day <= 30) {
            price = price * 0.9f;
        }
        else if (day>30&&day<=150){
            price=price*0.8f;

        }
        else if (day>150){
            price=price*0.7f;
        }
        else price=day*price;
        return price;
    }
}

定义子类客车

package carRental;

public class Bus extends Car {
    private int setnumber;
    public Bus(){

    }

    public void setSetnumber(int setnumber) {
        this.setnumber = setnumber;
    }

    public int getSetnumber() {
        return setnumber;
    }

    public Bus(String breed, String numberplace, int rent, int setnumber){
        super(breed,numberplace,rent);
        this.setnumber=setnumber;
    }
    public  float countrent (int day){
        float price = this.getRent();
        if (day >= 3 && day < 7) {
            price = price * 0.9f;
        }
        else if (day>=7&&day<=30){
            price=price*0.8f;

        }
        else if (day>30&&day<150){
            price=price*0.7f;
        }
        else if (day>=150){
            price=price*0.6f;
        }
        else price=day*price;
        return price;
    }
}

定义汽车业务类

package carRental;

public class Carbusiness {
Car car[]=new Car[8];
public void init(){
    car[0]=new Motorcar("宝马","京NY28588",800,"x6");
    car[1]=new Motorcar("宝马","京CNY3284",600,"550i");
    car[2]=new Motorcar("别克","京NT37465",300,"林荫大道");
    car[3]=new Motorcar("别克","京NT96968",600,"GL8");

    car[4]=new Bus("金杯","京6566754",800,16);
    car[5]=new Bus("金龙","京8696997",800,16);
    car[6]=new Bus("金杯","京9696996",1500,34);
    car[7]=new Bus("金龙","京8696998",1500,34);

}
public Car rentservice(String breed,String moder,int setnumber){
    Car car1=null;
    for (Car car2 :car){
        if (car2 instanceof Motorcar){
            Motorcar motorcar=(Motorcar)car2;
            if (motorcar.getBreed().equals(breed)&&motorcar.getModer().equals(moder)){
                car1=car2;
                break;
            }

        }
        else if (car2 instanceof Bus){
            Bus bus=(Bus)car2;
            if (bus.getBreed().equals(breed)&&bus.getSetnumber()==setnumber){
                car1= bus;
                break;
            }
        }

    }
                     return car1;
    }

}

控制台界面

package carRental;

import java.util.Scanner;

public class Manage {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("********欢迎光临XX汽车租赁公司********");
        System.out.println("请输入想租车的类型:1.小轿车 2.客车");
int a=scanner.nextInt();
String moder="";
int setnumber=0;
String breed="";
switch (a){
    case 1:

        System.out.println("请输入汽车品牌1.宝马, 2.别克");
        breed=(scanner.nextInt()==1)?"宝马":"别克";
        if (breed.equals("宝马")){
            System.out.println("请输入汽车型号1.x6  2.550i");
            moder=(scanner.nextInt()==1)?"x6":"550i";
        }
        else {
            System.out.println("请输入汽车型号1.林荫大道  2.GL8");
            moder=(scanner.nextInt()==1)?"林荫大道":"GL8";
        }
break;
    case 2:
        System.out.println("请输入客车品牌1.金杯, 2.金龙");
        breed=(scanner.nextInt()==1)?"金杯":"金龙";

            System.out.println("请输入客车座位1.16  2.34");
            setnumber=(scanner.nextInt()==1)?16:24;

            break;

}
System.out.println("请输入想租赁的天数:");
int day=scanner.nextInt();
Carbusiness carbusiness=new Carbusiness();
carbusiness.init();
Car car2= carbusiness.rentservice(breed,moder,setnumber);
if (car2 instanceof Motorcar){
    Motorcar motorcar=(Motorcar) car2;
   float price= motorcar.countrent(day);
    System.out.println("给您分配的车辆是"+car2.getBreed()+((Motorcar) car2).getModer()+"车牌是"+car2.getNumberplace()+"价格是"+price);
}
else if (car2 instanceof Bus){
    Bus bus=(Bus)car2;
    float price=bus.countrent(day);
    System.out.println("给您分配的车辆是"+car2.getBreed()+((Bus) car2).getSetnumber()+"车牌是"+car2.getNumberplace()+"价格是"+price);
}

    }
}

遇到的问题

一,

在 Java 中,0.9F 是一个浮点数(Floating Point Number)的文本表示,其中 Ff 表示该数字是一个 float 类型的常量。在 Java 中,浮点数有两种基本类型:

  1. float:这是单精度浮点数,它占用 32 位内存。

  2. double:这是双精度浮点数,它占用 64 位内存。

    默认情况下,当你在 Java 中写一个浮点数常量(如 0.9)时,编译器会假设它是 double 类型的。如果你想明确地指定一个 float 类型的常量,你需要在数字后面加上 Ff。因此,0.9F 是一个 float 类型的常量,它的值是 0.9。

二,

在 Java 中,增强型for循环(Enhanced for Loop)也被称为“for-each”循环,它是 Java 5 引入的一种新的循环结构,用于简化数组和集合的遍历。增强型for循环的语法如下:

java

复制

for (声明语句 : 表达式) {
    // 循环体
}

这里的“声明语句”是一个变量声明,它的类型必须与“表达式”所产生的一系列元素类型相匹配。表达式是产生一系列元素的表达式,比如数组或实现了 Iterable 接口的集合。

增强型for循环的例子:

int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
    System.out.println(number);
}

在这个例子中,增强型for循环遍历了整数数组 numbers,在每次迭代中,变量 number 依次被赋值为数组中的下一个元素,直到数组遍历完成。

增强型for循环也可以用于集合:

三,

只有调用方法时,方法内的数据才会载入

四,三目运算符

setnumber=(scanner.nextInt()==1)?16:24;

。表达式是产生一系列元素的表达式,比如数组或实现了 Iterable 接口的集合。

增强型for循环的例子:

int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
    System.out.println(number);
}

在这个例子中,增强型for循环遍历了整数数组 numbers,在每次迭代中,变量 number 依次被赋值为数组中的下一个元素,直到数组遍历完成。

增强型for循环也可以用于集合:

三,

只有调用方法时,方法内的数据才会载入

四,三目运算符

setnumber=(scanner.nextInt()==1)?16:24;

当输入为1时setnumber=16,不是一时setnumber=24;

标签:breed,Java,String,--,price,练习,day,int,public
From: https://blog.csdn.net/whc15059539669/article/details/140249013

相关文章

  • 2024暑假第一周总结
    JAVA开发环境搭建和HelloWorld编译1、JDK安装(java开发环境安装)更改环境变量Path环境变量Path环境变量用于记住程序路径,方面在命令行窗口的任意目录启动程序老版本的jdk需要进行配置环境变量,将jdk和bin包路径复制,新建path路径Java_home环境变量告诉操作系统JDK安装在了哪个......
  • C9联盟是什么?
    九校联盟(C9League),简称C9联盟,是中国首个顶尖大学间的高校联盟,于2009年10月正式启动。 其成员都是国家首批“985工程”重点建设的一流大学,包括北京大学、清华大学、哈尔滨工业大学、复旦大学、上海交通大学、南京大学、浙江大学、中国科学技术大学、西安交通大学9所高校。该联......
  • 研0学习笔记——大模型微调之LoRA技术
    概念:LoRA(LowRankAdaptaionofLLMs),即LLMs的低秩适应,可以做到只使用极少量参数的训练,达到微调整个模型的效果,解决了先前AdapterTuning与PrefixTuning的缺点。应用:1、在绘画应用stablediffusion中,LoRA以插件的形式嵌入模型中,使得用户可以下载相对于原模型(GB量级)更小的Lo......
  • SpringBoot-校园疫情防控系统-93033(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP
    springboot校园疫情防控系统摘 要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对校园疫情防控等问题,对校园疫情防控进行研究分析,然后开发设计出......
  • Java虚拟机(JVM):深入理解与性能调优
    引言Java虚拟机(JVM)是Java平台的核心组件,它使得Java程序具有跨平台运行的能力。JVM不仅负责执行Java字节码,还管理着内存分配、垃圾回收等关键任务。深入理解JVM的工作原理对于进行有效的性能调优至关重要。本文将详细介绍JVM的工作原理,包括内存模型、垃圾回收机制,并分享一些实......
  • Spring框架:核心概念与Spring Boot微服务开发指南
    引言        Spring框架是一个开源的Java平台,它提供了全面的基础设施支持,用于开发Java应用程序。Spring的核心概念包括依赖注入(DI)、面向切面编程(AOP)和事务管理。随着微服务架构的兴起,SpringBoot作为Spring框架的扩展,提供了一种快速开发独立微服务的方式。本文将详细......
  • Python——习题练习 part1
     本人于下学期该学习python,在听黑马程序员网课后,在此总结记录我的在课程学习后的习题练习。没有详细的解题过程,仅有代码和注释,如有错误希望大家多多指出。目录一,字符串格式化 二,条件判断01if语句 02ifelse语句 03ifelif组合 04判断语句综合案例 三,循环01......
  • 基于Django+微信小程序的旅游资源信息管理系统(免费领源码+数据库)可做计算机毕业设计JA
    django广西-东盟旅游资源信息管理系统小程序摘 要在社会快速发展和人们生活水平提高的影响下,旅游产业蓬勃发展,旅游形式也变得多样化,使旅游资源信息的管理变得比过去更加困难。依照这一现实为基础,设计一个快捷而又方便的基于小程序的旅游资源信息管理系统是一项十分重要并且......
  • 【QT】显示类控件
    显示类控件显示类控件1.label-标签2.LCDNumber-显示数字的控件3.ProgressBar-进度条4.CalendarWidget-日历5.LineEdit-输入框6.TextEdit-多行输入框7.ComboBox-下拉框8.SpinBox-微调框9.DateEdit&TimeEdit-日期微调框10.Dial-旋......
  • Python——习题练习 part2 数据容器
    本篇文章记录python数据容器章节的练习题。目录五,数据容器01列表1.列表的常用功能2.列表循环遍历02元组基本操作03字符串的分割04序列的切片05集合信息去重06字典五,数据容器01列表1.列表的常用功能题目如下:答案如下:#列表List的常用操作#定义列表......