Java汽车租赁系统1.2-面向对象+数组

这篇具有很好参考价值的文章主要介绍了Java汽车租赁系统1.2-面向对象+数组。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

汽车租赁系统

author:luckyboy!

version:1.1

知识储备:变量、数据类型、选择结构、循环结构、数组 、面向对象

系统概述:某汽车租赁公司出租多种轿车和客车,出租费用以日为单位计算。出租车型及信息如下表所示。

车型 具体信息 日租金 折扣
轿车 宝马X6(京NY28588) 800

days>7天9折

days>30天8折

days>150天7折

宝马550i(京CNY3284) 600
别克林荫大道(京NT37465) 300
别克GL8(京NT96968) 600
客车 金杯、16座(京6566754) 800

days>=3天9折

days>=7天8折

days>=30天7折

days>=150天6折

金龙、16座(京8696997)
金杯、34座(京9696996) 1500
金龙、34座(京8696998)

面向对象设计步骤

        首先读懂项目需求,分析项目需求找出隐藏在其中的名词和动词,这些名词可能是所能用到的类和属性,动词可能是需要用到的方法。根据已知的类、属性、方法进一步优化设计,最后梳理项目运行过程。

Java汽车租赁系统1.2-面向对象+数组

 需求中的名词

        汽车租赁公司、汽车、轿车、客车、别克、宝马、金杯、金龙、X6、550i、GL8、林荫大道、座位数、日租金、折扣、车牌号(京NY28588、京CNY3284、京NT37465、京NT96968、京6566754、京6566754、京9696996、京8696998)

类和类属性

        根据已知名词找出需要使用的类和类属性

        汽车类:车牌号、车的品牌、日租金

        客车类:车牌号、车的品牌、日租金、座位数

        轿车类:车牌号、车的品牌、日租金、车的型号

        汽车业务类:

        汽车租赁管理类(测试类)

分析:

  • 客车和轿车都属于汽车,汽车是客车和汽车的父类,汽车和客车是汽车的子类。
  • 客车和汽车都具有相同的属性(车牌号、车的品牌、日租金);那么客车类和轿车类可以继承汽车类的属性。
  • 除去相同的属性还具有私有的属性,客车类具有座位数,轿车类具有车的型号。
  • 还应有一个汽车业务类来完成汽车租赁功能。
  • 汽车租赁管理类用来对汽车租赁系统进行测试。

需求中的动词

        计算租金、租赁、程序入口是类中所需大方法。

优化设计

Java汽车租赁系统1.2-面向对象+数组

 完成优化设计代码:

创建 .Java文件:MotoVehicle类(汽车类)、Car类(轿车类)、Bus类(客车类)、MotoOperation类(汽车业务类)、Test类(测试类)

Java汽车租赁系统1.2-面向对象+数组

阶段划分

  • 第一阶段:创建并完成汽车类
  • 第二阶段:创建并完成轿车类
  • 第三阶段:创建并完成客车类
  • 第四阶段:创建并完成汽车业务类
  • 第五阶段:创建并完成测试类

第一阶段:创建并完成汽车类

父类MotoVehicle

//汽车类
public abstract class MotoVehicle {

	//车牌号	品牌	日租金
	private String vehicleId;
	private String brand;
	private int perRent;
	
	//无参构造方法
	public MotoVehicle() {
	}
	
	//有参构造方法
	public MotoVehicle(String vehicleId, String brand, int perRent) {
		this.vehicleId = vehicleId;
		this.brand = brand;
		this.perRent = perRent;
	}

	//get和set方法
	public String getVehicleId() {
		return vehicleId;
	}
	public void setVehicleId(String vehicleId) {
		this.vehicleId = vehicleId;
	}
	public String getBrand() {
		return brand;
	}
	public void setBrand(String brand) {
		this.brand = brand;
	}
	public int getPerRent() {
		return perRent;
	}
	public void setPerRent(int perRent) {
		this.perRent = perRent;
	}
	
	//计算租金(抽象方法)
	public abstract double calcRent(int days);
}

 第二阶段:创建并完成轿车类 

子类Car继承父类MotoVehicle

//轿车类
public class Car extends MotoVehicle {

	// 型号
	private String type;

	// 无参构造方法
	public Car() {
		super();
	}

	// 有参构造方法
	public Car(String vehicleId, String brand, int perRent, String type) {
		super(vehicleId, brand, perRent);
		this.type = type;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	@Override
	public double calcRent(int days) {
		double price = this.getPerRent() * days;
		if (days > 7 && days <= 30) {
			price = price * 0.9;
		} else if (days > 30 && days <= 150) {
			price = price * 0.8;
		} else if (days > 150) {
			price = price * 0.7;
		}
		return price;
	}

}

第三阶段:创建并完成客车类 

子类Bus继承父类MotoVehicle

//客车类
public class Bus extends MotoVehicle {

	// 座位数
	private int seatCount;

	// 无参构造方法
	public Bus() {
		super();
	}

	// 有参构造方法
	public Bus(String vehicleId, String brand, int perRent, int seatCount) {
		super(vehicleId, brand, perRent);
		this.seatCount = seatCount;
	}

	public int getSeatCount() {
		return seatCount;
	}

	public void setSeatCount(int seatCount) {
		this.seatCount = seatCount;
	}

	@Override
	public double calcRent(int days) {
		double price = this.getPerRent() * days;
		if (days >= 3 && days < 7) {
			price = price * 0.9;
		} else if (days >= 7 && days < 30) {
			price = price * 0.8;
		} else if (days >= 30 && days < 150) {
			price = price * 0.7;
		} else if (days >= 150) {
			price = price * 0.6;
		}
		return price;
	}

}

第四阶段:创建并完成汽车业务类

MotoOperation类

import java.util.ArrayList;
import java.util.Scanner;

//汽车业务类
public class MotoOperation {
	Scanner in = new Scanner(System.in);
	// 创建轿车类数组
	Car[] car = new Car[4];
	// 创建客车类
	Bus[] bus = new Bus[4];

	public void inti() {
		// 将轿车信息保存到轿车类数组
		car[0] = new Car("京NY28588", "宝马", 800, "X6");
		car[1] = new Car("京CNY28588", "宝马", 600, "550i");
		car[2] = new Car("京NT37465", "别克", 300, "林荫大道");
		car[3] = new Car("京NT96968", "别克", 600, "GL8");
		// 将客车信息保存到客车类数组
		bus[0] = new Bus("京6566754", "金杯", 800, 16);
		bus[1] = new Bus("京9696996", "金杯", 1500, 34);
		bus[2] = new Bus("京8696997", "金龙", 800, 16);
		bus[3] = new Bus("京8696998", "金龙", 1500, 34);
	}

	// 汽车租赁方法
	public void start() {
		System.out.println("**********欢迎光临租赁公司**********");
		System.out.println("1-轿车\t2-客车");
		System.out.println("请选择您要租赁的汽车类型:");
		int type = in.nextInt();
		// 如果输入1和2以外的数字,则重新输入
		while (type < 1 || type > 2) {
			System.out.println("输入错误,请重新选择您要租赁的汽车类型:");
			type = in.nextInt();
		}
		if (type == 1) {// 用户选择租轿车
			// 租轿车的方法
			car();
		} else if (type == 2) {// 用户选择租客车
			// 租客车的方法
			bus();
		}
	}

	// 轿车租赁方法
	public void car() {
		String brand = "";
		String type = "";
		System.out.println("请选择您要租赁的轿车品牌:1-别克\t2-宝马");
		int chooseBrand = in.nextInt();
		// 如果输入1和2以外的数字,则重新输入
		while (chooseBrand < 1 || chooseBrand > 2) {
			System.out.println("输入错误,请重新选择您要租赁的轿车品牌:");
			chooseBrand = in.nextInt();
		}

		// 用户选择别克
		if (chooseBrand == 1) {
			// 轿车品牌赋值为别克
			brand = "别克";
			System.out.println("请选择您要租赁的汽车型号:1-林荫大道\t2-GL8");
			int chooseType = in.nextInt();
			// 如果输入1和2以外的数字,则重新输入
			while (chooseType < 1 || chooseType > 2) {
				System.out.println("输入错误,请重新选择您要租赁的轿车型号:");
				chooseType = in.nextInt();
			}
			// 如果用户选择别克,则给轿车型号赋值为林荫大道;如果用户选择别克,则给轿车型号赋值为GL8;
			type = chooseType == 1 ? "林荫大道" : "GL8";
		}

		// 用户选择宝马
		else if (chooseBrand == 2) {
			// 轿车品牌赋值为宝马
			brand = "宝马";
			System.out.println("请选择您要租赁的汽车类型:1-X6\t2-50i");
			int chooseType = in.nextInt();
			// 如果输入1和2以外的数字,则重新输入
			while (chooseType < 1 || chooseType > 2) {
				System.out.println("输入错误,请重新选择您要租赁的轿车型号:");
				chooseType = in.nextInt();
			}
			// 如果用户选择宝马,则给轿车型号赋值为X6;如果用户选择宝马,则给轿车型号赋值为550i;
			type = chooseType == 1 ? "X6" : "550i";
		}

		// 输出提车信息
		for (int i = 0; i < car.length; i++) {
			if (car[i].getBrand().equals(brand)
					&& car[i].getType().equals(type)) {
				// 计算轿车租金
				System.out.println("请输入您要租的天数:");
				int days = in.nextInt();
				double sumPrice = calcRent(days, type);
				System.out.println("租车成功,请按照如下车牌号提车:" + car[i].getVehicleId());
				System.out.println("您需要支付:" + sumPrice + "元");
			}
		}

	}

	// 计算轿车租金的方法
	public double calcRent(int days, String type) {
		double price = 0;
		for (int i = 0; i < car.length; i++) {
			if (car[i].getType().equals(type)) {
				price = car[i].getPerRent() * days;
				if (days > 7 && days <= 30) {
					price = price * 0.9;
				} else if (days > 30 && days <= 150) {
					price = price * 0.8;
				} else if (days > 150) {
					price = price * 0.7;
				}
			}
		}
		return price;
	}

	// 客车租赁方法
	public void bus() {
		String brand = "";
		int count = 0;
		System.out.println("请选择您要租赁的客车品牌:1-金杯\t2-金龙");
		int chooseBrand = in.nextInt();
		// 如果用户输入1和2以外的数子,则重新输入
		while (chooseBrand < 1 && chooseBrand > 2) {
			System.out.println("输入错误,请重新选择您要租赁的轿车品牌:");
			chooseBrand = in.nextInt();
		}
		// 如果用户选择金杯,则给客车品牌赋值为金杯;如果用户选择金龙,则给客车品牌赋值为金龙;
		brand = chooseBrand == 1 ? "金杯" : "金龙";

		System.out.println("请选择您要租赁的客车座位数:1-16座\t2-34座");
		int chooseCount = in.nextInt();
		// 如果用户输入1和2以外的数子,则重新输入
		while (chooseCount < 1 && chooseCount > 2) {
			System.out.println("输入错误,请重新选择您要租赁的客车座位数:1-16座\t2-34座");
			chooseCount = in.nextInt();
		}
		// 如果用户选择16座,则给客车座位数赋值为16;如果用户选择34座,则给客车座位数赋值为34;
		count = chooseCount == 1 ? 16 : 34;

		// 输出提车信息
		for (int i = 0; i < bus.length; i++) {
			if (bus[i].getBrand().equals(brand) && bus[i].getSeatCount() == count) {
				// 计算轿车租金
				System.out.println("请输入您要租的天数:");
				int days = in.nextInt();
				double sumPrice = calcRent(days, count);
				System.out.println("租车成功,请按照如下车牌号提车:" + bus[i].getVehicleId());
				System.out.println("您需要支付:" + sumPrice + "元");
			}
		}
	}

	// 计算客车租金的方法
	public double calcRent(int days, int count) {
		double price = 0;
		for (int i = 0; i < bus.length; i++) {
			if (bus[i].getSeatCount() == count) {
				price = bus[i].getPerRent() * days;
				if (days > 7 && days <= 30) {
					price = price * 0.9;
				} else if (days > 30 && days <= 150) {
					price = price * 0.8;
				} else if (days > 150) {
					price = price * 0.7;
				}
			}
		}
		return price;
	}
}

第五阶段:创建并完成测试类

Test类文章来源地址https://www.toymoban.com/news/detail-409994.html

//汽车租赁管理类:测试类
public class Text {

	public static void main(String[] args) {
		//实例化汽车业务类
		MotoOperation moto = new MotoOperation();
		//调用汽车业务类中的初始化汽车信息方法
		moto.inti();
		//调用汽车业务类中的汽车租赁方法
		moto.start();
	}
}

到了这里,关于Java汽车租赁系统1.2-面向对象+数组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Java在线租车汽车租赁系统设计与实现(Idea+Springboot+mysql)

    Java在线租车汽车租赁系统设计与实现(Idea+Springboot+mysql)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。 项目配有对应开发文档、

    2024年03月10日
    浏览(14)
  • Java租赁汽车租车系统设计与实现(Idea+Springboot+mysql)

    Java租赁汽车租车系统设计与实现(Idea+Springboot+mysql)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。 项目配有对应开发文档、

    2024年03月14日
    浏览(22)
  • 基于Java汽车在线租赁管理系统设计实现(源码+lw+部署文档+讲解等)

    基于Java汽车在线租赁管理系统设计实现(源码+lw+部署文档+讲解等)

    博主介绍 : ✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟 Java项目精品

    2024年02月08日
    浏览(12)
  • 基于Java(SpringBoot框架)毕业设计作品成品(25)网上在线汽车租赁系统设计与实现

    基于Java(SpringBoot框架)毕业设计作品成品(25)网上在线汽车租赁系统设计与实现

    博主介绍: 《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、PPT、论文模版

    2024年02月08日
    浏览(20)
  • 通俗易懂实现功能强大的实战项目 springboot+java+vue+mysql 汽车租赁管理系统

    通俗易懂实现功能强大的实战项目 springboot+java+vue+mysql 汽车租赁管理系统

    ✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 | SpringBoot/SSM Python实战项目 | Django 微信小

    2024年01月19日
    浏览(17)
  • 汽车租赁管理系统/汽车租赁网站的设计与实现

    汽车租赁管理系统/汽车租赁网站的设计与实现

    摘      要 租赁汽车走进社区,走进生活,成为当今生活中不可缺少的一部分。随着汽车租赁业的发展,加强管理和规范管理司促进汽车租赁业健康发展的重要推动力。汽车租赁业为道路运输车辆一种新的融资服务形式、广大人民群众一种新的出行消费方式和汽车生产厂家

    2024年02月12日
    浏览(17)
  • 基于java swing和mysql实现的汽车租赁管理系统(源码+数据库+文档+运行指导视频)

    基于java swing和mysql实现的汽车租赁管理系统(源码+数据库+文档+运行指导视频)

    本项目是一套基于java swing和mysql实现的汽车租赁管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、项目文档、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,确保可以运行! 该系统功能

    2024年02月10日
    浏览(11)
  • 租车系统开发/多功能租车平台微信小程序源码/汽车租赁系统源码/汽车租赁小程序系统

    租车系统开发/多功能租车平台微信小程序源码/汽车租赁系统源码/汽车租赁小程序系统

    源码介绍: 多功能租车平台微信小程序源码,作为汽车租赁、摩托车租车平台系统源码,是小程序系统。基于微信小程序的汽车租赁系统源码。 开发环境及工具: 大等于jdk1.8,大于mysql5.5,idea(eclipse),微信开发者工具 技术说明: springboot mybatis 微信小程序 代码注释齐全

    2024年02月02日
    浏览(20)
  • 基于springboot汽车租赁系统

    基于springboot汽车租赁系统

    功能如下图所示   Spring Boot汽车租赁系统的设计旨在满足不断增长的租车市场需求,并通过简化开发和部署流程来提供方便的租车解决方案。系统采用了现代化的架构,主要基于以下技术栈: Spring Boot :作为后端的核心框架,Spring Boot提供了快速开发、简化配置以及自动化

    2024年02月05日
    浏览(10)
  • 基于Springboot的汽车租赁系统

    摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包括软件架构模式、整体功能模块、

    2024年02月15日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包