仅需两步即可完成:
1. 打开 12306 项目 开源仓库主页,右上角点个 Star
2. 点击下方【同意授权检测】按钮,同意获取 API 权限进行检测
本章节文档,将在 Star 12306 仓库后正常开放展示
当一家四口人出去玩在 12306 进行购票时,假定四个人都选择了商务座,你是想一家人被安排到各个不同的车厢还是在一个车厢不同座位还是一个车厢相邻座位?想都不用想,肯定是后者最好对不对。那如果要实现这个座位分配算法,却不是这么容易。
先放一张高铁商务座的座位分布图,复兴号商务座两排三座,一个车厢排除空座位,共 5 个可用座位,如下所示:
大家也可以去看下 12306 上实际购买复兴号高铁试试,一排三个座位,分别是 ACF。咱们系统都是严格按照原系统逻辑设计的。
座位如果要想分配的合理,需要考虑的情况比较多,比如:
考虑到种种情况,咱们的高铁座位分配算法流程如下,还是以商务座举例。
为了让咱们能更专注基本的座位分配算法,以下流程不包含购票人数大于等于三人(大于等于三人就要进行拆座位)以及在线选座等流程。
这里生动形象的演示了几组用户购票对应的座位分配顺序,结合咱们流程查看理解更顺畅。
单一账号同时为两个乘车人购买车票,多个账号购票流程如下。
单一账号同时为两个以上乘车人购买车票,多个账号购票流程如下。
实际上的座位分配算法远比描述上要复杂的多,上面讲的是用户购买高铁座在没有人为选择座位的情况下逻辑。如果用户选择了座位后,算法又是不同的逻辑了。
考虑到大家的中心不需要放到这里,所以文章就没有详细描述算法的细节。感兴趣的同学可以通过 Debug 源代码的形式,掌握默认分配座位以及选座算法。
🚀 系统提示:访问文档失败 🚀
原因:开源不易,文档仅对已 Star 12306 项目的用户开放。
操作步骤:点击下方「Gitee 项目」和「GitHub 项目」按钮 Star 项目即可。 12306 所有端的代码都会完全开源,为了更好地完善这个框架,希望大家多多支持。