第三次项目《汽车租赁》

2024-02-26 10:38
文章标签 项目 汽车 租赁 第三次

本文主要是介绍第三次项目《汽车租赁》,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/*** 父类车(抽象类)*/
public abstract class Car {/**品牌*/private String brand;/**牌照*/private String licenseTag;/**日租金*/private int dayRant;public Car() {}public Car(String brand, String licenseTag, int dayRant) {this.brand = brand;this.licenseTag = licenseTag;this.dayRant = dayRant;}/**汽车信息*/public void Information() {System.out.println("品牌是:"+brand);}/**租金*/public abstract float money(int day);/**设置品牌*/public void setBrand(String brand) {this.brand = brand;}/**得到品牌*/public String getBrand() {return brand;}/**得到牌照*/public String getLicenseTag() {return licenseTag;}/**设置牌照*/public void setLicenseTag(String licenseTag) {this.licenseTag = licenseTag;}/**得到日租金*/public int getDayRant() {return dayRant;}/**设置日租金*/public void setDayRant(int dayRant) {this.dayRant = dayRant;}
}
/**客车(具体产品类)*/
public class PassengerCar extends Car{/**座位*/private String seat;public PassengerCar() {}// 构造方法public PassengerCar(String brand, String licenseTag, int dayRant, String seat) {super(brand, licenseTag, dayRant);this.seat = seat;}/**轿车租赁信息*/@Overridepublic void Information() {super.Information();System.out.println("座位数:"+seat);System.out.println("牌照是:"+getLicenseTag());System.out.println("日租金:"+getDayRant());}public String getSeat() {return seat;}public void setSeat(String seat) {this.seat = seat;}/**客车租金计算*/@Overridepublic float money(int days) {float price = this.getDayRant() * days;// 天数if (days >= 150) {// 打折price *= 0.6; }else if(days >= 30) {price *= 0.7;}else if(days >= 7) {price *= 0.8;}else if(days >= 3) {price *= 0.9;}return price;}
}
/**轿车(子类) */
public class SaloonCar extends Car {/**型号*/private String type;public SaloonCar() {}// 构造方法public SaloonCar(String brand, String licenseTag, int dayRant, String type) {super(brand, licenseTag, dayRant);this.type = type;}/**轿车租赁信息 */@Overridepublic void Information() {super.Information();System.out.println("型号是:"+type);System.out.println("牌照是:"+getLicenseTag());System.out.println("日租金:"+getDayRant());}public String getType() {return type;}public void setType(String type) {this.type = type;}/**客车租金计算*/@Overridepublic float money(int days) {float price = this.getDayRant() * days;if (days > 150) {price *= 0.7; }else if(days > 30) {price *= 0.8;}else if(days > 7) {price *= 0.9;}return price;}
}
/** 用户租车 (客户类)*/
public class Client {public static void main(String[] args) {// 创建工厂类对象Factory factory = new Factory();Scanner input = new Scanner(System.in);do {System.out.println("=======欢迎来到太阳载具公司=======");System.out.println("请选择你的车型:1、汽车  2、其他");int choise = input.nextInt();// 品牌String brand = "";// 型号String type = "";// 座位数String seat = "";switch (choise) {case 1:System.out.println("请选择汽车品牌: 1、保时捷  2、布加迪");int ScBrand = input.nextInt();brand = ScBrand == 1 ? "保时捷" : "布加迪";if (ScBrand == 1) {System.out.println("请选择型号:1、911 2、新能源 3、卡宴");int ScType = input.nextInt();if (ScType == 1) {type = "911";} else if(ScType == 2) {type = "新能源";} else if(ScType == 3) {type = "卡宴";}} else {System.out.println("请选择型号:1、威龙 2、威航");type = input.nextInt() == 1 ? "威龙" : "威航";}break;case 2:System.out.println("请选择其他载具: 1、UFO  2、和谐号");int select = input.nextInt();brand = select == 1 ? "UFO" : "和谐号";System.out.println("请选择座位类型: 1、100座 2、300座");int pcSeat = input.nextInt();if (pcSeat == 1) {seat = "100座";}else {seat = "300座";}break;default:System.out.println("输入错误!");break;}// 存车到父类引用Car car = factory.rantCar(brand, type, seat);// 输出车辆信息System.out.println("恭喜您!系统选车成功!车辆信息如下:");car.Information();// 判断子类对象(动态绑定)if(car instanceof SaloonCar) {// 调用子类特有方法要强转SaloonCar sc = (SaloonCar)car;System.out.println("您租的是"+sc.getBrand()+sc.getType()+",现有租赁活动: 租车大于7天打9折,租车大于30天打8折,租车大于150天打7折.");// 判断子类对象(动态绑定)}else if(car instanceof PassengerCar){// 调用子类特有方法要强转PassengerCar pc = (PassengerCar)car;System.out.println("您租的是"+pc.getBrand()+pc.getSeat()+",现有租赁活动: 租车3天打9折,租车7天打8折,租车30天打7折,租车150天6折.");}System.out.print("请输入您租赁的天数:");// 租赁天数int rentDay = input.nextInt();// 调用子类租金计算double rant = car.money(rentDay);System.out.println("租金为:"+rant);}while(isContinue());System.out.println("后期会有更多黑科技,欢迎下次光临呦~!");}/**是否继续方法*/public static boolean isContinue() {Scanner input = new Scanner(System.in);System.out.println("是否继续(y/n)?");String select = input.next();if(select.equals("y")) {return true;}else {return false;}}
}
/**载具工厂(工厂类)*/
public class Factory {public static Car[] car = new Car[8];/**初始化载具信息*/static{car[0] = new SaloonCar("保时捷", "京11111", 1800, "911");car[1] = new SaloonCar("保时捷", "京22222", 1500, "新能源");car[2] = new SaloonCar("保时捷", "京33333", 1200, "卡宴");car[3] = new SaloonCar("布加迪", "京44444", 2000, "威航");car[4] = new PassengerCar("UFO", "宇55555", 2200, "100座");car[5] = new PassengerCar("和谐号", "GYYYY", 3200, "300座");car[6] = new PassengerCar("UFO", "$$$$$$", 10000, "300座");car[7] = new PassengerCar("和谐号", "FY0000", 4200, "100座");}/***  判断租哪辆载具* @param brand 品牌* @param type 型号* @param seat 座位* @return 返回Car*/public Car rantCar(String brand, String type, String seat) {for (Car car1 : this.car) {// 租轿车if(car1 instanceof SaloonCar) {// 调用子类特有方法 SaloonCar sc = (SaloonCar)car1;if (sc.getBrand().equals(brand) && sc.getType().equals(type)) {return sc;}// 租其他载具}else if(car1 instanceof PassengerCar) {// 调用子类特有方法PassengerCar pc = (PassengerCar)car1;if (pc.getBrand().equals(brand) && pc.getSeat().equals(seat)) {return pc;}}}return null;}
}

这篇关于第三次项目《汽车租赁》的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/748580

相关文章

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步