我有一个设计在线预订系统的任务.
用户可以输入邮政编码/没有人/预约时间并获得餐馆列表.假设(用户和餐厅总是在同一个城市)
每个餐厅可以有多个座位数不同的桌子.因此,2个桌子可以容纳4个人,4个桌子可容纳4个人.
我无法想出正确的数据结构.
我的课程如下
餐厅:包含timeofopening,timeOfClosing,totalNoOfSeatsAvailable
不知道我将如何在餐厅内存储餐桌信息.为表创建一个单独的类是没有意义的.我需要的所有信息是如何免费提供许多表格以及它们的尺寸.
预订:维持实际预订并允许取消预订
预订系统:
包含`List checkAvailability(long time,int people)’的接口
这将如何归还此列表?我最初想过使用priorityQueue来维护一个最多没有座位的队列.但是接下来我将通过该列表查看即使进行预订的时间是否正确,然后一旦进行预订,请更新此队列.一个问题是队列完全重复.
我的具体问题是:
>如何在每个餐厅内存储餐桌信息.
>维护这些餐馆列表的最佳方法是什么,这样我就可以返回列表而无需每次都对这些信息进行排序.
编辑:
有关如何存储表信息的问题.我特别关注的是
存储表类意味着我正在创建不必要的对象.这是我的推理. 5个桌子,每个座位2个人拥有完全相同的对象 – 我的意思是没有任何有意义的信息会在它们之间产生差异.我只需要数字.没有座位/桌子.(如果我有一张4人但3人的桌子,我会考虑这张桌子)
我想过创建3个数组.让我们说表代表1,2等所以int [] differentSeatingOnTable;它的索引是表格,值是允许的座位.接下来是一个包含totalNoOfThosetable的表数组,其中索引是表,值是这样的表的总数.类似于自由表freeTables,其中索引是表,剩下多少这样的空闲表.
解决方法:
1.)如果您只是存放餐厅的座位数量,那么您就是在脚下拍摄自己.假设我需要为16个人预订,他们都必须在同一张桌子上(是的,我需要一张很长的桌子).你的系统可以把我的客人送到他们必须坐在8张桌子里的地方,每人两个人.
你需要一个表类.然后你的餐馆需要有桌子的集合.如果你想知道你在餐馆里有多少座位,你只需要遍历它的桌子集合并计算座位数.如果你想知道你是否可以把一个家庭坐在餐厅的单人餐桌上,你只需要检查它是否有任何有这么多席位的桌子.
编辑:有一个更简约的方式来存储每个餐厅的座位.使用字典,哈希表或任何其他包含键和关联值的结构.所以让密钥代表一种表格.键可以是一个整数,表示该表所占的人数.该值是餐馆中存在的该类型的表的数量.我认为这比我原来的建议更好.
所以,例如,一个有这种哈希表的餐馆:
Key | Value
4 | 5
2 | 8
16 | 1
有五个桌子,每个有4个座位,8个桌子,每个有2个座位,还有一个可容纳16人的长桌子.
(还使用表来存储表是如此元).
2.)您的推理适合预订.如果它正在重复,你应该发布一个更具体的问题,显示你是如何做到这一点,所以我们可以尝试帮助你找到错误.
标签:java,oop,data-structures,object-oriented-analysis
来源: https://codeday.me/bug/20190529/1177118.html