《极简Java》学习实践二:玩具租赁系统

《极简Java》学习实践二:玩具租赁系统


问题描述

练习15 奕昊玩具公司可以提供玩具租赁的服务,出租玩具的信息如表15-2所示。

玩具类型具体信息日租金(元)折扣
布艺类洋娃娃(2kg,1岁以上)108~60天9折,大于60天8折
布艺类毛绒狗(3kg,2岁以上)158~60天9折,大于60天8折
布艺类玩具沙发(5kg,4岁以上)208~60天9折,大于60天8折
电动类电动车(7kg,八成新)5030~60天8折,大于60天7折
电动类电动船(9kg,六成新)6030~60天8折,大于60天7折

编写程序完成玩具租赁,程序执行效果如下:

********欢迎光临奕昊玩具公司********
1. 布艺类, 2. 电动类
请选择您需要的玩具类型:1
请选择您的孩子年龄:1. 1岁, 2. 2岁, 3. 3岁, 4. 4岁以上 2
请输入您要租赁的天数:20
适合您孩子的玩具为:毛绒狗
您需要支付的费用是:270.0
********欢迎光临奕昊玩具公司********
1. 布艺类, 2. 电动类
请选择您需要的玩具类型:2
请选择您需要的玩具的新旧程度:1. 六成新, 2. 八成新 1
请输入您要租赁的天数:15
适合您孩子的玩具为:电动船
您需要支付的费用是:900.0
********欢迎光临奕昊玩具公司********
1. 布艺类, 2. 电动类
请选择您需要的玩具类型:-1

思路解析

这个玩具租赁系统实现的基本思路,就是用Scanner类读取用户输入,然后System.out.println()输出信息。同时,需要建立几个类:

  • abstract class Toy # 适用所有玩具的抽象类,包含玩具名称玩具重量玩具属性日租金四个属性,以及计算租金的抽象方法。
  • class Puppet extends Toy # 布艺类玩具,继承Toy类,重写计算租金方法。
  • class EToy extends Toy # 电动类玩具,继承Toy类,重写计算租金方法。

在main()方法中实例化这些类的对象,然后根据用户输入的信息,选择适合的玩具,以及计算租金。

源代码

为了方便,把所有的类都写在了Main.java中。Main.java文件的全部代码如下:

package cn.minimal.ComputerManage;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Puppet p1 = new Puppet("洋娃娃", 2, "1岁以上", 10);
        Puppet p2 = new Puppet("毛绒狗", 3, "2岁以上", 15);
        Puppet p3 = new Puppet("玩具沙发", 5, "4岁以上", 20);
        EToy e1 = new EToy("电动车", 7, "八成新", 50);
        EToy e2 = new EToy("电动船", 9, "六成新", 60);
        Toy[] toys = new Toy[5];
        toys[0] = p1; toys[1] = p2; toys[2] = p3;
        toys[3] = e1; toys[4] = e2;
        while(true) {
            System.out.println("********欢迎光临奕昊玩具公司********");
            System.out.println("1. 布艺类, 2. 电动类");
            System.out.print("请选择您需要的玩具类型:");
            int toyType = scanner.nextInt();
            if (toyType == 1) {
                System.out.print("请选择您的孩子年龄:1. 1岁, 2. 2岁, 3. 3岁, 4. 4岁以上 ");
            } else if (toyType == 2) {
                System.out.print("请选择您需要的玩具的新旧程度:1. 六成新, 2. 八成新 ");
            } else if (toyType == -1) {
                break;
            } else {
                System.out.print("玩具类型选择错误!");
                continue;
            }
            int Years = scanner.nextInt();
            if (toyType == 1) {
                if (Years < 1 || Years > 4) {
                    System.out.print("玩具属性选择错误!");
                    continue;
                }
            }
            else {
                if (Years < 1 || Years > 2) {
                    System.out.print("玩具属性选择错误!");
                    continue;
                }
            }
            System.out.print("请输入您要租赁的天数:");
            int days = scanner.nextInt();
            if(days <= 0) {
                System.out.print("租赁天数输入错误!");
                continue;
            }
            String t = getToy(toys, toyType, Years);
            double q = getRents(toys, t, days);
            System.out.println("适合您孩子的玩具为:" + t);
            System.out.println("您需要支付的费用是:" + q);
        }
    }
    public static String getToy(Toy[] toys, int toyType, int Years) {
        if (toyType == 1) {
            // 把用户输入的选项转换成玩具id
            int tid = Years - 1;
            if (Years > 2) { tid--; }
            return toys[tid].name;
        } else if (toyType == 2) {
            // 把用户输入的选项转换成玩具id
            int tid = Years;
            if (Years == 2) { tid = 0; }
            tid += 3;
            return toys[tid].name;
        }
        return "";
    }
    public static double getRents(Toy[] toys, String name, int days) {
        for(Toy t : toys) {
            if(t.name.equals(name)) {
                return t.getMoney(days);
            }
        }
        return 0;
    }
}
abstract class Toy {
    String name;
    int weight;
    String type;
    double rent;
    public Toy(String name, int weight, String type, double rent) {
        this.name = name;
        this.weight = weight;
        this.type = type;
        this.rent = rent;
    }
    public abstract double getMoney(int days);
}
class Puppet extends Toy {
    public Puppet(String name, int weight, String type, double rent) {
        super(name, weight, type, rent);
    }
    public double getMoney(int days) {
        if(days >= 8 && days <= 60) {
            return this.rent * days * 0.9;
        }
        else if (days > 60) {
            return this.rent * days * 0.8;
        }
        else if (days < 8 && days > 0) {
            return this.rent * days;
        }
        else {
            return -1;
        }
    }
}
class EToy extends Toy {
    public EToy(String name, int weight, String type, double rent) {
        super(name, weight, type, rent);
    }
    public double getMoney(int days) {
        if(days >= 30 && days <= 60) {
            return this.rent * days * 0.8;
        }
        else if (days > 60) {
            return this.rent * days * 0.7;
        }
        else if (days < 30 && days > 0) {
            return this.rent * days;
        }
        else {
            return -1;
        }
    }
}

在IDE中运行代码

找到Main.java文件中main子程序左边的绿色箭头,点击即可运行代码,如图所示
《极简Java》学习实践二:玩具租赁系统

参考资料

  1. 夏昊 编著. 极简Java. 中国水利水电出版社. 2021.6
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下唐人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值