代码之家  ›  专栏  ›  技术社区  ›  jpg

剧院座位预订和数据结构?

  •  0
  • jpg  · 技术社区  · 15 年前

    这是一个在工作中的谈话,因为我们正在研究预订系统,有一种类型的预订,我们需要满足,这是在我们需要做的其他类型的预订之外。

    300+公司内用户环境,需要公共网站进行自助预订。

    并发性将在网站端得到满足-如检查当前状态和超时,如果预订没有继续或支付失败。

    所以一个客户打电话给代理人,让他把座位安排好。该页面从数据库中获取信息,然后根据屏幕上的计划绘制每个座位的状态。经过一番讨论后,客户要求预订j56、j57、j58并付款。

    看起来像是由字节组成的数组,如果每次都画的话。 ? 这样效率高吗?

    备选方案是看静态WPF应用程序与这些座位计划已经和填充,从数据。

    规则。

    • 主要计划是26排100个座位
    • 每行按字母顺序排列
    • 每组从1到100依次排列
    • 座椅具有以下状态
      • 保留未支付
      • 会员未支付预留
      • 支付
      • 付费会员费率
    3 回复  |  直到 15 年前
        1
  •  3
  •   Eric Dahlvang    15 年前

    你只需要2600个座位?

    在我看来,担心在内存中节省这么少字节简直是浪费时间。你又不是代表一个有10万个座位的体育场。

    为什么不代表每一个座位上都有一个班级,完成任务呢?

    public class Seat
    {
        public char SeatRow { get; set; }
        public byte SeatNum { get; set; }
        public SeatState State { get; set; }
    
        public Seat(char row, byte seat, SeatState state)
        {
            this.SeatRow = row;
            this.SeatNum = seat;
            this.State = state;
        }
    }
    public enum SeatState
    {
        Empty,
        ReservedNotPaid,
        ReservedNotPaidMember,
        Paid,
        PaidMemberRate
    }
    
        2
  •  1
  •   Tom Gullen    15 年前

    只要有一个数组,每个单元格代表一个座位。

    例如,可以有一个26x100阵列。

    然后只需将数组的每个单元格值设置为座位的状态,您甚至可以为“隐藏”座位添加自己的类型(即无法预订的座位,这样您就可以有锯齿状的座位排列)。

    简单示例:

    0 = hidden
    1 = empty
    2 = reserved
    3 = paid
    

    空布局:

        FRONT
    0 0 1 1 1 0 0
    0 1 1 1 1 1 0
    1 1 1 1 1 1 1
    1 1 1 1 1 1 1
        BACK
    

    部分完整布局:

        FRONT
    0 0 1 1 1 0 0
    0 1 2 2 2 3 0
    3 3 1 2 2 3 3
    1 1 3 3 1 2 2
        BACK
    

    如果要将其存储在数据库中,则有三个表:

    tbl_Theatre
    tbl_Shows
    tbl_TheatreShowSeats
    
        3
  •  1
  •   AndyM    15 年前

    接受汤姆的回答,再扩展一点。可能是两个数组,因为我们在这里做两个工作。

    可用性使用位数组,付款使用十进制数组。位阵列可以从支付阵列和标准布局动态计算。

    布尔?可用的

    • 无效的 :隐藏(这里没有座位)
    • :对于不可用
    • :对于可用

    用于支付的独立阵列

    • :无付款/预订
    • 29.99 :已付金额/$(标准费率)
    • 9.99 :已付金额/$(会员费率)
    推荐文章