package com.carSystem;
//父类Car包含各类车的属性信息
public class Car {
String name; //车名
double money; //租金/天
int person; //载客数/人
double weight; //载重量/吨
}
package com.carSystem;
//子类LittleCar,只能载人的车
public class LittleCar extends Car {
//载人的车
//通过构造方法传递参数
public LittleCar(String name,double money,int person){
this.name=name; //车名
this.money=money; //租金/天
this.person=person; //载客数/人
}
}
package com.carSystem;
//子类Bus,只能载人的车
public class Bus extends Car {
//只能载人的车
//通过构造方法传递参数
public Bus(String name,int person,double money){
this.name=name; //车名
this.money=money; //租金/天
this.person=person; //载客数/人
}
}
package com.carSystem;
//子类Lorry
public class Lorry extends Car {
//只能载货的车
//通过构造方法传递参数
public Lorry(String name,double money,double weight){
this.name=name; //车名
this.money=money; //租金/天
this.weight=weight; //载重量/吨
}
}
package com.carSystem;
//子类PickUp
public class PickUp extends Car {
//既能载人又能载货的车
//通过构造方法传递参数
public PickUp(String name,int person,double money,double weight){
this.name=name; //车名
this.money=money; //租金/天
this.person=person; //载客数/人
this.weight=weight; //载重量/吨
}
}
package com.carSystem;
//业务逻辑
import java.util.Scanner; //导入Scannei类,输入信息
public class Business {
//写属性
LittleCar little; //little代表当前类的属性,是一个新的对象
Bus bus; //定义bus对象引用
Lorry lorry; //定义lorry对象引用
PickUp pickup; //定义picku对象引用
Scanner input =new Scanner(System.in); //调用Scanner类,实现一次定义多处使用
double totalmoney=0; //总租金:成员变量 全局使用
int totalperson=0; //总载人数
double totalweight=0; //总载重量
String name1=""; //存储载人车名,连接字符串
String name2=""; //存储载货车名
//创建当前类的构造方法,使用信息类的信息
public Business(LittleCar little, Bus bus,Lorry lorry,PickUp pickup) //little 也是新的对象,接受外部传来的参数
{
this.little=little; //this.little代表当前类的对象引用,little代表子类LittleCar的对象引用
this.bus=bus; //this.bus代表当前类的对象引用,bus代表子类Bus的对象引用
this.lorry=lorry; //this.lorry代表当前类的对象引用,lorry代表子类Lorry的对象引用
this.pickup=pickup; //this.pickup代表当前类的对象引用,pickup代表子类PickUp的对象引用
}
//询问是否租车及异常处理
public void ask(){
System.out.println("您是否租车?是:1 否:2");
int choice=input.nextInt(); //输入选择
int count=0; //计算输入错误的次数
if(choice==1){
show();
}
else if(choice==2){
System.out.println("欢迎下次光临!");
}
else{
System.out.println("输入有误,请重新输入:");
int m=3; //利用循环控制循环次数
for(int j=1;j<=m;j++){
int entryNum=input.nextInt();
if(entryNum==1){
show(); //输入正确调用show()方法进行下一步
}
else{
count++; //输错三次跳出循环
if(count==3){
break;
}
System.out.println("输入有误,请重新输入:");
}
}
System.out.println("三次输入错误,请下次再来!");
}
}
//显示所有车辆信息信息
public void show(){
System.out.println("序号"+"\t"+"车名"+"\t"+"租金/天"+"\t"+"载客数/人"+"\t"+"载重量"/吨);
System.out.println("1\t"+little.name+"\t"+little.money+"\t"+little.person);
System.out.println("2\t"+bus.name+"\t"+bus.money+"\t"+bus.person);
System.out.println("3\t"+lorry.name+"\t"+lorry.money+"\t"+lorry.weight);
System.out.println("4\t"+pickup.name+"\t"+pickup.money+"\t"+pickup.person+"\t"+pickup.weight);
//计算车的租金
jiSuan();
}
public void jiSuan()
{
System.out.println("请输入租的车辆数:");
//输入租的车辆数
int rentNum=input.nextInt();
rent(rentNum); //调用rent()方法
}
//记录租车信息,计算总租金,总载客量,总载重量
public void rent(int rentNum){ //方法间接受外部传来的参数
//记录租车信息
for(int i=1;i<=rentNum;i++){
System.out.println("输入第"+i+"辆车的序号:");
int num=input.nextInt(); //输入租车的序号
switch(num){
case 1:
System.out.println("1\t"+little.name+"\t"+little.money+"\t"+little.person);
name1+=little.name; //记录载客车的车名
totalmoney+=little.money; //计算租金
totalperson+=little.person; //计算载客数
break; //跳出循环,执行下一次循环
case 2:
System.out.println("2\t"+bus.name+"\t"+bus.money+"\t"+bus.person);
name1+=bus.name;
totalmoney+=bus.money;
totalperson+=bus.person;
break;
case 3:
System.out.println("3\t"+lorry.name+"\t"+lorry.money+"\t"+"\t"+"\t"+lorry.weight);
name2+=lorry.name; //记录载货车的车名
totalmoney+=lorry.money;
totalweight+=lorry.weight; //计算载重量
break;
case 4:
System.out.println("4\t"+pickup.name+"\t"+pickup.money+"\t"+pickup.person+"\t"+pickup.weight);
name1+=pickup.name; //载人的车名,皮卡既能载人也能载货
name2+=pickup.name;
totalmoney+=lorry.money;
totalperson+=lorry.person;
totalweight+=lorry.weight;
break;
}
}
rentDay(); //方法结束,执行下一个方法
}
//租的天数
public void rentDay(){
System.out.println("请输入租的天数:");
int rentDay=input.nextInt(); //租车的天数
System.out.println("以下是账单信息:");
System.out.println("您租的载人车有:");
System.out.println(name1+"总载人数为:"+totalperson);
System.out.println("您租的载货的车有:");
System.out.println(name2+"总载货量为:"+totalweight);
System.out.println("总租金为:"+totalmoney*rentDay);
}
}
package com.carSystem;
//输入信息,进行测试
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
LittleCar little=new LittleCar("小汽车",23,3); //创建LittleCard的对象,构造方法初始化
Bus bus=new Bus("公共汽车",24,5); //创建Bus的对象
Lorry lorry=new Lorry("货车",22,3); //创建Lorry的对象
PickUp pickup=new PickUp("皮卡",33,4,4); //创建PickUp的对象
Business bu=new Business(little,bus,lorry,pickup); //创建Business的对象
bu.ask(); //调用一个方法就行,层层调用
}
}
共同学习,写下你的评论
评论加载中...
作者其他优质文章