为了账号安全,请及时绑定邮箱和手机立即绑定

达达租车系统:模拟项目(业务逻辑,信息类)

标签:
Java

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();       //调用一个方法就行,层层调用

}

}

点击查看更多内容
19人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消