# badminton-court **Repository Path**: twa-java-bootcamp/badminton-court ## Basic Information - **Project Name**: badminton-court - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-10-10 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 羽毛球馆 ## 题目要求 1. 请在现有代码的基础上实现以下需求; 2. 输入和输出必须和题目的要求严格一致; 3. 我们将按照实现的需求点打分,每部分可能存在多个需求点;以下每个 Part 标注的总分,均指需求点总分; 4. 除需求外,我们也会考虑代码的可读性、可拓展性并酌情打分; 5. 总评分由两个部分组成:上述第 3 点为需求点得分,占总分的 80%;上述第 4 点为代码质量分,占总分的 20%; ## 已有代码介绍: 1. HelloWorld HelloWorldTest 以及 Dependency 文件是样例文件,用来验证工程和测试可以正常运行,这两个文件可以删除。 2. BadmintonDataLoader 文件是“羽毛球馆系统”需求中所需要的数据,不可以删除。 ## 背景介绍 小明是一个羽毛球馆的管理员,手里面管着四个羽毛球场地,负责羽毛球场地的维护和预定工作。 小明为了简化自己的工作,只接受整点预定,一次预定以一小时为单位。 羽毛球场的收费标准如下: 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 元/时 取消预订的标准如下: - 周一到周五提前 48 小时取消预订不收费 - 48 小时之内取消预订要收取 50%的违约金 - 周六周日提前 24 小时取消不收费 - 24 小时之内只收取 25%的违约金 小明每天早晨 9 点上班,晚上 10 点下班,还要接电话预定,非常辛苦。他决定设计一个名为“羽毛球场管理系统”的程序把看场地的工作自动化起来。靠监控器来看场地,靠程序来接受预定和计算每周的收入。 ## 需求描述 ### Part A (总计 40 分) 首先,“羽毛球场管理系统”需要提供“询价”服务,当用户输入"How much?"的时候,系统应返回如下信息: ``` ********Price******** Welcome to badminton -------Workday------- 9:00~12:00 30 yuan/h 12:00~18:00 50 yuan/h 18:00~20:00 80 yuan/h 20:00~22:00 60 yuan/h -------Weekend------- 9:00~12:00 40 yuan/h 12:00~18:00 50 yuan/h 18:00~22:00 60 yuan/h **Have a good day !** ``` 注意!价目表会实时变动,我们在文件 BadmintonDataLoader 中提供了函数 LoadWorkdayPriceList()和函数 LoadWeekendPriceList(),用来分别提供工作日和周末的价目表,当我修改价目表时程序仍需能正常工作。 #### 需求点/得分点 1. (5 分)能正确输出第一行、第二行和最后一行,如: ``` ********Price******** Welcome to badminton **Have a good day !** ``` 2. (15 分)能正确输出 workday 部分,如: ``` -------Workday------- 9:00~12:00 30 yuan/h 12:00~18:00 50 yuan/h 18:00~20:00 80 yuan/h 20:00~22:00 60 yuan/h ``` 3. (10 分)能正确输出 weekend 部分,如: ``` -------Weekend------- 9:00~12:00 40 yuan/h 12:00~18:00 50 yuan/h 18:00~22:00 60 yuan/h ``` 4. (10 分)能按正确的顺序打印以上三个部分 ### Part B (总计 60 分) 同时系统需要提供预定场地的功能,当用户想预定场地时,需要告知系统用户 ID、时间,以及场地号,因此用户向系统输入的格式为:`Book {用户ID} {yyyy-MM-dd HH:mm~HH:mm} {场地编号}` 例如: 用户 0001 想预定 3 号场地,且时间为:2019 年 12 月 1 号 14:00 到 15:00 时,用户需要向系统输入以下信息: ```text Book 0001 2019-12-01 14:00~15:00 3 ``` 如果场地预定成功,那么系统会返回预定成功的提示。 例如: ```text Success! You can use the No.3 court during 2019-12-11 14:00~15:00. ``` 为了保证系统正常运行,以下情况将会预定失败: - 预定时间不是整小时 - 指定场地在该时间段(部分或全部)已经被预定了 - 预定结束时间早于开始时间,如:15:00 ~ 14:00 - 预定的开始时间早于 9:00,如:8:00 ~ 10:00 - 预定的结束时间晚于 22:00,如:20:00 ~ 23:00 如果不幸预定失败,那么系统会返回失败提示: ```text Sorry! Something wrong, please call the manager! ``` #### 需求点/得分点 1. (5 分) 假设预定成功,程序能打印出关键信息点:“success”, 场地编号, 预定的时间区间. 例如: ```text Success! 3 2019/12/11 14 - 15 ``` 2. (15 分) 可以成功预定且程序打印出来的信息完全正确。 3. (6 分) 当`预定时间不是整小时`时,系统会返回失败提示。 4. (16 分) 当`指定场地在该时间段(部分或全部)已经被预定了`时,系统会返回失败提示。 5. (6 分) 当`预定结束时间早于开始时间,如:15:00 ~ 14:00`时,系统会返回失败提示。 6. (6 分) 当`预定的开始时间早于 9:00,如:8:00 ~ 10:00`时,系统会返回失败提示。 7. (6 分) 当`预定的结束时间晚于 22:00,如:20:00 ~ 23:00`时,系统会返回失败提示。 ### Part C (附加题,总分 50 分) 为了方便客户,系统还需提供取消预定的功能,当用户想取消预定时,也需要告知系统用户 ID、时间,以及场地号,相应的,用户向系统输入的格式为:`Cancel {用户ID} {yyyy-MM-dd HH:mm~HH:mm} {场地编号}`, 例如: ```text Cancel 0001 2019-12-11 14:00~15:00 3 ``` 如果取消成功,那么系统会返回成功的提示: ```text Cancel Success! Look forward to your next visit! ``` 假如取消的时候产生了违约金,系统返回的提示将变为: ```text Cancel Success! You need pay 25 yuan as penalty. Look forward to your next visit! ``` 以下情况将会取消失败: - 取消预定时间不是整小时 - 用户并没有预定指定场地的指定时间段(必须和预定时间段完全一致) 当取消预定失败时,系统会返回失败提示: ```text Sorry! Something wrong, please try again! ``` #### 需求点/得分点 1. (15 分) 可以取消成功,且不论是否产生违约金,程序能打印出: ```text Cancel Success! Look forward to your next visit! ``` 2. (15 分)可以取消成功,且产生了违约金,程序打印出来的信息完全正确。 3. (10 分)当`预定时间不是整小时`时,系统会返回失败提示。 4. (10 分)当`用户并没有预定指定场地的指定时间段(必须和预定时间段完全一致)`时,系统会返回失败提示。