知识储备:变量、数据类型、选择结构、循环结构、数组 、面向对象
系统概述:某汽车租赁公司出租多种轿车和客车,出租费用以日为单位计算。出租车型及信息如下表所示。
优化设计
代码如下:
第一阶段:创建并完成汽车类
public abstract class Car {
private String carId;
private String stand;
private double rents;
public Car() {
}
public Car(String carId, String stand, double rents) {
this.carId = carId;
this.stand = stand;
this.rents = rents;
}
public abstract double rent(int day);
/**
* 获取
* @return carId
*/
public String getCarId() {
return carId;
}
/**
* 设置
* @param carId
*/
public void setCarId(String carId) {
this.carId = carId;
}
/**
* 获取
* @return stand
*/
public String getStand() {
return stand;
}
/**
* 设置
* @param stand
*/
public void setStand(String stand) {
this.stand = stand;
}
/**
* 获取
* @return rents
*/
public double getRents() {
return rents;
}
/**
* 设置
* @param rents
*/
public void setRents(double rents) {
this.rents = rents;
}
public String toString() {
return "Car{carId = " + carId + ", stand = " + stand + ", rents = " + rents + "}";
}
}
第二阶段:创建并完成轿车类
public class Limousine extends Car{
/*
* 轿车类
* */
private String type;
public Limousine(String type) {
this.type = type;
}
public Limousine(String carId, String stand, double rents, String type) {
super(carId, stand, rents);
this.type = type;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Override
public double rent(int day) {
double sum=0;
if(day>7&&day<=30){
sum=this.getRents()*day*0.9;
return sum;
}
else if(day>30&&day<=150){
sum=this.getRents()*day*0.8;
return sum;
}
else if(day>150){
sum=this.getRents()*day*0.7;
return sum;
}
return sum;
}
}
第三阶段:创建并完成客车类
public class Passenger extends Car{
/*
* 客车类
* */
private int seat;
public Passenger(int seat) {
this.seat = seat;
}
public Passenger(String carId, String stand, double rents, int seat) {
super(carId, stand, rents);
this.seat = seat;
}
public int getSeat() {
return seat;
}
public void setSeat(int seat) {
this.seat = seat;
}
@Override
public double rent(int day) {
double sum=0;
if (day>=3&&day<7){
sum=this.getRents()*day*0.9;
return sum;
}
else if(day>=7&&day<30){
sum=this.getRents()*day*0.8;
return sum;
}
else if(day>=30&&day<150){
sum=this.getRents()*day*0.7;
return sum;
}
else if(day>=150) {
sum=this.getRents()*day*0.5;
return sum;
}
return sum;
}
}
第四阶段:创建汽车服务类
import java.util.Scanner;
public class CarRental {
/*
* 实现汽车的数据,展示
*
* */
Limousine[] limousines = new Limousine[4];
Passenger[] Passenger = new Passenger[4];
Scanner in= new Scanner(System.in);
// 初始化存储数据
public void init(){
limousines[0]=new Limousine("京NY28588","宝马",800,"X6");
limousines[1]=new Limousine("京CNY3284","宝马",600,"550i");
limousines[2]=new Limousine("京NT37465","别克",300,"林荫大道");
limousines[3]=new Limousine("京NT96968","别克",600,"GL8");
Passenger[0]=new Passenger("京6566754","金杯",800,16);
Passenger[1]=new Passenger("京8696997","金龙",800,16);
Passenger[2]=new Passenger("京9696996","金杯",1500,34);
Passenger[3]=new Passenger("京8696998","金龙",1500,34);
}
// 通过开始模块
public void start(){
System.out.println("**********欢迎光临租赁公司**********");
System.out.println("1-轿车\t2-客车");
System.out.print("请选择您要租赁的汽车类型:");
int type = in.nextInt();
// 如果输入1和2以外的数字,则重新输入
while (type < 1 || type > 2) {
System.out.print("输入错误,请重新选择您要租赁的汽车类型:");
type = in.nextInt();
}
if (type == 1) {// 用户选择租轿车
// 租轿车的方法
car();
} else if (type == 2) {// 用户选择租客车
// 租客车的方法
bus();
}
}
// 创建寻找汽车的一个方法并返回汽车的租金数
public void ren(String brand,String type,int days){
for (int i = 0; i < limousines.length; i++) {
if(limousines[i].getStand().equals(brand)&&limousines[i].getType().equals(type)){
System.out.println("分配给您的汽车牌号是:"+limousines[i].getCarId());
System.out.println("您需要支付的租赁费用是:"+limousines[i].rent(days));
}
}
}
// 创建寻找客车的一个方法并返回客车的租金数
public void Passengerent(String brand,int seat,int days){
for (int i = 0; i < Passenger .length; i++) {
if(Passenger[i].getStand().equals(brand)&&Passenger[i].getSeat()==seat){
System.out.println("分配给您的汽车牌号是:"+Passenger[i].getCarId());
System.out.println("您需要支付的租赁费用是:"+Passenger[i].rent(days));
}
}
}
//汽车的实现
public void car(){
String brand = "";
String type = "";
System.out.print("请选择您要租赁的轿车品牌:1-别克\t2-宝马");
int chooseBrand = in.nextInt();
// 如果输入1和2以外的数字,则重新输入
while (chooseBrand < 1 || chooseBrand > 2) {
System.out.print("输入错误,请重新选择您要租赁的轿车品牌:");
chooseBrand = in.nextInt();
}
// 用户选择别克
if (chooseBrand == 1) {
// 轿车品牌赋值为别克
brand = "别克";
System.out.print("请选择您要租赁的汽车型号:1-林荫大道\t2-GL8");
int chooseType = in.nextInt();
// 如果输入1和2以外的数字,则重新输入
while (chooseType < 1 || chooseType > 2) {
System.out.print("输入错误,请重新选择您要租赁的轿车型号:");
chooseType = in.nextInt();
}
// 如果用户选择别克,则给轿车型号赋值为林荫大道;如果用户选择别克,则给轿车型号赋值为GL8;
type = chooseType == 1 ? "林荫大道" : "GL8";
System.out.print("请输入你要租赁的天数");
int days = in.nextInt();
ren(brand,type,days);
}
// 用户选择宝马
else if (chooseBrand == 2) {
// 轿车品牌赋值为宝马
brand = "宝马";
System.out.print("请选择您要租赁的汽车类型:1-X6\t2-50i");
int chooseType = in.nextInt();
// 如果输入1和2以外的数字,则重新输入
while (chooseType < 1 || chooseType > 2) {
System.out.print("输入错误,请重新选择您要租赁的轿车型号:");
chooseType = in.nextInt();
}
// 如果用户选择宝马,则给轿车型号赋值为X6;如果用户选择宝马,则给轿车型号赋值为550i;
type = chooseType == 1 ? "X6" : "550i";
System.out.print("请输入你要租赁的天数");
int days = in.nextInt();
ren(brand,type,days);
}
}
// 客车的实现
public void bus(){
String brand = "";
int seat = 0;
System.out.print("请选择您要租赁的轿车品牌:1-金龙\t2-金杯");
int chooseBrand = in.nextInt();
// 如果输入1和2以外的数字,则重新输入
while (chooseBrand < 1 || chooseBrand > 2) {
System.out.print("输入错误,请重新选择您要租赁的客车品牌:");
chooseBrand = in.nextInt();
}
// 用户选择别克
if (chooseBrand == 1) {
// 轿车品牌赋值为别克
brand = "金龙";
System.out.print("请选择您要租赁的客车座位:1-16座\t2-34座");
int chooseseat = in.nextInt();
// 如果输入1和2以外的数字,则重新输入
while (chooseseat < 1 || chooseseat > 2) {
System.out.print("输入错误,请重新选择您要租赁的轿车型号:");
chooseseat = in.nextInt();
}
// 如果用户选择别克,则给轿车型号赋值为林荫大道;如果用户选择别克,则给轿车型号赋值为GL8;
seat = chooseseat == 1 ? 16 : 34;
System.out.print("请输入你要租赁的天数");
int days = in.nextInt();
Passengerent(brand,seat,days);
}
// 用户选择客车
else if (chooseBrand == 2) {
brand = "金杯";
System.out.print("请选择您要租赁的客车座位:1-16座\t2-34座");
int chooseseat = in.nextInt();
// 如果输入1和2以外的数字,则重新输入
while (chooseseat < 1 || chooseseat > 2) {
System.out.print("输入错误,请重新选择您要租赁的轿车型号:");
chooseseat = in.nextInt();
}
// 如果用户选择别克,则给轿车型号赋值为林荫大道;如果用户选择别克,则给轿车型号赋值为GL8;
seat = chooseseat == 1 ? 16 : 34;
System.out.print("请输入你要租赁的天数");
int days = in.nextInt();
Passengerent(brand,seat,days);
}
}
}
第五阶段:创建测试类
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true){
// 实现CarRental
CarRental carRental = new CarRental();
carRental.init();
carRental.start();
System.out.print("请是否继续操作0继续1停止");
int anInt = scanner.nextInt();
if(anInt==1){
break;
}
else {
continue;
}
}
}
}