[关闭]
@zhongjianxin 2019-10-11T08:45:25.000000Z 字数 2869 阅读 1095

[Day1] - 模拟练习 - 羽毛球馆

AFS-HW-Java


题目要求

  1. 请在现有代码的基础上实现以下需求;
  2. 输入和输出必须和题目的要求严格一致;
  3. 我们将按照实现的需求点打分,每部分可能存在多个需求点;以下每个 Part 标注的总分,均指需求点总分;
  4. 除需求外,我们也会考虑代码的可读性、可拓展性并酌情打分;
  5. 总评分由两个部分组成:上述第 3 点为需求点得分,占总分的 80%;上述第 4 点为代码质量分,占总分的 20%;

已有代码介绍:

  1. HelloWorld HelloWorldTest 以及 Dependency 文件是样例文件,用来验证工程和测试可以正常运行。
  2. BadmintonDataLoader 文件是“羽毛球馆系统”需求中所需要的数据。
  3. ReplyCommand 文件是实现需求的文件,可以根据需要自行添加其他文件。

背景介绍

小明是一个羽毛球馆的管理员,手里面管着四个羽毛球场地,负责羽毛球场地的维护和预定工作。
小明为了简化自己的工作,只接受整点预定,一次预定以一小时为单位。
羽毛球场的收费标准如下:

  1. 周一到周五:

    • 9:00 ~ 12:00 30 元/时
    • 12:00 ~ 18:00 50 元/时
    • 18:00 ~ 20:00 80 元/时
    • 20:00 ~ 22:00 60 元/时
  2. 周六及周日

    • 9:00 ~ 12:00 40 元/时
    • 12:00 ~ 18:00 50 元/时
    • 18:00 ~ 22:00 60 元/时

取消预订的标准如下:

小明每天早晨 9 点上班,晚上 10 点下班,还要接电话预定,非常辛苦。他决定设计一个名为“羽毛球场管理系统”的程序把看场地的工作自动化起来。靠监控器来看场地,靠程序来接受预定和计算每周的收入。

需求描述

Part A (总计 40 分)

首先,“羽毛球场管理系统”需要提供“询价”服务,当用户输入"How much?"的时候,系统应返回如下信息:

  1. ********Price********
  2. Welcome to badminton
  3. -------Workday-------
  4. 9:00~12:00 30 yuan/h
  5. 12:00~18:00 50 yuan/h
  6. 18:00~20:00 80 yuan/h
  7. 20:00~22:00 60 yuan/h
  8. -------Weekend-------
  9. 9:00~12:00 40 yuan/h
  10. 12:00~18:00 50 yuan/h
  11. 18:00~22:00 60 yuan/h
  12. **Have a good day !**

注意!价目表会实时变动,我们在文件 BadmintonDataLoader 中提供了函数 LoadWorkdayPriceList()和函数 LoadWeekendPriceList(),用来分别提供工作日和周末的价目表,当我修改价目表时程序仍需能正常工作。

需求点/得分点

  1. (5 分)能正确输出第一行、第二行和最后一行,如:
  1. ********Price********
  2. Welcome to badminton
  3. **Have a good day !**
  1. (15 分)能正确输出 workday 部分,如:
  1. -------Workday-------
  2. 9:00~12:00 30 yuan/h
  3. 12:00~18:00 50 yuan/h
  4. 18:00~20:00 80 yuan/h
  5. 20:00~22:00 60 yuan/h
  1. (10 分)能正确输出 weekend 部分,如:
  1. -------Weekend-------
  2. 9:00~12:00 40 yuan/h
  3. 12:00~18:00 50 yuan/h
  4. 18:00~22:00 60 yuan/h
  1. (10 分)能按正确的顺序打印以上三个部分

Part B (总计 60 分)

同时系统需要提供预定场地的功能,当用户想预定场地时,需要告知系统用户 ID、时间,以及场地号,因此用户向系统输入的格式为:Book {用户ID} {yyyy-MM-dd HH:mm~HH:mm} {场地编号}

例如:
用户 0001 想预定 3 号场地,且时间为:2019 年 12 月 1 号 14:00 到 15:00 时,用户需要向系统输入以下信息:

  1. Book 0001 2019-12-01 14:00~15:00 3

如果场地预定成功,那么系统会返回预定成功的提示以及所需费用。
例如:

  1. Success! You can use the No.3 court during 2019-12-11 14:00~15:00.

为了保证系统正常运行,以下情况将会预定失败:

如果不幸预定失败,那么系统会返回失败提示:

  1. Sorry! Something wrong, please call the manager!

需求点/得分点

  1. (5 分) 假设预定成功,程序能打印出关键信息点:“success”, 场地编号, 预定的时间区间. 例如:
  1. Success! 3 2019/12/11 14 - 15
  1. (15 分) 可以成功预定且程序打印出来的信息完全正确。

  2. (6 分) 当预定时间不是整小时时,系统会返回失败提示。

  3. (12 分) 当指定场地在该时间段(部分或全部)已经被预定了时,系统会返回失败提示。

  4. (6 分) 当预定结束时间早于开始时间,如:15:00 ~ 14:00时,系统会返回失败提示。

  5. (6 分) 当预定的开始时间早于 9:00,如:8:00 ~ 10:00时,系统会返回失败提示。

  6. (6 分) 当预定的结束时间晚于 22:00,如:20:00 ~ 23:00时,系统会返回失败提示。

Part C (附加题,总分 50 分)

为了方便客户,系统还需提供取消预定的功能,当用户想取消预定时,也需要告知系统用户 ID、时间,以及场地号,相应的,用户向系统输入的格式为:Cancel {用户ID} {yyyy-MM-dd HH:mm~HH:mm} {场地编号}

例如:

  1. Cancel 0001 2019-12-11 14:00~15:00 3

如果取消成功,那么系统会返回成功的提示:

  1. Cancel Success! Look forward to your next visit

假如取消的时候产生了违约金,系统返回的提示将变为:

  1. Cancel Success! You need pay 25 yuan as penalty. Look forward to your next visit

以下情况将会取消失败:

当取消预定失败时,系统会返回失败提示:

  1. Sorry! Something wrong, please try again!

需求点/得分点

  1. (15 分) 可以取消成功,且不论是否产生违约金,程序能打印出:
  1. Cancel Success! Look forward to your next visit
  1. (15 分)可以取消成功,且产生了违约金,程序打印出来的信息完全正确。

  2. (10 分)当预定时间不是整小时时,系统会返回失败提示。

  3. (10 分)当用户并没有预定指定场地的指定时间段(必须和预定时间段完全一致)时,系统会返回失败提示。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注