题目:16版.书籍借阅

1、实验要求

    本实验要求:根据书籍借阅的天数计算归还日期。

    1-1. 业务说明:

        1-1.1. 本实验以图书馆借阅书籍为业务背景。

        1-1.2. 图书馆书籍归还时间规定如下:

                1)任何书籍自借阅日起,15天内必须归还(标准极限时间)。

                2)用户也可以明确告知图书馆书籍的归还日期,例如:10天后归还。

                3)用户自定义的书籍归还日期,不能超过图书馆规定的极限时间:15天。

    1-2. 创建工程并配置环境:

        1-2.1. 限制1. 工程取名:SE_JAVA_EXP_E025。

        1-2.2. 限制2. 创建包,取名:cn.campsg.java.experiment。

    1-3. 创建工具类:

        1-3.1. 限制1. 在包cn.campsg.java.experiment下创建工具类:DateUtils。

  + 业务说明

  1) 工具类是系统开发中常见的组件,它用于提供各种计算函数。

  2) 为方便在实际生产环境中调用,工具类内的计算函数均为静态函数。

        1-3.2. 技术常识:本实验需确保工具类DateUtils不可被继承。

        1-3.3. 技术常识:本实验需确保工具类DateUtils不可被实例化。

    1-4. 创建归还日期计算函数:

        1-4.1. 限制1. 函数名:getReturnDate。

        1-4.2. 该函数以系统时间为基准,按用户自定义的归还日期计算书籍的归还日。

        1-4.3. 书籍归还日期虽可以由用户自定义,但是不能超过15天。

    1-5. 创建标准归还日期计算函数:

        1-5.1. 限制1. 函数名:getReturnDate。

        1-5.2. 限制2:该函数必须定义成函数重载形式。

        1-5.3. 该函数以系统时间为基准,计算图书馆规定的书籍极限归还日期(15天)。

    1-6. 使用工具类:

        1-6.1. 限制1. 在包cn.campsg.java.experiment下创建主类:MainClass。

        1-6.2. 调用标准归还日期计算函数,获得书籍的极限归还日期。

        1-6.3. 向控制台输出:"图书馆规定最晚归还日期:" + 书籍的极限归还日期。

        1-6.4. 调用归还日期计算函数,按用户输入的归还日期获得书籍归还日。

                1)如函数返回null,输出:"借阅时间过长"

                2)否则,输出:"书籍实际归还日期:" + 书籍归还日。

2、实现思路

    2-1. 按实验要求创建工程并配置环境。

    2-2. 创建工具类:

        2-2.1. 在包cn.campsg.java.experiment下创建工具类:DateUtils。

        2-2.2. 在DateUtils的类定义处增加final关键字,防止被其他类继承。

        2-2.3. 为DateUtils增加私有的0参构造函数,防止被实例化。

    2-3. 创建归还日期计算函数:

        2-3.1. 定义并实现归还日期计算函数,形式如下:

  + 提示

  /**

   * 根据自定义借阅天数计算书籍归还日期。

  * @param divDate 借阅天数

  * @return 书籍归还日期,null:借阅天数无效

   */

  public static String getReturnDate(int divDate) {

  }

        2-3.2. 在DateUtils类中,定义极限归还日常量:STANDARD_RET_DATE。

        2-3.3. 为常量赋值15。

  + 提示

  /* 图书馆规定的标准书籍借阅归还日期 */

  public static final int STANDARD_RET_DATE = 15;

        2-3.4. 判断用户自定义的归还日期是否有效:

                1) 如果参数divDate大于极限归还日常量,那么函数返回null。

        2-3.5. 计算归还日期:

                1)获取当前系统时间:实例化java.util.Date对象。

                2)通过getTime()方法将系统时间转换为毫秒。

                3)将用户自定义的归还天数(divDate)转换成毫秒:

                divDate * 24 * 60 * 60 * 1000(天 * 小时 * 分钟 * 秒钟 * 毫秒)

                4)实际归还日期 = 系统毫秒时间 + 用户自定义归还日毫秒时间。

        2-3.6. 格式化日期:

                1)再次实例化java.util.Date对象,对象参数为:实际归还日期。

                2)创建格式化日期类的对象SimpleDateFormat。

                3)传入日期格式:yyyy-MM-dd(y代表年,M代表月,d代表天)。

                4)返回格式化为String类型的日期。

    2-4. 创建标准归还日期计算函数:

        2-4.1. 定义并实现标准归还日期计算函数(重载函数),形式如下:

  + 提示

  /**

   * 根据图书馆规定的标准借阅天数计算书籍归还日期。

   * @return 书籍归还日期

   */

  public static String getReturnDate() {

  }

        2-4.2. 调用上一步骤中实现的:归还日期计算函数。

        2-4.3. 参数传入:STANDARD_RET_DATE(15天)。

        2-4.4. 返回日期。

  + 业务说明

  1) 定义重载函数的目的在于:确保相同名称的函数具有不同的特性,通过参数个数与类型的差异性实现不同的业务需求。

  2) 本实验,1参函数允许用户自定义归还日,0参函数则直接返回图书馆规定的归还日期。

  3) 本实验巧妙地实现了重载函数之间的相互调用,确保函数代码的最高维护性。

    2-5. 使用工具类:

        2-5.1. 在包cn.campsg.java.experiment下创建MainClass类。

        2-5.2. 在MainClass类中添加函数主入口(main函数)。

        2-5.3. 调用0参getReturnDate函数,获得书籍的极限归还日期。

        2-5.4. 向控制台输出:"图书馆规定最晚归还日期:" + 书籍的极限归还日期。

        2-5.5. 调用1参getReturnDate函数,参数输入10,获得书籍的归还日期。

        2-5.6. 根据返回做出如下判断:

                1)如函数返回null,输出:"借阅时间过长"

                2)否则,输出:"书籍实际归还日期:" + 书籍归还日。

package cn.campsg.java.experiment;

import java.text.SimpleDateFormat;
import java.util.*;

public final class DateUtils {	// 防止被其他类继承
    // 定义图书馆规定的标准书籍借阅归还日期常量
    public static final int STANDARD_RET_DATE = 15;

    private DateUtils() {	// 防止被实例化
        super();
    }

    // 根据自定义借阅天数计算书籍归还日期
    public static String getReturnDate(int divDate) {
        if (divDate > STANDARD_RET_DATE)
            return null;
        else {
            Date date = new Date();
            SimpleDateFormat returnDate = new SimpleDateFormat("yyyy-MM-dd");
            return returnDate.format(date.getTime() + divDate * 24 * 60 * 60 * 1000);
        }
    }

    // 根据图书馆规定的标准借阅天数计算书籍归还日期
    public static String getReturnDate() {
        return getReturnDate(STANDARD_RET_DATE);
    }
}
package cn.campsg.java.experiment;

public class MainClass {

    public static void main(String[] args) {
        System.out.println("图书馆规定最晚归还日期:" + DateUtils.getReturnDate());
        if (DateUtils.getReturnDate(10) != null) // 测试借阅天数10
            System.out.println("书籍实际归还日期:" + DateUtils.getReturnDate(10));
        else
            System.out.println("借阅时间过长");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

板砖拍在墙上

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

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

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

打赏作者

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

抵扣说明:

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

余额充值