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

Java入门 第二季 租车系统

标签:
Java 设计

欢迎沟通交流@__@

运行效果:

图片描述
图片描述

Car.java //车基类
public abstract class Car {
    public String name; //车名
    public int price; //租金 元/天
    public int manCap;//载人
    public int goodsCap;//载货
    public Car(String name, int price) {
        this.name = name;
        this.price = price;
    }
}
MGCar.java //载客载货车
public class MGCar extends Car {
    public MGCar(String name, int price, int manCap, int goodsCap) {
        super(name, price);
        this.manCap = manCap;
        this.goodsCap = goodsCap;
    }
    @Override
    public String toString() {
        return ""+name+"\t   "+price+"元/天\t载人:"+manCap+"人\t载货:"+goodsCap+"吨";
    }
}
ManCar.java //载客车
public class ManCar extends Car {
    public ManCar(String name, int price, int manCap) {
        super(name, price);
        this.manCap = manCap;
    }
    @Override
    public String toString() {
        return ""+name+"\t   "+price+"元/天\t载人:"+manCap+"人\t";
    }
}
GoodsCar.java //载货车
public class GoodsCar extends Car {
    public GoodsCar(String name,int price,int goodsCap){
        super(name,price);
        this.goodsCap = goodsCap;
    }
    @Override
    public String toString() {
        return  ""+name+"\t   "+price+"元/天\t载货:"+goodsCap+"吨\t";
    }
}
CarRentSys.java //租车系统入口
import java.util.Arrays;
import java.util.Scanner;
/**
 * 哒哒租车系统
 * @author Anders
 *
 */
public class CarRentSys {

    public static void main(String[] args) {
        int first = 0;//首次
        int[] rentNum = new int[100];//租车代码
        int rentDays = 0;//租车天数
        Car[] cars = {new ManCar("奥迪A4", 500, 4),new ManCar("马自达6", 400, 4),new MGCar("皮卡雪6", 450, 4, 2),
                new ManCar("金龙", 800, 20),new GoodsCar("松花江", 400, 4),new GoodsCar("依维柯", 1000, 20)};
        if(first == 0){
            System.out.println("~~~~~~~~~~欢迎使用哒哒租车系统~~~~~~~~~~");
        }
        Scanner input = new Scanner(System.in);
        System.out.println("您是否要租车?\t1是\t0否,请输入对应数字:");
        while(first == 0){
            first++;
            String sel = input.next();
            if("1".equals(sel) || "0".equals(sel)){
                if("1".equals(sel)){
                    showProduct(cars);
                    select(input,cars,rentNum);
                    Arrays.sort(rentNum);
                    System.out.println("请输入租车天数:");
                    while(first==1){
                        first++;
                        try{
                            rentDays = input.nextInt();
                        }catch(Exception e){
                            System.out.println("输入有误,请重新输入:");
                            first = 1;
                            input.next();
                        }
                    }
                    printList(rentNum,cars,rentDays);
                }else{
                    System.out.println("谢谢光临,下次再见!");
                    input.close();
                    return;
                }
            }else{
                System.out.println("输入有误,请重新输入:");
                first=0;
            }
        }
        input.close();
    }
    /*
     * 展示车辆
     */
    private static void showProduct(Car[] cars) {
        System.out.println("您可租车的类型及其价目表:\n\r序号\t汽车名称\t       租金\t\t容量");
        for (int i=1;i<=cars.length;i++) {
            System.out.println(i+"\t"+cars[i-1]);
        }
    }
    /*
     * 选择租车数量,类型
     */
    private static void select(Scanner input,int[] rentNum) {
        int first = 0;
        int num = 0;//租车数量
        if(first==0){
            System.out.println("请输入您要租车的数量:");
        }
        try{
            num = input.nextInt();
            first++;
        }catch(Exception e){
            System.out.println("输入有误,请重新输入:");
            first=0;
            select(input,rentNum);
        }
        System.out.println("请选择要租车的序号(1-6):");
        int selNum;
        for(int i=0; i<num; i++){
            System.out.println("请选择第"+(i+1)+"辆车的序号:");
            try{
                selNum = input.nextInt();         
                if(selNum!=1 && selNum!=2 && selNum!=3 && selNum!=4 && selNum!=5 && selNum!=6){
                    System.out.println("输入有误,请重新选择:");
                    i--;
                    continue;
                }
                rentNum[i] = selNum;
            }catch(Exception e){
                System.out.println("输入有误,请重新选择:");
                i--;
                input.next();//如输入a,缓存区会一直保留a,导致死循环,此操作可以解决问题
            }
        }
    }
    /*
     * 打印订单
     */
    private static void printList(int[] rentNum, Car[] cars, int rentDays) {
        int sum = 0;
        int manCapSum = 0;
        int goodsCapSum = 0;
        int selNum = 0;
        int[] counts = new int[cars.length];
        System.out.println("序号\t汽车名称\t       租金\t\t容量\t\t\t数量");
        int i=0;
        for(int r=0;r<rentNum.length;r++){
            selNum = rentNum[r]-1;
            if(selNum!=-1){
                i++;
                sum+=cars[selNum].price;
                if(cars[selNum] instanceof ManCar){
                    manCapSum+=cars[selNum].manCap;
                }else if(cars[selNum] instanceof GoodsCar){
                    goodsCapSum+=cars[selNum].goodsCap;
                }else{
                    goodsCapSum+=cars[selNum].goodsCap;
                    manCapSum+=cars[selNum].manCap;
                }
                if(r<rentNum.length-1 && rentNum[r] == rentNum[r+1]){
                    counts[selNum]++;
                    i--;
                    continue;
                }
                System.out.println(""+i+"\t"+cars[selNum]+"\t\t"+(counts[selNum]+1));
            }
        }
        System.out.println("总载人:"+manCapSum+"人/日\t总载货:"+goodsCapSum+"吨/日\t总价:"+sum*rentDays+"元");
    }
}
点击查看更多内容
18人点赞

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

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
6
获赞与收藏
44

关注作者,订阅最新文章

阅读免费教程

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消