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入门篇:练习——单身狗租赁系统
今天,我们要玩个大的!!! 我们把之前使用数组做的这个单身狗系统改版成数据库版本,并且使用面向对象里面的一些简单思想.如果有不知道这个系统的看官,请跳转到目录页,然后再选择单身狗系统(数组版)先围观五 ...
随机推荐
- vue项目页面切换到默认显示顶部
页面切换到默认显示顶部 方法一 使用前端路由,当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样. vue-router 能做到,而且更好,它让你可以自定义路由切换时页 ...
- 在UEFI+GPT下使用rEFind实现Win10 + Kali2.0 双引导
转载自:在UEFI+GPT下使用rEFind实现Win10 + Kali2.0 双引导 https://www.linuxidc.com/Linux/2016-07/133717.htm
- MySQL8.0 新特性 Hash Join
概述&背景 MySQL一直被人诟病没有实现HashJoin,最新发布的8.0.18已经带上了这个功能,令人欣喜.有时候在想,MySQL为什么一直不支持HashJoin呢?我想可能是因为MySQ ...
- linux basic
一:date 语法: 打印日期:date [OPTION]..... [+FORMAT] 设定日期:date [MMDDhhmm] [[cc][YY][.ss] 创建带实时日期的文件 touch $ ...
- mvc 学习笔记
1.routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); MVC中的路由忽略,只要访问的地址中带有 .axd , 该请求都将排除在mv ...
- day20191104笔记
MyBatis笔记: 一.MyBatis半自动ORM映射框架, 将数据库中的数据和程序中的数据进行自动映射的前提条件 1. 数据库中的字段必须和程序中的属性保持一致 2. 程序中属性的数据类型必须是基 ...
- 7. 彤哥说netty系列之Java NIO核心组件之Selector
--日拱一卒,不期而至! 你好,我是彤哥,本篇是netty系列的第七篇. 简介 上一章我们一起学习了Java NIO的核心组件Buffer,它通常跟Channel一起使用,但是它们在网络IO中又该如何 ...
- sql 删除表数据并使ID自增重置
方法1:truncate table 你的表名//这样不但将数据全部删除,而且重新定位自增的字段 方法2:delete from 你的表名dbcc checkident(你的表名,reseed,0) ...
- rsync工具、rsync常用选项、以及rsync通过ssh同步 使用介绍
第8周5月14日任务 课程内容: 10.28 rsync工具介绍10.29/10.30 rsync常用选项10.31 rsync通过ssh同步 10.28 rsync工具介绍 rsync是一个同步的工 ...
- linux搭建Git
安装依赖库和编译工具为了后续安装能正常进行,我们先来安装一些相关依赖库和编译工具yum install curl-devel expat-devel gettext-devel openssl-dev ...