12r*_*rad 4 java oop object-oriented-analysis data-structures
我的任务是设计一个在线预订系统。用户可以在其中输入邮政编码/人数/预订时间并获得餐厅列表。假设(用户和餐厅始终在同一城市)
每个餐厅可以有多个座位不同的桌子。因此,可容纳4人的2张桌子和可容纳4人的4张桌子。
我在使用正确的数据结构时遇到了麻烦。
我的课如下
餐厅:包含timeofopening,timeOfClosing,totalNoOfSeatsAvailable不确定我如何在餐厅内存储表格信息。为表拥有一个单独的类没有任何意义。我需要的所有信息就是howMantables是免费的,它们的大小是多少。
保留:保留实际的保留并允许取消保留
ReservationSystem:包含“列表checkAvailability(长期,国际人士)”的接口,这将如何返回此列表?最初,我想到了使用priorityQueue来维护一个队列,该队列的席位数量最多。但是然后我将遍历该列表以查看时间是否正确,甚至进行保留,然后一旦进行保留,请更新此队列。一个问题是队列执行所有重复操作。
我的具体问题是:
编辑:关于如何存储表信息的问题。我特别担心的是,存储表类将意味着我正在创建不必要的对象。这是我的理由。可容纳2个人的5张桌子具有完全相同的对象-我的意思是,它们之间没有任何有意义的信息是不同的。我只需要数字。座位数/桌子数(如果我有4桌但3 peole的桌子,我会考虑使用这张桌子)
我想到创建3个数组。假设表格代表1,2等,所以int [] differentSeatingOnTable; 它的索引是表,值是允许的座位。接下来是具有totalNoOfThosetable的表数组,其中索引是表,值是该表的总数。空闲表的相似之处freeTables的索引是表,剩余多少个空闲表。
1.)如果仅在餐厅中存储一定数量的座位,那么您就在朝着自己的脚射击。假设我需要预订16个人,而且他们都必须在同一张桌子上(是的,我需要一张很长的桌子)。您的系统可以将我的客人带到某个地方,他们必须坐在8张桌子中,每人两个人。
您确实需要一个表类。然后,您的餐厅需要收集桌子。如果您想知道一家餐厅有多少个座位,您只需遍历其餐桌集合并计算座位数即可。而且,如果您想知道是否可以在一家餐厅的一张桌子上坐下一个家庭,则只需检查它是否有可容纳这些座位的桌子。
编辑:有一种更简约的方法来存储每个餐厅的座位。使用字典,哈希表或任何其他包含键和关联值的结构。因此,具有代表表类型的键。键可以是一个整数,表示桌子可容纳多少人。该值是餐厅中存在的该类型表的数量。我认为这比我最初的建议要好。
因此,例如,一家具有此类哈希表的餐厅:
Key | Value
4 | 5
2 | 8
16 | 1
Run Code Online (Sandbox Code Playgroud)
有五个桌子,每个桌子有4个席位,有8个桌子,每个都有2个席位,还有一个可容纳16人的长桌。(也使用表存储表是如此元)。
2.)您的推理对保留是正确的。如果重复,您应该发布一个更具体的问题,说明您的操作方式,以便我们尝试帮助您查找错误。