租车信息:

输出结果:

代码:

1、先定义抽象类(汽车类:Moto)

  1. package cn.aura.demo01;
  2.  
  3. public abstract class Moto {
  4. //公共属性
  5. private String id;//车牌号
  6. private String brand;//品牌
  7. private int preRent;//日租金
  8. //构造方法
  9. public Moto(String id, String brand, int preRent) {
  10. this.id = id;
  11. this.brand = brand;
  12. this.preRent = preRent;
  13. }
  14. //set和get方法
  15. public String getId() {
  16. return id;
  17. }
  18. public void setId(String id) {
  19. this.id = id;
  20. }
  21. public String getBrand() {
  22. return brand;
  23. }
  24. public void setBrand(String brand) {
  25. this.brand = brand;
  26. }
  27. public int getPreRent() {
  28. return preRent;
  29. }
  30. public void setPreRent(int preRent) {
  31. this.preRent = preRent;
  32. }
  33. //计算租金方法
  34. public abstract double calRent(int days);
  35. }

2.定义轿车类继承汽车类

  1. package cn.aura.demo01;
  2. /**
  3. * 轿车类
  4. */
  5. public class Car extends Moto{
  6. //私有属性
  7. private String type;//型号
  8. //set和get方法
  9. public String getType() {
  10. return type;
  11. }
  12. public void setType(String type) {
  13. this.type = type;
  14. }
  15. //构造方法
  16. public Car(String id, String brand, String type,int preRent) {
  17. super(id, brand, preRent);
  18. this.type = type;
  19. }
  20.  
  21. //重写计算租金的算法
  22. @Override
  23. public double calRent(int days) {
  24. if(days >0 && days <= 7) {
  25. //days小于7天,不打折
  26. return getPreRent()*days;
  27. }else if (days > 7 && days <= 30) {
  28. //days大于7天,9折
  29. return getPreRent()*days*0.9;
  30. }else if (days > 30 && days <= 150) {
  31. //days大于30天,8折
  32. return getPreRent()*days*0.8;
  33. }else if (days > 150) {
  34. //days大于150天,7折
  35. return getPreRent()*days*0.7;
  36. }
  37. return 0;
  38. }
  39. }

3.定义客车类

  1. package cn.aura.demo01;
  2. /**
  3. * 客车类
  4. */
  5. public class Bus extends Moto{
  6. //私有属性
  7. private int seatCount;//座位数
  8. //set和get方法
  9. public int getSeatCount() {
  10. return seatCount;
  11. }
  12. public void setSeatCount(int seatCount) {
  13. this.seatCount = seatCount;
  14. }
  15. //构造方法
  16. public Bus(String id, String brand, int seatCount, int preRent) {
  17. super(id, brand, preRent);
  18. this.seatCount = seatCount;
  19. }
  20. //重写计算租金的算法
  21. @Override
  22. public double calRent(int days) {
  23. if(days >0 && days <3) {
  24. //days小于3天,不打折
  25. return getPreRent()*days;
  26. }else if (days >= 3 && days < 7) {
  27. //days大于3天,9折
  28. return getPreRent()*days*0.9;
  29. }else if (days >= 7 && days <30) {
  30. //days大于3天,8折
  31. return getPreRent()*days*0.8;
  32. }else if (days >= 30 && days <150) {
  33. //days大于30天,7折
  34. return getPreRent()*days*0.7;
  35. }else if (days >= 150) {
  36. //days大于150天,6折
  37. return getPreRent()*days*0.6;
  38. }
  39. return 0;
  40. }
  41. }

4.定义汽车业务类

  1. package cn.aura.demo01;
  2. /**
  3. * 定义汽车业务类
  4. */
  5. public class MotoOperation {
  6. //初始化数组
  7. public static Moto[] motos = new Moto[8];
  8. //创建8个汽车对象
  9. public void init() {
  10. motos[0] = new Car("京NY28558", "宝马", "X6", 800);
  11. motos[1] = new Car("京CNY3284", "宝马", "550i", 600);
  12. motos[2] = new Car("京NT37465", "别克", "林荫大道", 300);
  13. motos[3] = new Car("京NT96968", "别克", "GL8", 600);
  14. motos[4] = new Bus("京6566754", "金杯", 16, 800);
  15. motos[5] = new Bus("京8696997", "金龙", 16, 800);
  16. motos[6] = new Bus("京9696996", "金杯", 34, 1500);
  17. motos[7] = new Bus("京8696998", "金龙", 34, 1500);
  18. }
  19. //租赁汽车的方法
  20. public Moto motoLeaseOut(String brand,String type,int seat) {
  21. //for循环遍历数组motos
  22. for(int i=0;i<motos.length;i++){
  23. if (brand.equals(motos[i].getBrand())) {
  24. // 判断Moto类的motos[i]的类型是否和Car一样
  25. if (motos[i] instanceof Car) {
  26. // 强转成小汽车Car
  27. Car car = (Car) motos[i];
  28. if (type.equals(car.getType())) {
  29. return car;
  30. }
  31. }
  32. if(motos[i] instanceof Bus){
  33. // 强转成大客车Bus
  34. Bus bus = (Bus) motos[i];
  35. if (seat == bus.getSeatCount()) {
  36. return bus;
  37. }
  38. }
  39. }
  40.  
  41. }
  42. //如果没有就返回空
  43. return null;
  44. }
  45. }

5.定义测试类

  1. package cn.aura.demo01;
  2.  
  3. import java.util.Scanner;
  4.  
  5. /**
  6. * 汽车租赁管理类
  7. */
  8. public class TestRent {
  9. //主函数
  10. public static void main(String[] args) {
  11. MotoOperation motoOperation = new MotoOperation();
  12. // 初始化汽车
  13. motoOperation.init();
  14. //设置一个空容器
  15. Moto moto = null;
  16. // 提示信息
  17. System.out.println("***********欢迎光临腾飞汽车租赁公司***********");
  18. System.out.println("1、轿车 2、客车");
  19. System.out.println("请输入你要租赁的汽车类型:");
  20. // 获取用户输入
  21. Scanner scanner = new Scanner(System.in);
  22. int flag = scanner.nextInt();
  23. if (flag == 1) {
  24. //轿车
  25. System.out.println("请选择你要租赁的汽车品牌:1、别克 2、宝马");
  26. int brand = scanner.nextInt();
  27. if (brand == 1) {
  28. System.out.println("请选择你要租赁的汽车类型:1、林荫大道 2、GL8");
  29. int type = scanner.nextInt();
  30. if (type == 1) {
  31. moto = motoOperation.motoLeaseOut("别克", "林荫大道", 4);
  32. } else if (type == 2) {
  33. moto = motoOperation.motoLeaseOut("别克", "GL8", 4);
  34. }
  35. } else if (brand == 2) {
  36. System.out.println("请选择你要租赁的汽车类型:1、X6 2、550i");
  37. int type = scanner.nextInt();
  38. if (type == 1) {
  39. moto = motoOperation.motoLeaseOut("宝马", "X6", 4);
  40. } else if (type == 2) {
  41. moto = motoOperation.motoLeaseOut("别克", "550i", 4);
  42. }
  43. }
  44. } else if (flag == 2) {
  45. //客车
  46. System.out.println("请选择你要租赁的汽车品牌:1、金龙 2、金杯");
  47. int brand = scanner.nextInt();
  48. if (brand == 1) {
  49. System.out.println("请选择你要租赁的汽车座位数:1、16座 2、34座");
  50. int type = scanner.nextInt();
  51. if (type == 1) {
  52. moto = motoOperation.motoLeaseOut("金龙", "", 16);
  53. } else if (type == 2) {
  54. moto = motoOperation.motoLeaseOut("金龙", "", 34);
  55. }
  56. } else if (brand == 2) {
  57. System.out.println("请选择你要租赁的汽车座位数:1、16座 2、34座");
  58. int type = scanner.nextInt();
  59. if (type == 1) {
  60. moto = motoOperation.motoLeaseOut("金杯", "", 16);
  61. } else if (type == 2) {
  62. moto = motoOperation.motoLeaseOut("金杯", "", 34);
  63. }
  64. }
  65. }
  66. //客户汽车匹配完成
  67. if (moto != null) {
  68. // 获取用户租车天数
  69. System.out.println("请输入您的租车天数:");
  70. int days = scanner.nextInt();
  71. // 计算租车钱
  72. double money = moto.calRent(days);
  73. System.out.println("分配给您的汽车牌号是:" + moto.getId());
  74. System.out.println("您需要支付的租赁费用是:" + money + "元");
  75. }else {
  76. System.out.println("很抱歉先生:当前的公司内,暂无您要的汽车类型!请重新选择!");
  77. }
  78.  
  79. }
  80.  
  81. }

Java代码~~汽车租赁系统的更多相关文章

  1. Java汽车租赁系统[源码+数据库]

    系统名称 Java汽车租赁系统   (源码在文末) 系统概要 汽车租赁系统总共分为两个大的模块,分别是系统模块和业务模块.其中系统模块和业务模块底下又有其子模块. 功能模块 一.业务模块 1.客户管理 ...

  2. 一种基于Java Swing/HTML/MySQL的汽车租赁系统

    该项目是一个Java的课程作业(大二),主要运用Java.Swing.HTML.MySQL,实现基本的租车逻辑.界面可视化.信息导出.数据存储等功能.实现管理员.用户两种角色登录,并结合Java开发中 ...

  3. 深入.NET和C#的小型汽车租赁系统的框架

    前言:写这个小型系统之前呢,我们应该要猜测可能要用到哪些知识点. 那么对于这个小型系统:主要用到了如下的知识:  封装,集合(ArrayList和HashTable)和泛型和非泛型集合(泛型:List ...

  4. C#汽车租赁系统 完整版

      Truck.cs类 //卡车类 public class Truck : Vehicle1 { //重载 public int Load { get; set; } //构造函数 public T ...

  5. C#汽车租赁系统

    类图: 父类(车类,抽象类) /// <summary> /// 车辆基本信息类.搞一个抽象类玩玩 /// </summary> public abstract class V ...

  6. Springboot+vue 实现汽车租赁系统(毕业设计二)(前后端项目分离)

    文章目录 1.系统功能列表 2.管理员端界面 2.1 商家登录界面 2.2 用户信息管理界面 2.3 汽车管理界面 2.4 订单界面 2.5 汽车图形报表 2.6 优惠券新增界面 3.普通用户界面 3 ...

  7. .Net中的AOP系列之构建一个汽车租赁应用

    返回<.Net中的AOP>系列学习总目录 本篇目录 开始一个新项目 没有AOP的生活 变更的代价 使用AOP重构 本系列的源码本人已托管于Coding上:点击查看. 本系列的实验环境:VS ...

  8. 《Java从入门到放弃》JavaSE篇:综合练习——单身狗租赁系统(数组版)

    因为现在只学习了基本语法,所以在综合练习之前,先补充关于方法概念. 方法的作用:把一系列的代码放在一起,然后再取个别名.之后通过这个别名的调用,就相当于执行了这一系列的代码. 方法的语法:([]中的内 ...

  9. 《Java从入门到放弃》JavaSE入门篇:练习——单身狗租赁系统

    今天,我们要玩个大的!!! 我们把之前使用数组做的这个单身狗系统改版成数据库版本,并且使用面向对象里面的一些简单思想.如果有不知道这个系统的看官,请跳转到目录页,然后再选择单身狗系统(数组版)先围观五 ...

随机推荐

  1. js数组和集合互转

    js数组和集合互转可用于去重:   数组转集合 var arr = [55, 44, 65]; var set = new Set(arr); console.log(set.size === arr ...

  2. python_day05

    今日内容 ''' post请求登录github Request URL: https://github.com/session Request Method: POST #Referer表示上一个请求 ...

  3. github上传文件让别人下载--xdd

    一.可以下载的条件 仓库要为公开(public) 该文件不可预览或者是图片,如.rar  .gif .png .doc .pdf 等格式 二.打开文件的预览界面,如下 三.将最上面的地址复制给别人即可 ...

  4. Mysql数据库调优和性能优化的21条最佳实践

    Mysql数据库调优和性能优化的21条最佳实践 1. 简介 在Web应用程序体系架构中,数据持久层(通常是一个关系数据库)是关键的核心部分,它对系统的性能有非常重要的影响.MySQL是目前使用最多的开 ...

  5. 数位dp介绍

    不了解dp的可以先看一下dp 数位dp含义: 数位:一个数有个位,十位,百位,千位等等,数的每一位都是数位. 数位dp归为计数dp,是在数位上进行操作的dp. 数位dp的实质是一种快速枚举的方式,它满 ...

  6. 全球 43 亿 IPv4 地址已耗尽!IPv6,刻不容缓

    大家都知道目前网络协议使用的主要是 IPv4,全称为 Internet Protocol version 4,作用是为每一个网络和每一台主机分配一个 IP,IP 地址是一个 32 位的二进制数,算下来 ...

  7. Linux如何切换图形界面和命令行界面

    在命令行,输入 init 3 命令,并按回车键执行,切换到命令行界面 切换到命令行界面后,在界面上只显示一个闪烁的光标,按下 Ctrl+Alt+F6(非虚拟机)或者 Alt+F6(虚拟机),显示用户登 ...

  8. Stream系列(十二) PartitioningBy方法使用

    分割列表 视频讲解: https://www.bilibili.com/video/av78106120/ EmployeeTestCase.java package com.example.demo ...

  9. 以传参的方式执行shell(模板)

    以传参的方式执行shell(模板) #!bin/bash # USE: Template # author : xiaowei # -- # state : -name 选项必选,,, -v -m 选 ...

  10. 【RN - 基础】之Image使用简介

    Image组件是用来加载图片的.React Native项目加载图片往往有三种方式: 从React Native项目中加载图片: 从APP项目中加载图片: 从网络中加载图片. Image组件加载图片 ...