Java代码~~汽车租赁系统
租车信息:

输出结果:


代码:
1、先定义抽象类(汽车类:Moto)
package cn.aura.demo01;
public abstract class Moto {
//公共属性
private String id;//车牌号
private String brand;//品牌
private int preRent;//日租金
//构造方法
public Moto(String id, String brand, int preRent) {
this.id = id;
this.brand = brand;
this.preRent = preRent;
}
//set和get方法
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public int getPreRent() {
return preRent;
}
public void setPreRent(int preRent) {
this.preRent = preRent;
}
//计算租金方法
public abstract double calRent(int days);
}
2.定义轿车类继承汽车类
package cn.aura.demo01;
/**
* 轿车类
*/
public class Car extends Moto{
//私有属性
private String type;//型号
//set和get方法
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
//构造方法
public Car(String id, String brand, String type,int preRent) {
super(id, brand, preRent);
this.type = type;
} //重写计算租金的算法
@Override
public double calRent(int days) {
if(days >0 && days <= 7) {
//days小于7天,不打折
return getPreRent()*days;
}else if (days > 7 && days <= 30) {
//days大于7天,9折
return getPreRent()*days*0.9;
}else if (days > 30 && days <= 150) {
//days大于30天,8折
return getPreRent()*days*0.8;
}else if (days > 150) {
//days大于150天,7折
return getPreRent()*days*0.7;
}
return 0;
}
}
3.定义客车类
package cn.aura.demo01;
/**
* 客车类
*/
public class Bus extends Moto{
//私有属性
private int seatCount;//座位数
//set和get方法
public int getSeatCount() {
return seatCount;
}
public void setSeatCount(int seatCount) {
this.seatCount = seatCount;
}
//构造方法
public Bus(String id, String brand, int seatCount, int preRent) {
super(id, brand, preRent);
this.seatCount = seatCount;
}
//重写计算租金的算法
@Override
public double calRent(int days) {
if(days >0 && days <3) {
//days小于3天,不打折
return getPreRent()*days;
}else if (days >= 3 && days < 7) {
//days大于3天,9折
return getPreRent()*days*0.9;
}else if (days >= 7 && days <30) {
//days大于3天,8折
return getPreRent()*days*0.8;
}else if (days >= 30 && days <150) {
//days大于30天,7折
return getPreRent()*days*0.7;
}else if (days >= 150) {
//days大于150天,6折
return getPreRent()*days*0.6;
}
return 0;
}
}
4.定义汽车业务类
package cn.aura.demo01;
/**
* 定义汽车业务类
*/
public class MotoOperation {
//初始化数组
public static Moto[] motos = new Moto[8];
//创建8个汽车对象
public void init() {
motos[0] = new Car("京NY28558", "宝马", "X6", 800);
motos[1] = new Car("京CNY3284", "宝马", "550i", 600);
motos[2] = new Car("京NT37465", "别克", "林荫大道", 300);
motos[3] = new Car("京NT96968", "别克", "GL8", 600);
motos[4] = new Bus("京6566754", "金杯", 16, 800);
motos[5] = new Bus("京8696997", "金龙", 16, 800);
motos[6] = new Bus("京9696996", "金杯", 34, 1500);
motos[7] = new Bus("京8696998", "金龙", 34, 1500);
}
//租赁汽车的方法
public Moto motoLeaseOut(String brand,String type,int seat) {
//for循环遍历数组motos
for(int i=0;i<motos.length;i++){
if (brand.equals(motos[i].getBrand())) {
// 判断Moto类的motos[i]的类型是否和Car一样
if (motos[i] instanceof Car) {
// 强转成小汽车Car
Car car = (Car) motos[i];
if (type.equals(car.getType())) {
return car;
}
}
if(motos[i] instanceof Bus){
// 强转成大客车Bus
Bus bus = (Bus) motos[i];
if (seat == bus.getSeatCount()) {
return bus;
}
}
} }
//如果没有就返回空
return null;
}
}
5.定义测试类
package cn.aura.demo01; import java.util.Scanner; /**
* 汽车租赁管理类
*/
public class TestRent {
//主函数
public static void main(String[] args) {
MotoOperation motoOperation = new MotoOperation();
// 初始化汽车
motoOperation.init();
//设置一个空容器
Moto moto = null;
// 提示信息
System.out.println("***********欢迎光临腾飞汽车租赁公司***********");
System.out.println("1、轿车 2、客车");
System.out.println("请输入你要租赁的汽车类型:");
// 获取用户输入
Scanner scanner = new Scanner(System.in);
int flag = scanner.nextInt();
if (flag == 1) {
//轿车
System.out.println("请选择你要租赁的汽车品牌:1、别克 2、宝马");
int brand = scanner.nextInt();
if (brand == 1) {
System.out.println("请选择你要租赁的汽车类型:1、林荫大道 2、GL8");
int type = scanner.nextInt();
if (type == 1) {
moto = motoOperation.motoLeaseOut("别克", "林荫大道", 4);
} else if (type == 2) {
moto = motoOperation.motoLeaseOut("别克", "GL8", 4);
}
} else if (brand == 2) {
System.out.println("请选择你要租赁的汽车类型:1、X6 2、550i");
int type = scanner.nextInt();
if (type == 1) {
moto = motoOperation.motoLeaseOut("宝马", "X6", 4);
} else if (type == 2) {
moto = motoOperation.motoLeaseOut("别克", "550i", 4);
}
}
} else if (flag == 2) {
//客车
System.out.println("请选择你要租赁的汽车品牌:1、金龙 2、金杯");
int brand = scanner.nextInt();
if (brand == 1) {
System.out.println("请选择你要租赁的汽车座位数:1、16座 2、34座");
int type = scanner.nextInt();
if (type == 1) {
moto = motoOperation.motoLeaseOut("金龙", "", 16);
} else if (type == 2) {
moto = motoOperation.motoLeaseOut("金龙", "", 34);
}
} else if (brand == 2) {
System.out.println("请选择你要租赁的汽车座位数:1、16座 2、34座");
int type = scanner.nextInt();
if (type == 1) {
moto = motoOperation.motoLeaseOut("金杯", "", 16);
} else if (type == 2) {
moto = motoOperation.motoLeaseOut("金杯", "", 34);
}
}
}
//客户汽车匹配完成
if (moto != null) {
// 获取用户租车天数
System.out.println("请输入您的租车天数:");
int days = scanner.nextInt();
// 计算租车钱
double money = moto.calRent(days);
System.out.println("分配给您的汽车牌号是:" + moto.getId());
System.out.println("您需要支付的租赁费用是:" + money + "元");
}else {
System.out.println("很抱歉先生:当前的公司内,暂无您要的汽车类型!请重新选择!");
} } }
Java代码~~汽车租赁系统的更多相关文章
- Java汽车租赁系统[源码+数据库]
系统名称 Java汽车租赁系统 (源码在文末) 系统概要 汽车租赁系统总共分为两个大的模块,分别是系统模块和业务模块.其中系统模块和业务模块底下又有其子模块. 功能模块 一.业务模块 1.客户管理 ...
- 一种基于Java Swing/HTML/MySQL的汽车租赁系统
该项目是一个Java的课程作业(大二),主要运用Java.Swing.HTML.MySQL,实现基本的租车逻辑.界面可视化.信息导出.数据存储等功能.实现管理员.用户两种角色登录,并结合Java开发中 ...
- 深入.NET和C#的小型汽车租赁系统的框架
前言:写这个小型系统之前呢,我们应该要猜测可能要用到哪些知识点. 那么对于这个小型系统:主要用到了如下的知识: 封装,集合(ArrayList和HashTable)和泛型和非泛型集合(泛型:List ...
- C#汽车租赁系统 完整版
Truck.cs类 //卡车类 public class Truck : Vehicle1 { //重载 public int Load { get; set; } //构造函数 public T ...
- C#汽车租赁系统
类图: 父类(车类,抽象类) /// <summary> /// 车辆基本信息类.搞一个抽象类玩玩 /// </summary> public abstract class V ...
- Springboot+vue 实现汽车租赁系统(毕业设计二)(前后端项目分离)
文章目录 1.系统功能列表 2.管理员端界面 2.1 商家登录界面 2.2 用户信息管理界面 2.3 汽车管理界面 2.4 订单界面 2.5 汽车图形报表 2.6 优惠券新增界面 3.普通用户界面 3 ...
- .Net中的AOP系列之构建一个汽车租赁应用
返回<.Net中的AOP>系列学习总目录 本篇目录 开始一个新项目 没有AOP的生活 变更的代价 使用AOP重构 本系列的源码本人已托管于Coding上:点击查看. 本系列的实验环境:VS ...
- 《Java从入门到放弃》JavaSE篇:综合练习——单身狗租赁系统(数组版)
因为现在只学习了基本语法,所以在综合练习之前,先补充关于方法概念. 方法的作用:把一系列的代码放在一起,然后再取个别名.之后通过这个别名的调用,就相当于执行了这一系列的代码. 方法的语法:([]中的内 ...
- 《Java从入门到放弃》JavaSE入门篇:练习——单身狗租赁系统
今天,我们要玩个大的!!! 我们把之前使用数组做的这个单身狗系统改版成数据库版本,并且使用面向对象里面的一些简单思想.如果有不知道这个系统的看官,请跳转到目录页,然后再选择单身狗系统(数组版)先围观五 ...
随机推荐
- 20191107-3 beta week 2/2 Scrum立会报告+燃尽图 02
此作业要求参见[https://edu.cnblogs.com/campus/nenu/2019fall/homework/9955] 一.小组情况 队名:扛把子 组长:孙晓宇 组员:宋晓丽 梁梦瑶 ...
- Asp.Net Core下使用swagger生成api文档
目录 一.前期准备 二.配置Swagger 三.参考 .Net Core中有两个集成NSwag的包,分别为Swashbuckle和NSwag.两者的配置大同小异.这里以NSwag为例. 一.前期准备 ...
- day 22 面向对象的基础
面向对象: 1.简述编写和执行类中的方法的流程 class Foo: #类的编写 def func(): print("我爱你") obj = Foo() #类的调用和执行 obj ...
- PHP基于Redis实现轻量级延迟队列
延迟队列,顾名思义它是一种带有延迟功能的消息队列. 那么,是在什么场景下我才需要这样的队列呢? 一.背景 先看看一下业务场景: 1.会员过期前3天发送召回通知 2.订单支付成功后,5分钟后检测下游环节 ...
- 阿里架构师的这一份Spring boot使用心得:网友看到都收藏了
阿里架构师的这一份Spring boot使用心得: 这一份PDF将从Spring Boot的出现开始讲起,到基本的环境搭建,进而对Spring的IOC及AOP进行详细讲解.以此作为理论基础,接着进行数 ...
- 手机端web(iPad)页面自适应js
有关编写手机页面(ipad页面)自适应的方法有很多,比如:bootstrap,rem等等.下面分享给大家一个js控制viewPort视区自适应缩放的方法(我给它命名为phone.js): 将phone ...
- Nginx动静分离(Nginx+Tomcat)
第一步:nginx构建 第二步:Tomcat构建 1.Tomcat基础点 (1)Tomcat 是基于java开发的web容器,用来发布java代码和jsp网页. (2)开发人员开发java web网站 ...
- Spring的相关注解
说明写在最前面:摘录于 博客园--受伤滴小萝卜 文章 文章链接受伤滴小萝卜文章--Spring注解 本文章只用作学习和帮助其他人学习记录使用 Spring 注解学习笔记 声明Bean的注解: ...
- 关于使用Java Mail发邮件的问题
今天做东西的时候突然遇到需要发邮件的问题,然后就使用SMTP协议进行邮件的发送.用了一个工具类简化邮件发送的功能, 在这次试验中,我使用了自己的QQ邮箱进行发送邮件的发送者. public class ...
- Oracle SCN 详解
一.简介 scn,system change number 在某个时间点定义数据库已提交版本的时间戳标记,Oracle为每个已提交事务分配一个唯一的scn,scn值是对数据库进行更改的逻辑时间点.sc ...