链接:
https://www.nowcoder.com/questionTerminal/4c3d325a70fd4fb4909e2fe1c42fba71?toCommentId=1352361
来源:牛客网
来源:牛客网
小明是一个羽毛球场馆的管理员,管理着四个羽毛球场地(A,B,C,D场地),负责场地的维护和预订工作。为了简化自己的工作,场地只接受整点预订,预订以小时为单位。
羽毛球场的收费标准如下:
- 周一到周五:
- 9:00 ~ 12:00 30元/时
- 12:00 ~ 18:00 50元/时
- 18:00 ~ 20:00 80元/时
- 20:00 ~ 22:00 60元/时
- 周六及周日
- 9:00 ~ 12:00 40元/时
- 12:00 ~ 18:00 50元/时
- 18:00 ~ 22:00 60元/时
羽毛球场馆在预订之后,可以接受取消预订,不过取消预订需要交违约金,违约金的计算规则如下:
- 周一到周五的预订取消收取全部费用的50%作为违约金
- 周六周日的预订取消收取全部费用的25%作为违约金
由于手头还有其他工作,小明希望能够借助计算机程序来自动化处理预订及取消预订的事务,并且希望程序能够打印出场馆的收入汇总情况。
程序输入
预订:用户预订以字符串的形式输入,一行字符串代表一个预定
- 格式为{用户ID} {预订日期 yyyy-MM-dd} {预订时间段 HH:mm~HH:mm} {场地},如U123 2016-06-02 20:00~22:00 A,代表用户U123预定2016年06月02日晚上20:00到22:00的场地A的时间段
- 时间段的起止时间必然为整小时,否则报错
- 如预订与已有预订冲突,也会报错
取消预定:用户取消预定,输入也以一行字符串的形式表现
- 格式为{用户ID} {预订日期 yyyy-MM-dd} {预订时间段 HH:mm~HH:mm} {场地} {取消标记},如U123 2016-06-02 20:00~22:00 A C,代表用户U123取消其在2016年06月02日晚上20:00到22:00在场地A的预订,其中取消标记C代表Cancel
- 取消标记只能是C,若为其他字符则报错
- 时间段的起止时间必然为整小时,否则报错
- 只能完整取消之前的预订,不能取消部分时间段
- 取消预订的请求,必须与之前的预订请求严格匹配,需要匹配的项有用户ID,预订日期,预订时间段,场地
打印场馆收入汇总: 将所有的预订和取消预订带来的收入汇总信息打印出来
- 格式为,输入一个空行,代表打印收入汇总
程序输出
收入汇总:以文本的形式输出当前系统所有预订以及取消预订所带来的收入情况,以不同的场地分组,一个可能的输出如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
收入汇总
---
场地:A
2016
-
06
-
02
09
:
00
~
10
:
00
违约金
15
元
2016
-
06
-
02
10
:
00
~
12
:
00
60
元
2016
-
06
-
03
20
:
00
~
22
:
00
120
元
小计:
195
元
场地:B
2016
-
06
-
04
09
:
00
~
10
:
00
40
元
小计:
40
元
场地:C
小计:
0
元
场地:D
小计:
0
元
---
总计:
235
元
|
注意:
- 如果同一场地同一时间段有多条预定记录,则显示多条
- 收入记录以时间顺序升序排列
测试用例1
注意:>开头表示命令行输出,以下测试用例都遵循此例
1
2
3
4
5
6
7
8
|