java - 如何在不同的旅程日期预订单个巴士对象
问题描述
好的,伙计们,我正在自己做一个公共汽车预订项目。让我给你一个关于我想要做什么的基本概念。
考虑我有一个名为“总线”的总线对象。它基本上有三种方法:
class Bus{
String date;
String seat;
int id;
public void BookSeats(String seat){
this.seat=seat
//code goes for booking seats
} ;
public void journeyDate(String date){
this.date=date
}
public void id(int id){
this.id=id;
}
}
一个月有三十天,公司只有三辆公交车。所以会有三个总线对象。这些将是:
Bus A =new Bus ( );
Bus B =new Bus ( );
Bus C= new Bus ( );
因此,如果名为 user1 的用户现在在 2019 年 10 月 25 日 (dd/MM/YYYY) 预订 ID 为 1 的巴士 A 的名为“A1”的座位,则代码应为:
A.BookSeats("A1");
A.journeyDate("25/10/2019");
A.id (1);
并且座位 A1 已被预订。
现在困扰我的是,假设一个名为 user2 的用户现在想要在 2019 年 10 月 26 日预订 ID 为 1 的 Bus A 的名为“A1”的座位,那么此代码将不可能,因为它是相同的 Bus A 对象和座位 A1已预订 2019 年 10 月 25 日,但不应预订 2019 年 10 月 26 日
A.BookSeats("A1");
A.journeyDate("26/10/2019");//same bus A object but different
date.
A.id(1);// same id
因此,作为解决这个问题的一种方法,我想在一个月的 30 天中创建 30 个总线对象,并使用 30 个与其日期相关联的唯一 ID。但这对我来说是一个非常糟糕的方法。由于公司有3辆公共汽车。那么我可以尝试什么其他方法或我缺少其他概念来解决上述问题。
解决方案
这将是一个非常通用的答案,但我觉得它需要更多的空间和格式而不是评论。本质上,您不想使用您class Bus
来管理座位,您Bus
应该只用于管理特定时间的公共汽车正在发生的事情。例如:
- 编号/板
- 公共汽车上的座位(一旦预定)
- 离开
- 到达
- 司机
- ETC
出于调度的目的,您希望有一个class Reservation
应该包含有关特定日期公共汽车将要运行的所有信息的信息,例如:
- 日期
- 离开
- 到达
- 座位
这意味着使用您的示例:
User 1 - Reservation(today, Bus 1, Seat A1)
Bus 1 = all reservations for today city A to city B
A1 is empty - fill it.
User 2 - Reservation(tomorrow, Bus 1, Seat A1)
Bus 1 = all reservations for tomorrow city A to city B
A1 is empty - fill it.
User 3 - Reservation(tomorrow, Bus 1, Seat A1)
Bus 1 = all reservations for tomorrow city A to city B
A1 is filled - cannot save reservation
您使用巴士查看时间点 - 这还应包括时间、出发和到达,因为巴士 1 座位 A1 在从城市 B 到城市 A 的旅途中可用。
这样一来,现在有三辆公共汽车,但是当他们能够购买第四辆公共汽车时,所有的变化就是能够安排第四对出发/到达,然后将应用于车队中的任何一辆公共汽车。
推荐阅读
- asp.net - 在 ASP.Net 中启动时长时间运行的后台任务
- python - Python2比较元组和int?
- sql - 用 SQL 表示的扁平树结构
- angularjs - 如何检查angularjs中的正则表达式?
- android - 无法解决 react native 项目中的依赖关系
- javascript - 未捕获的类型错误:scrollIntoView 不是函数。子元素未显示
- javascript - 如果脚本被恶意用户登录到日志文件并且日志文件在浏览器中打开,是否可以执行脚本?
- firebase - 规则中不存在 request.auth.token.email
- reactjs - 无法从谷歌登录/注册上的 id_token 获取个人资料数据(如姓名、年龄、性别)
- validation - 在 .net core razor 页面中使用远程属性。参数在控制器的动作方法中没有取值