期末考试中至少有一个问题会要求你用几个简单的类写一个程序。这周实验练习中的问题是本课程之前的期末考试问题。
当地一家旅馆雇用你编写一个程序来管理他们的会议室预订。酒店拥有一套会议室,其名称和容量如下:
房间的名字 | 能力 |
---|---|
大宴会厅 | 50 |
奥奈达市的房间 | 30 |
密歇根的房间 | 20 |
曼德特的房间 | 20 |
朝阳的房间 | 12 |
酒店每天都要为这些会议室预订房间。此流程的输入是一个请求列表,按照请求到达的顺序列出。每个请求采用以下形式:
<请求号码> <客户号码> <群组大小> <开始时间> <持续时间>
事件的开始时间为整小时,采用24小时制。例如,从下午3点开始的事件将被列为从第15小时开始。下面是对这些行项目的更详细的描述。
项 | 描述 |
---|---|
请求数 | 分配给请求整数的唯一标识号 |
客户编号 | 分配给客户的唯一识别码-整数 |
组的大小 | 组内人数-整数 |
开始时间 | 事件的开始时间,24小时格式-整型 |
持续时间 | 以小时为单位的事件持续时间-整数 |
该程序将读取一个文本文件,其中包含给定日期的这些请求的列表,并为当天的房间构造一个事件时间表。请求按先到先得的顺序处理。在每一种情况下,程序都应该尽量把小组安排在能够容纳小组的最小可用房间里。如果给定的请求没有可用的空间,程序应该打印一条错误消息,指出请求 <请求号> 不能被安排。在对赢博体育请求进行调度之后,程序应该打印当天的事件调度。日程安排将按房间组织,并将显示按开始时间增加顺序排列的每个房间安排的活动列表。 请求号>
您的程序应该使用三个类,一个表示会议室集合的Hotel类,一个表示会议室的Room类,以及一个表示在会议室中安排的事件的Event类。房间对象应该有名称和容量,并且应该包含事件列表。事件应该具有请求号、客户号、组大小、开始时间和持续时间。Room类应该包含一个方法
公共布尔canSchedule(事件)
如果房间可以容纳特定的事件,则返回true。Event类应该有一个方法
公共布尔交集(事件其他)
如果给定的事件与事件对象other在时间上重叠,则返回true。Hotel类应该包含一个实现调度程序的主方法。
这里有一个测试数据文件供您使用。给定以下输入文件
6027 65 33 19 4 6028 5 29日16 4 6029 95 6031 8 5 6030 39 26 16 3 25 6 20 3 6032 68 24 7 6 6033 43 5 5 6035 90 11 6037 3 6036 56 8 9 14 18 4 6038 36 23 9 2 6040 6041年27日27日15 2 25 38 15 2 6042 85 10 8 4 6043 33 21 7 1 6044 68 22 9 1 6045 69 18 14 2 13 6047 27日31日17 6046 59 6049 6048 89 13 13 1 2 28 12 2 6050 9 30 15 3
你的程序应该产生这样的输出:
无法安排活动号6037无法安排活动号6040无法安排活动号6041无法安排活动号6044无法安排活动号6047无法安排活动号6050日出房:6042:8-12 6033:15-20 6031:20-23门多塔房:6029:8-13 6048:13-14 6045:14-16 6035:20-23密西根房:6046:13-18 6036:20-23奥尼达房:6032:7-13 6028:16-20大宴会厅:6043:7-8 6038:9-11 6049:12-14 6030:16-19 6027:19-23